christian06
Verfasste Forenbeiträge
-
AutorBeiträge
-
Januar 9, 2016 um 18:38 Uhr als Antwort auf: Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln #1043fkAdministrator
Ach und ich sehe gerade in meinem Config-Programm steht AT+UART_DEF=19200,8,1,0,0 ….
Januar 9, 2016 um 18:45 Uhr als Antwort auf: Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln #1044JonathanTeilnehmerAT+UART_DEF=19200,8,1,0,0 …. Ja und das war gewiss mein Fehler, Naja Lehrgeld der Ahnungslosen,
rootuserMitgliedHallo,
nachdem ich jetzt die ersten Gehversuche mit dem PretzelBoard gemacht habe stellen sich für mich noch folgende zwei Fragen:
1. Kommt das ESP8266 mit IP v6 zurecht?
2. Im Adventskalender wird ja Thinkspeak angesprochen. Dabei läuft die Verbindung immer über HTTP auf Port 80. Wären HTTPS Verbindungen auch möglich?Danke für die Hilfe und viele Grüße!
rootuser
KlausTeilnehmerZu 1:
neinZu2:
Theoretisch ja, praktisch vermutlich nein. Warum? Die Verbindung wird ja einfach per TCP gemacht. Dem ist es egal, ob da verschlüsselte, oder unverschlüsselte Daten gesendet werden. Du musst nur das komplette TLS-Protokoll nachbauen. Und genau da wird es vermutlich scheitern, weil der Mikrocontroller das aufgrund von Ressourcenmangel nicht kann. Was theoretisch möglich sein müsste, dass Du einen Cryptochip, der per I2C oder SPI ansprechbar ist, noch dran hängst. Das müsste dann vom Prinzip gehen, dürfte aber grauenvoll langsam und deshalb vermutlich nicht praxistauglich sein.Januar 9, 2016 um 21:29 Uhr als Antwort auf: Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln #1047JonathanTeilnehmerErst als Nichts mehr ging hab ich die Bedeutung des letzten Parameter gelesen. Zu spät. Ob es eine verständliche Anleitung zum Schreiben der Firmware gibt?
Januar 10, 2016 um 18:58 Uhr als Antwort auf: Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln #1063JonathanTeilnehmerHi, nach endlosen Std.-Versuchen und sammeln von vielen Erfahrungen, bin ich jetzt 2 Schritte weiter. Das Flashen der Firmware wollte lange Zeit nicht klappen (alle mögl. Versionen der .bin Files ) bis ich auf diese ai-thinker-v1.1.1.bin gestoßen bin. Diese funktionierte jetzt vor 20 Min!!!
So dass mit Sketch Day 1 wieder AT und OK im ser. Mon. zu lesen war. Dann nun endlich richtig die Baudrate mit AT+UART_DEF=19200,8,1,0,0 eingestellt.
Sketch umgestellt und Super, Super Super auf AT+CWLAP kommt jetzt ALLES ganz sauber. Toll! Vielen Dank für den richtigen Weg.
Höhere Baudraten funktionieren echt nicht!!!
Eine Frage bleibt noch:
AT+GMR
AT version:0.25.0.0(Jun 5 2015 16:27:16)
SDK version:1.1.1
Ai-Thinker Technology Co. Ltd.
Jun 23 2015 23:23:50
OK
AT+RST
OK
$aP-ÁdXQ%‰«¡-ÿ”§‡#Áläb”R„£?lÉ”$J(Îç%)$Sd¸H’—‡ÌP?i;ÿòò
Ai-Thinker Technology Co. Ltd.
invalid
—–
Ja eigentlich gehört doch ready in die letzte Zeile, hmmm? ;-)
Aber nochmals Danke für den „Wegweiser“Januar 11, 2016 um 12:06 Uhr als Antwort auf: Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln #1064fkAdministratorJa das liegt daran, dass du keine original Firmware sonder eine (vermutlich nur leicht) angepasste Version von Ai-Thinker hast. Ich vermute mal, dass die meisten Versuche trotzdem funktionieren – allerdings solltest du dann in der espConfig()-Funktion die Zeile
succes &= sendCom(„AT+RST“, „ready“);
anpassen, z.B. in
succes &= sendCom(„AT+RST“, „invalid“);
wenn das die letzte Meldung nach einem Reset ist.rootuserMitgliedHallo Klaus,
danke für die Antworten.
IP v6 ist natürlich schade, aber momentan wohl noch zu verschmerzen.
Das Thema HTTPS finde ich da schon deutlich gravierender. Das TLS-Protokoll nachzubauen ist wäre wohl eine Mammutaufgabe.
Gesendete Daten sollten aber trotzdem irgendwie verschlüsselt übertragen werden. Könnte man mit einem crypto-chip ggf. die zu sendenden Daten am Arduino verschlüsseln (mit einem gewissen secret) und am Server wieder entschlüsseln? Für PHP kenne ich da rncryptor, also vielleicht eine Art rncryptor für Arduino?Viele Grüße!
rootuser
KlausTeilnehmerIch bin kein Experte für Arduino (habe mit dem Adventskalender zum ersten Mal einen benutzt), aber Atmega habe ich schon mehr programmiert. Wenn Du einen Cryptochip nimmst, der ein Protokoll spricht, welches Du entweder im Arduino schon drin hast, oder selbst nachbaust, steht dem prinzipiell nix im Wege. Du musst dem Chip ja nur die Daten schicken und die Antwort entgegen nehmen. Wo es eng werden könnte, wäre eben die Geschwindigkeit. Die Daten rüber schaufeln dauert halt je nach Protokoll einen Moment. Ansonsten sehe ich da kein Hindernis. Ich habe mich aber noch nie mit Cryptochips beschäftigt und kann Dir somit keinen nennen. Aber irgendwie kommunizieren die ja.
Was IPv6 angeht, so könntest Du das Protokoll höchstens nachprogrammieren. Die Firmware des ESP ist ja offen. Es gibt sogar eine Bibliothek, womit Du in der Arduino-Oberfläche eine Firmware erstellen kannst. Du musst dann halt nur das komplette Protokoll nachprogrammieren. Vom Rechenaufwand denke ich, dass es den Rahmen des Chips nicht sprengen dürfte, da es ja wohl nicht groß aufwändiger als IPv4 sein dürfte.
Januar 14, 2016 um 12:43 Uhr als Antwort auf: Kann nichts mehr hochladen und das Board reagiert nicht mehr #1100riegler93TeilnehmerSchon gefragt bei Conrad?
Gibt es eine Möglichkeit, dass das Gerät getauscht wird?Januar 14, 2016 um 12:49 Uhr als Antwort auf: Kein Sketch-Upload mehr möglich: avrdude: stk500_recv() #1101riegler93TeilnehmerHallo im neuen Jahr!
Ich habe auch das Problem:
„avrdude: stk500_recv(): programmer is not responding“
Habe bereits vieles von diesem und anderen Foren probiert- ohne Erfolg.
Gibt es schon eine Rückmeldung bezüglich der Kulanzanfrage?McElchMitgliedLaut ThingSpeak geht das so:
updateThingSpeak("field1="+analogPin0+"&field2="+analogPin1);
Ich hab aber nicht so ganz verstanden, wie die „Subroutine“ diesen POST zusammensetzt bzw. wie ich das um drei andere Sensorwerte erweitern könnte…
Kann mir da jemand helfen? Danke! :)
TerraTeilnehmerHallo Leute,
Ich versuche jetzt seit ein paar Tagen meinem NanoESP folgendes beizubringen:
WENN:
– Ich 3x die „TV“ Taste meiner Fernbedienung drückeDANN:
– Soll sich mein Beamer ausschalten (durch 3x dasselbe IR Signal senden)
– Mein Yamaha AV-Receiver ausschalten (durch Webservice Call auf lokale IP)Das ganze funktioniert getrennt schon sehr gut, ich habe ein Script das bei dreimal drücken der taste „TV“ auf meiner Fernbedienung 3x das Signal zum Beamer ausschalten sendet und einmal ein weiteres Script das beim starten den WebService Call an den Yamaha AV Receiver schickt. Beides funktioniert unabhängig tadellos.
Jetzt habe ich die beiden Scripts in ein Script gepackt und der WebService Call geht leider nicht, ich bekomme immer eine Fehlermeldung des NanoESP das der Call nicht geschickt werden kann.
Ich vermute das der Speicher zu klein wird obwohl die GUI nichts anzeigt :/Ich hab schon überall probiert Speicher zu sparen, aber ich denke das Problem liegt an dem langen String den ich über den WebService schicken muss. Kann ich den irgendwie Speicherschonender zusammenbauen und übergeben?
Relevanter Teil:
#define AVRStopMessage "<?xml version=\"1.0\" encoding=\"utf-8\"?><YAMAHA_AV cmd=\"PUT\"><Main_Zone><Power_Control><Power>Standby</Power></Power_Control></Main_Zone></YAMAHA_AV>" String getRequest = "POST "+Subpage+" HTTP/1.1\r\nHost:"+Host+"\r\nContent-Type: text/xml;charset=\"UTF-8\"\r\nAccept: text/xml\r\nContent-Length: " + String(strlen(AVRStopMessage)+1) + "\r\n\r\n" + String(AVRStopMessage) + "\r\n"; sendCom("AT+CIPSTART=\"TCP\",\""+Host+"\",80", "OK"); sendCom("AT+CIPSEND=" + String(getRequest.length() + 2), ">"); esp8266.println(getRequest);
Das ganze Script:
#include <IRremote.h> #include <SoftwareSerial.h> SoftwareSerial esp8266(11, 12); // RX, TX #define SSID "*****" #define PASSWORD "*****" #define AVRHost "192.168.0.12" #define AVRSubpage "/YamahaRemoteControl/ctrl" /* Yamaha XML Messages Note! - AVROutputSetVolume has -39 hardcoded as defined volume - AVROutputHDMI1 the outputs of the Yamaha must be set via the NAMES that were assigned in the configuration. My HDMI1 output is called HTPC. Default it most likely the name is HDMI1. "HTPC" is hardcoded in the request! All of the extra ones are disabled because of space issues... */ #define AVRStopMessage "<?xml version=\"1.0\" encoding=\"utf-8\"?><YAMAHA_AV cmd=\"PUT\"><Main_Zone><Power_Control><Power>Standby</Power></Power_Control></Main_Zone></YAMAHA_AV>" /* Some IR Codes TURN BEAMER ON Value: 4CB340BF Type: 3 Length: 32 TURN BEAMER OFF Value: 4CB3748B Type: 3 Length: 32 TURN RECEIVER ON/OFF Value: 7E8154AB Type: 3 Length: 32 - And add a FFFFFFFF Type 3 Length 0 Type 2 up type 2 800F041E down type2 800F841F */ unsigned long timenow = 1; unsigned long receivedBeamerOnSignal1 = 0; unsigned long receivedBeamerOnSignal2 = 0; unsigned long receivedBeamerOnSignal3 = 0; unsigned long repeatTimeoutMillisThreshold = 1000; #define LED_WLAN 13 #define GND 4 #define RECV_PIN 7 #define GND2 8 #define VCC 9 IRrecv irrecv(RECV_PIN); IRsend irsend; decode_results results; // Storage for the recorded code int codeType = -1; // The type of code unsigned long codeValue; // The code value if not raw unsigned int rawCodes[RAWBUF]; // The durations if raw int codeLen; // The length of the code void setup() { Serial.begin(19200); irrecv.enableIRIn(); // Start the receiver esp8266.begin(19200); //Set Pins for LED and IR Monitor pinMode(GND, OUTPUT); pinMode(GND2, OUTPUT); pinMode(VCC, OUTPUT); digitalWrite (GND, LOW); digitalWrite (GND2, LOW); digitalWrite (VCC, HIGH); if (!espConfig()) serialDebug(); else digitalWrite(LED_WLAN, HIGH); } void loop() { //Serial.println("I am Alive!"); timenow = millis(); //IR RECEIVER SIGNAL if (irrecv.decode(&results)) { analyzeCode(&results); Serial.println("Received IR!"); irrecv.resume(); } } // Stores the code for later playback // Most of this code is just logging void analyzeCode(decode_results *results) { codeType = results->decode_type; int count = results->rawlen; String receivedSignal; if (codeType == UNKNOWN) { //Serial.println("Received unknown code, saving as raw"); codeLen = results->rawlen - 1; // To store raw codes: // Drop first value (gap) // Convert from ticks to microseconds // Tweak marks shorter, and spaces longer to cancel out IR receiver distortion for (int i = 1; i <= codeLen; i++) { if (i % 2) { // Mark rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK - MARK_EXCESS; //Serial.print(" m"); } else { // Space rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK + MARK_EXCESS; //Serial.print(" s"); } //Serial.print(rawCodes[i - 1], DEC); } //Serial.println(""); } else { if (codeType == NEC) { //debug("Received NEC: "); if (results->value == REPEAT) { // Don't record a NEC repeat value as that's useless. //debug("repeat; ignoring."); return; } } receivedSignal = String(results->value, HEX); receivedSignal.toUpperCase(); // So now we are listening if someone has send the BEAMER ON ir signal 3 times in a row. // we have three variables to store the millisecond when the signal was received. // the next variable iteration will be populated by the system if the last signal was send less than // repeatTimeoutMillis milliseconds. // e.g. if repeatTimeoutMillis=500 it means a signal is valid repeated when the previous signal was // send not longer than half a second before! // Until it reaches the third iteration where it executes the command after 3 repeats of the signal. // In case the previous signal was send longer than repeatTimeoutMillis ago the iteration resets and // sets the newly received signal as iteration 1 to start the cyrcle with this signal again. // if(receivedSignal == "4CB340BF") { debug("--------Detected My Signal!"); if(receivedBeamerOnSignal1 == 0) { receivedBeamerOnSignal1 = timenow; debug("----SET RS1"); } else if(receivedBeamerOnSignal1 != 0 && receivedBeamerOnSignal2 == 0) { receivedBeamerOnSignal2 = timenow; if( receivedBeamerOnSignal2 > receivedBeamerOnSignal1+repeatTimeoutMillisThreshold ) { receivedBeamerOnSignal1 = timenow; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; debug("----RESET ON RS2: "); } else { debug("----SET RS2"); } } else if(receivedBeamerOnSignal2 != 0) { receivedBeamerOnSignal3 = timenow; if( receivedBeamerOnSignal3 > receivedBeamerOnSignal2+repeatTimeoutMillisThreshold ) { receivedBeamerOnSignal1 = timenow; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; debug("----RESET ON RS3: "); } else { debug("----SET RS3"); //esp8266.end(); delay(200); //TURN OFF BEAMER BEGIN debug("--------TURN OFF BEAMER !!!"); irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); //TURN OFF BEAMER END //TURN OFF RECEIVER BEGIN manageAVR(AVRHost, AVRSubpage); //TURN OFF RECEIVER END //reenable IR receiver after sending irrecv.enableIRIn(); irrecv.resume(); receivedBeamerOnSignal1 = 0; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; } } } codeValue = results->value; codeLen = results->bits; } } //--------------------------------------Yamaha AVR Functions-------------------------------------- void manageAVR(String Host, String Subpage) { String getRequest = "POST "+Subpage+" HTTP/1.1\r\nHost:"+Host+"\r\nContent-Type: text/xml;charset=\"UTF-8\"\r\nAccept: text/xml\r\nContent-Length: " + String(strlen(AVRStopMessage)+1) + "\r\n\r\n" + String(AVRStopMessage) + "\r\n"; sendCom("AT+CIPSTART=\"TCP\",\""+Host+"\",80", "OK"); sendCom("AT+CIPSEND=" + String(getRequest.length() + 2), ">"); esp8266.println(getRequest); //debug(getRequest); if (esp8266.find("+IPD")) { if (esp8266.find("\r\n\r\n")) { sendCom("AT+CIPCLOSE", "OK"); } } } //-----------------------------------------Config ESP8266------------------------------------ boolean espConfig() { boolean succes = true; esp8266.setTimeout(5000); succes &= sendCom("AT+RST", "ready"); esp8266.setTimeout(1000); if (configStation(SSID, PASSWORD)) { succes &= true; debug("WLAN OK"); debug("IP:"); debug(sendCom("AT+CIFSR")); } else { succes &= false; } //shorter Timeout for faster wrong UPD-Comands handling succes &= sendCom("AT+CIPMODE=0", "OK"); succes &= sendCom("AT+CIPMUX=0", "OK"); return succes; } boolean configStation(String vSSID, String vPASSWORT) { boolean succes = true; succes &= (sendCom("AT+CWMODE=1", "OK")); esp8266.setTimeout(20000); succes &= (sendCom("AT+CWJAP=\"" + String(vSSID) + "\",\"" + String(vPASSWORT) + "\"", "OK")); esp8266.setTimeout(1000); return succes; } //-----------------------------------------------Controll ESP----------------------------------------------------- boolean sendCom(String command, char respond[]) { esp8266.println(command); if (esp8266.findUntil(respond, "ERROR")) { return true; } else { debug("ESP ERR: " + command); return false; } } String sendCom(String command) { esp8266.println(command); return esp8266.readString(); } //-------------------------------------------------Debug Functions------------------------------------------------------ void serialDebug() { while (true) { if (esp8266.available()) Serial.write(esp8266.read()); if (Serial.available()) esp8266.write(Serial.read()); } } void debug(String Msg) { Serial.println("FR:" + String(freeRam()) + " - " + Msg); } int freeRam() { extern int __heap_start, *__brkval; int v; return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); }
lg und danke
TerraTeilnehmerIch hab den Fehler inzwischen gefunden, es war wie vermutet die Variable/Konstante:
#define AVRStopMessage „<?xml version=\“1.0\“ encoding=\“utf-8\“?><YAMAHA_AV cmd=\“PUT\“><Main_Zone><Power_Control><Power>Standby</Power></Power_Control></Main_Zone></YAMAHA_AV>“
Wenn ich die Zeichenkette im obigen Programm reduziere schickt er den Webservice Call, ansonsten nicht.
Ich hab jetzt nochmal ein paar debug ausgaben verkürzt, HTTP Header entfernt und ein paar Sachen anders gelöst oder gelöscht, jetzt klappt alles :)WENN:
– Ich 3x die “TV” Taste meiner Fernbedienung drückeDANN:
– Soll sich mein Beamer ausschalten (durch 3x dasselbe IR Signal senden)
– Mein Yamaha AV-Receiver ausschalten (durch Webservice Call auf lokale IP)
– Zusätzlich blinkt eine LED bei jedem IR Signal das er empfängt, nur damit ich sehe ob er noch zuhört.#include <IRremote.h> #include <SoftwareSerial.h> SoftwareSerial esp8266(11, 12); // RX, TX const char* WiFiSSID = "*****"; const char* WiFiPASSWORD = "*****"; const char* AVRHost = "192.168.0.12"; const char* AVRSubpage = "/YamahaRemoteControl/ctrl"; /* Yamaha XML Messages Note! - AVROutputSetVolume has -39 hardcoded as defined volume - AVROutputHDMI1 the outputs of the Yamaha must be set via the NAMES that were assigned in the configuration. My HDMI1 output is called HTPC. Default it most likely the name is HDMI1. "HTPC" is hardcoded in the request! All of the extra ones are disabled because of space issues... */ const char* AVRStopMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?><YAMAHA_AV cmd=\"PUT\"><Main_Zone><Power_Control><Power>Standby</Power></Power_Control></Main_Zone></YAMAHA_AV>"; /* Some IR Codes TURN BEAMER ON Value: 4CB340BF Type: 3 Length: 32 TURN BEAMER OFF Value: 4CB3748B Type: 3 Length: 32 TURN RECEIVER ON/OFF Value: 7E8154AB Type: 3 Length: 32 - And add a FFFFFFFF Type 3 Length 0 Type 2 up type 2 800F041E down type2 800F841F */ const char* sigBeamerOn = "4CB340BF"; //const char* sigBeamerOff = "4CB3748B"; //const char* sigAVReceiverOnOff = "7E8154AB"; unsigned long timenow = 1; unsigned long receivedBeamerOnSignal1 = 0; unsigned long receivedBeamerOnSignal2 = 0; unsigned long receivedBeamerOnSignal3 = 0; const long repeatTimeoutMillisThreshold = 1000; const int LED_WLAN = 13; const int GND = 2; const int RECV_PIN = 7; const int GND2 = 8; const int VCC = 9; const int LED = 5; IRrecv irrecv(RECV_PIN); IRsend irsend; decode_results results; void setup() { Serial.begin(19200); irrecv.enableIRIn(); // Start the receiver esp8266.begin(19200); //Set Pins for LED and IR Monitor pinMode(GND, OUTPUT); pinMode(GND2, OUTPUT); pinMode(VCC, OUTPUT); pinMode(LED, OUTPUT); digitalWrite (GND, LOW); digitalWrite (GND2, LOW); digitalWrite (VCC, HIGH); if (!espConfig()) serialDebug(); else digitalWrite(LED_WLAN, HIGH); } void loop() { //Serial.println("I am Alive!"); //IR RECEIVER SIGNAL if (irrecv.decode(&results)) { timenow = millis(); analyzeCode(&results); Serial.print(F("ir")); digitalWrite(LED, 1); delay(50); digitalWrite(LED, 0); irrecv.resume(); } } void analyzeCode(decode_results *results) { results->decode_type; String receivedSignal; receivedSignal = String(results->value, HEX); receivedSignal.toUpperCase(); // So now we are listening if someone has send the PROJECTOR ON ir signal 3 times in a row. // we have three variables to store the millisecond when the signal was received. // the next variable iteration will be populated by the system if the last signal was send less than // repeatTimeoutMillis milliseconds. // e.g. if repeatTimeoutMillis=500 it means a signal is valid repeated when the previous signal was // send not longer than half a second before! // Until it reaches the third iteration where it executes the command after 3 repeats of the signal. // In case the previous signal was send longer than repeatTimeoutMillis ago the iteration resets and // sets the newly received signal as iteration 1 to start the cycle with this signal again. // if(receivedSignal == sigBeamerOn) { Serial.println(F("+")); //Detected My Signal if(receivedBeamerOnSignal1 == 0) { receivedBeamerOnSignal1 = timenow; Serial.println(F("1")); //Set 1 } else if(receivedBeamerOnSignal1 != 0 && receivedBeamerOnSignal2 == 0) { receivedBeamerOnSignal2 = timenow; if( receivedBeamerOnSignal2 > receivedBeamerOnSignal1+repeatTimeoutMillisThreshold ) { receivedBeamerOnSignal1 = timenow; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; Serial.println(F("r2")); //Reset on 2 } else { Serial.println(F("2")); //Set 2 } } else if(receivedBeamerOnSignal2 != 0) { receivedBeamerOnSignal3 = timenow; if( receivedBeamerOnSignal3 > receivedBeamerOnSignal2+repeatTimeoutMillisThreshold ) { receivedBeamerOnSignal1 = timenow; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; Serial.println(F("r3")); //Reset on 3 } else { Serial.println(F("3")); //Set 3 delay(200); //TURN OFF PROJECTOR BEGIN Serial.println(F("xb")); //Turn off projector irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); //reenable IR receiver after sending irrecv.enableIRIn(); //TURN OFF PROJECTOR END Serial.println(F("xr")); //Turn off AVR-Receiver //TURN OFF RECEIVER BEGIN manageAVR(); //TURN OFF RECEIVER END receivedBeamerOnSignal1 = 0; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; } } } } //--------------------------------------Yamaha AVR Functions-------------------------------------- void manageAVR() { //Usually there are more headers in the original request, but we need to save space and cannot add them String getRequest = "POST "+String(AVRSubpage)+" HTTP/1.1\r\nHost:"+String(AVRHost)+"\r\nContent-Length: " + String(strlen(AVRStopMessage)+1) + "\r\n\r\n" + String(AVRStopMessage) + "\r\n"; sendCom("AT+CIPSTART=\"TCP\",\""+String(AVRHost)+"\",80", "OK"); sendCom("AT+CIPSEND=" + String(getRequest.length() + 2), ">"); esp8266.println(getRequest); Serial.println(getRequest); delay(1000); if (esp8266.find("+IPD")) { if (esp8266.find("\r\n\r\n")) { sendCom("AT+CIPCLOSE", "OK"); } } } //-----------------------------------------Config ESP8266------------------------------------ boolean espConfig() { boolean success = true; esp8266.setTimeout(5000); success &= sendCom("AT+RST", "ready"); esp8266.setTimeout(1000); if (configStation()) { success &= true; Serial.println(F("WLAN OK")); Serial.println(F("IP:")); Serial.println(sendCom("AT+CIFSR")); } else { success &= false; } //shorter Timeout for faster wrong UPD-Comands handling success &= sendCom("AT+CIPMODE=0", "OK"); success &= sendCom("AT+CIPMUX=0", "OK"); return success; } boolean configStation() { boolean success = true; success &= (sendCom("AT+CWMODE=1", "OK")); esp8266.setTimeout(20000); success &= (sendCom("AT+CWJAP=\"" + String(WiFiSSID) + "\",\"" + String(WiFiPASSWORD) + "\"", "OK")); esp8266.setTimeout(1000); return success; } //-----------------------------------------------Controll ESP----------------------------------------------------- boolean sendCom(String command, char respond[]) { esp8266.println(command); if (esp8266.findUntil(respond, "ERROR")) { return true; } else { Serial.println("ESP ERR: " + command); return false; } } String sendCom(String command) { esp8266.println(command); return esp8266.readString(); } //-------------------------------------------------Debug Functions------------------------------------------------------ void serialDebug() { }
- Diese Antwort wurde geändert vor 8 Jahren, 11 Monaten von Terra.
- Diese Antwort wurde geändert vor 8 Jahren, 11 Monaten von fk.
Attachments:
Januar 15, 2016 um 23:30 Uhr als Antwort auf: Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln #1110JonathanTeilnehmerHi Fabian
sag mal, wäre nicht so eine Lösung für den Arduino eine Herausforderung für dich? – Meldungen über WhatsApp –
-
AutorBeiträge