В интернете много информации про данные модули, но когда понадобилось выполнить конкретную задачу, на 4 строки вкладок в firefox нагуглил, поэтому решил хоть одно применение описать полностью (ну почти).
Итак, есть у меня не так давно подъемные гаражные ворота doorhan, и 2 брелока к ним, но иногда 2-х бывает мало, да и один из этих двух временами глючит несмотря на новую батарейку. Но в на плате управления, что в гараже, есть пины для подключения внешней проводной кнопки. Используя их решил реализовать управление со смартфона.
Посмотрев обзор уважаемого
sav13 mySKU.me/blog/ebay/30626.html были приобретены 2 платы esp8266 esp-07 и esp-12.
Я не профессионал, поэтому некоторые вещи пишу как понял, где-то могу ошибиться). Да и делал я всё «на коленке»))).
Начнем с самого начала. Для начала работы с модулем нужен uart конвертер, у меня такой
mySKU.me/blog/ebay/29003.html, ещё к адруине покупал. Для работы со смартфоном нужно прошить esp прошивкой nodemcu. Я прошил такой nodemcu_integer_0.9.6-dev_20150704.bin, качал здесь:
github.com/nodemcu/nodemcu-firmware/releases.
Что нужно для прошивки и как подключать:
Есть сайт
esp8266.ru, где в принципе все есть
esp8266.ru/esp8266-podkluchenie-obnovlenie-proshivki/#esp8266-update-firmware, только разбросано по разным местам, и иногда (редко конечно) мелкие нюансы не расписаны.
Качаем программу для прошивки ESP8266Flasher.exe отсюда:
github.com/nodemcu/nodemcu-flasher
Дополнительная информация
Подключаем плату к uart как описано в статье «Как быстро подключить ESP8266»
esp8266.ru/esp8266-podkluchenie-obnovlenie-proshivki/#esp8266-connect.
— RX и TX зеркально,
— питание к питанию (vcc — 3V3) берем
ТОЛЬКО 3.3 вольта, 5 я не пробовал, но в инете не рекомендуют,
— земля к земле (gnd)
— на плате esp gpio15 соединяем с землей (насовсем)
— на плате esp пин EN (CH_PD) соединяем с VCC через тумблер или на скрутке двумя проводами, чтобы можно было рвать и восстанавливать питание.
Когда все это дело собрали)
Дополнительная информация
— на плате esp соединяем gpio0 с землёй (gnd) на скрутке, т.к. это соединение нужно только для прошивки, если нет в планах шить много раз тумблер не к чему.
Подключаем всю музыку к usb (при подключении на esp-07 загорится кравсный led и моргнет синий, на 12 только моргнет синий, красного там нет), ставим драйвер uart (если не установлен), запускаем ESP8266Flasher.exe, смотрим в диспетчере устройств номер порта uart адаптера, ставим его в программе, на вкладке «config» указываем в верхней строке путь к файлу прошивки nodemcu_integer_0.9.6-dev_20150704.bin (в моём случае). Жмем «Flash», первый раз может не начаться прошивание, жмем stop, передергиваем uart из usb и снова flash. Если не пошло, значит что-то не так подключили. Ждем окончания прошивки.
Дополнительная информация
После прошивки отключаем uart от usb, теперь будет веселее))). Тока моего uart адаптера хватало для прошивки, но для заливки скетча — мало. Пришлось из битой матрицы монитора выпаивать LM1117 (стабилизатор на 3.3вольта) и впаивать его в старую зарядку от мобильника с током 0,7 ампера.
Дополнительная информация
От первоначально подключенного uart отключаем от esp только питание 3k3, землю оставляем подлключенной. Подключаем питание и землю от блока питания (да, всю землю к одному пину gnd иначе не заработают tx-rx)
Для заливки скетча ставим java и скачиваем
esp8266.ru/esplorer/
Отключаем gpio0 от земли, оно нам больше не нужно) скетч заливается без этого. Подключаем uart к usb, блок питания в розетку. Запускаем esplorer, устанавливаем наш com порт, скорость на указанной мной прошивке оставляем 9600, нажимаем «open» для подключения к порту, пойдут попытки подключения, но не подключится, чтобы подключилось нежно разорвать и соединить обратно пины EN и VCC. Я использовал тумблер, руками пару раз попробовал — пока скручиваешь в терминал валится мусор и в итоге не получалось, поэтому прикрутил кнопку с фиксацией и щелкал ей. В случае подключения никакой «ready» как описано тут
esp8266.ru/esp8266-podkluchenie-obnovlenie-proshivki/#esp8266-connect в разделе «Настройка ESP8266» у меня не было. Просто каракули и затем все сведения о нутре esp. И да, если будет писать, что не могу определить прошивку, не обращайте внимания, либо отключите автоопределение прошивки.
Я нуб, поэтому на подключение у меня ушло где-то полдня пятницы (на работе было спокойно, можно было позаниматься).
Фото момента подключения к сожалению получились все смазаны (фоткал если что на кирпич lenovo s660).
Будем считать, что вы помучились, погуглили и дошли до того момента когда ESPlorer подключился к esp).
Теперь ESPlorer ругается, что не обнаружил init.lua — это грубо автозапуск, скрипт, который выполняется при старте микрухи.
Я выкладываю свои 2 варианта настроек esp:
1. В режиме точки доступа, т.е. задаете в скрипте имя сети и пароль, конектитесь к ней со смарта и управляете через приложение выводами.
2. Режим клиента, если у вас в месте установки esp уже есть ваша wifi сеть от роутера, то проще подключить модуль к ней и управлять уже через подключение роутера.
Теперь главное, пока просто напишу, ниже объясню что-куда (скетчи полуподсмотренны, половина написана интуитивно, но у меня они работают):
Вариант 1:
содержимое init.lua (автозапуск):
wifi.setmode(wifi.SOFTAP)
cfg={}
cfg.ssid=«ssid»
cfg.pwd=«password»
wifi.ap.config(cfg)
wifi.ap.setip({ip=«192.168.0.67»,netmask=«255.255.252.0»,gateway=«192.168.0.67»})
print(«ESP8266 mode is: »… wifi.getmode())
print(«The module MAC address is: »… wifi.ap.getmac())
print(«Config done, IP is »..wifi.ap.getip())
gpio.mode(2, gpio.OUTPUT)
gpio.write(2, gpio.LOW)
dofile («main.lua»)
содержимое main.lua (сам скетч):
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on(«receive», function(client,request)
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
local _on,_off = "",""
if(_GET.pin == «ON»)then
_on = " selected=true";
gpio.write(2, gpio.HIGH);
tmr.alarm(0, 1000, 0, function() gpio.write(2, gpio.LOW); end)
end
client:send(buf);
client:close();
collectgarbage();
end)
end)
Вариант 2:
содержимое init.lua (автозапуск):
wifi.setmode(wifi.STATION)
wifi.sta.config(«ssid»,«password»)
wifi.sta.connect()
wifi.sta.setip({ip=«192.168.0.66»,netmask=«255.255.252.0»,gateway=«192.168.0.1»})
print(«ESP8266 mode is: »… wifi.getmode())
print(«The module MAC address is: »… wifi.ap.getmac())
print(«Config done, IP is »..wifi.sta.getip())
gpio.mode(2, gpio.OUTPUT)
gpio.write(2, gpio.LOW)
dofile («main.lua»)
содержимое main.lua (сам скетч):
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on(«receive», function(client,request)
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
local _on,_off = "",""
if(_GET.pin == «ON»)then
_on = " selected=true";
gpio.write(2, gpio.HIGH);
tmr.alarm(0, 1000, 0, function() gpio.write(2, gpio.LOW); end)
end
client:send(buf);
client:close();
collectgarbage();
end)
end)
Pin 2 в скетчах — это gpio4, один из пинов на котором не появляется «паразитное» что ли) напряжение при подаче питания на модуль. ip и прочую ерунду ставите как вам нужно, говорю сразу, если вы не знаете какой ip поставить — гуглите, что такое ip))) Бывает в логе ESPlorer после записи скетча вылазит, что не разрешено больше одного сервера TCP, это как я понял временная ерунда, после передергивания питания её уже нет, у меня все работает несмотря на это.
Как все это дело залить в esp:
Когда esp подключится к ESPlorer, можно заливать скетчи, первым делом зальем init.lua. В левое окошко вставляем нужный скрипт, внизу справа жмем кнопку «save as init» и затем кнопку «save to esp». Программа попросит заодно сохранить файл в моих документах — соглашаетесь.
Затем справа жмем «reload» и переименовываем скрипт в init.lua
Дополнительная информация
Создаем новое окно, вставляем в него скрипт «main.lua», сохраняем в esp, но уже не выбирая «save as init», а сразу жмем «save to esp», переименовываем в «main.lua».
Вот и все, модуль прошит для подачи питания на gpio4 на 1 секунду, я подключу туда 5 вольтовое реле от ардуины через полевик (схемы в гугле, сам не рисовал, а оттуда тащить смысла нет) и буду управлять воротами со смарта. Проверил работу подключением светодиода, если нужно видео, пишите — сниму.
Теперь вторая чать повести) Как же управлять со смарта)
меня просто ооооочень выручило это видео
www.youtube.com/watch?v=qWKcOnoyBzE там в принципе все понятно, как чего и куда.
Я программу для андройда сделал с помощью утилиты MIT из видео ai2.appinventor.mit для работы с ней нужен аккаунт в gmail. Делайте app файл точно как в видео, за исключением кнопки off. Её просто нет в моём проекте.
мой вариант проги:
Дополнительная информация
Плюсы: да одни плюсы и есть)
Рекомендую брать 07 модуль, он более информативен чем 12, в нем есть led питания (в моем варианте 12-го его нет), плюс внешнюю антенну можно без пайки подключить.
Пишите где ошибки, исправлю, писал ночью).
ps кошка есть, ловить лень) собака тоже есть, но спит)
Дополнительная информация
pps заранее прошу прощения, свой вариант проги для смарта не выкладываю, т.к. в планах подкалымить) кому нужно сделает её за час посмотрев видео)
ничего интересного и сложного нет, да и модуль кривой
китаезы заюзали паял как халявных бетатестеров влан модуля и сделали себе нехилый пеар, сейчас всякие производители мелкасхем с влан для засовывания инторнета во всякое барахло рвут волосы на жопах
никто не может предложить свои мелкасхемы с влан по 2.5 бакса
это как с теслой вышло — автогиганты смотрели на батарейки как на гавно, а тут какой-то выскочка продает напрямую тачки по космическим ценам и еще очереди за ними
aliexpress.com/item/Hot-Sales-DC-12V-10A-1CH-315MHZ-Wireless-RF-Remote-Control-Switch-Transmitter-Receiver-2015-New/32356505434.html,searchweb201644_1_10001_10002_10005_301_10006_10012_10003_10004_62_10007,searchweb201560_8,searchweb1451318400_6149,searchweb1451318411_6451&btsid=85972258-e5be-4a8f-aa3e-d0aa9c006fe0
вот такой при удержании кнопки на плате будет готов запомнить новый брелок. Только следите за частотой.
Проще — нет.
Здесь я купил по дороге на работу, приехал, подключил и пользуюсь.
С esp так точно не выйдет.
правда твой никто ломать не будет
хоть впа, хоть китайский радиобрелок
либо делать мост и передавать авторизацию подлинной точке доступа, но я тут забыл что канал-то шифрован, ломать всяко придётся если хочется вклиниться в него.
Что то не слышал про ломание такого, даже при перехвате хендшейка.
атака не по словарю, а какая-то там дыра в шифровании и при некоторых условиях она ломается
Дешево, просто и сердито :)
Запасом валяются в машине пульты от ворот, шлагбаума, освещения и ключ для калитки
Насчёт автоматического отключения через 10 минут не знаю, тут одной отвёрткой не обойдёшься, но подключить проводной выключатель параллельно реле радиокомплекта — тут даже мозг особо напрягать не требуется…
И, судя по первому слову в вашей реплике, когда разрешат «Когда» писать через «А». И когда подчинительный союз «чтобы» начнут писать через пробел (это тоже из вашей реплики).
Иными словами никогда.
Лучше не ждите, пока русский язык изменится под ваш уровень грамотности, а ходите в школу и учите русский язык. Грамотная и правильная речь — это красиво, модно, престижно в глазах окружающих и уважение к собеседникам и родному языку.
Такими комментариями, сорри, вы только показываете, что прогуливали уроки русского языка.
Так что в данном случае правила языка более чем грамотны.
Язык все время меняется и развивается, одни слова появляются, другие забываются, но то как мы используем их вцелом остается неизменно.
Пс. И не нужно всех подряд пытаться уязвить в безграмотности и прогулах школы, мы (люди по ту сторону монитора) тоже в школу ходили, и на олимпиадах бывали.
Другой пример — «звОнит» и «звонИт». Считается, что правильно звонИт, но при этом свЕрлит, а не сверлИт. Почему так? Исторически сложилось. Еще недавно глаголы грузит, варит катит, курит, платит были с ударением на второй слог. Лингвисты годов с 70х прошлого века считают, что ударение в звонит носит искусственный характер. Так что можно на 100% утверждать, что звонит последует за другими похожими глаголами.
Вот в общем с брелками / брелоками похожая ситуация. Замок / замками вас не смущает? Не замоками же. Слово французское, исторически склоняли с максимальным сохранением оригинала. Но слово вполне обрусело и потихоньку начинает подчиняться правилам нашего языка.
P.S. Ну и вообще: правила это не скрижали какие, они следуют вслед за изменениями самого языка. Вы же не считаете неграмотными тех, кто пишет без «ять»? А ведь всего поколения 3-4 сменилось
P.P.S. пока писал, уже увидел, что замок вас не смущает. Хотя чтобы определять корень в слове брелок, нужны знания не русского, а француского языка.
по решению, по моему не самый удачный выбор технологий, радиобрелков помоему вполне достаточно, если есть желание поколхозить — можно было как-то код в них модифицировать…
а с такими технологиями, нужно как минимум сетчатку сканировать и передавать данные на обработку
то что поразбирались с железкой и кодом — это хорошо
п.с. Я бы в этом случае блютуз модуль воткнул — помоему более логично, если уж надо с телефона
каждый под свои задачи заточит и все
Человеку самому приятно будет, если он своими руками эту прошу сделает)
Вот именно, желание и мозги.
А здесь народ привык, чтобы ему всё разжевали и в рот положили.
У автора датчик открытия ворот с пуш-уведомлениями ничего не стоит сделать, так что все правильно выбрал.
Обычные ESP07/12 изначально под AT-команды заточены на очень сомнительной скорости порта )))
Помню, с первым модулем тоже намаялся, пока не стал прошиваться с пол пинка.
Правда не понимаю я этого нездорового интереса к LUA
Тормозной интерпретатор, кушающий кучу памяти
Так и с Китаем — для некоторых это возможность купить норм детали для творчества в большем объеме, для других стремление купить больше готового
Модуль питается только от 3,3. От 5-ти сразу не сгорит, но греется знатно(по крайней мере личный опыт)
Есть платы переходники, где уже распаяны стабилизаторы напряжения и нужные резисторы, и шаг колодки более привычные 2,54мм например у меня вроде такой — aliexpress.com/item/ESP8266-serial-WIFI-module-adapter-plate-Applies-to-ESP-07-ESP-08-ESP-12/32264938380.html, как раз удобно для отладки. Так же рекомендую до стабилизатора повесить конденсатор хотя бы 1000 мкФ
ESP лучше подключать к отдельно созданной WI-FI сети, потому как могут быть проблемы с остальными устройствами в сети при длительной работе модуля(у меня были косяки в скайпе)
Еще раз про питание, ESP капризен в этом плане, у меня работает примерно, как у Вас — выключатель для бра, 1-2 разв неделю подвисал, я в скрипт добавил вачдог теперь виснет реже(а может совпадение), связываю с тем, что питается от моб зарядки без особых фильтров, в планах перейти на мелкий трансформатор.
Вот есть хорошее описание как на lua запустить не сложные штуки — github.com/nodemcu/nodemcu-firmware#start-play
А вот наш соотечественник уже все сделал для нас, основные сценарии уже им написаны, осталось выбрать что необходимо через управление модулем в web — homes-smart.ru/index.php/oborudovanie/bez-provodov-wi-fi/62-besprovodnoj-datchik-na-baze-esp8266-dlya-servisa-narodmon-ru
aliexpress.com/item/ESP8266-serial-WIFI-Witty-cloud-Development-Board-ESP-12F-module-MINI-nodemcu/32577398010.html,searchweb201644_1_10001_10002_10005_301_10006_10003_10004_401_62,searchweb201560_1,searchweb1451318400_6151,searchweb1451318411_6448&btsid=1b40046d-e5c4-4e1b-8223-46602bf2aa56
или вот
aliexpress.com/store/product/ESP8266-serial-WIFI-Witty-cloud-Development-Board-ESP-12F-module-MINI-nodemcu/1962508_32577398010.html
новая версия
aliexpress.com/store/product/New-Wireless-module-CH340-NodeMcu-V3-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266/1962508_32562464572.html
Очень сомнительное применение светодиода и фоторезистора.
А так глядишь, скоро шилдов такого формфактора станет полно
А так, проще купить один из модулей выше за 3-4$ и не тратить время на обвязку mini pci.
Что с ними можно делать вообще?
А если хотите сделать несколько, то лучше покупать целые лоты.
Я взял сразу 4 лота по 10шт ESP02 за $2.48.
Думаю этого хватит мне на много лет.
Каждый ESP02 обошелся мне в 0.24$
Думал, что это какое-то надувательство, но был удивлен когда с треком пришла коробка с 40шт ESP
Это дешевле чем любой другой ардуино чип без WIFI :)
aliexpress.com/item/ESP8266-serial-WIFI-module-wireless-module-model-ESP-02/32554623248.html
Выборочно проверил несколько штук. Без проблем пашут.
Только возможно это было чисто рекламной акцией, потому что раньше в конце описания была приписка, что лот состоит из 10 шт модулей. Теперь эта надпись в описании лота пропала.
Сейчас есть такой лот aliexpress.com/item/New-version-1PCS-ESP-07-ESP8266-WiFi-REMOTE-Serial-Transceiver-wireless-Module-ESP-07-UNO-ROBOT/32520995201.html за 2$ есп 07, сам брпл там и готовлю обзор с сборкой wifi розетки, все работает.
Не проще ли действительно купить копеечный брелок с фиксированным кодом на 433 МГц?
А если уж очень хочется добавить рукоблудия, то сделать открывалку из такого комплекта. Дополнительно понадобятся два самых дешевых микроконтроллера, итого по цене то же самое.
Настроил модуль на включение при наличии клиента. На телефоне сохранил точку и установил автоподключение. Главное, чтобы сигнал основной точки из дома не доставал.
Безопасность зависит только от стойкости wpa2 протокола.
Единственный недостаток — нельзя сделать несколько таких выключателей одновременно. Сейчас пытаюсь найти светодиодный прожектор со свободным местом внутри.
Может кто даст ссылку?
Еще вопрос, а синтаксис нарушен в коде специально?
ЗЫ За обзор тов. toxatmn спасибо)
Хотел скопипастить, но пошли ошибки,
мое счастье умный человек был рядом)
Ни программить ни кодить не умею,
а научиться хотелось бы)
У меня эти «» символы не заливались изначально.
Копипаста не прокатила)))
Прописал обычные кавычки " и дело продвинулось.
К сожалению попыток было более десятка и полностью проверить работоспособность устройства я не знаю как.
В сети оно пингуется, а на создание web-интерфейса или чего-то подобного, на сегодняшний день, к меня ума не хватает(
Буду искать, как отправить команду на Ip-шник присвоенный девайсу, чтобы получить хоть какую-то, от него, реакцию.
Собственно т.к. не могу девайс проверить, не предлагаю выложить свои файлы init.lua и main.lua.
Хоть и очень хотелось бы это сделать: чтобы желающий(новичок) смог этот этап преодолеть и получить какой-то результат.
Это «затравочкой» обычно именуют.)
Файлики могу предложить те, что получились у меня.
Их можно прикрепить к самому обзору, а не к коменту(их меньше читают).
Может они сгодятся кому-то.