SlideShare a Scribd company logo
Програмиране на дребни устройства:
еволюцията от микроконтролера до
Arduino и Raspberry Pi
Невен Боянов
Bulgaria Web Summit 2014
2014-05-31
Защо ни е да знаем
как работи хардуера
Какви проблеми се решават с
хардуера
● Основно софтуерни :)
– Връзка с външния свят: вход/изход
● Създава още повече софтуерни проблеми.
Трудно ли се разработва хардуер за
малки устройства
Не!
3 платформи
Raspberry Pi Arduino ATtiny85
Схема със светодиод
● Raspberry Pi
● Arduino
● Microcontroller
ATtiny85
● Processing, Wiring, Arduino, ...
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;
}
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()
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
}
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);
}
Как да изберем какъв хардуер да
използваме
The Tinusaur project
● ATtiny85, 8-bit RISK
● 1 MHz (up to 20 MHz)
● 512 B RAM
● 8 KB PRG
● 512 B EEPROM
● 6 GPIO
Технически критерии за сравнение
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)
Една практическа задача:
говореща играчка
Talking Toy
Основни функции:
● Дигитализиране на
аудио
●
Запис на аудио в
паметта
● Промени в записания
сигнал
●
Възпроизвеждане на
аудио
Ако използваме Raspberry Pi + Linux
● Трябва да се използва
външен модул за
аудио вход
● Кода може да се
напише на:
– C/C++
– Python
– Shell script
– Etc..
Ако използваме Arduino
● Външен модул за
запис и
възпроизвеждане
за аудио
● Програма за
комуникация с
модула
– Ползва се C/C++
Ако използваме ATtiny85/Tinusaur
Нужни са:
● микрофон с предусилвател
● външна памет със сериен достъп
●
високоговорител с усилвател
Най-важното е:
● Програма
Защо ATtiny85/Tinusaur
Ефективен:
● Минималната нужна
производителност
● Ниска консумация
● Ниска себестойност
● Миниатюрни размери
● Лесен старт при
разработката
Предимства на другите:
● Arduino:
– повече памет за код;
– възможност за разширение
на възможностите;
– сравнително ниска цена.
● Raspberry Pi:
– достатъчно ресурси
(процесор и памет);
– възможност за разширение
на възможностите.
А защо не ATtiny85/Tinusaur
● Няма достатъчно
вградена памет за
данни.
● Малко памет за
код.
● Невъзможност за
значително
разширение при
бъдещи нужди.
Недостатъци на другите
решения:
● Arduino:
– по-висока себестойност;
– по-големи размери;
– по-висока консумация.
● Raspberry Pi:
– прекалено мощен за
задачата;
– висока себестойност;
– много висока консумация;
– големи размери.
За какво друго може да ни
послужи ATtiny85/Tinusaur
Лични проекти:
● Включване и
изключване при
различни условия –
време, температура,
светлина, сигнал, и
др.
За какво друго: обучение
Обхваща един пълен, но
лесен за усвояване, цикъл на
разработка на малка
микропроцесорна система:
● подбор на компонентите на
системата
●
сглобяване на хардуера
●
писане на софтуер на ниско
ниво
●
писане на софтуер на високо
ниво
● решаване на
теоретични задачи
– хардуерни – логика,
сигнали и др.
– софтуерни – алгоритми,
паралелни задачи и др.
● решаване на
практически задачи
● създаване на реални
продукти
Kickstarter проекти: Arduino
Kickstarter проекти: Arduino
Въпроси и отговори
?
Контакти
Невен Боянов
https://www.facebook.com/boyanov
https://twitter.com/boyanov
https://plus.google.com/+NevenBoyanov
http://www.boyanov.org/
Tinusaur
The Tinusaur Project
http://tinusaur.org
http://tinusaur.wordpress.com
https://www.facebook.com/tinusaur
https://twitter.com/tinusaur
http://tinusaur.storenvy.com

More Related Content

