Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Programming Small Devices - Web Summit Bulgaria 2014

Ще бъдат разгледани няколко решения на прости практически проблеми с помощта на 3 различни платформи – обикновен микро-контролер Atmel ATtiny, система Arduino и система Raspberry Pi. Ще бъде направен сравнителен анализ между тях на базата на възможности, цена, производителност и др. Ще бъдат разгледани основните езици (ASM, C/C++, Processing и т. н.) и средства за разработка за тези платформи както и възможността за използването им при изучаване на софтуерните и хардуерните технологии.

  • Be the first to comment

Programming Small Devices - Web Summit Bulgaria 2014

  1. 1. Програмиране на дребни устройства: еволюцията от микроконтролера до Arduino и Raspberry Pi Невен Боянов Bulgaria Web Summit 2014 2014-05-31
  2. 2. Защо ни е да знаем как работи хардуера
  3. 3. Какви проблеми се решават с хардуера ● Основно софтуерни :) – Връзка с външния свят: вход/изход ● Създава още повече софтуерни проблеми.
  4. 4. Трудно ли се разработва хардуер за малки устройства Не!
  5. 5. 3 платформи Raspberry Pi Arduino ATtiny85
  6. 6. Схема със светодиод ● Raspberry Pi ● Arduino ● Microcontroller ATtiny85 ● Processing, Wiring, Arduino, ...
  7. 7. Raspberry Pi – C/C++ #include <wiringPi.h> int main (void) { wiringPiSetup (); pinMode (0, OUTPUT); for (;;) { digitalWrite (0, HIGH); delay (500); digitalWrite (0, LOW); delay (500); } return 0; } #include <wiringPi.h> int main (void) { wiringPiSetup (); pinMode (0, OUTPUT); for (;;) { digitalWrite (0, HIGH); delay (500); digitalWrite (0, LOW); delay (500); } return 0; }
  8. 8. Raspberry Pi – Python import RPi.GPIO as GPIO import time # blinking function def blink(pin): GPIO.output(pin,GPIO.HIGH) time.sleep(1) GPIO.output(pin,GPIO.LOW) time.sleep(1) return # to use Raspberry Pi board pin numbers GPIO.setmode(GPIO.BOARD) # set up GPIO output channel GPIO.setup(11, GPIO.OUT) # blink GPIO17 50 times for i in range(0,50): blink(11) GPIO.cleanup()
  9. 9. Arduino – C/C++ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off delay(1000); // wait for a second }
  10. 10. ATtiny85 – C/C++ #include <avr/io.h> #include <util/delay.h> // Define the I/O port to be used for the LED. // This a number between 0 and 7 that tells which bit to use. #define LED_PORT PB3 int main(void) { // Set the LED port number as output. // The DDRB is the data direction for port B. // - shifts the "1" on left to the desired position and ... // - does bitwise "OR" with the value in the port register. DDRB |= (1 << LED_PORT); // Start infinite loop. while (1) { // Set the LED bit to "1" - LED will be "on". PORTB |= (1 << LED_PORT); // Wait a little. The delay does N-number of "empty" loops. _delay_ms(200); // Set the LED bit to "0" - LED will be "off". PORTB &= ~(1 << LED_PORT); // Wait a little. _delay_ms(400); } return (0); }
  11. 11. Как да изберем какъв хардуер да използваме
  12. 12. The Tinusaur project ● ATtiny85, 8-bit RISK ● 1 MHz (up to 20 MHz) ● 512 B RAM ● 8 KB PRG ● 512 B EEPROM ● 6 GPIO
  13. 13. Технически критерии за сравнение Raspberry Pi Arduino Uno ATtiny85/Tinusaur Процесор ARM11 – 32-bit RISK ATmega328P 8-bit RISK ATtiny85 – 8-bit RISK Честота 700 MHz 16 MHz 1 MHz Памет RAM 256/512 MB 2 KB 512 B Памет PRG On-board SD slot 32 KB, 1 KB EERPROM 8 KB, 512 B EERPROM Вход/изход 8×GPIO, UART, I²C, SPI ... 6 analog, 14 digital 6 analog/digital Периферия USB, audio & video, HDMI - - OS Linux, etc. - - Размери 85×56 mm 53×68 mm 23×36 mm Тегло 45 гр. 28 гр. 9 гр. Консумация 500mA, 700–1000 mA 50 mA 1-2 мА, 300 µA (0.1 µA) Цена 35 USD 20 USD (10 USD) 8 USD (5 USD)
  14. 14. Една практическа задача: говореща играчка Talking Toy Основни функции: ● Дигитализиране на аудио ● Запис на аудио в паметта ● Промени в записания сигнал ● Възпроизвеждане на аудио
  15. 15. Ако използваме Raspberry Pi + Linux ● Трябва да се използва външен модул за аудио вход ● Кода може да се напише на: – C/C++ – Python – Shell script – Etc..
  16. 16. Ако използваме Arduino ● Външен модул за запис и възпроизвеждане за аудио ● Програма за комуникация с модула – Ползва се C/C++
  17. 17. Ако използваме ATtiny85/Tinusaur Нужни са: ● микрофон с предусилвател ● външна памет със сериен достъп ● високоговорител с усилвател Най-важното е: ● Програма
  18. 18. Защо ATtiny85/Tinusaur Ефективен: ● Минималната нужна производителност ● Ниска консумация ● Ниска себестойност ● Миниатюрни размери ● Лесен старт при разработката Предимства на другите: ● Arduino: – повече памет за код; – възможност за разширение на възможностите; – сравнително ниска цена. ● Raspberry Pi: – достатъчно ресурси (процесор и памет); – възможност за разширение на възможностите.
  19. 19. А защо не ATtiny85/Tinusaur ● Няма достатъчно вградена памет за данни. ● Малко памет за код. ● Невъзможност за значително разширение при бъдещи нужди. Недостатъци на другите решения: ● Arduino: – по-висока себестойност; – по-големи размери; – по-висока консумация. ● Raspberry Pi: – прекалено мощен за задачата; – висока себестойност; – много висока консумация; – големи размери.
  20. 20. За какво друго може да ни послужи ATtiny85/Tinusaur Лични проекти: ● Включване и изключване при различни условия – време, температура, светлина, сигнал, и др.
  21. 21. За какво друго: обучение Обхваща един пълен, но лесен за усвояване, цикъл на разработка на малка микропроцесорна система: ● подбор на компонентите на системата ● сглобяване на хардуера ● писане на софтуер на ниско ниво ● писане на софтуер на високо ниво ● решаване на теоретични задачи – хардуерни – логика, сигнали и др. – софтуерни – алгоритми, паралелни задачи и др. ● решаване на практически задачи ● създаване на реални продукти
  22. 22. Kickstarter проекти: Arduino
  23. 23. Kickstarter проекти: Arduino
  24. 24. Въпроси и отговори ?
  25. 25. Контакти Невен Боянов https://www.facebook.com/boyanov https://twitter.com/boyanov https://plus.google.com/+NevenBoyanov http://www.boyanov.org/
  26. 26. Tinusaur The Tinusaur Project http://tinusaur.org http://tinusaur.wordpress.com https://www.facebook.com/tinusaur https://twitter.com/tinusaur http://tinusaur.storenvy.com

×