Програмиране в среда Arduino

Материали към избираемите дисциплини 'Програмиране в среда Arduino', 'Програмиране в среда Arduino за напреднали' и 'Програмиране в среда Arduino с 32-битови микроконтролери'

доц. д-р Светослав Енков, катедра Компютърна Информатика, ФМИ, ПУ

Общи сведения за Arduino

Arduino е термин, означаващ компания за компютърен софтуер и хардуер, проект и потребителско общество, които разработват и поддържат устройства с микроконтролери и комплекти за построяване на цифрови устройства с лесен за ползване свободен хардуер и софтуер, позволяващи постигането на интерактивност от неспециалисти, които могат да взаимодействат и управляват неща от реалния свят.

Продуктите Arduino се разпространяват като хардуер и софтуер с отворен код, лицензиран под LGPL/GPL лиценз, разрешаващ производството и разпространението от всеки. Платките и наборите се продават в сглобен или в „направи си сам“ вариант, достъпни са и като чертежи, схеми и изходен код за изцяло самостоятелно разработване.

Платките Arduino използват 8-битови (AVR) микроконтролери или 32-битови (ARM) процесори Atmel (най-новите модели Arduino включват и платки с други процесори, но ние ще наблегнем на Uno, Mega 2560 и Due моделите, като най-разпространени и достъпни на пазара). Платките са снабдени с множество цифрови и аналогови входно-изходни изводи (pins), които могат да бъдат свързвани с разнообразни платки за разширение (shields) и други схеми. Те включват и сериен или USB интерфейс, с чиято помощ може да се зареждат програми от компютър. Микроконтролерите обикновено се програмират с помощта на езиците за програмиране C и C++, като специално за платките Arduino се препоръчва да се използва Arduino IDE средата, базирана на Processing.

Първата платка Arduino е представена през 2005 г. Екипът на проекта е целял да предостави на любители, ученици и професионалисти евтин и лесен начин да създават устройства, способни да взаимодействат с околната среда чрез сензори и изпълнителни устройства. Обичайни примери за използване са създаването на прости роботи, термостати и датчици за движение.


Учебникът "Програмиране в среда Arduino" се разпространява безплатно и само в електронен вариант (ISBN 978-619-202-261-7) по лиценз Creative Commons ShareAlike CC BY-SA. Корица на учебника


Учебник "Програмиране в среда Arduino"

Корица на учебника
Учебник
Учебник "Програмиране в среда Arduino
Source code
Изходен код на проектите към учебника "Програмиране в среда Arduino
Презентация част 1
Презентация за първата част: Програмиране в среда Arduino
Презентация част 2
Презентация за втората част: Програмиране в среда Arduino за напреднали
Презентация част 3
Презентация за третата част: Програмиране в среда Arduino с 32-битови контролери
Презентация наука
Презентация за Arduino в обучението и научните изследвания

За контакти

доц. д-р Светослав Енков
Пловдив, бул. България 236, ФМИ, каб. 437
e-mail: enkov@uni-plovdiv.bg

Интересни връзки за Arduino

Arduino

Arduino – основният сайт на Arduino. Ползвайте секциите Learning, Forum и Blog.

Игрището на Ардуино - българската секция в сайта на Arduino.

Adafruit Learn - ресурси за Arduino модулите, продавани от Adafruit.

SparkFun Electronics – секциите за Arduino, Blog, Tutorials и Learn.

Instructables Arduino - пълни указания за проекти с Arduino.

WOKWI Simulate IoT Projects in Your Browser - онлайн симулатор за Arduino и ESP32 (IoT).

Arduino for projects – проекти с Arduino.

Circuits @Home - интересни проекти с Arduino.

Let's make robots - проекти с роботи.

Роботев - сайт на българската фирма Роботев, ползвайте секциите Библиотека и Блог, имат ресурси и за Raspberry Pi.

Arduino Bulgaria - може да се включите в групата Arduino Bulgaria във Facebook.

Arduino For Disabilities - материали за хора с увреждания и Arduino.

