Я работаю над проектом по автоматизации нашего курятника (см. Мою статью « Преодолевая себя и делая вещи простым способом» для более подробной информации о проекте). Прямо сейчас огни открываются и закрываются сами по себе: это нужно было сделать сейчас, так как цыплята испытывали проблемы с откладыванием яиц в наши короткие осенние дни. Текущая система использует Arduino Uno, модуль часов реального времени с микросхемой DS1307 и аналоговым диммером. Вы можете увидеть код этой версии на GitHub: https://github.com/CindyPotvin/Chickmatic/tree/master/Phase1-ScheduleTime
Я работаю над вторым этапом: возможность изменять расписание прямо с наших телефонов и собирать данные о погоде изнутри и снаружи курятника. Я планирую использовать Arduino, который мне уже нужен, для сбора данных и управления диммером, а также добавить чип ESP8266 для подключения этой системы к нашей домашней сети.
Другой сервер внутри дома, вероятно, Raspberry Pi, будет использоваться для размещения небольшого веб-приложения в NodeJS, которое будет сохранять расписание и данные о погоде. Это также выполняется на GitHub по адресу: https://github.com/CindyPotvin/Chickmatic/tree/master/WebServer.
Для начала мне пришлось выяснить, как подключиться к сети с помощью ESP8266. Я купил дешевую, плохо документированную плату (ESP13 от doit.am), которая монтирует чип как щит Arduino, чтобы их можно было сложить:
Вот где начались проблемы. Из-за форм-фактора я подумал, что смогу отправлять HTTP-запросы от Arduino, а ESP8266 будет тупым чипом, передающим запрос.
Это далеко от истины: ESP8266 также является микроконтроллером, и он также должен быть запрограммирован. Он поставляется с предустановленной странной китайской прошивкой, которую я мог бы использовать, чтобы увидеть, работает ли плата, но не более того. К счастью, его также можно запрограммировать с помощью Arduino IDE, и есть несколько хороших примеров, поэтому я мог бы начать с этого.
К сожалению, напрямую программировать чип не так просто, так как у него нет собственного USB-порта. В Интернете есть множество предложений о том, как обойти Arduino и использовать его USB-порт для программирования чипа, но он никогда не работал, и я всегда получал следующие ошибки:
warning: espcomm_sync failed
error: espcomm_open failed
TL; DR Единственный способ, которым я легко запрограммировал ESP8266, — это использовать кабель FTDI 3,3 В, который я купил на eBay за несколько долларов, вытянуть цифровой вывод 0 на землю (как указано в документации к ESP8266), перезагрузить компьютер и тогда мне было хорошо идти. Не трать время, как это было.
Хорошо, чтобы пойти на несколько минут, то есть. После первого подключения к сети и поздравления с успехом я никогда не мог подключиться второй раз, используя тот же код. После долгих экспериментов я обнаружил, что лучший способ убедиться, что он всегда работает, — это отключиться от сети, а затем снова подключиться во время загрузки чипа. Вот как выглядит моя установка для ESP8266:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
void setup() { Serial.begin( 115200 ); WiFi.disconnect(); // Required or it won't always reconnect to wifi WiFi.persistent( false ); Serial.print( "Connecting" ); WiFi.begin( /*username*/ , /*password*/ ); while (WiFi.status() != WL_CONNECTED) { delay( 5500 ); Serial.print( "status" ); Serial.println(WiFi.status()); } Serial.println( " connected" ); Serial.println(WiFi.localIP()); } |
Итак, я наконец-то готов приступить к программированию теперь, когда я доказал, что могу подключиться к своей сети. Точнее, я хочу использовать шину I2C для соединения Arduino и ESP8266 вместе с помощью библиотеки Wire. ESP8266 отправит все HTTP-запросы и проанализирует ответы. Это оставит стандартные последовательные порты свободными, так что я могу отлаживать и программировать оба чипа, не отключая каждый раз все.
Мне кажется логичным, но экран не соединяет шину I2C для Arduino и ESP8266, а только последовательный порт. Я не могу просто подключить их самостоятельно, так как ESP8266 работает с 3,3 В логическими уровнями, в то время как Arduino работает с 5 В. Мне нужно иметь переключатель логического уровня, как то, что они делали на экране с последовательными портами (синие DIP-переключатели используются для переключения между программированием чипа и соединением чипов вместе). Он может работать некоторое время, если я все равно обманул и подключил их, но в итоге ESP8266 зажарится.
Так как я действительно хочу сохранить последовательные порты для отладки, и поскольку экран на самом деле ничего не добавляет к проекту, я заказал новый ESP8266 от eBay, это всего лишь чип, установленный на плате с открытым портом I2C, наряду с заказ на несколько сменщиков уровня. Чтобы найти хорошую плату, потребовалось некоторое время: многие дешевые модели выставляют только последовательные порты, а я хотел немного больше. Я все еще хочу, чтобы новые фишки появились в почте, так что следите за обновлениями!
Ссылка: | Подключите чип ESP8266 к вашей сети от нашего партнера JCG Синди Потвин в блоге по веб-программированию, мобильному программированию и Android-программированию . |