реклама

Wi-Fi е основен бит за всеки DIY проект на Интернет на нещата (IoT), но любимият ни Arduino не идва с Wi-Fi, а добавянето в Wi-Fi щит може да доведе до общите разходи до около $ 40. Ами ако ви кажа, че има съвместим с Arduino плат за разработчици с вграден Wi-Fi за по-малко от 10 долара? Е, има.

Запознайте се с Arduino Killer: ESP8266. Беше само въпрос на време корона да бъде открадната от лъскавата глава на нашия скъп съвет за разработка на Arduino. Възможно ли е да се влюбите в платка?

Настрана имена на имената, ESP8266 (известен също като NodeMCU) първоначално се продаваше като добавка с ниска цена за Wi-Fi за дъските на Arduino, докато хакерската общност не разбере, че можете да отрежете Arduino от уравнението изцяло.

За по-малко от година ESP8266 се разрази по популярност и сега е толкова добре поддържан и разработен, че ако в момента използвате Arduino, трябва да се изправите и да вземете под внимание. Купете си сега, след това следвайте това ръководство, за да започнете да програмирате вашия ESP8266 - всичко от познатото на Arduino IDE.

instagram viewer

Вие не сте ограничени да използвате Arduino IDE, разбира се - те са съвместими и с Lua (което прилича на отслабен Python до моя начинаещи очи), но тъй като ние се справяме с това от гледна точка на онези, които сме научили на Arduino, това е, което ще покрием изключително днес.

В момента има доста модели ESP8266, но ще продължа да препоръчам този: ESP-12E (известен също като NodeMCU 1.0 или най-новият NodeMCU 2.0).

Той е малко по-скъп от останалите ($ 6.50 в сравнение с $ 4!), Но включва серийния драйвер, необходим за програмиране на чипа, и има вграден регулатор на мощността, както и много IO пинове. Той е широко поддържан и наистина не се нуждае от нищо освен USB връзка за програмиране или захранване, така че е най-лесният за работа. Ако купувате всякакъв друг вид платка ESP8266, може да ви е необходим отделен 3.3V регулатор на мощността и подходяща FTDI връзка за програмиране.

Първи стъпки с ESP8266-12E и Arduino

На първо място, инсталирайте серийните драйвери за този съвет. Може да ви се наложи деактивирайте подписването на KEXT ако използвате El Capitan поради нови системи за сигурност.

След това трябва да активираме поддръжката за ESP8266 от управителния съвет на Arduino IDE. Отворете Предпочитания и въведете следния URL адрес, където пише Допълнителни URL адреси на мениджър на борда:

URL адреси на управителен съвет на arduino

Натиснете ОК, след това отворете Управителен съвет от Инструменти -> Дъска меню, потърсете esp8266 и инсталирайте платформата. Сега трябва да видите избор за NodeMCU 1.0.

изберете дъска

Оставете процесора и скоростта на качване такава, каквато е, и изберете ново инсталирания сериен порт. В Mac това изглежда като мед. SLAB_USBtoUART.

Като първа програма бих предложил простия Wi-Fi скенер - намерете го от Файл -> Примери -> ESP8266WiFi -> WifiScan. Обърнете внимание, че се качва доста бавно, но в крайна сметка ще каже „свършено качване“ и в този момент (не преди или ще прекъснете процеса на качване) можете да отворите серийния монитор. Трябва да видите нещо подобно на това:

wifi сканиране тест esp8266
Успех! Сега, нека опитаме да се свържем с един.

Ето абсолютно прост код на баребони за свързване към Wi-Fi мрежа. Това не прави нищо друго освен просто свързване, но е нещо, което можете да добавите твърде късно. Просто не забравяйте да промените YOUR_SSID и YOUR_PASSWORD на своите данни за Wi-Fi. Качете, отворете серийната конзола и трябва да видите как се свързва.

 #include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print ("Свързване към"); Serial.println (ssid); WiFi.begin (ssid, парола); докато (WiFi.status ()! = WL_CONNECTED) {забавяне (500); Serial.print ( "."); } Serial.println (""); Serial.println ("WiFi свързан"); Serial.println ("IP адрес:"); Serial.println (WiFi.localIP ()); } void loop () {}

Не е ли чудесно колко нелепо беше просто?

Преди да продължим, ето диаграмата на избистряне - може да е полезна по-късно. Обърнете внимание, че номерата на пиновете, посочени в кода, са номера на GPIO, а не D0-16, вероятно написани на вашата платка. Ако абсолютно не можете да разберете защо датчикът не работи, вероятно сте смесили номерата на щифтовете.

NodeMCU__v1.0_pinout

Бърз сензор за интелигентен дом с MQTT и DHT11

