Arduino Uno panellel (illetve annak itt vásárolt megfelelőjével) és ESP8266 (01-es) áramkörrel kísérletezem. Egy gomb megnyomásakor kell egy TCP "jelet" továbbítanom egy helyi hálón lévő szervernek (nyitom a kapcsolatot, nem küldök semmit hanem zárom /mert így gyorsabb/ - de ezt a szerver érzékeli is) Softwerserial-t és AT parancsokat használok a vezérlésére.
Mivel úgy tapasztaltam, hogy a wifi modul megjegyzi, hogy utoljára milyen beállításokkal és hogyan kapcsolódtam a programból hiányzik is a csatlakozás (ettől még működik)
A 13-as lábon van egy led ami jelzi, hogy létrejött-e a kapcsolat (kap választ a ping-re) illetve villan ha gombnyomás történik. - na itt a gond. Ha USB-n csatlakoztatom a panelt a géphez akkor működik, ha külső tápról akkor nem kezd el világítani a led, jelezve a kapcsolat létrejöttét csak ha RESET-et nyomok a panelon. Ez miért van?!
Ugyan ide kapcsolódó kérdésem: ok, most elég ha a gombra csak nyitja a kapcsolatot a szerver felé majd zárja is de ha adatot is akarok küldeni (megadom az átküldendő byte-ok méretét + AT+CIPSEND-el bármit a szervernek), akkor a szerveren majd egy másodperc telik el a kapcsolat létrejötte után az adat beérkezéséig. - ilyet tapasztalt már más?
Remélem érthető voltam.
Köszönöm a figyelmet!
Kód: Egész kijelölése
#include <SoftwareSerial.h>
SoftwareSerial ESPserial(11, 10); // RX | TX
const int begomb=8; const int ledpin=13; int buttonstate;
void setup()
{
pinMode(begomb,INPUT); pinMode(ledpin,OUTPUT);
digitalWrite(ledpin,LOW);
Serial.begin(9600); ESPserial.begin(9600);
Serial.println(""); Serial.println("EST8266 teszt program.");
ESPserial.println(F("AT+PING=\"192.168.1.250\"")); Serial.println("");
if (ESPserial.find("OK")) {
digitalWrite(ledpin,HIGH);
Serial.println("----- ONLINE -----"); }
else Serial.println("----- OFFLINE! -----");
ESPserial.println("AT+CIFSR"); //ip cim kiirasa
}
void loop()
{
buttonstate=digitalRead(begomb);
if (buttonstate == HIGH) {
digitalWrite(ledpin,LOW);
Serial.println("Gombnyomas");
ESPserial.println("AT+CIPSTART=\"TCP\",\"192.168.1.254\",80");
if (ESPserial.find("OK")) {
Serial.println("adatkimenet...");
if (ESPserial.find("CLOSED")) {
Serial.println("OK - A szerver zarta a kapcsolatot");
} else
ESPserial.println("AT+CIPCLOSE");
delay(1200);
digitalWrite(ledpin,HIGH);
}
}
if ( ESPserial.available() ) {
Serial.write(ESPserial.read());
}
int be;
if ( Serial.available() ) {
be=Serial.read();
digitalWrite(13,LOW);
ESPserial.write( be );
digitalWrite(13,HIGH);
}
}