Показаны сообщения с ярлыком esp8266. Показать все сообщения
Показаны сообщения с ярлыком esp8266. Показать все сообщения

воскресенье, 29 марта 2020 г.

Конфигурация сенсоров в arduino-air-sensors

Сделал обновление для моего проекта arduino-air-sensors - теперь есть возможность настраивать конфигурацию плат с контроллерами esp8266. Последняя ревизия кода поддерживает сенсоры DHT22/AM2302, BME280, SI7021, MH-Z19 и OLED экран на базе контроллера SSD1306.

Прошивку тестировал на платах ESP01 и ESP12S - получились такие конфигурации:
  • ESP01 + SI7021 (SI7021 подключен к GPIO0/GPIO2)
  • ESP01 + BME280 (BME280 подключен к GPIO0/GPIO2)
  • ESP12F + DHT22 + MH-Z19 + SSD1306 (SSD1306 подключен к GPIO4/GPIO5, DHT22 к GPIO14, a MH-Z19 к GPIO15/GPIO13).
В последней конфигурации используется переключение UART0 с GPIO1/GPIO3 на  GPIO15/GPIO13. До этого пробовал использовать библиотеку SoftwareSerial но работает она нестабильно.

Еще заказал на пробу AHT10 - это датчик температуры и влажности для шины I2C.

суббота, 13 января 2018 г.

Прошивка ESPEasy для ESP8266

Открыл для себя прошивку ESPEasy от Let's Control It для ESP8266. ESPEasy собирается с разным набором модулей и доступна для различных объемов flash памяти. Я буду заливать прошивку в ESP-12S, который купил ранее и мне нужно узнать какой объем flash памяти установлен на моих чипах.

$ ./esptool.py --port /dev/ttyUSB0 --baud 115200 flash_id
Connecting...
Manufacturer: ef
Device: 4016

Согласно информации проекта CoreBoot в модуле установлен чип Winbond W25Q32, содержащий 4MB памяти.

Если проверить модули ESP-01, с которых я начинал знакомство с ESP8266, то выдает следуещее:

$ ./esptool.py --port /dev/ttyUSB0 --baud 115200 flash_id
Connecting...
Manufacturer: c8
Device: 4013

Если верить CoreBoot, то должна быть установлена GigaDevice GD25Q40, и в подтверждение тому на плате стоит GD25Q41BT, имеющая объем flash памяти 4Mb или 512kB.

Скачать прошивку с GitHub можно здесь. Я брал ESP_Easy_v2.0-20180113_test_ESP8266_4096.bin чтобы была поддержка датчика углекислого газа MH-Z19.

Для заливки прошивки можно использовать esptool из Arduino или esptool.py. Я использую первый из них.

$ ~/.arduino15/packages/esp8266/tools/esptool/0.4.8/esptool -vv -cd nodemcu -cb 115200 -cp /dev/ttyUSB0 -ca 0x00000 -cf ~/tmp/ESP_Easy_v2.0-20180113_test_ESP8266_4096.bin
esptool v0.4.8 - (c) 2014 Ch. Klippel
 setting board to nodemcu
 setting baudrate from 115200 to 115200
 setting port from /dev/ttyUSB0 to /dev/ttyUSB0
 setting address from 0x00000000 to 0x00000000
 espcomm_upload_file
 espcomm_upload_mem
opening port /dev/ttyUSB0 at 115200
 tcgetattr
 tcsetattr
 serial open
opening bootloader
resetting board
trying to connect
 setting character timeout 0
 done
 setting character timeout 1
 done
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
trying to connect
 setting character timeout 0
 done
 setting character timeout 1
 done
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
 espcomm_send_command: receiving 2 bytes of data
 espcomm_send_command: receiving 2 bytes of data
 espcomm_send_command: receiving 2 bytes of data
 espcomm_send_command: receiving 2 bytes of data
 espcomm_send_command: receiving 2 bytes of data
 espcomm_send_command: receiving 2 bytes of data
 espcomm_send_command: receiving 2 bytes of data
 espcomm_send_command: receiving 2 bytes of data
Uploading 566528 bytes from to flash at 0x00000000
 erasing flash
 size: 08a500 address: 000000
 first_sector_index: 0
 total_sector_count: 139
 head_sector_count: 16
 adjusted_sector_count: 123
 erase_size: 07b000
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
 setting timeout 15000
 setting character timeout 150
 done
 setting timeout 1
 setting character timeout 1
 done
 espcomm_send_command: receiving 2 bytes of data
 writing flash
..................................................
starting app without reboot
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
 espcomm_send_command: receiving 2 bytes of data
closing bootloader

После сброса в сети появится новая точка доступа с именем "ESP_Easy_0" (пароль "configesp"). При подключении к ней телефон определил captivate portal в котором предлагается настроить подключение к WiFi.

К одному из модулей у меня подключены BME280 и MH-Z19, а ко второму SI7021. Оба датчика показывают очень близкие значения температуры и влажности, когда находятся рядом, но BME280 примерно в два раза дороже.

К обоим модулям подключены OLED экраны разрешением 128x64 на базе контроллера SSD1306. Данные передаются по MQTT в Mosquitto из которого Munin забирает их для построения графиков. В дальнейшем хочу перейти на что-то вроде MajorDomo, OpenHAD или Domoticz.


Для защиты от выгорания экран включается на 15 секунд по нажатию на кнопку flash (подключена к gpio-0).


На экран выводятся значения температуры, влажности и концентрации углекислого газа в воздухе.

Основная информация по работе прошивки.


Настройки прошивки: название юнита, настройки WiFi, статическая конфигурация сети (если нужно).


Настройки контроллеров. Я использую MQTT брокер Mosquitto.


Настройки выходов при загрузке.


Конфигурация подключенных датчиков. На этом модуле сконфигурирован экран SSD1306, BME280 и MH-Z19.


Нотификации я не использую, т.к. для этого у меня есть Nagios и Munin.


Раздел с инструментами. Из интересного /log и /json. Оба можно использовать для мониторинга устройства.


Прошивка выглядит очень интересной. Надеюсь проблем со стабильностью ее работы также не возникнет.

воскресенье, 29 октября 2017 г.

ESP8266 + AM2302 + MH-Z19

Это продолжение поста про слежение за "погодой" в доме. Пришли заказанные в августе модули ESP8266 ESP-12S. Запаял их на платы и приступил к переделке проекта arduino-air-sensors.



На плате есть два резистора по 10k и один резистор-перемычка. Один из резисторов на 10k подтягивает ch_pd к питанию, а второй - gpio15 к земле. Чтобы плата запускалась без проблем еще нужно подтянуть gpio0 и gpio2 к питанию через резисторы номиналом 10k. Во время заливки прошивки нужно подтянуть gpio0 к земле.

Bootloader Modes
Modegpio0gpio2gpio15
UART Download Mode (Programming)010
Flash Startup (Normal)110
SD-Card Boot001

На нижней стороне платы есть место для стабилизатора напряжения на 3,3V и при его отстутствии нужен резистор-перемычка, который соединяет вход и выход питания для стабилизатора.

Но не спешите запаивать туда популярный AMS1117-3.3. Нужен стабилизатор, имеющий порядок выводов "Gnd, Vin, Vout", а у AMS1117 порядок выводов "Gnd, Vout, Vin". Можно попробовать MCP1700 в корпусе SOT-23 или SOT-89, но в этом случае максимальное входное напряжение не должно превышать 6V, а выходной ток - 250mA. Я не пробовал такое подключение, но при работе от USB или 3-х батареек AA должно работать.

Переписал скетч с Ethernet Shield на ESP8266 и добавил в проект схему в формате Eagle и PNG.

Для проверки надежности запустил siege на список урлов, которые поддерживает прошивка. Если за сутки ничего не отвалится и не зависнет, то можно говорить о какой-то надежности. Напомню, что версия на Ethernet Shield зависала случайным образом проработав от нескольких часов до суток и более.

воскресенье, 15 октября 2017 г.

