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

Нужна помощь Передача данных через GET c arduino через esp

ilya62

New member
Прошу помочь новичку с написанием скетча для передачи данных через get с arduino через esp-1 на сервер. Если у готовый пример буду очень благодарен.
 

Vitaly

Member
ардуино + есп или скетч будет грузится прямо в есп?

если второе - открываем в иде с установленными есп либами
file -> examples -> esp8266wifi -> wificlient

если ардуина и есп тоже со скетчем, то пример выше + код для преобразования данных от ардуины

если ардуина и ат прошивка на есп, то это можно по форуму поискать лично я считаю, что это не очень правильный путь
 

ilya62

New member
ардуино + есп или скетч будет грузится прямо в есп?

если второе - открываем в иде с установленными есп либами
file -> examples -> esp8266wifi -> wificlient

если ардуина и есп тоже со скетчем, то пример выше + код для преобразования данных от ардуины

если ардуина и ат прошивка на есп, то это можно по форуму поискать лично я считаю, что это не очень правильный путь
Спасибо за наводку. Скетч хотел заливать в ардуино и через SoftwareSerial.h библиотеку передавать по esp-1.
 
Последнее редактирование:

Lion777

New member
Я сейчас тоже подобное делаю, тоже новичек, АТ командами пока делаю, отправляю с Ардуино команду на ЕСП по софтсериал, а по сериал приходит как то криво, тип так
Код:
AT


    OK
AT
CЎCЎQѓAT


OI
AT
CЎCЎQѓAT


OK
    AT


    OK
код которым отправляю принимаю
Код:
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  //Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(115200);
  //mySerial.print("AT+GMR\r\n");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
   
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
 
  }
}
 

ilya62

New member
Я сейчас тоже подобное делаю, тоже новичек, АТ командами пока делаю, отправляю с Ардуино команду на ЕСП по софтсериал, а по сериал приходит как то криво, тип так
Код:
AT


    OK
AT
CЎCЎQѓAT


OI
AT
CЎCЎQѓAT


OK
    AT


    OK
код которым отправляю принимаю
Код:
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  //Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(115200);
  //mySerial.print("AT+GMR\r\n");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
 
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());

  }
}
Вот что посмотри
[HASHTAG]#include[/HASHTAG] <SoftwareSerial.h>
[HASHTAG]#define[/HASHTAG] SSID "xxxxxxxx"
[HASHTAG]#define[/HASHTAG] PASS "xxxxxxxx"
[HASHTAG]#define[/HASHTAG] DST_IP "220.181.111.85" //baidu.com
SoftwareSerial dbgSerial(0, 1); // RX, TX // here i tried with 10,11 and 2,3
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(57600);
Serial.setTimeout(5000);
dbgSerial.begin(9600); //can't be faster than 19200 for softserial
dbgSerial.println("ESP8266 Demo");
//test if the module is ready
Serial.println("AT+RST");
delay(1000);
if(Serial.find("ready"))
{
dbgSerial.println("Module is ready");
}
else
{
dbgSerial.println("Module have no response.");
while(1);
}
delay(1000);
//connect to the wifi
boolean connected=false;
for(int i=0;i<5;i++)
{
if(connectWiFi())
{
connected = true;
break;
}
}
if (!connected){while(1);}
delay(5000);
//print the ip addr
/*Serial.println("AT+CIFSR");
dbgSerial.println("ip address:");
while (Serial.available())
dbgSerial.write(Serial.read());*/
//set the single connection mode
Serial.println("AT+CIPMUX=0");
}
void loop()
{
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += DST_IP;
cmd += "\",80";
Serial.println(cmd);
dbgSerial.println(cmd);
if(Serial.find("Error")) return;
cmd = "GET / HTTP/1.0\r\n\r\n";
Serial.print("AT+CIPSEND=");
Serial.println(cmd.length());
if(Serial.find(">"))
{
dbgSerial.print(">");
}else
{
Serial.println("AT+CIPCLOSE");
dbgSerial.println("connect timeout");
delay(1000);
return;
}
Serial.print(cmd);
delay(2000);
//Serial.find("+IPD");
while (Serial.available())
{
char c = Serial.read();
dbgSerial.write(c);
if(c=='\r') dbgSerial.print('\n');
}
dbgSerial.println("====");
delay(1000);
}
boolean connectWiFi()
{
Serial.println("AT+CWMODE=1");
String cmd="AT+CWJAP=\"";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
dbgSerial.println(cmd);
Serial.println(cmd);
delay(2000);
if(Serial.find("OK"))
{
dbgSerial.println("OK, Connected to WiFi.");
return true;
}else
{
dbgSerial.println("Can not connect to the WiFi.");
return false;
}
}
 

Lion777

New member
пасиб, счас попробую, на моем то запрос проходит и ответ приходит, ответ 200, но сами данные с каракулями, значит отправляются данные правильно, а вот приходит в сам монитор каракули бывают, бывает более менее нормально, возможно ответ и без каракуль, это монитор каверкает, попробую ответ в файл сохранять.
---
Возможно SoftSerial не поддерживает скорость 115200 на уно ?
 
Последнее редактирование:
Сверху Снизу