Forum: Mikrocontroller und Digitale Elektronik ESP8266 am Pyboard


von Martschul (Gast)


Lesenswert?

Hallo ich habe das WLAN Modul ESP8266 und möchte dies am pyboard

http://www.electrodragon.com/w/File:ESP8266_V091.png

http://docs.micropython.org/en/latest/quickref.html#general-board-control

betreiben.

Dazu hae ich zuerst die UART schnittstelle eingerichtet und sende jetzt 
den Befehl  mit uart.write('AT') an das WLAN Modul. Nur bekomme ich 
leider keine Antwort?

Hat einer Ideen was ich falsch mache?

es leuchtet die Rote LED und die blaue blinkt beim start.

Vielen Dank

von Timmo H. (masterfx)


Lesenswert?

Welche baudrate hast du eingestellt? Je nach Firmware kann sie 9600 oder 
115200 betragen. Wichtig beim esp ist es auch dass die Stromversorgung 
genug Strom bereitstellen kann da das Modul am Anfang einiges an Strom 
braucht.
Der CH_PD muss auch auf vcc

von :) [von unterwegs] (Gast)


Lesenswert?

Martschul schrieb:

> Dazu hae ich zuerst die UART schnittstelle eingerichtet und sende jetzt
> den Befehl  mit uart.write('AT') an das WLAN Modul. Nur bekomme ich
> leider keine Antwort?
>
> Hat einer Ideen was ich falsch mache?
>

was ist das für eine programmiersprache, welcher strings in einfach 
streicher (pascal)  zusammhält und ohne zeilenabschluss? (phyton)

nein kenne das pyboard nicht und welche sprache es unterstützt.

der name klingt aber stark nach phyton

probiere es einmal mit den üblichen '\n' und '\r'
1
je nachdem - welche firmware / sprache:
2
3
// c code
4
uart.write("AT\r\n");
5
6
oder
7
// c code
8
uart.write("AT\r");
9
10
11
// phyton
12
uart.write('AT\r\n')
13
14
oder
15
uart.write('AT\r')
16
17
18
oder
19
// pascal
20
uart.write("AT" + #13 + #10);
21
22
// pascal
23
uart.write("AT" + #13 );
24
25
26
27
oder
28
// ??
29
uart.write('AT <<< hier muss ein carrier sowie new line dazu!' )


gib bitte rückinfo was geholfen hat, danke

ansonsten das übliche vorgehen der vorredner:
baudrate 9600, 57600, 115200
Rx/Tx anschluss prüfen ob richtig angeschlossen
..

denke es liegt aber am code

von Martschul (Gast)


Lesenswert?

erstmal vielen Dank für die schnelle Antwort!

Als baudrate hab ich sowohl 9600  als auch 115200 ausprobiert.

Die Versorung könnte ein punkt sein. Sieht man das an den LED?
Ich versuch es mal mit einer eigenen Versorgung. Kennst du ein 
(besonders)  geeigneten Festspannungswandler, oder ist das ganz egal?

Hab das halt direkt an den 3,3V Ausgang des Pyboard angeschlossen.

CH_PD hatte ich auf auf 3,3V.

Liege ich denn in der Annahme richtig, dass ich dann so darauf zugreifen 
können müsse, wenn ich die AT+... Befehle über uart.write('AT+...') 
schreibe? Kommen die Antworten dann direkt durch oder muss ich gleich 
nach dem schreiben ein read aufrufen?

hab davon leider viel zu wenig Ahnung :-(

Vielen Dank

von Martschul (Gast)


Lesenswert?

micro python

von Timmo H. (masterfx)


Lesenswert?

Martschul schrieb:
> Liege ich denn in der Annahme richtig, dass ich dann so darauf zugreifen
> können müsse, wenn ich die AT+... Befehle über uart.write('AT+...')
> schreibe?
Aber \r (bei alter Firmware) und \r\n bei neuer Firmware nicht 
vergessen.

> Kommen die Antworten dann direkt durch oder muss ich gleich
> nach dem schreiben ein read aufrufen?
Naja von der seriellen Schnittstelle musst du schon lesen. Die Ausgabe 
kommt direkt nach dem der Befehl erkannt wurde.
Teste das am besten erstmal direkt am PC mit TeraTerm oder so.

von Martschul (Gast)


Lesenswert?

Hallo
Hab das \r\n ausprobiert das ändert leider nichts. Was soll das denn 
bringen?

Also bei diesem code
1
while not switch():
2
    uart1.write('AT\r')
3
    print(uart1.readall())

kommt als anzeige immer b''.

Wenn ich einen anderen UART erzeuge und z.B. uart2.readall() ausgebe und 
die Verbinde zeigt er mir b'AT' als Ausgabe an. Also daher denke ich das 
das daran eigentlich nicht liegt.

Ich hoffe ich hab mein Modul nicht kaputt gemacht da das ja nur 3,3V 
only ist. Weiß einer die Spannung der UART Pins des pyboard ? Ich hoffe 
mal 3,3V!

Sonst noch ne Idee?
Muss erst einen Festspannungswandler mir besorgen.

RX/TX hab ich auch jeweils in beiden Richtungen probiert. Wobei ja 
eigentlich TX-> RX und RX->TX gehen muss oder?

von Timmo H. (masterfx)


Lesenswert?

Die Antwort auf "AT" ist "AT OK". Da du "AT" empfängst liegt es wohl 
daran, dass wenn du liest noch nicht alles vom ESP gesendet wurde. Lies 
also mal länger vom UART. Auf einem µC mache ich das mit einen 
RX-Interrupt und fülle einen Buffer und lese den nach einer bestimmten 
Zeit aus.
Wie gesagt versuch erstmal direkt an den PC mit TeraTerm oder so, dann 
siehst du auch ob vom Prinzip her alles ok ist.

von Martschul (Gast)


Lesenswert?

Sorry, das war von mir irreführend. Ich empfange das AT nur wenn ich es 
von einem UART des pyboard zu einem anderen UART des pyboard sende. hab 
darüber nur versucht das senden und empfangen zu testen

Um es direkt am PC zu probieren brauche ich erstmal eine UART-USB 
converter, aber werd ich dann mal ausprobieren.

wenn ich den hab, sende ich dann das AT indem ich direkt AT eingebe und 
als Antwort dann AT OK angezeigt bekomme (wenn es funktioniert)?

Vielen Dank dir auch.

von Max H. (hartl192)


Lesenswert?

Martschul schrieb:
> Hab das \r\n ausprobiert das ändert leider nichts. Was soll das denn
> bringen?
Das \r\n (Carraige Return + Line Feed) lagt dem ESP dass der Befehl hier 
zu Ende ist.

Martschul schrieb:
> wenn ich den hab, sende ich dann das AT indem ich direkt AT eingebe und
> als Antwort dann AT OK angezeigt bekomme (wenn es funktioniert)?
Du musst aber darauf achten, dass du \r\n mitsendest. Bei hterm z.B. 
kann man einstellen, dass das automatisch mitgesendet wird.

von Martschul (Gast)


Lesenswert?

ok, wofür ist das denn dies \r\n?

von Max H. (hartl192)


Lesenswert?

Das \r\n (Carraige Return + Line Feed) sagt dem ESP dass der Befehl hier
zu Ende ist.

von Martschul (Gast)


Lesenswert?

Hallo

Bekomme jetzt bei

AT\r\n

b'AT\r\r\n\r\nOK\r\n'

als Antwort.
Vielen Dank für die Unterstützung.

scheint wirklich nur an der Energieversorgung zu liegen. Hab jetzt einen 
externen 3,3V Festspannungsregler verwendet.

von Martschul (Gast)


Lesenswert?

Hallo
Nachdem ich jetzt mit dem ESP 8266 kommunizieren kann,
habe ich diesen im den AP modus konfiguriert.

Wie kann ich nun einen Server starten um Daten vom pyboard über wlan zu 
veröffentlichen?

von Max H. (hartl192)


Lesenswert?

Martschul schrieb:
> Wie kann ich nun einen Server starten um Daten vom pyboard über wlan zu
> veröffentlichen?
1
AT+CIPSERVER=1,<PortNummer>\r\n
Dein Programm muss dann noch auf die kommenden Anfragen antworten. Ich 
würde vorschlagen, dass du das erst mit einem Terminal (z.B. hterm) am 
PC ausprobierst.

P.S. Eine übersicht über die AT+Befele findest du hier: 
https://nurdspace.nl/ESP8266#AT_Commands

von Martschul (Gast)


Lesenswert?

Hallo
Vielen Dank für die Antwort

Habe das Modul jetzt
im AP Modus (AT+CWMODE=2\r\n)
und den Server gestartet (AT+CIPSERVER=1,80\r\n)

Ich versuche jetzt mit (AT+CIPSEND=4,5Hallo\r\n) Hallo zu senden Aber da 
kommt leider eine Fehlermeldung

Um das gesendete zu empfangen hab ich mich mit meinem Handy in den AP 
eingeloggt und mit der App TCP Client

https://play.google.com/store/apps/details?id=com.sollae.eztcpclient&hl=de

versucht die Nachrichten zu empfangen.
Wenn ich das (AT+CIPSEND=4,5Hallo) in einer While schleife habe kann ich 
in der App was angeben, was dann im Terminal angezeigt wird.

Wie kann ich das empfangene mit dem pyboard weiter verarbeiten?
Wie kann ich Informationen (richtig) Senden?
Am liebsten würde ich die gern im browser als Webseite dargestellt 
bekommen, hat dafür jemand gute Ideen?

Vielen Dank für die bisherige Unterschtützung!

von Max H. (hartl192)


Lesenswert?

Martschul schrieb:
> Ich versuche jetzt mit (AT+CIPSEND=4,5Hallo\r\n) Hallo zu senden Aber da
> kommt leider eine Fehlermeldung
1. Welche?
2. Versuchs mal mit:
1
"AT+CIPSEND=4,5\r\n"
2
//warten bis '>' empfangen wird
3
"Hallo\r\n"

> Am liebsten würde ich die gern im browser als Webseite dargestellt
> bekommen, hat dafür jemand gute Ideen?
Ich habe hier mal etwas für den PIC24 geschrieben:
Beitrag "Einfacher Webserver mit PIC24 + ESP8266"

Im Prinzip fukntioniert es so:
Browser sendet GET Request ans ESP8266, µC wertet die Anfrage aus, 
sendet das HTTP-Header + HTML-File (CIPSEND) und schleißt die Verbindung 
(CIPCLOSE).

von Martschul (Gast)


Lesenswert?

Hallo  Max

Wie kann ich warten bis '>' empfangen wird?
Bzw das IPD bei empfangenen Nachrichten rausfiltern?

Ich habe mal testweise mit delay(500) probiert und dann kommt zumindest 
ein teil durch
1
uart1.write('AT+CIPSEND=0,5\r\n') # sendet
2
pyb.delay(500)
3
uart1.write('HALLO\r\n') # sendet
4
print(uart1.readall())

Das readall gibt jetzt folgendes aus:

b'HALLO\r\r\nwrong syntax\r\n\r\nERROR\r\n\r\nSEND OK\r\n'

ich werde mir dein Umfangreiches Beispiel nachher mal ansehn.

Vielen Dank

von Martschul (Gast)


Lesenswert?

Hallo

Es funktionierte eben schon mal, nur leider hab ich irgendwas geänedert 
sodass ich wieder eine Fehlermeldung bekomme:
Und zwar folgende:

b'AT+CIPSEND=1,161\r\r\nbusy inet...\r\n\r\nERROR\r\n'


Und zwar wenn ich folgendes sende

# Zusammensetzen der Senden Vorbereitung
        cipSend = 'AT+CIPSEND='
        cipSend += str(ID)            # ID des Teilnehmers Teilnehmer
        cipSend += ',';
        cipSend += str(len(webpage)) # Länge der Webseite als String
        cipSend +='\r\n'

self.__send(cipSend)

Hat einer eine Idee woran das liegt? Vor allem da es zwischendurch scon 
mal ging ?

Vielen Dank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.