Не везет с покупкой ESP8266 ESP-12S

С весны пытаюсь заказать два модуля ESP8266 в варианте ESP-12S.


ESP-12S - последний вариант эволюции модулей ESP-12E и ESP-12F. От двух последних отличается отсутствием падов для SPI flash на торце и наличием 4MB flash памяти (по непроверенным слухам).

В мае заказал два модуля на eBay у продавца kingelectronics15. Высокий рейтинг продавца и много продаж внушали доверие. В августе начал пинать продавца на предмет "а где моя посылка" - в итоге возврат средств без каких либо дополнительных вопросов.

Ну бывает, подумал я, и заказал эти модули у продавца caelectronics8. Аналогично высокий рейтинг и много продаж. На этой неделе я обратился к продавцу с тем же вопросом - где моя посылка? В итоге возрат средств.

Появилась мысль, что на почте завелся электронщик, которому приглянулись мои модули. Но эта мысль развеялась, когда я заглянул в транзакции Paypal - оба продавца имеют одинаковый email! В принципе если бы я был более внимателен к мелочам, то в самом начале можно было заметить одинаковый текст в оповещении о заказе. Как там говорят - в одну воронку снаряд дважды не попадает?

В этот раз испытываю удачу на Aliexpress. Теперь заказал пересылку с треком. Надеюсь я не настолько "везуч", чтобы в третий раз наткнуться на этого продавца.

Update 2017-10-24: Сегодня забрал на почте посылку от caelectronics8. Пересылка составила больше 60 дней, но подозрения в нечестности продавца развеялись. Возможно первая посылка от kingelectronics15 действительно потерялась на почте.

воскресенье, 10 мая 2015 г.

Знакомство с контроллером ESP8266 и обновление его прошивки

Уже неделю в загашнике томятся два модуля esp8266, которые я заказывал на поиграться. Прелесть этого микроконтроллера в том, что он достаточно производительный и с wifi на борту. Использовать его сетевые возможности можно через AT команды (при подключении через UART к другому MCU), либо как самостоятельный контроллер (существуют прошивки вроде NodeMCU, позволяющие программировать его непосредственно). Все это в совокупности с низкой ценой принесло ему популярность в среде самоделкиных.

Для начала я заказал вариант ESP-01, который больше всего подходит для старта. Выглядит он вот так:


Контроллер нуждается в питании 3.3VDC и такое же напряжение должно использоваться для ввода/вывода. Для тестирования его работы достаточно переключить USB-TTL адаптер в режим 3.3V, но для связи с другой периферией, например Arduino, нужно обеспечить конвертирование 5V <-> 3.3V. Для этих целей я прикупил level shifter:


Минимальная схема подключения выглядит так:


В начале я невнимательно прочел документацию и не подключил вывод CH_PD к VCC. Соответственно контроллер просто не загружался. Следующей проблемой было определить правильные настройки скорости порта. Тут помог простой перебор всех скоростей, пока в терминале не показывался нормальный вывод.

Оказалось, что два моих модуля имели разные прошивки. Один инициализировался на скорости 115200, а второй на 9600. Чтобы привести их к общему знаменателю решил обновить прошивку у того, который на 9600.

Для начала скачиваю прошивку и утилиту esptool. Ссылки и прочую информацию брал с esp8266.ru. Чтобы перевести контроллер в режим прошивки нужно:
  • выключить питание контроллера (отключить пин VCC от USB-TTL конвертора, но не выключать сам конвертер)
  • соединить пин GPIO0 к GND
  • включить питание контроллера (подключить пин VCC к USB-TTL конвертеру)
  • запустить прошивальщик
$ ./esptool.py -p /dev/ttyUSB0 -b 9600 write_flash 0x000000 ./AT21SDK95-2015-01-24.bin

Прошивка длится довольно долго. По окончании нужно отключить питание, отключить пин GPIO0 от GND и включить питание снова. Теперь скорость связи возросла до 115200. Позже попробую цепляться к домашнему WiFi и что-нибудь слать на сервер.