Реклама

Wi-Fi является неотъемлемой частью любого DIY-проекта Internet of Things (IoT), но наш любимый Arduino не поставляется с Wi-Fi, а добавление щита Wi-Fi может привести к общей стоимости около 40 долларов. Что если я скажу вам, что есть Arduino-совместимая dev-плата со встроенным Wi-Fi менее чем за 10 долларов? Ну, есть.

Встречайте убийцу Ардуино: ESP8266. Это был лишь вопрос времени, когда корона была украдена из блестящей головы нашего дорогого разработчика Arduino. Можно ли влюбиться в печатную плату?

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

Менее чем за год ESP8266 завоевал популярность, и теперь он так хорошо поддерживается и развивается, что, если вы сейчас используете Arduino, вам нужно встать и принять к сведению. Купи сейчас, а затем следуйте этому руководству, чтобы начать программировать свой ESP8266 - и все это в знакомой среде Arduino IDE.

instagram viewer

Вы, конечно, не ограничены использованием Arduino IDE - они также совместимы с Lua (который выглядит как уменьшенный Python для моего глаза новичка), но поскольку мы занимаемся этим с точки зрения тех из нас, кто учился на Arduino, это то, что мы рассмотрим исключительно Cегодня.

Сейчас существует довольно много моделей ESP8266, но я собираюсь пойти дальше и рекомендовать эту: ESP-12E (также известный как NodeMCU 1.0 или новейшая версия NodeMCU 2.0).

Это немного дороже, чем другие (6,50 долл. По сравнению с 4 долл.!), Но включает в себя драйвер последовательного порта, необходимый для программирования чипа, и имеет встроенный регулятор мощности, а также множество выводов ввода-вывода. Он широко поддерживается и на самом деле ничего не нужно, кроме USB-соединения для программирования или питания, поэтому с ним проще всего работать. Если вы покупаете какую-либо другую плату ESP8266, вам может понадобиться отдельный стабилизатор питания 3,3 В и подходящее соединение FTDI для программирования.

Начало работы с ESP8266-12E и Arduino

Первый, установить серийные драйверы для этой доски. Вам может понадобиться отключить подпись KEXT если вы работаете в El Capitan из-за новых систем безопасности.

Далее нам нужно включить поддержку ESP8266 от менеджера плат Arduino IDE. Откройте «Настройки» и введите следующий URL, где написано Дополнительные адреса менеджера форума:

Arduino Board Manager URLS

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

выберите доску

Оставьте процессор и загрузите скорость как есть, и выберите ваш вновь установленный последовательный порт. На Mac это выглядит как кубический SLAB_USBtoUART.

В качестве первой программы я бы предложил простой сканер Wi-Fi - найдите его у Файл -> Примеры -> ESP8266WiFi -> WifiScan. Обратите внимание, что загрузка происходит довольно медленно, но в конечном итоге будет сказано, что загрузка завершена, и в этот момент (не раньше, или вы прервете процесс загрузки) вы можете открыть монитор Serial. Вы должны увидеть что-то похожее на это:

тест сканирования wifi esp8266
Успех! Теперь давайте попробуем подключиться к одному.

Вот абсолютно простой код для подключения к сети Wi-Fi. Он не делает ничего, кроме простого подключения, но вы можете добавить его позже. Просто не забудьте изменить YOUR_SSID и YOUR_PASSWORD на свои данные Wi-Fi. Загрузите, откройте консоль Serial и вы увидите, что она подключается.

 #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, пароль); while (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 - это зрелая платформа домашней автоматизации с открытым исходным кодом, которая работает на различных аппаратных средствах и является независимость от протокола, что означает, что он может подключаться практически к любому оборудованию домашней автоматизации на рынке Cегодня. Прочитайте больше и часть 2, которая посвящена конкретно установка MQTT-сервера Руководство для начинающих OpenHAB, часть 2: ZWave, MQTT, правила и графикиOpenHAB, программное обеспечение для домашней автоматизации с открытым исходным кодом, намного превосходит возможности других систем домашней автоматизации, представленных на рынке, но настроить его нелегко. На самом деле, это может быть совершенно расстраивающим. Прочитайте больше ).

Со стороны проводки подключите датчик DHT к GND, 3.3В, и ~ 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 - понизьте ее до версии 1.0.
  • client.loop () передает управление библиотеке MQTT, позволяя ей реагировать на входящие сообщения.
  • Есть Сообщение получено() Функция, в которой мы обрабатываем входящие сообщения - просто сделайте простой оператор if, чтобы сравнить полезную нагрузку с ожидаемым сообщением. Вы можете использовать это, например, для активации реле.
  • После нескольких дней работы я обнаружил, что они случайно перестали работать - я полагаю, это какая-то утечка памяти, но учитывая У меня нет навыков кодирования, чтобы справиться с этим, и это может быть с основными библиотеками, я выбрал простой программный сброс каждый раз день. Ровно через день после того, как узлы датчиков впервые активируются, они перезапустятся сами.
  • При питании этих дешевых модулей DHT11 от 3,3 В значения влажности намного ниже, чем должны быть. Я решил это простым умножением и откалибровал по коммерческому датчику. Я бы посоветовал вам также подтвердить свой собственный известный источник, прежде чем полагаться на показания. Кроме того, питание их 5 В - но Вы должны установить переключатель логического уровня 5–3,3 В между контактом данных и ESP8266, иначе вы его повредите..

Если все прошло хорошо, теперь вы должны получать показания датчиков в вашем брокере MQTT и можете подключить их к OpenHAB, как подробно описано в часть 2 нашего руководства для начинающих Руководство для начинающих OpenHAB, часть 2: ZWave, MQTT, правила и графикиOpenHAB, программное обеспечение для домашней автоматизации с открытым исходным кодом, намного превосходит возможности других систем домашней автоматизации, представленных на рынке, но настроить его нелегко. На самом деле, это может быть совершенно расстраивающим. Прочитайте больше где я также показал вам, как построить график данных.

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

Прощай, Ардуино, мы так тебя любили. Просто шучу: не везде в моем доме можно даже получить Wi-Fi, поэтому для этих мест мне все равно понадобится ячеистая сеть с Arduino и радиочастотными приемниками.

Для веселого проекта, проверьте как сделать кнопку Wi-Fi с ESP8266 Как сделать свою собственную кнопку подключения Wi-Fi с ESP8266В этом руководстве вы узнаете, как создать кнопку с поддержкой Wi-Fi с помощью NodeMCU и IFTTT. Прочитайте больше .

Но что вы будете делать с ESP8266? Какие проекты, использующие ESP8266, вы хотели бы видеть написанными на MakeUseOf? Дайте нам знать об этом в комментариях!

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