• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Обмен данными arduino mega и ESP8266

mishgan

Member
Особо не пинайте. ESP8266 держу в первый раз.
Суть вот в чем. Сделал автоматику для пивоварни на основе arduino mega +TFT экрана. Сейчас загорелся желанием управлять этим прибором через компьютер. Скорей всего не управлять, производить мониторинг.
Т.е. надо взять и получить температуру из ардуины. Хочу поднять сервер на ESP8266 и из браузера посылать запросы, тем самым получать текущую температуру. Вчера прошил модуль прошивкой NodeMCU.
Понимаю что надо связать ардуину и модуль по tx-rx. А вот что дальше делать вообще не понимаю. Может есть какой пример, чтоб вникнут в суть процесса?
 

Vitaly

Member
как вариант:
Ардуина периодически выдает через Serial.println строку с параметрами произвольного формата, есп по получении данных строку парсит и обновляет переменные.
При запросе через веб отдает эти данные и можно еще проверять актуальность, т.е. как давно данные обновлялись.

Что-то подобное делал, но АТ прошивки не радовали стабильностью, nodemcu сильно ужимает по памяти, поэтому сделал на arduinoide для есп. Строку оформлял в json.
получилось датчики-ардуина-есп, а сейчас может и сразу бы без ардуины обошелся.
 

mishgan

Member
А как данные принимали ESP8266? Ардуина отправляет данные через
[HASHTAG]#include[/HASHTAG] <SoftwareSerial.h>
SoftwareSerial espSerial(10,11);
.....
espSerial.write("Данные");
А вот как эти данные принимать нигде не могу найти пример.
 

Vitaly

Member
на nodemcu не подскажу, уперся в память намного раньше)

с ардуиной на самой есп через тот же Serial
 

mishgan

Member
Мож кому пригодится. Нашел хорошее решение
Код:
wifi.setmode(wifi.STATION)
wifi.sta.config("ssid","key")
wifi.sta.autoconnect(1)   -- восстанавливаем соединение со станцией при потере связи

uart.setup(0,9600,8,0,1,0) -- коннектимся к ардуине
sv=net.createServer(net.TCP, 60) -- создаем сервер
global_c = nil
sv:listen(8266, function(c)      -- и слушаем на порту 8266 :)
     if global_c~=nil then       -- много клиентов мне не надо - я управляю либо с телефона, либо с компа
          global_c:close()
     end
     global_c=c
     c:on("receive",function(sck,pl)    uart.write(0,pl) end)     -- что пришло по TCP валим в UART
end)

uart.on("data",4, function(data)    -- Что ответила ардуина - шлем по TCP
     if global_c~=nil then
          global_c:send(data)
     end
end,0 )
 
Сверху Снизу