Ето практичен пример, който можете да използвате веднага, за да наблюдавате дома си. Ще добавим DHT11 сензор за температура и влажност, след което ще отчитаме стойностите, използвайки протокола MQTT през Wi-Fi мрежата, в моя случай до система за домашна автоматизация на OpenHAB DIY (ако не, може да искате да прочетете наш начинаещи ръководство за стартиране на OpenHAB и работа на Raspberry Pi Първи стъпки с OpenHAB Home Automation на Raspberry PiOpenHAB е зряла платформа за домашна автоматизация с отворен код, която работи на различен хардуер и е протокол агностик, което означава, че може да се свърже с почти всеки хардуер за домашна автоматизация на пазара днес. Прочетете още и част 2, която се занимава конкретно с инсталиране на MQTT сървър Ръководство за начинаещи на OpenHAB Част 2: ZWave, MQTT, правила и диаграмиOpenHAB, софтуерът за домашна автоматизация с отворен код, далеч надхвърля възможностите на други системи за домашна автоматизация на пазара - но не е лесно да се настрои. Всъщност това може да бъде направо разочароващо. Прочетете още ).

От страната на окабеляването свържете DHT сензора към GND, 3.3v, и ~ D4 (или GPIO 2). Това е всичко, което ни трябва сега.

Изтегли тези библиотеки MQTT и DHT. Дори ако вече ги имате, изтеглете тези, така или иначе, архивирайте това, което имате, и ги презапишете. Най-новата библиотека на DHT11 от Adafruit използва автоматичен алгоритъм за определяне на скоростта, с която данните се четат от сензора, но това е бъг в ESP8266 и 90% от времето води до неуспех четения.

Със старата версия 1.0 на библиотеката, която включих в изтеглянето, можете ръчно да промените времето: 11 работи най-добре за тези ESP2866 дъски. Преминах и през много копия на библиотеката на MQTT, опитвайки се да намеря едно добро обаждане функция, накрая кацане на включената. Ще трябва да рестартирате Arduino IDE, след като ги замените.

Ето го пълен код за проекта. В горната част са всички променливи, които трябва да промените, включително подробности за Wi-Fi, MQTT сървър (може да се използва URL адрес вместо това, ако използвате облачен сървър, въпреки че няма автентификация на място) и канали за публикуване на данни.

Ето как работи и няколко бележки:

  • Първо се свързваме към Wi-Fi, след това към MQTT сървъра, след което започваме основния линия ().
  • В контура опрашваме DHT сензора на всеки 60 секунди и публикуваме показания на съответните MQTT канали. Отново, ако откриете, че повечето от показанията водят до съобщение за грешка, имате грешна версия на DHT библиотеката - понижаване до v1.0.
  • client.loop () предава контрола върху библиотеката MQTT, което му позволява да реагира на входящи съобщения.
  • Има съобщението прието() функция, при която обработваме входящи съобщения - просто направете проста операция if, за да сравните полезния товар със съобщението, което очаквате. Можете да използвате това, за да активирате реле, например.
  • След като ги пуснах няколко дни, установих, че на случаен принцип ще спрат да работят - Предполагам, че това е някакъв вид изтичане на памет, но предвид Нямам умение за кодиране, за да се справя с това и може да е с основните библиотеки, избрах просто софтуерно нулиране всеки ден. Точно един ден след първото активиране на възлите на сензорите, те ще се рестартират.
  • Когато захранвате тези евтини DHT11 модули от 3.3v, стойностите на влажността са далеч по-ниски, отколкото трябва да бъдат. Реших това с просто умножение и калибрирано спрямо търговски сензор. Препоръчвам ви да потвърдите и собствения си известен източник, преди да разчитате на показанията. Алтернативно, захранвайте ги с 5V - но трябва да поставите 5v-3.3v логическо превключващо ниво между щифта за данни и ESP8266, или ще го повредите.

Ако всичко мина добре, сега трябва да получавате показания на сензори във вашия MQTT брокер и можете да продължите с свързването им към OpenHAB, както е описано подробно в част 2 от нашето ръководство за начинаещи Ръководство за начинаещи на OpenHAB Част 2: ZWave, MQTT, правила и диаграмиOpenHAB, софтуерът за домашна автоматизация с отворен код, далеч надхвърля възможностите на други системи за домашна автоматизация на пазара - но не е лесно да се настрои. Всъщност това може да бъде направо разочароващо. Прочетете още , където също ви показах как да графирате данните.

графика на влажност от openhab

Сбогом Ардуино, така те обичахме. Само се шегувам: не навсякъде в къщата ми дори може да се сдобие с Wi-Fi, така че за тези петна все още ще ми трябва мрежова мрежа с Arduino и RF приемници.

За забавен проект, вижте как да направите бутон за Wi-Fi с ESP8266 Как да направите своя собствена Wi-Fi връзка с ESP8266В този урок ще научите как да създадете бутон с активиран Wi-Fi с помощта на NodeMCU и IFTTT. Прочетете още .

Но какво ще направите с ESP8266? Някакви проекти, използващи ESP8266, които искате да видите написани в MakeUseOf? Уведомете ни в коментарите!

Джеймс има бакалавърска степен по изкуствен интелект и е сертифициран като CompTIA A + и Network +. Той е водещ разработчик на MakeUseOf и прекарва свободното си време, играейки VR пейнтбол и настолни игри. Той изгражда компютри още от дете.