ODP
Програмиране на малки микропроцесорни системи
ODP
Въведение в Микроконтролерите Пловдив/2015-02-21
ODP
Въведение в Микроконтролерите - PCVT/20150214
PDF
Направи си сам Raspberry Pi HAT
ODP
Microcontrollers and embedded devices
PDF
Tinusaur Board - Assembling Guide
ODP
Отворена система за управление на потребителите
PDF
The Tinusaur Project, at TuxCon in Plovdiv
Програмиране на малки микропроцесорни системи
Въведение в Микроконтролерите Пловдив/2015-02-21
Въведение в Микроконтролерите - PCVT/20150214
Направи си сам Raspberry Pi HAT
Microcontrollers and embedded devices
Tinusaur Board - Assembling Guide
Отворена система за управление на потребителите
The Tinusaur Project, at TuxCon in Plovdiv

Viewers also liked (20)

PPTX
Safety and email protection from spam
DOC
Kурсова работа БЗКСП ралица христова
PPTX
хакери
PDF
Лекция първа Security
PDF
Present tsa 10
PPT
Xp, vista, win7
PPT
Chap6
DOC
упражнение контроли калкулатор
PPT
Chap4
PPT
Network Security and Network Attacks
PDF
63.кеш памет
PPTX
Техническа обезпеченост на студентите за учене чрез мобилни технологии
PDF
\"Guerrilla Marketing\" в Интернет - Жанер Найденова
PPT
интернет Yordan
PPT
Reup&Audit2
PDF
СофтУни - представяне във Велико Търново - 1 март 2014
PPT
Snezhana Filipova, Librarian at Obrazovanie Public Chitalishte in the village...
PPTX
Software University: for the Business (Jan 2014)
PDF
Теоремата на фон Нойман за отсъствие на скрити параметри в квантовата механика
Safety and email protection from spam
Kурсова работа БЗКСП ралица христова
хакери
Лекция първа Security
Present tsa 10
Xp, vista, win7
Chap6
упражнение контроли калкулатор
Chap4
Network Security and Network Attacks
63.кеш памет
Техническа обезпеченост на студентите за учене чрез мобилни технологии
\"Guerrilla Marketing\" в Интернет - Жанер Найденова
интернет Yordan
Reup&Audit2
СофтУни - представяне във Велико Търново - 1 март 2014
Snezhana Filipova, Librarian at Obrazovanie Public Chitalishte in the village...
Software University: for the Business (Jan 2014)
Теоремата на фон Нойман за отсъствие на скрити параметри в квантовата механика
Ad

Similar to Programming Small Devices - Web Summit Bulgaria 2014 (15)

PDF
Връщане към живота на ретро електроника с Raspberry Pi
PPT
Raspberry Pi
PPTX
Micro development
PDF
Как да убием и последната дискета с Open Source технологии?
ODP
Платформа Блоктину за визуално по C/C++ за микроконтролери
PDF
Свободни PLC
PDF
16. серийна шина usb. основни характеристики
PPTX
Курсове по роботика с Arduino 1.0
PDF
Практични примери за device tree overlays на Raspberry Pi
PPTX
latest tech: (bulgarian language) de da znamm
PDF
17. fire wire ieee1394 серийна шина ieee 1394. основни характеристик
PPTX
ПОЛУПРОВОДНИКОВИ УСТРОЙСТВА.pptx
PPTX
07_Преговор и Проект.pptx
PDF
4.класификация на микропроцесорите
Връщане към живота на ретро електроника с Raspberry Pi
Raspberry Pi
Micro development
Как да убием и последната дискета с Open Source технологии?
Платформа Блоктину за визуално по C/C++ за микроконтролери
Свободни PLC
16. серийна шина usb. основни характеристики
Курсове по роботика с Arduino 1.0
Практични примери за device tree overlays на Raspberry Pi
latest tech: (bulgarian language) de da znamm
17. fire wire ieee1394 серийна шина ieee 1394. основни характеристик
ПОЛУПРОВОДНИКОВИ УСТРОЙСТВА.pptx
07_Преговор и Проект.pptx
4.класификация на микропроцесорите
Ad

