Несколько месяцев назад модуль ESP8266 уверенно вышел на сцену радиолюбительской электроники и мира Интернета вещей и стал использоваться в различных проектах, где есть интерфейс UART.

ESP8266 представляет собой не просто модуль для связи по WiFi. Микросхема, на основе которой он построен, по сути, является микроконтроллером со своими шинами SPI, UART, а также выводами GPIO. А это значит, что модуль можно использовать автономно без Arduino и других плат с контроллерами.
В данном материале будет показано, как задействовать этот модуль в качестве автономного датчика открывания/закрывания двери, который будет передавать информацию в сеть.
Сначала подключим ESP8266 к переходнику USB-UART FTDI232R с выходом 3.3 В.

Теперь скачаем приложение Coolterm отсюда, и проверим с помощью него прошивку модуля. Установите скорость связи 115200 б/с. Задайте AT+GMR. Как можно видеть на рисунке ниже прошивка используемого в данном случае модуля 00160901.

Но мы заменим эту прошивку на прошивку LUA, которая будет лучше подходить для наших целей. Помните, чтобы сменить прошивку нужно, чтобы вывод CH_PD всегда находился в высоком логическом состоянии, а GPIO0 был подтянут к земле (GND).
Теперь возьмите загрузчик отсюда. А саму прошивку LUA отсюда.
Запустите ESP8266_flasher.exe и прошейте модуль.

После прошивки нужно отсоединить GPIO0, чтобы перезагрузиться в нормальном режиме. Затем сконфигурируйте CoolTerm на скорость 9600 б/с, чтобы иметь возможность общаться с перепрошитым модулем. Теперь проверим WiFi соединение с помощью простого кода:
print(wifi.sta.getip())
--0.0.0.0
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","password")
print(wifi.sta.getip())
--192.168.18.110
Теперь после каждого запуска модуль ESP8266 будет помнить последние настройки WiFi сети.
Сейчас сделаем из ESP8266 датчик запирания двери. Для этого нам потребуется нижеприведенная схема соединения:

Нам нужна программа, которая бы отправляла состояние датчика в Интернет. Поэтому создадим новый скрипт и назовем его door.lua. Загрузите терминал и введите следующее:
file.remove(“door.lua”)
file.open(“door.lua”,”w”)
writeline([[srv=net.createServer(net.TCP) srv:listen(80,function(conn)]])
writeline([[conn:on("receive",function(conn,payload)]])
writeline([[print(node.heap())]])
writeline([[door="open"]])
file.writeline([[if gpio.read(8)==1 then door="OPEN" else door="CLOSED" end]])
file.writeline([[conn:send("<h1> The door is " .. door ..".</h1>")]])
file.writeline([[end)]])
file.writeline([[conn:on("sent",function(conn) conn:close() end)]])
file.writeline([[end)]])
file.close()<b>
</b>
Теперь скрипт door.lua будет доступен после каждого включения ESP8266. Чтобы запустить его, введите
dofile(“door.lua”)И если вы не знаете IP модуля ESP8266, то введите
print(wifi.sta.getip())
--192.168.18.110
Введите в URL-строку браузера IP модуля, и вы получите желаемый результат.
Есть одна маленькая проблемка: скрипт хранится в модуле, но не запускается автоматически. Чтобы решить ее, немного изменим скрипт:
file.remove(“init.lua”)
file.open(“init.lua”,”w”)
writeline([[print("Pete's LUA module 0.1")]])
file.writeline([[tmr.alarm(4000, 0, function() dofile("door.lua") end )]])
file.close()
Перезагрузитесь, и код запустится автоматически. Отсоедините FTDI232, подключите ESP8266 к двум батарейкам 1.5 В, и автономный датчик открывания/закрывания двери готов!
Перевод © digitrode.ru
