Какво да правя, когато не съм на работа? Към малки електронни проекти, които в даден момент трябва да са полезни ... Днес представям няколко примера ...

Ардуино

електронни

Микроконтролерът par excellence ... Но мнозина чуват името микроконтролер и вече смятат, че е много сложно, че се изисква диплома, магистърска степен или някаква степен, одобрена от скъп университет, за да може да се работи с него ... напротив! Ако можете да използвате калкулатор, работите с микроконтролер (не точно, но концепцията е, че) ...

Какво е микроконтролер? С прости думи, това е чип, който многократно изпълнява това, което му е казано ... Например, ако му кажа да включва и изключва крушка, микроконтролерът включва и изключва тази крушка непрекъснато, докато 1) променя инструкции или 2) изключете от източника на захранване.

Проста истина? Добре, тогава как да кажем на микроконтролера какви инструкции да изпълнява? Е, там нещата могат да се усложнят малко ... За определени микроконтролери се изисква специализирано оборудване и език за програмиране на ниско ниво (Assembler). Но с раждането на платформата Arduino, този микроконтролер за програмиране стана много неусложнен, позволявайки това изкуство да бъде направено от обикновени хора, като вас и мен ...

Arduino [1] усложнява използването на микроконтролери, както следва:

Той улеснява комуникацията между програмиста и микроконтролера, като използва комуникационни стандарти като USB. Всеки компютър има поне един USB порт.

Той позволява да се използва език за програмиране на високо ниво (главно език за програмиране C ++) за манипулиране на микроконтролера. Други езици като Python, JavaScript, дори Scratch също могат да бъдат използвани!

В този случай единственото, което липсва, е как да използваме езика правилно, така че микроконтролерът да го разбере. Ето пример:

Нека анализираме кода:

  • Редове 1 и 6: Както казах, микроконтролерът е чип, който прави нещо многократно. Ред 1 установява първоначалната конфигурация. Ред 6 установява инструкциите, които трябва да се повторят.
  • Ред 3: Като първоначална конфигурация казваме, че се извежда щифтът LED_BUILTIN, това е, че този щифт ще изпрати информация. Но какво означава LED_BUILTIN? Различните дъски, поддържани на платформата Arduino, имат светлина, LED, интегриран, но всяка платка го има на различен щифт, например UNO моделът го има на щифт 13, моделът MKR1000 на щифт 6. И така, вместо ръчно определяйки LED щифта за всеки модел, ние използваме тази променлива, която го прави вместо нас.
  • Редове 8 и 10: Това, което прави инструкцията digitalWrite (), е да пише в LED_BUILTIN състоянието, HIGH, включено или LOW, off.
  • Редове 9, 11: Това, което прави инструкцията за забавяне (), е да спре, то прави пауза за времето, посочено в милисекунди; в нашия случай 1000 милисекунди, което е равно на 1 секунда.

След като кодът бъде анализиран ред по ред, можем да видим, че това, което скриптът прави, е да включи led за секунда и да го изключи за секунда и това се повтаря за неопределено време, или по-конкретно, докато инструкциите се променят или докато захранването е изключен.микроконтролер, както беше споменато по-горе.

С пробуждането на общността на производителите благодарение на тази платформа съществуват много компоненти за работа с Arduino. Любимите ми са:

  • 0.96 "OLED дисплей - 128x64 пиксела монохромен OLED дисплей
  • DHT11 - Сензор за температура и влажност
  • BMP180 - Сензор за атмосферно налягане и температура
  • HC-SR04 - Ултразвуков сензор за разстояние
  • LDR - Сензор за светлина
  • Модул за релеен N канал - Управление на оборудването с високо напрежение
  • HC-SR501 - Инфрачервен сензор за движение
  • 44E Ефект на Хол - магнитен сензор

Има много повече, но именно тези са ми любими. Но интересното при Arduino е, че той не само работи с външни модули, но също така позволява да бъде разширен, използвайки това, което се нарича '' '' щит '' 's. Щит е дъска, която се поставя върху Arduino и разширява функционалността, като например:

И както при модулите, има много повече.

Виждаме, че това е доста гъвкава платформа, където можем да оставим въображението си да лети, за да създава.

Raspberry Pi

В съвременния свят на електрониката Arduino не е единствената платформа, която позволява разработването на проекти. Има и друг играч. Raspberry Pi. За разлика от Arduino, който е микроконтролер, Raspberry Pi е компютър с пълното разширение на думата, не само че изпълнява набор от предварително програмирани инструкции отново и отново, но изпълнява процеси и ние можем да взаимодействаме с него като правим с нормален компютър.

Много пъти объркването се крие във физическия ви вид и във фокуса ви. Например и двете могат да се използват с модули и HATs (като Shields, но за Raspberry Pi). Но с Raspberry Pi ние не се ограничаваме само до едно действие, но можем да изпълняваме няколко действия едновременно. Например можем да четем атмосферни данни и да ги съхраняваме в база данни, така че да могат да се преглеждат на уеб страница, всичко това на едно и също устройство. Излизайки от света на електрониката, платформата Raspberry Pi е проектирана да бъде малък и достъпен компютър за учене на програмиране. [две]

Програмиране

Тъй като Raspberry Pi е компютър със собствена операционна система, не е необходимо да го програмираме, но можем да напишем програми за работа с определена HAT или просто с помощта на някои външни компоненти. Езикът за програмиране, който можем да използваме, е няколко, най-популярни са Python и Scratch. Нека използваме Python, за да пресъздадем горния пример.