More from Neven Boyanov (6)

PDF
Tinusaur Intro (EN) 2020-02
ODT
Интегриран подход за обучение по математика и информатика със засилени интер...
PDF
Tinusaur Starter - User Guide
PDF
Отворена система за управление на потребителите
ODT
Стартиране на софтуерен бизнес - пътят от програмата до продукта
ODP
Стартиране на софтуерен бизнес - пътят от програмата до продукта
Tinusaur Intro (EN) 2020-02
Интегриран подход за обучение по математика и информатика със засилени интер...
Tinusaur Starter - User Guide
Отворена система за управление на потребителите
Стартиране на софтуерен бизнес - пътят от програмата до продукта
Стартиране на софтуерен бизнес - пътят от програмата до продукта

Programming Small Devices - Web Summit Bulgaria 2014

  • 1. Програмиране на дребни устройства: еволюцията от микроконтролера до Arduino и Raspberry Pi Невен Боянов Bulgaria Web Summit 2014 2014-05-31
  • 2. Защо ни е да знаем как работи хардуера
  • 3. Какви проблеми се решават с хардуера ● Основно софтуерни :) – Връзка с външния свят: вход/изход ● Създава още повече софтуерни проблеми.
  • 4. Трудно ли се разработва хардуер за малки устройства Не!
  • 6. Схема със светодиод ● Raspberry Pi ● Arduino ● Microcontroller ATtiny85 ● Processing, Wiring, Arduino, ...
  • 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. 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. 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. 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. Как да изберем какъв хардуер да използваме
  • 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. Технически критерии за сравнение 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. Една практическа задача: говореща играчка Talking Toy Основни функции: ● Дигитализиране на аудио ● Запис на аудио в паметта ● Промени в записания сигнал ● Възпроизвеждане на аудио
  • 15. Ако използваме Raspberry Pi + Linux ● Трябва да се използва външен модул за аудио вход ● Кода може да се напише на: – C/C++ – Python – Shell script – Etc..
  • 16. Ако използваме Arduino ● Външен модул за запис и възпроизвеждане за аудио ● Програма за комуникация с модула – Ползва се C/C++
  • 17. Ако използваме ATtiny85/Tinusaur Нужни са: ● микрофон с предусилвател ● външна памет със сериен достъп ● високоговорител с усилвател Най-важното е: ● Програма
  • 18. Защо ATtiny85/Tinusaur Ефективен: ● Минималната нужна производителност ● Ниска консумация ● Ниска себестойност ● Миниатюрни размери ● Лесен старт при разработката Предимства на другите: ● Arduino: – повече памет за код; – възможност за разширение на възможностите; – сравнително ниска цена. ● Raspberry Pi: – достатъчно ресурси (процесор и памет); – възможност за разширение на възможностите.
  • 19. А защо не ATtiny85/Tinusaur ● Няма достатъчно вградена памет за данни. ● Малко памет за код. ● Невъзможност за значително разширение при бъдещи нужди. Недостатъци на другите решения: ● Arduino: – по-висока себестойност; – по-големи размери; – по-висока консумация. ● Raspberry Pi: – прекалено мощен за задачата; – висока себестойност; – много висока консумация; – големи размери.
  • 20. За какво друго може да ни послужи ATtiny85/Tinusaur Лични проекти: ● Включване и изключване при различни условия – време, температура, светлина, сигнал, и др.
  • 21. За какво друго: обучение Обхваща един пълен, но лесен за усвояване, цикъл на разработка на малка микропроцесорна система: ● подбор на компонентите на системата ● сглобяване на хардуера ● писане на софтуер на ниско ниво ● писане на софтуер на високо ниво ● решаване на теоретични задачи – хардуерни – логика, сигнали и др. – софтуерни – алгоритми, паралелни задачи и др. ● решаване на практически задачи ● създаване на реални продукти