Всегда мечтал иметь свою метеостанцию, но выходить и мерзнуть на балконе не нравится ни кому. Решил начать с простого - сделать датчик температуры с передачей данных по wifi в теплую квартиру. Для этого использовал небезызвестный ESP8266 и цифровой датчик температуры DS18B20.
Железо
DS18B20 - это цифровой датчик температуры т.е. у него две ноги питания и третья - цифровой сигнал. Это очень удобно т.к. параллельно можно подключить до 127 датчиков.

Дешевые варианты - на вид как транзисторы, более дорогие - имеют крупный герметичный корпус. Такие мы использовать не будем.
Подойдет любая esp 01 - 11.

Была горстка ESP-03 по тому сделал все на них.

Питается все хозяйство от 3.3В и потребляет как минимум 200мА.
Для прошивки нам понадобится USB-UART переходник. Им мы будем прошивать микроконтроллер. Мой вариант был на основе микросхемы CP2102.
Подключение
К пинам CH_PD и VVC контроллера ESP8266 подаем плюс 3.3в. RX и TX к USB-UART для замены прошивки.
При подключении датчика температуры DS18B20 с ESP8266 желательно с помощью резистора 4.7-10 кОм подтянуть сигнальную ногу к плюсу. Саму сигнальную ногу подключить к GPIO0 микроконтроллера.

Облако thingspeak
На сайте thingspeak.com регистрируем аккаунт, создаем канал, копируем 16-символьный ключ доступа. Этот ключ нужно будет зашить, без него облако не будет принимать данные.
Прошивка NodeMCU
Это прошивка запускает Lua скрипты. Последнюю версию можно скачать с гитхаба https://github.com/nodemcu/nodemcu-flasher Для перевода контроллера в режим программирования соединяем GPIO0 с землей, подаем питание. Теперь до следующей перезагрузки контроллер будет в этом режиме. Выставляем скорость программирования 115200 и зашиваем. Отрубаем/подрубаем питание и контроллер должен запуститься на новой прошивке. В консоль по UART будет выводиться сообщение ets Jan 8 2013,rst cause:1, boot mode:(1,0).
Заливка Lua скриптов и запуск
Скачиваем и запускаем загрузчик Lua скриптов http://benlo.com/esp8266/index.html#LuaLoader. Выставляем скорость 9600, если не соединяется, то пробуем передернуть питание у модуля. Проверяем соединение, нажав на кнопку ChipID. В консоль должен вывестись идентификатор чипа.
= node.chipid() 10371968
Выбираем наши скрипты и кнопкой UploadFile загружаем их на плату:
Библиотека для работы с датчиком DS18B20 https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_modules/ds18b20/ds18b20.lua
httpsender.lua это саписанный нами скрипт, который читает показания с датчика и отправляет их в облако thingspeak.com.
gpio = 3 require('ds18b20') ds18b20.setup(gpio) function sendData() t=ds18b20.read() print("Temp:"..t.." C\n") -- conection to thingspeak.com print("Sending data to thingspeak.com") conn=net.createConnection(net.TCP, 0) conn:on("receive", function(conn, payload) print(payload) end) -- api.thingspeak.com 184.106.153.149 conn:connect(80,'184.106.153.149') conn:send("GET /update?key=YOURAPIKEY&field1="..t.." HTTP/1.1\r\n") conn:send("Host: api.thingspeak.com\r\n") conn:send("Accept: */*\r\n") conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n") conn:send("\r\n") conn:on("sent",function(conn) print("Closing connection") conn:close() end) conn:on("disconnection", function(conn) print("Got disconnection...") end) end -- send data every 60000 ms to thing speak tmr.alarm(0, 60000, 1, function() sendData() end )
init.lua - скрипт инициализирующий WiFi и запускающий httpsender.lua. В нем нужно указать ваш логин и пароль от точки доступа.
print("Setting up WIFI...") wifi.setmode(wifi.STATION) --modify according your wireless router settings wifi.sta.config("SSID","SSIDPASSWD") wifi.sta.connect() tmr.alarm(1, 1000, 1, function() if wifi.sta.getip()== nil then print("IP unavaiable, Waiting...") else tmr.stop(1) print("Config done, IP is "..wifi.sta.getip()) dofile("httpsender.lua") end
Все готово. Данные читаются нашим контроллером и отправляются в облако. Зайдя в учетную запись thingspeak мы можем увидеть график изменения температуры:
