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

Нужна помощь ESP8266+ Arduino

Scriper86

New member
Приветствую всех! Пытаюсь создать осуществить идею: подключить несколько датчиков уровня воды к Arduino uno и показания этих датчиков передавать через esp8266 (07) на Thingspeak (выбрал его потому что есть удобный виджет для Android). Нашел подходящий скетч , залил его в uno. Начинаю смотреть как происходит подключение Wifi в последовательном поту, AT команды идут, а вот ответа от Esp нет. Всю голову уже сломал, что не так? Может в esp какой скетч еще надо заливать чтобы он отвечал UNO? Платы подключены так:
UTXD --> RX на Arduino
CH_PD <--> VCC
RST
VCC --> VCC на Arduino
----------------------------------
GND --> GND на Arduino
GPIO2
GPIO0
URXD --> TX на Arduino
Знаю что можно обойтись без uno, но это не мой вариант. Код прилагаю.
Код:
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#define SSID "XPERIA"
#define PASS "12345678"
#define IP "184.106.153.149" // thingspeak.com
String GET = "GET /update?key=4SKSH5*******TB&field1=";
SoftwareSerial monitor(0, 1); // RX, TX
void setup()
{
monitor.begin(115200);
Serial.begin(115200);
sensors.begin();
sendDebug("AT");
delay(5000);
if(Serial.find("OK")){
monitor.println("RECEIVED: OK");
connectWiFi();
}
}
void loop(){
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
tempC = DallasTemperature::toFahrenheit(tempC);
char buffer[10];
String tempF = dtostrf(tempC, 4, 1, buffer);
updateTemp(tempF);
delay(60000);
}
void updateTemp(String tenmpF){
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
sendDebug(cmd);
delay(2000);
if(Serial.find("Error")){
monitor.print("RECEIVED: Error");
return;
}
cmd = GET;
cmd += tenmpF;
cmd += "\r\n";
Serial.print("AT+CIPSEND=");
Serial.println(cmd.length());
if(Serial.find(">")){
monitor.print(">");
monitor.print(cmd);
Serial.print(cmd);
}else{
sendDebug("AT+CIPCLOSE");
}
if(Serial.find("OK")){
monitor.println("RECEIVED: OK");
}else{
monitor.println("RECEIVED: Error");
}
}
void sendDebug(String cmd){
monitor.print("SEND: ");
monitor.println(cmd);
Serial.println(cmd);
}
boolean connectWiFi(){
Serial.println("AT+CWMODE=1");
delay(5000);
String cmd="AT+CWJAP=\"";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
sendDebug(cmd);
delay(5000);
if(Serial.find("OK")){
monitor.println("RECEIVED: OK");
return true;
}else{
monitor.println("RECEIVED: Error");
return false;
}
}
 
Сверху Снизу