Встречайте убийцу Ардуино: ESP8266

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.

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

В настоящее время существует довольно много моделей 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-адрес, где он говорит Дополнительные ссылки на Board Manager:

Arduino Board Manager URLS

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

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

Оставьте процессор и загрузите скорость как есть, и выберите ваш вновь установленный последовательный порт. На Mac это выглядит как cu.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("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
}

Разве это не здорово, как это просто смешно?

Прежде чем мы продолжим, вот схема распиновки — она ​​может пригодиться позже. Обратите внимание, что номера контактов, указанные в коде, являются номерами GPIO, а не D0-16, вероятно, записанными на вашей печатной плате. Если вы абсолютно точно не можете понять, почему датчик не работает, вы, вероятно, перепутали номера выводов.

NodeMCU__v1.0_pinout

Быстрый Умный Дом Датчик с MQTT и DHT11

Вот практический пример, который вы можете сразу использовать для наблюдения за своим домом. Мы добавим датчик температуры и влажности DHT11, а затем сообщим о значениях по протоколу MQTT по сети Wi-Fi, в моем случае, в систему домашней автоматизации OpenHAB DIY (если нет, вы можете прочитать наше руководство для начинающих по получить OpenHAB и запустить на Raspberry Pi

и часть 2, посвященная установке сервера MQTT

).

Со стороны проводки подключите датчик 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, как подробно описано во второй части нашего руководства для начинающих.

где я также показал вам, как построить график данных.

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

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

Для веселого проекта, проверьте, как сделать кнопку Wi-Fi с ESP8266

,

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

Ссылка на основную публикацию
Adblock
detector