O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Programming Small Devices - Web Summit Bulgaria 2014

639 visualizações

Publicada em

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

Publicada em: Dispositivos e hardware
  • Seja o primeiro a comentar

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

×