Въпреки че с коментарите можем да видим какво се случва, тук можем да видим, че инструкциите са малко по-ясни. Също така можем да видим някои специални инструкции в началото, от gpiozero LED за импортиране и от времето за импортиране на съня. За разлика от Arduino, който използва модификация C ++, предназначена за програмиране на микроконтролери, Python е общ език за програмиране, който не знае, че има щифтове за свързване на външни компоненти към компютъра, поради което към кода трябва да се добави библиотека [3 ] или поне един компонент от тази библиотека, в нашия случай импортирахме светодиодния модул от библиотеката gpiozero [4], улеснявайки използването на компоненти в проекти за електроника.

Проекти

Както виждате, ентусиазмът ми по тази тема е голям. За което през последните години участвах в няколко проекта. Ето основните моменти:

Измервател на калории

Мисля, че това беше един от първите ми проекти. Целта на този проект беше да се измери консумираните калории въз основа на въртенето на колелото на велоергометъра. За този проект използвах следните материали:

  • Магнит
  • Сензор за ефект на Хол
  • 16x2 LCD екран
  • Ардуино
  • Стационарен велосипед

Концепцията е проста, въз основа на силата, упражнена за придвижване на колелото, изчисляване на консумираните калории. Звучи просто, нали? Проблемът беше да се намерят физико-математическите изчисления, за да се стигне до там, особено за последната част. Но като всеки проблем, той трябва да бъде решен на части. Първото нещо беше да се измери скоростта на въртене на колелото. Тогава трябваше да се изчисли силата, която се упражнява, за да има тази скорост. И накрая, трябваше да се изчислят консумираните калории при упражняване на тази сила [1] [2] [3]. Както казах, последното беше най-сложното, тъй като информацията е оскъдна и формулата варира в зависимост от теглото и ръста на човека, стойности, които трябва да се коригират във всяка сесия.

Безжична клавиатура

Не знам дали името е правилно, но изразява добре концепцията. Идеята е следната: учител публикува въпросник с множество възможности за избор и учениците отговарят от тези устройства. Но това, което беше интересно за този проект, бяха две неща: 1) беше необходимо да се направи административната страна за учителя (да се създадат въпросите, отговорите, да има статистическа таблица на отговорите на въпросник) и уеб услугата за панела с бутони за да получите въпросите и опциите и да ги покажете на екран, който има всяка клавиатура. Нека да видим материалите:

  • Ардуино Юн
  • 20x4 LCD екран
  • Бутони

За този проект трябваше да направя много изследвания, тъй като никога не бях работил с юн. Технически трябва да е просто, тъй като работих с Arduino дълго време, но безжичният интерфейс се управляваше от микропроцесор, който беше достъпен чрез други библиотеки, които не бяха нормалните. И на всичкото отгоре няма много документация за използването на Yún, което затрудни нещата. Там намерих ръководство за това как да направя HTTP заявка с помощта на бутон. Но примерът работи за един бутон ... имах няколко! След това намерих видео, което използва вид прекъсване, за да усети бутоните. Смесих и двете концепции и го накарах да работи. Всеки бутон изпраща различна HTTP заявка за съхраняване на различни отговори в базата данни.

Всичко беше наред, докато всичко се промени ... На екрана трябва не само да показва опциите за отговор, но и въпросите! Допълнителен метод към уеб услугата, допълнителна HTTP заявка за Arduino. Това, което оставаше да се изчака, беше да се управлява дължината на въпроса, тъй като той използваше линия от екрана, за да покаже въпроса, ако надвишава 20 знака, въпросът беше изрязан.

Интелигентен паркинг

Направих този проект два пъти, но първият се провали. Но от този провал се научих да се усъвършенствам във втория. Във втората версия имаше усложнения, но в крайна сметка всичко мина добре. Нека да отидем с материалите:

  • Arduino Mega
  • Датчици за разстояние HC-SR04
  • Сензор за препятствия FC-51
  • Серво мотори
  • 16x2 LCD екран с I2C интерфейс
  • HC-05 BT
  • Кабели, много кабели

Този проект се превърна в класика за дипломни или дипломни проекти. Честно казано, идеята е проста, усещайки всеки паркинг и показвайки състоянието на всеки от тях на екран. Въпреки че тази проста част е мястото, където повечето се провалят. Те са склонни да създават променлива за всеки сензор за разстояние, вместо да правят масив. Интересното при този втори път беше, че паркингите с намалена достъпност трябваше да се вземат предвид отделно. Новото е също така, управлявайте писалката за достъп с мобилно приложение чрез Bluetooth, показвайки съобщение според състоянието, едно приветствено или такова, че няма наличност.

Метеорологична станция

Това е настоящият ми проект. Все още не съм написал никакъв код, току-що тествах компонентите. Засега имам:

  • Arduino uno
  • DHT11
  • BMP180

С това имам температура, налягане и влажност, достатъчни за прогнозиране на дъжд (може би?). Поне концепцията е проста, високата влажност и налягане, ниската температура показват голяма вероятност за дъжд. Математиката зад нея е може би най-сложната. Още не съм направил изследванията си. И накрая, той ще направи почасов запис на измерванията в база данни, за което трябва да се нуждая от WIFI модул (ESP8266) или да сменя платформата на Wemos (D1 Mini изглежда най-добрият кандидат, въпреки че все още не мога да овладея напълно то). Друго нещо, което искам да добавя, е измервател на UV индекс. Засега идеята ми върви засега.

Coding Overload е блог за начина на живот на разработчика. Общи концепции за програмиране и след това някои. Ще ръководи през основите на Python, C/C ++, Java, PHP, SQL и др.