Arduino Projects - ресурси за Arduino на руски език.

Raspberry Pi

Raspberry Pi Foundation - основният сайт на Raspberry Pi.

Adafruit - ресурси за Raspberry Pi модулите, продавани от Adafruit.

GitHub - ресурси за Raspberry Pi в GitHub.

Hackter.IO - общност за проекти с Raspberry Pi.

Hackaday.IO – проекти с Raspberry Pi.

Instructables Raspberry Pi How To и Instructables Raspberry Pi Projects - пълни указания за проекти с Raspberry Pi.

DIY Hacking - проекти с Raspberry Pi.

Софтуерен университет - може да търсите за ресурси и записани на видео безплатни семинари на български език за Arduino и Raspberry Pi.


Анотации на избираемите дисциплини

Част 1 - Програмиране в среда Arduino

Анотация: Целите на курса са студентите да придобият основни познания за програмирането на 8-битови микроконтролери Atmel AVR в среда Arduino и да се запознаят с принципите на създаването на прости схеми и устройства с тези контролери. Arduino e платформа за електронно прототипиране с отворен код, базирана на гъвкави и лесни за използване хардуер и софтуер. Системата общува със средата, получавайки сигнали от множество сензори и датчици и може да взаимодейства с нея, контролирайки светлини, дисплеи, двигатели и други устройства. Микроконтролерът в платката се програмира с Arduino език за програмиране (базиран на Wiring и подобен на С++) в развойна среда Arduino (базирана на Processing). За нуждите на курса са осигурени платки Duemilanove и Mega2560, както и множество сензори, дисплеи, бутони и прототипни платки, с цел практическото усвояване и тестване на получените знания.


Съдържание на курса (по седмици)


1. Обзор на микроконтролерите и развойните платки. Представяне на хардуерната среда Arduino. Запознаване със софтуерната среда Arduino IDE.

2. Работа с цифровите изводи и с аналоговите входове. Принципи на PWM регулирането. Обща структура на софтуерен проект в Arduino средата. Секция Setup и секция Loop. Зареждане на проекта в паметта на контролера.

3. Първи реално работещ проект – управление на светодиод, зумер и 16х2 дисплей.

4. Работа с таймери, прекъсвания, управление на двигатели и релета. Роботи и други изпълнителни устройства.

5. Основни принципи на връзката с потребителя при микроконтролерите – бутони, клавиатури, IR дистанционно управление и 320х240 сензорен дисплей.

6. Управление на паметта, работа с външна памет – SD карта и външна RAM/EEPROM. Комуникация по I2C протокол. Безжични комуникации по 433MHz ASK протокол и 2.4GHz GFSK с nRF24L01. Управление на LAN модул и връзка с Интернет.

7. Задаване на индивидуален проект за разработване. Обсъждане на основните трудности и проблеми. Начален sketch на проекта.

8. Работа по проекта. Отстраняване на възникналите проблеми. Изготвяне на хардуерен прототип с прототипна платка.

9. Довършване и тестване на проекта. Писане на техническа документация.

10. Представяне и защитаване на проекта. Крайна оценка.



Част 2 - Програмиране в среда Arduino за напреднали

Анотация: Целите на курса са студентите да придобият допълнителни познания за програмирането на 8-битови микроконтролери Atmel AVR в среда Arduino и да се запознаят с принципите на създаването на по-сложни схеми и устройства с тези контролери. Arduino e платформа за електронно прототипиране с отворен код, базирана на гъвкави и лесни за използване хардуер и софтуер. Системата общува със средата, получавайки сигнали от множество сензори и датчици и може да взаимодейства с нея, контролирайки светлини, дисплеи, двигатели и други устройства. Микроконтролерът в платката се програмира с Arduino език за програмиране (базиран на Wiring и подобен на С++) в развойна среда Arduino (базирана на Processing). За нуждите на курса са осигурени платки Duemilanove и Mega2560, както и множество сензори, дисплеи, бутони, шасита, серво механизми и прототипни платки, с цел практическото усвояване и прилагане на получените знания.


