esp8266 + arduino

  • Zunächst mal ist wichtig Welchen Arduino du verwendest :huh:

    Dann bitte mit Eigenen Worten beschreiben wie du das Module angeschlossen hast und auch den Sketch, so wie Du ihn hast, posten - um zu verifizieren Wie es Bei Dir aussieht... Denn sehr oft werden kleine aber entscheidene Unterschiede beim User himself vorgenommen - das sollte man also erst mal ausschließen können

    Die Verkabelung von RX/TX ist oftmals verwirrend, deshalb hier noch mal:

    Code
    ESP8266     Arduino
    ---------|--------
    GND         GND
    TxD         RxD
    RxD         TxD
    Vcc         3V3

    Also der TXD vom ESP8266 geht auf den RXD vom Arduino!

  • es ist ein arduino Mega

    Anschluss: esp8266 > mega
    vcc <> 3,3V
    TXD <> RXD
    RXD <> TXD
    GND <> GND
    CH_PD <> 3,3V

    usb to TLL > Mega
    TXD <> PIN 11
    RXD <> PIN 10
    GND <> GND

    sketch:

    Einmal editiert, zuletzt von ProudSound12121 (15. November 2014 um 17:23)

  • Was soll bei deiner Belegung denn EN sein? Einen solchen Pin gibts am ESP8266 soweit ich weiß gar nicht ?
    Laut der Anleitung die du oben angegeben hast sind auch nur 4 Pins am ESP8266 verkabelt, nicht 5 wie bei dir - also wie kommst du darauf 5 Pins zu verkabeln :huh:

    Und was ist TLL ?


    Und schließ den Mega mal bitte an deinen PC an, öffne ArduinoIDE und wenn du den Sketch geflasht hast machst du oben rechts "Serial Monitor" über das kleine Lupensymbol auf. In dem neuen Fenster stellst du dann noch bitte die richtige Baudrate ein - und dann bitte das posten was da ausgegeben wird ;)
    (jedesmal wenn du den Serial Monitor auf machst wird der Arduino resettet)

  • im serial monitor kommt nur AT+RST

    TLL: = usb to tll kabel
    sellbst wenn ich CH_PD weg lasse kommt nur AT+RST

  • Vielleicht hast du noch eine alte Firmware drauf - stell mal die Baudrate auf 115200 oder runter auf 9600


    Das Module ist aber auch nicht 5V tolerant... Der Arduino Mega2560 ist aber ein 5V Device, es kommt also aus dem TxD Port auch 5V raus.... Das ist also nicht zu prickelnd, da bräuchtest du vermutlich einen LevelShifter (Widerstand)

  • ... als müsste man jeden Levelshifter kennen der so existiert ....

    Vermutlich einfach 1:1 ... Port1 von Seiten des Arduinos an Port1 auf der anderen Seite zum ESP8266. Die 5V Seite Richtung Arduino und die 3V3 Seite Richtung ESP8266

  • Hi,

    wie an anderer Stelle versprochen, hier mal meine bisherigen Erkenntnisse in Software gegossen und optisch aufbereitet.
    Der sketch im Anhang funktioniert allerdings leider nicht so, wie er soll.
    Wenn ich mit einem Kabel direkt auf die Rx/Tx Pins des Moduls gehe, funktionieren alle Kommandos einwandfrei. Wenn ich das aber aus dem sketch heraus mache, dann hängt er beim Verbinden mit dem Host. Den Effekt habe ich übrigens auch mit dem Testprogramm aus dem Netz ...
    Ich kann jetzt nicht sagen, woran das liegt ... jedenfalls ist es imho sehr myteriös und erscheint mir nicht logisch.

    Der sketch ist ziemlich umfangreich und fragt diverse Sensoren ab. Das sollte aber weiter nicht stören.
    Wichtig ist nur das Handling des Moduls.
    Hierzu muss ziemlich weit oben im sketch die SSID und das Passwort für das WLAN und die Server-Addresse und der Port eingetragen werden, zu dem ihr verbinden wollt.
    Der connect auf das WLAN scheint einwandfrei zu funktionieren ... lediglich die Verbindung zum Server kommt nicht zustande.
    Ich denke derzeit darüber nach, den Server auf dem WiFi Modul zu starten, und dann vom RPi aus darauf zu verbinden. Vielleicht klappt das ja eher.

    Bei einem MEGA oder einem Arduino mit mehreren UARTS könnt ihr die SoftSerial weglassen und stattdessen eine reale rs232 nehmen. Dazu einfach meine softSerial durch z.B. Serial austauschen und das Modul an Serial1 anschliessen. Dann sollte es auch keine Probleme mit dem Flashen geben.
    SoftSerial sollte aber genau so funktionieren. Ich verwende die Pins 8 und 9 dafür.

    Der CH_PD Pin muss, wie schon im anderen Thread erwähnt, auf HIGH gesetzt werden. Zusätzlich habe ich den RST Pin angeschlossen und resette das Modul per Software vom Arduino aus, wenn es sich nicht mehldet.

    Wenns noch Fragen gibt, melden ....

    Wie gesagt, ich baue das mal um auf eine Server-Version. Vielleicht klappt das ja besser.
    Ich vermute stark, dass das an meiner Firmware liegt - die ist wohl 902. Aber solange ich kein zweites Modul habe, lasse ich das mit dem Update lieber ;) ...

    //EDIT:
    Was ich auf der Zeichnung vergessen habe: die Pins 8 und 9 des Arduino gehen über ein PL2303 Kabel auf den USB-Anschluss meines Laptops. Dort läuft dann minicom.
    Achtet darauf, dass die SoftwareSerial Schnittstellen lt. diverser Hinweise im Netz nur max. 19200 Baud unterstützt.


    UPDATE:
    Ich habe den sketch jetzt mal so umgebaut, dass das Modul als Server arbeitet. Erstaunlicherweise hat das auf Anhieb geklappt.
    Ist zwar nach wie vor ein absoluter Bastel-Stand der Software ... aber ausbaufähig. Ausserdem wollte ich sie Euch nicht vorenthalten. Der Server-Version ist im Anhang als funksensor_v3.ino.gz.

    UPDATE 2 (16.11. 01:30):
    Ich hab' jetzt noch ein wenig an der Server-Variante rumgefeilt und den Anhang aktualisiert.
    Ich setze jetzt den Timeout für die Verbindung zum Board hoch bzw. runter. Zudem erkennt der sketch jetzt einen Verbindungsabbruch (auflegen des client bzw. sleep modus des Moduls).
    Einzig ein Phänomen bekomme ich im Moment nicht gebacken:
    Wenn ich einen Datensatz per WLAN schicke, dann zeigt der Wert hinter IPD zwar die richtige Anzahl der Bytes an, aber irgendwie werden maximal 51 Byte Nettodaten empfangen.
    Das muss irgendwie mit dem Empfangspuffer dataIn zusammenhängen. Das ist eine Variable vom Typ String ... reserviere ich in setup() für den String 120 byte ( dataIn.reserve(120) ) dann klappt komischerweise die Anmeldung am WLAN nicht mehr :( ...
    Ich muss allerdings dazu sagen, dass der verbleibende RAM nicht sehr üppig ist ;) ...

    Spoiler anzeigen


    +IPD,0,52:12345678901234567890123456789012345678901234567890
    +IPD,0,2:
    Hm ?:
    Hm ?: OK
    Hm ?:
    +IPD,0,53:123456789012345678901234567890123456789012345678901
    +IPD,0,2:
    Hm ?:
    Hm ?: OK
    Hm ?:
    +IPD,0,54:123456789012345678901234567890123456789012345678901
    +IPD,0,2:
    Hm ?:
    Hm ?: OK
    Hm ?:
    +IPD,0,55:123456789012345678901234567890123456789012345678901
    +IPD,0,2:
    Hm ?:
    Hm ?: OK

    Ach ja: der Server startet auf Port 3366. Testen kann man das z.B. mit Telnet. Das ist derzeit noch hart kodiert ...
    Die IP des Moduls müsst ihr bei Eurem Router erfragen ... sinnvollerweise sollte man da eine IP für das Modul reservieren.

    cheers,
    -ds-


    cu,
    -ds-

  • beim kompilieren von funksensor_v2 bekomme ich :

    Code
    funksensor_v2.ino: In function 'void storeEEPROM()':
    funksensor_v2:708: error: 'do_crc16' was not declared in this scope
    funksensor_v2.ino: In function 'uint16_t restoreEEPROM()':
    funksensor_v2:806: error: 'do_crc16' was not declared in this scope

    Arduino version 1.0.6

  • yes baby es geht :)
    nach DS seiner zeichung und etwas Grips einschalten hier wie ich es mit dem MEGA verbunden habe.

    wie ihr seht hab ich die 3,3 V vom mega abgenommen

    hier der/die/das ino:


    Bauteil für Fritzing Kit :

    https://github.com/satsatt/Fritzing

    Einmal editiert, zuletzt von ProudSound12121 (16. November 2014 um 19:12)

  • Hi,
    na super :thumbs1:


    ...
    wie ihr seht hab ich die 3,3 V vom mega abgenommen
    ...

    wobei Du da ein wenig aufpassen musst. Das Modul kann ganz schön heftig Strom ziehen (gut 200 mA habe ich da noch im Hinterkopf) ... ich bin mir nicht sicher, ob der Mega das bringt (da ist imho bei 150 mA Schluss) ...
    Einfach mal im HInterkopf behalten, wenn's mal hakt ...

    Nachdem bei Dir der connect auf einen Server funktioniert, bei mir aber nicht ( ich hab' ja auch den sonderbaren Effekt mit dem fehlerhaftn join bei string.reserve(120) ) tippe ich jetzt mal, dass meinem Pro Mini der Speicher ausgeht und der connect deshalb nicht klappt.
    Mal schauen, was ich da mache ... wär halt auf nem Pro Mini schon genial.

    cu,
    -ds-

  • Hi,
    das kommt wohl vor ... deshalb hab' ich ja den reset per Software eingebaut ;) ...
    Es gibt, zumindest bei mir, auch einen sonderbaren Effekt mit den Empfangsdaten (hatte ich ja -> hier <- schon mal beschrieben). Kann aber auch am RAM liegen ...
    cu,
    -ds-

  • sorry bin noch nicht soweit, habe erst mal alle 117 LEDs mit fastLED2 am nano am laufen und beginne jetzt mit der Uhr (wordclock)

    wlan muss noch warten, dann wird es spannend wie ich ntp da rein bekomme......

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Naja ... mit einem WLAN Stick bist Du ja strommässig auch gut unterwegs ... irgendwo muss die Sendeleistung ja herkommen. Ist doch ein bekanntes Phänomen, dass beim RPi mit einem älteren WLAN Dongle durchaus mal die Spannung wegbricht ...
    Die 240 mA (oder so) sind aber scheinbar ein absoluter Spitzenwert ... im Arbeitsmodus bist Du mit ca. 80 mA dabei (das hab' ich nicht gemessen sondern aus irgend einer Webseite).
    Ne klar, für die 3V3 des RPi ist das nix ... aber für den gibts ja USB Dongles für WLAN.
    Spannend ist das Modul imho eher für µController (ein WLAN Sensor kostet halt dann mit Batterien knapp 10 Euro und passt in eine Streichholzschachtel ...).
    Sicher ... die Batterie hält halt nur entsprechend lange (oder kurz) ... aber ich finde es eh affig z.B. Temperatur oder Luftdruck im Sekundentakt zu messen.

    cu,
    -ds-


  • Hm wenn das Module so viel Strom zieht, wie soll man das dann am PI betreiben :huh: =(

    am PI ginge das wie mit jedem anderen wlan Adapter auch nur müsste der Saft von 5V selber zu 3,3V für das Modul gewandelt werden (KIS Pi-Tuning), aber die Überschrift war doch Arduino :s

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!