2016-05-31 9 views
0

Ich habe ein Arduino Mega 2560.Arduino: connect Arduino mit Esp8266 aka ESP-01

ich es Esp8266 aka ESP 01 Modul anschließen möchten.

Zuerst öffne und kompiliere ich eine leere Skizze. Wenn ich den seriellen Monitor starte, schreibe ich AT-Befehle (wie zum Beispiel mit WIFI verbinden) in den seriellen Monitor und klicke auf "Senden". In diesem Fall funktioniert alles gut.

Nachdem ich getestet habe, dass die Befehle ordnungsgemäß funktioniert, möchte ich eine Arduino-Skizze schreiben, in der ich die Funktion implementieren, um Befehl automatisch zu senden, ohne es in seriellen Monitor zu schreiben.

Dazu schreibe ich diesen Code:

#define SSID "test" 
#define PASS "1111" 

void connectWiFi() { 
Serial.write(“AT+CWJAP=\"SSID\",\"PASS\""); 
} 

void setup() { 

Serial.begin(9600); 

connectWiFi(); 

} 

void loop() { 
} 

Wenn ich versuche, den Code in Serien Monitor auszuführen, ist es nur die Zeichenfolge gedruckt wird, aber der Befehl funktioniert nicht.

Warum, wenn ich diesen Befehl im seriellen Monitor schreibe funktioniert und wenn ich den obigen Code versuche, funktioniert der Befehl nicht?

Gibt es eine Möglichkeit, einen Befehl von Arduino Skizze übergeben und ausführen? Was ist das Problem in meinem Code, wenn es falsch ist?

Vielen Dank im Voraus für die Antwort.

Entschuldigung für mein Englisch.

+0

Was genau das tun sollen? Der meiste laufende Code ist auskommentiert. Und wie ist dein Modul verbunden? Um die Software seriell oder Hardware seriell? Sie lesen tatsächlich nichts zurück. –

+0

Ich bearbeite Post. Es ist jedoch mit der seriellen Hardware verbunden. – Federico

+0

Versuchen Sie, die Funktion println wie Serial.println ("YOUR AT COMMAND") zu verwenden; anstelle der Schreibfunktion – Fruchtzwerg

Antwort

2

Serial.write(...) macht Arduino schreiben über seine seriellen Anschlüsse (d. H. USB oder Pins 0 und 1). Eine bessere Möglichkeit, Arduino Anweisungen direkt an ESP zu senden, besteht darin, serielle Software-Pins für die Kommunikation mit ESP zu definieren.

Sie müssen SoftwareSerial.h einbeziehen und beispielsweise SoftwareSerial esp8266(2,3); verwenden, damit die Pins 2 und 3 seriell mit ESP kommunizieren.

Der Code sollte wie folgt aussehen:

#include <SoftwareSerial.h> 

#define SSID "test" 
#define PASS "1111" 

SoftwareSerial esp8266(2,3); 
void setup(){ 
    Serial.begin(9600); 
    esp8266.begin(9600); //ensure this baudrate is similar to your ESP's 
    delay(500); //give it some time 

    esp8266.println(“AT+CWJAP=\"SSID\",\"PASS\""); //send to ESP this way 
} 

void loop(){ 
    if(esp8266.available()){ 
    while(esp8266.available()){ 
     Serial.write(esp8266.read()); //make serial monitor print what ESP sends 
    } 
    } 
} 

Sie können auch auf this example für weitere Einzelheiten siehe