Съдържание на курса (по седмици)


1. Обзор на микроконтролерите и развойните платки. Представяне на хардуерната среда Arduino. Запознаване със софтуерната среда Arduino IDE. Преговор на наученото в част 1 на избираемата („Програмиране в среда Arduino”).

2. Работа с дисплеи, бутони и I2C/TWI устройства.

3. Контролен проект – управление на ТМ1638 дисплей с бутони и индикация.

4. Експерименти с таймери, прекъсвания, управление на двигатели, серво и релета. Роботи и други изпълнителни устройства – проектиране на механизмите и алгоритмите.

5. Тест на робот с 4WD и серво – реален експеримент.

6. Управление на робота с безжична връзка – Bluetooth модул HC-06 и модул 433MHz.

7. Задаване на индивидуален проект за разработване на робот, серво или друг механизъм. Обсъждане на основните трудности и проблеми. Начален sketch на проекта.

8. Работа по проекта. Отстраняване на възникналите проблеми. Изготвяне на хардуерен прототип с прототипна платка.

9. Довършване и тестване на проекта. Писане на техническа документация.

10. Представяне и защитаване на проекта. Крайна оценка.



Част 3 - Програмиране в среда Arduino с 32-битови контролери

Анотация: Целите на курса са студентите да придобият допълнителни познания за програмирането на 32-битови микроконтролери ARM Cortex-M3 и Cortex-M4F (Atmel SAM3X8E и TI LM4F120 процесори) в среди Arduino и Energia и да се запознаят с принципите на създаването на схеми и устройства с тези контролери. Arduino e платформа за електронно прототипиране с отворен код, базирана на гъвкави и лесни за използване хардуер и софтуер. Системата общува със средата, получавайки сигнали от множество сензори и датчици и може да взаимодейства с нея, контролирайки светлини, дисплеи, двигатели и други устройства. Микроконтролерът в платката се програмира с Arduino език за програмиране (базиран на Wiring и подобен на С++) в развойна среда Arduino (базирана на Processing). За нуждите на курса са осигурени платки Arduino Due и TI Stellaris LM4F120 Launchpad, както и множество сензори, дисплеи, бутони, шасита, серво-механизми и прототипни платки, с цел практическото усвояване и прилагане на получените знания.


Съдържание на курса (по седмици)


1. Обзор на 32-битовите ARM Cortex микроконтролери и развойните платки Arduino Due и Stellaris Launchpad. Представяне на хардуерните среди Arduino и Launchpad. Запознаване със софтуерните среди Arduino IDE 1.5 и Energia. Преговор на наученото в предходните части на избираемата („Програмиране в среда Arduino” и „Програмиране в среда Arduino за напреднали”).

2. Работа с датчици за напрежение, ток, влага, температура, барометрично налягане, осветеност, акселерометри, жироскопи, магнитометри, RTC и др.

3. Контролен проект – управление на ТМ1638, MAX7219, I2C 7-сегментни и TFT сензорни дисплеи с бутони и индикация, с получаване на информация от разнородни датчици.

4. Експерименти с таймери, прекъсвания, DMA, управление на двигатели, серво и релета. Управление на паметта при по-сложни проекти. Работа с EEPROM.

5. Разработка на метеорологична станция – реален експеримент.

6. Управление на устройства с безжична връзка – Bluetooth модули HC-05/06 и безжични модули nRF24L01 2.4GHz. Работа с Wiznet W5100 Ethernet модули за връзка с LAN и Интернет. Управление по Интернет – локален web сървер.

7. Задаване на индивидуален проект за разработване на метеорологична станция, управление на робот или система за домашна автоматизация „умен дом“. Обсъждане на основните трудности и проблеми. Начален sketch на проекта. Симулиране в симулатор.

8. Работа по проекта. Отстраняване на възникналите проблеми. Изготвяне на хардуерен прототип с прототипна платка.

9. Довършване и тестване на проекта. Писане на техническа документация.

10. Представяне и защитаване на проекта. Крайна оценка.