Кратко опишу процесс создания метеостанции подключенной к narodmon.ru.
Один из самый дешевых модулей ESP8266.
Герметичный температурный датчик DS1820.
Заливаем micropython на нашу плату. Для этого подключаем плату через usb кабель к компьютеру(все действия я провожу в linux), в выводе dmesg видем, что устройство приаттачено к ttyUSB0:
Если не еще не установленна тулза для работы с платой, устанавливаем:
Загружаем дистрибутив micropython: Firmware for ESP8266 boards,
на момент написания статьи стабильная актуальная версия была esp8266-20190125-v1.10.bin
При необходимости затираем память нашей платы:
$ sudo esptool.py --port /dev/ttyUSB0 erase_flash
и записываем микропайтон:
$ esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20190125-v1.10.bin
Подключаемся к плате:
$ sudo picocom /dev/ttyUSB0 -b115200
узнаем макадрес устройства, позже его введем в переменную client_id:
Включаем WebREPL(необходим для заливки скриптов), не буду описывать весь процесс, вот тут всё хорошо показано: https://learn.adafruit.com/micropython-basics-esp8266-webrepl/access-webrepl
Регистрируетесь на narodmon.ru
Пишем скрипт:
Сохраняем в файл с именем main.py (именно файл с таким названием будет выполняться каждый раз при загрузке устройства).
Подключаемся по wifi к плате и через webrepl заливаем на него наш файл. Теперь когда вы подключитесь к плате по USB, чтобы работать с командной строкой интерпритатора не забудьте нажать ctrl+c, чтобы прервать бесконечный цикл скрипта main.py
Подключаем температурный датчик к плате:
для получения данных использую пин D6, питание с пина 3V3, земля GND.
Имейте ввиду в данной плате нет RTC и поэтому советы типа отправлять плату в deep sleep для нее не актуальны, необходимо использовать внешний модуль RTC иначе плата просто не проснется.
В двух словах как-то так. Есть вопросы? Спрашивайте в телеге https://t.me/mimokrokodil
Один из самый дешевых модулей ESP8266.
Герметичный температурный датчик DS1820.
Заливаем micropython на нашу плату. Для этого подключаем плату через usb кабель к компьютеру(все действия я провожу в linux), в выводе dmesg видем, что устройство приаттачено к ttyUSB0:
Если не еще не установленна тулза для работы с платой, устанавливаем:
$ pip install esptool
подробней тут
Загружаем дистрибутив micropython: Firmware for ESP8266 boards,
на момент написания статьи стабильная актуальная версия была esp8266-20190125-v1.10.bin
При необходимости затираем память нашей платы:
$ sudo esptool.py --port /dev/ttyUSB0 erase_flash
и записываем микропайтон:
$ esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20190125-v1.10.bin
Подключаемся к плате:
$ sudo picocom /dev/ttyUSB0 -b115200
узнаем макадрес устройства, позже его введем в переменную client_id:
import network import ubinascii ubinascii.hexlify(network.WLAN().config('mac'),':').decode()
Включаем WebREPL(необходим для заливки скриптов), не буду описывать весь процесс, вот тут всё хорошо показано: https://learn.adafruit.com/micropython-basics-esp8266-webrepl/access-webrepl
Регистрируетесь на narodmon.ru
Пишем скрипт:
import time import network import onewire import ds18x20 from umqtt.simple import MQTTClient num = 1 while num < 10: sta_if = network.WLAN(network.STA_IF) sta_if.active(True) sta_if.connect('ВАША_WIFI_СЕТЬ', 'ПАРОЛЬ') while not sta_if.isconnected(): pass client=MQTTClient(client_id='12:34:56:78:90:12', server='narodmon.ru', port=1883, user='ПОЛЬЗОВАТЕЛЬНАРОДМОН', password='ПАРОЛЬНАРОДМОН') client.connect() ow=onewire.OneWire(machine.Pin(12)) ds=ds18x20.DS18X20(ow) roms=ds.scan() ds.convert_temp() time.sleep_ms(750) temperature=ds.read_temp(roms[0]) client.publish('ВАШНИКНЕЙМ/НАЗВАНИЕДАТЧИКА/temperature', str(temperature)) time.sleep(10) sta_if.disconnect() time.sleep(360)
Сохраняем в файл с именем main.py (именно файл с таким названием будет выполняться каждый раз при загрузке устройства).
Подключаемся по wifi к плате и через webrepl заливаем на него наш файл. Теперь когда вы подключитесь к плате по USB, чтобы работать с командной строкой интерпритатора не забудьте нажать ctrl+c, чтобы прервать бесконечный цикл скрипта main.py
Подключаем температурный датчик к плате:
для получения данных использую пин D6, питание с пина 3V3, земля GND.
Имейте ввиду в данной плате нет RTC и поэтому советы типа отправлять плату в deep sleep для нее не актуальны, необходимо использовать внешний модуль RTC иначе плата просто не проснется.
В двух словах как-то так. Есть вопросы? Спрашивайте в телеге https://t.me/mimokrokodil
Комментариев нет:
Отправить комментарий