• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Komunikacja android & ESP
#1
Dzień dobry, potrzebuję pomocy z kodem którego nie rozumiem co sposobu wysyłania danych do androida.
Kod z esp wysyła dane na androida i działa on znakomicie przesyła dane z czujników ds18b20. Alikacja do odbioru danych to Termik4Temp do pobrania z sklepu gplay.
Prócz tego chciał bym odebrać dane na drugim esp lecz nie bardzo wiem jak to zrobić.
Odbieram dane na drugim esp lecz wskazania są nie poprawne odczyt to 110 lub 50. 
Poniżej fragment kodu satelity esp.

Kod:
WiFiUDP Udp;

unsigned int localUdpPort = 12346;
char incomingPacket[255];
char replyPacekt[] = "Dokonano pomiaru temperatur :-)";


void setup()

{
Serial.begin(115200);
Serial.println();
wifi_init();
{
delay(500);
Serial.print(".");
}
Serial.println(" connected");

Udp.begin(localUdpPort);
Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}


void loop()


{
int packetSize = Udp.parsePacket();
if (packetSize)
{
// receive incoming UDP packets

sensors.requestTemperatures();
Serial.printf("Received %d bytes from %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
int len = Udp.read(incomingPacket, 255);
if (len > 0)
{
incomingPacket[len] = 0;
sensors.requestTemperatures();
delay(750);
}
Serial.printf("UDP packet contents: %s\n", incomingPacket);

float temp1;
temp1 = sensors.getTempCByIndex(0);
String Pomiar1;
Pomiar1=String(temp1, 1);
Serial.println(Pomiar1);

temp1 = sensors.getTempCByIndex(1);
String Pomiar2;
Pomiar2=String(temp1, 1);
Serial.println(Pomiar2);

temp1 = sensors.getTempCByIndex(2);
String Pomiar3;
Pomiar3=String(temp1, 1);
Serial.println(Pomiar3);

Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());

String tempp1 ;

tempp1 += "n1=";
tempp1 += Pomiar1;
tempp1 += "x";
tempp1 += "n2=";
tempp1 += Pomiar2;
tempp1 += "x";
tempp1 += "n3=";
tempp1 += Pomiar3;
tempp1 += "x";


Udp.println(tempp1);

Udp.endPacket();
}
}


A tu fragment kodu którym chcę odebrać dane z 1 esp.

Kod:
   Client.begin(12346);

}

void loop()
{
const int port=80;
int i=0;  

udpsend();
 
 char serverack = Client.parsePacket();
 Serial.println(serverack);
 if (serverack)
   {
   tempp1=Client.read();
   Serial.print("temperatura 1 : ");
   Serial.println(tempp1);
   

   delay(1000);
}
}

void udpsend()
 {
   const char ip[]="10.10.0.55";
 Client.beginPacket(ip,12346);
 Client.write(serdata);
 Client.endPacket();
 delay(1000);
 return;
 }


Będe niezmiernie wdzięczny za pomoc.
Pozdrawiam Piotr
 
Odpowiedź
#2
Zagadaj: http://forum.arduinopolska.pl/watek-pomi...ght=termik , to chyba autor, ale pisze o komunikacji z jednym ESP, na razie.
 
Odpowiedź
#3
- wcześniej już dostałem odpowiedź od autora projektu iż nie rozwija dalej już tego projektu, dlatego pytam innych użtkowników, ale dziękuje za posta.
 
Odpowiedź
#4
PiotrMk71 pokazałeś strzępki kodu i nie musisz pokazywać całych, bo delay 1000 robią swoje.
Problem nie jest do rozwiązania w godzinę czy dwie. Raczej tydzień czy 2,chyba, ze ktoś już wcześniej to zrobił.

Piszesz, że jesteś początkujący ("nie rozumiem jak działa...."), więc rozwiązanie problemu zajmie pewnie 6..12 miesięcy.
Jeśli masz tyle czasu na rozwiązanie problemu musisz zacząć od podstaw, czyli składnia C, miganie diodą itd.
Pomagam (nie prowadzę kursów), tylko, gdy w poście załączone są niezbędne materiały (kod, schemat) a pytający zna podstawy.

Na kod z Delay szkoda czasu.
Kod wymaga komentowania.
Kod bez WDT jest niepewny.



 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości