Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1

В прошлой части, мы с вами уже собрали датчик. В этой части сделаем индикатор температуры c LCD дисплеем. За основу взята плата Wemos D1 на микроконтроллере ESP-8266EX и дисплей на распространенном HD44780, у меня он уже был с адаптером для подключения по I2C.

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Подключение дисплея к ESP-8266

Как я уже говорил выше, у меня дисплей был с адаптером для подключения через шину I2C. Схема подключения проще некуда:

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Понадобятся всего 4 провода: 2 для питания экранчика и 2 для передачи данных.


LCD VCC - NodeMCU 5V

LCD GND - NodeMCU GND

LCD SCL - NodeMCU D1

LCD SDA - NodeMCU D2

У меня экранчик работал от 5 вольт, смотрите внимательно на вольтаж вашего.

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Здесь прекрасно видно что куда подключено, справится каждый!

Подключение и прошивка

Прошивку будем заливать с помощью ESP8266Flasher.exe, как это сделать вы можете прочитать в прошлой части. Шаги будут практически идентичны. Отправляемся на https://nodemcu-build.com/ и собираем прошивку со следующими модулями: bit,cjson,dht,file,gpio,http,i2c,net,node,ow,pwm,rtctime,sntp,spi,tmr,uart,wifi

Пишем логику работы

Упрощенно логика работы такова: включаемся, подключаемся к wi-fi, получаем ip, получаем точное время с NTP сервера (см. файл ntp.lua), там в успешный коллбэк пишем переход к нашему main.lua. В нём вызовем updateLcdRow1(), updateLcdRow2() для обновления строк экранчика и при первом запуске создадим таймеры createTimers() для последующего обновления значений времени и температуры.

Что нужно изменить в файлах:

Файл init.lua: wifi.sta.config("YOUR_AP_NAME", "YOUR_AP_PASSWD")


Вместо YOUR_AP_NAME, YOUR_AP_PASSWD вписываем название своей точки доступа и пароль к ней.


Файл ntp.lua: sntp.sync('ru.pool.ntp.org', - можно указать свой адрес ntp-сервера.


Файл main.lua: tm = rtctime.epoch2cal(rtctime.get()+10800) 10800 секунд = 3 часа - это указание временной зоны. С ntp сервера мне приходило время по гринвичу, т.е. GMT+0. В связи с тем что в текущей реализации nodemcu работы с датой и часовыми поясами реализована слабо, пришлось сделать вот так. Для часового пояса отличного от GMT+3 надо прописать своё значение секунд здесь.


Дальше, вот здесь http.get("http://api.thingspeak.com/channels/999999/fields/1.json?api_...", надо указать свою ссылку и API ключ к вашему аккаунту на thingspeak.


В качестве ДЗ, здесь же можно добавить в фэйл коллбэк http.get() получение показаний с датчика локально, на случай если пропал интернет.

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

На картинке пример работающей платы с выводом отладочной информации.


Файл i2clcd.lua, писал не сам, нашел у индусов. Здесь возможно придется поправить адрес устройства или номера GPIO, если подключать будете к другим, нежели чем у меня.

Как всегда, все исходники можно скачать на github. https://github.com/nossSpb/nodemcu-ds18b20-tutorial/tree/mas...


В следующей части поставим android studio и напишем с вами простое приложение для просмотра данных на смартфоне. Делитесь своими идеями в комментариях, задавайте вопросы. Спасибо что дочитали до конца.

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Дружище, извини, что оффтопом немного, не подскажешь модули (а ещё лучше схему и модули) для сбора видеокамеры? Суть: хочу на Arduino собрать камеру, камеру перед дверью повесить в подъезде (типа видеонаблюдение). Купить готовую не судьба, я в этом плане немного ебанутый, я хочу сам собрать.

раскрыть ветку (4)
Автор поста оценил этот комментарий

Честно говоря, не занимался вопросом. Знаю что есть модули камеры для распберри. В любом случае, я вам рекомендую посмотреть в сторону готовых камер, точно будет дешевле, причем с более предсказуемым качеством. На "сам собрать" можно оставить сборку NAS для хранения данных, ПО для работы со всем этим.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Если связываться с Wemos то лучше на LUA писать скетчи как я понял?

Видел уроки где в Arduino IDE пишут на wiringе и всё работает.

От чего это зависит, от прошивки или компилятора?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Если прошиваете на wemos прошивку Nodemcu, то под нее пишутся скрипты на lua. В этом случае не нужно именно перепрошивать каждый раз устройство после изменения своего кода, можно просто обновить "файл" на устройстве. Nodemcu дает упрощенную файловую систему, можно записывать отдельные файлики и давать им имена. С arduino ide, как я понимаю, ситуация несколько иная, после каждого изменения скетча, надо перекомпилировать все исходники и заливать в устройство.

1
DELETED
Автор поста оценил этот комментарий

Нельзя на Arduino камеру сделать: железо не потянет.

Можно на Raspberry Pi или аналогах, но дешевле будет готовую камеру на Али заказать.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку