Entwicklung: ESP8266 + Sensoren

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hi...ich mal wieder :fies:

    Ich überlege aktuell mein 'Batteriebetriebene Funk Sensoren' ein wenig rundzuerneuern und anstatt 433MHz etc. lieber auf die weit aus billigeren ESP8266 (Wiki) Module umzurüsten, womit ich mich ja vor ein paar Monaten schon mal beschäftigt hatte aber irgendwie den Faden verloren hab :(

    Also dafür spricht:

    • Die Module sind sehr günstig.
    • Es gibt verschiedene Modelle mit unterschiedlich vielen GPIO's. (GPIO, I2C, ADC, SPI, PWM)
    • Programmierbar zB via LUA.
    • Genügend Flash Speicher.
    • WLAN hat heutzutage eigentlich jeder.

      • Kein separater Empfänger am PI notwendig

    Laut meinen ca. 10 Monate alten Informationen verträgt das ESP8266 Module mind. 1,7V und max. 3,6V aber die I/O Ports vertragen maximal 3V3 - ist das noch immer so? :huh:
    Aich war mal die Rede davon das die Module bis zu 250mA benötigen könnten, aber > hier < steht was von 170mA :s

    Mittlerweile wird es bestimmt auch schon einige Projekte mit Sensoren geben - einziges Problem was ich derzeit sehe ist eine vernünftige Stromversorgung zu realisieren sowie das passende Grund-Modell. Vorstellbar wäre auch eine art Adapterplatine mit Booster o.ä.. Bei diesem Projekt will ich nicht unbedingt auf 'Tiny' achten, Hauptsache langlebig und funktional ;)

    Für dieses Projekt denkbare Modelle wären:
    - ESP-01
    - ESP-05 (nur wenn man einen zusätzlichen AVR für GPIO's verwenden würde)
    - ESP-07 (Ceramic Antenna & U-FL connector. GPIO: 0/2/4/5/12/13/14/15/16)
    - ESP-11 (Ceramic Antenna. GPIO: 0/1)
    - ESP-12 (PCB Antenna. ADC + GPIO: 0/2/4/5/12/13/14/15/16)
    - DWA8
    - ESP-201 (PCB Antenna & U-FL connector.)

    Manche Modelle lassen sich einfacher in den sog. 'Deep Sleep' bringen als andere, sollen dann aber 3 Jahre mit nur 2 AA Batterien durchhalten (natürlich ohne aufwachen)

    Es gibt auch mir bekannte Platinen von anderen Herstellern die hierfür interessant sein könnte:
    - https://www.sparkfun.com/products/13231
    - http://www.exp-tech.de/catalogsearch/result/?q=esp8266


    Zitat

    Aufgrund eines Hinweises von Nick (siehe Kommentare) konnten wir Meßfehler nachweisen, wenn DHT11 oder DH21 (vermutlich auch DHT21) zu nahe am ESP8266 liegen. Vermutlich koppeln HF Felder des ESP8266 in den analogen Meßteil des DHT ein. Bei einem DHT21 konnte ich eine systematische Abweichtung von +1,5 Grad Celsius und -3% rel. Feuchte nachweisen. Eine Distanz von ca. 10cm scheint auszureichen, um das Problem zu vermeiden. Die Messwerte meines DHT21 stimmen dann mit den Werten meiner Wetterstation (WH3080) überein.


    quelle


    Werde diesen Beitrag aktualisieren und weitere Informationen zusammentragen. Stay Tuned :geek:

    Über Anregungen oder hilfreiche Informationen wär ich dankbar.


    Hilfreiche Links:

    Erster Eindruck: ESP8266 - WLAN-Modul mit rs232 Schnittstelle
    Erster Eindruck: ESP8266 - WLAN-Modul mit rs232 Schnittstelle
    https://www.kickstarter.com/projects/20438…for-iot?lang=de
    ESP mithilfe Arduino flashen: ESP8266 + RaspberryPI
    ESP Lua Loader: http://benlo.com/esp8266/
    ESPlorer: http://esp8266.ru/esplorer/
    Meine damalige Zusammenfassung der verschiedenen Modelle: Erster Eindruck: ESP8266 - WLAN-Modul mit rs232 Schnittstelle

    Hardware:
    https://www.tindie.com/products/April…e-plus-esp8266/
    https://www.tindie.com/products/April…dboard-adapter/
    http://www.micrel.com/index.php/prod…article/85.html http://www.digikey.com/product-detail…%20TR-ND/771289

    ESP Adapter Platine von joh.raspi: ESP8266 Adapter mit On-Board Spannungsversorgung zum Einbau in Projekt
    ESP Programmierer von Neueinsteiger: ESP8266 Programmierer Version 2.0

  • Wie ich heute erfahren habe, arbeiten Neueinsteiger und joh.raspi ebenfalls schon etwas länger an einem ähnlichen Projekt und haben auch schon mit dem " Briefkastenwächter " ( RasPiPo2 ) eine funktionierende Version laufen, wo es anscheint demnächst eine weiterentwickelte Version von geben soll *leak* ;)

    Ich bin sowohl vom PCB als auch vom Code sehr beeindruckt :thumbs1: habe aber zumindest bisher einen etwas anderen Ansatz, den ich auch erst ausprobieren möchte inwiefern dieser geeignet ist:

    Angedachte Bauteile:
    - ATtiny
    - Transistor
    - Step-Up/Down regulator
    - ESP
    - Kondensatoren usw.

    Zusammenspiel:
    - Der ATtiny (zB ein ATtiny84A oder ATtiny85) steuert und verwaltet alles.
    - An den Tiny ist sowohl der Sensor als auch ein Transistor und ein direkter Draht zur Batterie angeschlossen.
    - Der Tiny soll die meiste Zeit im Tiefschlaf hängen, zB nach 5 Minuten aufwachen, die Batteriespannung messen, den Sensor auslesen und dann über den Transistor den ESP ans Stromnetz schalten.
    - Der ESP soll ausschließlich fürs Senden über WLAN zuständig sein, somit würde ein ESP-05 völlig ausreichen.
    - Tiny sendet die gesammelten Daten via SoftwareSerial an den ESP welcher sich dann ums abschicken kümmert.
    - War das senden erfolgreich teilt er dies dem Tiny mit, welcher dann den ESP wieder vom Strom trennt und sich selbst schlafen legt.

    Neueinsteiger und joh.raspi machen das ein bisschen anders: An den ESP ist der Sensor angeschlossen und dieser misst auch die verbleibende Batteriespannung etc. Zuvor hatten sie nur einen normalen Timer-Chip genutzt da die Firmware des ESP ein Problem mit dem wieder aufwecken hatte, aber wenn ich das richtig verstanden habe wollen sie mit V2 auch einen ATtiny einsetzen.

    Da der ATtiny mehrere ADC als auch PWM usw besitzt, brauch man sich nicht auf einen bestimmten ESP festlegen - da es nur einige wenige ESP Modelle mit ADC gibt.

    Ein ATtiny85 hat insg. 6 I/O's die verwendet werden können.
    Ein Pin brauch ich also als ADC, da bietet sich PB2 (pin#7) für an.
    Für SoftwareSerial werden 2 Pins benötigt (RX + TX), wofür ich erst mal PB0 und PB1 in Betracht ziehe da die auch rechts vom Chip sind.
    Bleiben also noch 3 Pins über, wobei einer davon zum schalten des Transistors benötigt wird, also sind nur noch 2 für Sensoren frei. Bei 1-wire Sensoren wären das also auch 2 mögliche Sensoren ;)

    Ein ATtiny84A hat doppelt so viele I/O's wie der ATtiny85, aber 2 PWM Channels weniger but who cares :) Ausserdem gehört der ATtiny84A zur picoPower Baureihe und verbraucht wenig(er) Strom - ob es aber auch wirklich weniger als beim ATtin85 hab ich bisher nicht recherchiert da ich erst mal noch Restbestände (84A) vom Funk-Projekt nutzen werde.

    Kopfschmerzen bereitet mir noch der Step-Down/Up Regulator - wie auch schon beim Funk-Projekt. Anders als beim TinyTX4 liegt wegen des ESP die Obergrenze bei maximal 4V wobei man besser 3,6V anpeilen sollte da sich schon viele ihren ESP mit 4V geschrottet haben..
    Für den ESP ist es ebenfalls sehr wichtig eine stabile Spannung zu haben sonst kann der schon mal Probleme machen, auch wenn er mit nur 1,7V auch noch arbeiten könnte...

    Der LTC3525 Step-Up, den wir auch beim TinyTX4 eingesetzt haben, ist eigentlich ein Wunschkandidat da die Effizient hervorragend ist und er auch noch bis 0,3V runter arbeitet. Ist allerdings nur ein Step-Up auf 3V3.
    Inwiefern es sinnvoll ist 2 verschiedene Chips zu verbauen, also einen Step-Up und separat noch einen Step-Down, vermag ich aktuell noch nicht einschätzen zu können...
    Besser wäre aber denk ich ein einziger Chip der beides kann, wie zum Beispiel der U1V11F3 allerdings hat dieser eine ziemlich miese Effizienz von 65%-bis-zu-85% :( Würde ich also nicht benutzen wollen.. Etwas besser mit bis-zu-90% wäre dann schon der S7V8F3, allerdings benötigt dieser mind. 2,7V also fällt der eigentlich als Standalone-Version ebenfalls flach :(
    Bei diesen beiden ist aber der SHUTDOWN-pin interessant, um die Regulatoren Ein/Aus zu schalten und somit den Verbrauch noch etwas weiter zu senken.

    Nunja, hier muss ich noch ein bisschen mehr recherchieren - da ich aber vom TinyTX4 Projekt noch 2 LTC3525 Booster PCB's hier habe werde ich erst mal damit arbeiten und so wie Neueinsteiger und joh.raspi 2 Akkus anschließen.

    Morgen steck ich mal die erste Version zusammen und befasse mich mit der Software :fies:

  • Trifft sich ganz gut. :) I sitze auch gerade an einem Board dass mich bei meinen zukünftigen Experimenten speziell mit Sensorer aller Art begleiten soll.
    Bin damit schon recht weit und hab sogar schon angefangen die Bauteile auf dem Board zu platzieren. Der Entwurf ist aber noch nicht fix, ein paar Dinge
    werden sich noch ändern. Auf dem Breadboard läuft das ganze aber testweise schon genau so wie es soll. :)

    Ich bin mal so frei und füg hier meinen akutellen Entwurf ein: (Auch wenn er noch nicht fertig ist!)
    http://i.imgur.com/SbBvk6q.png
    Sowie den Schlatplan:
    http://i.imgur.com/1UruoSp.png

    In der Mitte sitzt ein ESP-12 der wahlweise über den On-board LDO(AS1363) oder ein StepUp Modul(U1V11F3) mit Strom versorgt werden kann.
    Man könnte ABER auch ein eigenes Spannungsregler Modul mit dem Regler seiner Wahl designen und verbauen.

    Durch die verwendung des abschaltbaren Spannungsreglers liegt der Stromverbrauch im Standby bei gerade mal 0.3µA. Das ist dass was der tiny im Schlaf(PowerDown) braucht.
    Kommt der Watchdog dazu sind es soweit ich im Kopf hab ~6µA + z.B. alle 8 Sekunden kurz ~1mA. Kommt aber schlussendlich natürlich auf das Einsatzszenario an.

    Im Schaltplan hab ich zwar einen ATtiny13 verbaut man kann aber genau so gut einen ATtiny25/45/85 verwenden.
    Die ersten Header für I2C und 1-Wire(DS18b20) sind auch schon herausgeführt, geplant sind aber noch ein paar mehr (DHT,..).
    Ausserdem werden noch alle ESP und tiny Pins soweit als möglich herausgeführt. Zusätzlich soll es noch möglich sein den ESP und tiny
    über I2C kommunizieren zu lassen. Um auf dem tiny das Hardware I2C nutzen zu können müssen die Pins dafür aber noch leicht geändert werden.


    Das ganze basiert auf einem Entwurf den ich zusammen mit Neueinsteiger die letzten Wochen für sein Briefkastenprojekt erabeitet habe und das inzwischen so gut wie abgeschlossen ist.
    Wir haben auch schon das nächste Projekt in Planung bei dem es primär um Tür/Fenster Sensoren geht. :)

    ----
    Irgendwo hatte ich das mit den 1.7V auch schon gelesen und hab das mal mit einem Labornetzteil getestet.
    Getestet wurde bis zu was für einer Spannung sich die GPIOs über eine Webseite die der ESP bereitstellt steuern lassen.
    Gestartet ist der ESP bei 3.3V. Dann hab ich die Spannung schrittweise(ca 0.3V) hinunter gedreht.
    Ergebnis: Der ESP lieferte die Webseite (und schaltete den GPIO) tatsächlich auch noch bei 1.7V. Ein Blick auf die Stromanzeige des Labornetzteils zeigte
    dass sich die Stromaufnahme auch da, wie die ganze Zeit über, im Bereich 50-75mA bewegt.
    Ab ~1.65V ist der Strom dann konstant auf ~55mA gegangen und der ESP hat nicht mehr reagiert.
    Anschließend hab ich versucht die Spannung wieder hochzudrehen und den ESP zu resetten, hat ihn aber nicht wieder zum laufen gebracht.
    Erst als ich ihn kurz vom Strom genommen habe, lief er wieder.
    Hab noch was interessantes dazu gefunden:

    Zitat


    From what I know, the ESP works down to a very low voltage: the specsheet says 1.8V but I seem to remember that unofficially it can go even lower. The problem is in the SPI flash: that usually has a minimum voltage that's 2.2V or so. If you can find & whack an 1.8V-capable flash onto our module, the entire thing should work OK at that voltage.
    http://www.esp8266.com/viewtopic.php?…ca9fda1d#p23975

    Wie das mit den I/O Ports genau aussieht weiß ich leider nicht, hab aber auch die erfahrung gemacht dass die I/Os einiges abkönnen.
    Ein mit 3.3V betriebener ESP hat auch mit 5V I/O Pegeln funktioniert.
    Ob der ESP intern deswegen schneller altert kann ich nicht beurteilen, vermute es aber. Ich würde lieber auf nummer sicher gehen.
    Mein aktueller Entwurf ist diesbezüglich übrigends noch nicht geschützt ;)

    In einem PDF von Espressif stand irgendwas davon dass die GPIOs mit "snapback diodes" ausgestatet und deshalb 5V tolerant sind. Müsste ich nochmal raussuchen.

    Zum Stromverbrauch hab ich hier ein paar links gepostet:
    Erster Eindruck: ESP8266 - WLAN-Modul mit rs232 Schnittstelle

    Da kann man sehen dass die Module kurzzeite (Peaks) bis zu ~350mA benötigen.
    Andererseit hab ich schon Leute gesehen die den ESP "erfolgreich" direkt mit den maximal 50mA aus einem FTDI versorgen. =)


    EDIT: Hab gerade gesehen dass du einen leicht anderen Ansatz gewählt hast, liest sich auch nicht schlecht. :)

    Joh

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (24. September 2015 um 00:06)

  • LUA ist eine Programmiersprache welche von der jeweils geflashten Firmware unterstützt wird...

    Arduino-IDE ist in erster Linie nicht LUA fähig sondern nur ein Programm welches Serial, Uart oder andere "Programmer" und das spezielle Arduino-C unterstützt aber wie gesagt kein LUA und auch kein microPython... Man kann Arduino-IDE nur dazu verwenden Befehle über UART zu übermitteln, also z.B. LUA-Befehle... Aber für mehr ist Arduino-IDE soweit mir bekannt ist nicht geeignet.

    Es gibt aber einige andere Programme um mit den ESP Modulen zu hantieren - 2 hab ich oben im ersten Beitrag bereits angegeben: LuaLoader und ESPlorer

    Ansonsten sagt dein leider doch sehr kurzer Beitrag nicht sehr viel aus :-/

  • Mit der Arduino-IDE kann man Programme in dieser C-Abwandlung schreiben, kompilieren und direkt auf den ESP8266 flashen.
    Mir persönlich ist da dieses Arduino-C lieber, als LUA oder ein Pythonderivat. Man nimmt gerne das, was man schon öfter benutzt habe.
    Und die Arduino-IDE gibt es auch als "to go", also ohne aufwändige Installation, für Windowsrechner.

    Die Arbeitsschritte mit nodeMCU und LUA scheine umständlicher zu sein. Aber vielleicht ist das auch schon weiter entwickelt worden.

    Marcus

    P.S.: Das Flashproblem aus http://www.nazim-kenan.de/nodemcu-develo...rammieren/ scheint nicht mehr zu bestehen. Meine Programme haben auf dem ESP genau das getan, was ich angewiesen hatte.

    Einmal editiert, zuletzt von MarcusFE (23. September 2015 um 13:33)

  • Aha..

    Zitat

    Sollte man sich dennoch sträuben eine neue Sprache wie Lua zu lernen und auch weiterhin in C/C++ programmieren wollen, kann auf die von Entwicklern für das ESP8266 zur Verfügung gestellte Anpassung der Arduino IDE zurückgegriffen werden.

    Also eine spezielle Version, nicht einfach nur das allgemein bekannte/normale Arduino-IDE.

    Desweiteren steht da auch, das nicht jeder ursprünglich fürn Arduino/AVR geschriebene Code mit dem ESP kompatibel ist. (weil Arduino ein leicht abgewandeltes C nutzt)

    Aber Oke, das wusst ich noch nicht - hätte man aber in dem 5-Wörter-Beitrag auch ruhig verlinken können :fies:
    Ich mag LUA, hab ich in MineCraft auch mit zu tun :D


    Diskussionen allgemein zum ESP gibts hier aber schon genug - bitte beschränkt euch auf das Thema hier ;)
    :danke_ATDE:

  • Hi,


    ...
    Also eine spezielle Version, nicht einfach nur das allgemein bekannte/normale Arduino-IDE.
    ...


    ne ... das ist die ganz "normale" Arduino IDE (allerdings afaik mindestens 1.6.4) und die ESP-Geschichten werden ganz einfach per Board-Manager hinzugefügt (da hatte ich -> hier mal was dazu geschrieben).
    cu,
    -ds-

  • Ja, also nicht die Standard IDE sondern man muss an der Standard Version etwas ändern - also etwas nachträglich dazu installieren - damit es auch mit dem ESP funktioniert... Dreh und wende wie du es willst, mit dem 08/15 Arduino-IDE funktioniert es nicht, erst wenn man es speziell für den ESP anpasst :fies:


    Nun aber Bitte zurück zum Thema hier :(
    Durch diese Diskussion "womit kann man einen ESP flashen/programmieren" geht das eigentliche Thema massiv unter...

    Es gibt hier im Forum schon genug andere Threads die sich mit dem ESP allgemein befassen... Ich hab hier aber ein spezielles Thema. Übrigens Ohne Deep-Sleep des ESP's :X (siehe Beitrag#3)

  • Ohne Deep-Sleep übrigens

    Warum? Habe ich Dich richtig verstanden, dass Du den Deep-Sleep-Mode durch den ATTiny ersetzten möchstest?

    Auch der einzige richtige freie GPIO meines ESP8266-01 kann einen DS18S20 abfragen. Dank des Programmieradapters von Neueinsteiger war das mit der Inbetriebnahme der Arduino-IDE, die ich zuvor auch noch nie benutzt hatte, ein Miniprojekt für einen freien Abend.

    Sehr hilfreich waren diese Seiten: https://blog.thesen.eu/wlan-lufttempe…g-fuer-esp8266/
    Und auch für den 1-Wire-Bus gibt es in der IDE Bibliotheken. Hat auf Anhieb funktioniert.

    Marcus

    Einmal editiert, zuletzt von MarcusFE (23. September 2015 um 13:52)

  • Lies doch mal bitte die bisherigen Beiträge hier - speziell #3

    Dort sollte ersichtlich werden das ich Stromfresser-Nummer1 (den ESP) nur einschalten möchte wenn etwas via WLAN zu senden ist. Um alles andere kümmert sich der weitaus sparsamere ATtiny.
    Der ESP frisst einfach zu viel Strom und die "WLAN Sensor Module" sollen schließlich möglichst lange durch nur 2 Batterien/Akkus betrieben werden können...

    //EDIT: Der ESP schluckt aber mindestens 40mA auch wenn er nicht im WLAN ist. Der ATtiny begnügt sich mit ca. 1mA. Das ist ein riesen Unterschied.
    Der ESP benötigt nicht selten mehr als 5 Sekunden um sich im WLAN anzumelden und verschicken über HTTP ist auch nicht gerade sehr schnell... Deshalb verfolge ich den Gedanken den ESP möglichst kurz anzuhaben und da der ATtiny auch noch mehrere ADC's hat, kann man eigentlich auch gleich die Sensoren an den ATtiny anschließen - was spricht dagegen?

  • Dort sollte ersichtlich werden das ich Stromfresser-Nummer1 (den ESP) nur einschalten möchte wenn etwas via WLAN zu senden ist.

    Eben. Sollte das nicht auch mit dem Deep-Sleep gehen, wenn Minimalismus in Bauteilen gewünscht sein sollte? ESP schläft mit µA, wird geweckt, macht eine Messung, versendet den/die Messwert/e und schläft dann wieder.
    Wenn das Wecken auf ein Signal von außen angewiesen ist, dann wäre Deine ATTiny-Lösung sicher die komfortablere, da sie nebenbei auch noch mehr Möglichkeiten bietet (ADC).
    Meine ESP-DS-Kombi habe ich den Deep-Sleep noch nicht beigebracht, hängt noch immer mit dem Programmieradapter an einem Netzteil.

    Marcus

    Einmal editiert, zuletzt von MarcusFE (23. September 2015 um 14:04)

  • Ich bin mir dessen schon bewusst das der ESP auch GPIOs usw hat.

    Neueinsteiger und joh.raspi gehen einen anderen Weg, ich möchte aber diesen von mir gewählten gehen - und der sieht eben vor den ESP ausschließlich zum Senden mit der Stromversorgung zu verbinden.

    Davon abgesehen muss man sich auch nicht unbedingt teurere ESP's mit mehr GPIO's kaufen sondern es reicht der ESP-05 für 2,99€ ... Den ESP-01 kriegt man für 2,73€ also nicht viel weniger.
    Andere Module haben zudem das Problem nicht so einfach verbaut werden zu können - diese beiden haben zumindest eine Steckmöglichkeit und wirken daher stabil bzw austauschbar :D

    Für alles andere bietet der Tiny für mind. 2 verschiedene Sensoren genug I/O's. Mit dem ATtiny84A hab ich zudem schon einige gute Erfahrung und kann diesmal auf Monströs Speicherfressende RFM12B Libs verzichten - also sind 8kB Flash mehr als ausreichend insbesondere wenn der WLAN-Part auf dem ESP gespeichert ist und der nur noch sagt "Daten her" sowie "wurde verschickt".

    ESP-05 hat auch den Vorteil eine vernünftige Antenne anschließen zu können, da diese OnBoard-PCB-Printed Antennen nicht sooo super toll von der Reichweite her sind. Und der ESP-05 hat auch keine LED die nochmals unnötig Strom verballert... Also 2 Fliegen mit einer Klappe und so ;)

    Aber zum entwickeln nehme ich auch erst mal die ESP-01 und ESP-201, weil ich die schon hier liegen hab.


    Ich hab jetzt schon mal einen Teil der Software für den ESP fertig. Alles besteht hauptsächlich aus Funktionen damit sich der ESP nicht in eine Endlosschleife aufhängt. Das init.lua Script läd alle "requiredFiles" Dateien über die 'require' Anweisung und am Ende gibt " ESP:READY " aus. Das soll dem Tiny später signalisieren das der ESP fertig gebootet hat.

    Freier RAM vor dem Aufspielen: 21544 bytes ... Freier RAM nach dem Upload: 15592 bytes
    Durch eine optionale '_install.lua' Datei werden alle Dateien, außer _install.lua und init.lua, compiliert und dessen *.lua Dateien gelöscht - das spart Flash-Space und machts auch etwas schneller. Flash vorher frei: 68021 bytes ... Used : 4016 bytes

    Aber genug der Zahlen.. Hier der Code:

    &quot;init.lua&quot;

    [code=php]
    -- ----------------------------------
    -- NodeMCU TinySensors v0.02
    -- ----------------------------------

    local requiredFiles = { 'config', 'functions' }

    -- Check for first startup
    for FILE,SIZE in pairs(file.list()) do
    if FILE == "_install.lua" then
    dofile("_install.lua")
    break
    end
    end
    FILE,SIZE=nil

    -- Load required files
    for i=1, #requiredFiles do
    success = require(requiredFiles[i])
    if success == false then
    error("ERROR: Missing required file: "..requiredFiles[i])
    end
    end
    i,requiredFiles,success = nil

    print("ESP:READY")
    [/php]

    &quot;_install.lua&quot;

    [code=php]
    --
    -- Execute this on first setup to compile all needed files.
    -- This file will deletes itself after done :)
    --

    skipFiles={ 'init.lua', '_install.lua' }

    for FILE,SIZE in pairs(file.list()) do
    local skipIt=false
    for i=1, #skipFiles do
    if FILE == skipFiles[i] then
    skipIt=true
    end
    end
    if skipIt == false then
    print("compiling: "..FILE)
    node.compile(FILE)
    file.remove(FILE)
    end
    end

    print("Done")
    --delete variables to cleanup memory
    FILE,SIZE,skipFiles,skipIt=nil
    --delete file
    file.remove("_install.lua")
    [/php]

    &quot;config.lua&quot;

    [code=php]--------------------------------------
    -- Wifi configuration
    --------------------------------------
    -- SSID of the router
    SSID = 'bla'
    -- Password for WiFi
    PASSWD = 'secret'

    -- Webserver IP to send Data to..
    SERVERIP = '192.168.0.11'
    SERVERPORT = 80
    PAGE = 'esp8266.php'
    --------------------------------------
    [/php]

    &quot;functions.lua&quot;

    [code=php]
    --------------------------------------
    -- Wifi functions
    --------------------------------------

    -- Connect to WLAN
    wlanConnect = function(ssid, passwd)
    print('MAC: ', wifi.sta.getmac())
    wifi.setmode(wifi.STATION)
    wifi.sta.config(ssid, passwd)
    wifi.sta.connect()
    tmr.alarm(0, 1000, 1, function()
    if wifi.sta.getip() == nil then
    print("Connecting to AP...")
    else
    local IP = wifi.sta.getip()
    print("-> Got IP: ".. IP)
    tmr.stop(0)
    print("ESP:DONE")
    end
    end)
    end

    wlanDisconnect = function()
    wifi.sta.disconnect()
    print("ESP:DONE")
    end

    wlanSend = function(data)
    local page = PAGE.."?"..data
    local client=net.createConnection(net.TCP, false)
    client:connect(SERVERPORT, SERVERIP)
    print('Sending http request.')
    client:send("GET /" .. page .. " HTTP/1.1\r\nHost: " .. SERVERIP .. "\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
    print("ESP:DONE")
    page,client=nil
    end
    [/php]

    Die einzelnen Funktionen kann man dann über UART ausführen und auf "ESP:DONE" warten.


    Nun mach ich mich mal an den AVR Part


  • Und die Arduino-IDE gibt es auch als "to go", also ohne aufwändige Installation, für Windowsrechner.


    Wieso aufwendige Installation? Mehr wie die IDE herunterzuladen und über den Board Manager die ESP Boards zu installieren musst du unter Linux eigentlich auch nicht tun. :)

    Zitat


    ESP-05 hat auch den Vorteil eine vernünftige Antenne anschließen zu können, da diese OnBoard-PCB-Printed Antennen nicht sooo super toll von der Reichweite her sind.


    Meiner Erfahrung nach aber immer noch besser wie die Keramik Chip Antennen.
    Das schöne am ESP12 ist dass er Pinkompatibel zum ESP07 ist, da lässt sich falls nötig auch eine gute Antenne anschließen. Ist für dein Vorhaben aber wohl zu groß. :)


    Der ESP benötigt nicht selten mehr als 5 Sekunden um sich im WLAN anzumelden und verschicken über HTTP ist auch nicht gerade sehr schnell...


    Da hab ich andere Erfahrungen gemacht. :)
    Das verbinden dauert mit DHCP eigentlich nie länger wie 1-3 Sekunden. Mit statischer IP braucht er (meistens) nichtmal eine halbe bis er den Request verschicken kann.
    Die Request selber werden dann auch gerade wenn der ESP sie nicht ins Internet schickt sondern an z.B. einen Pi im gleichen Netzwerk richtet extrem schnell versendet.
    Zeit bis zu einer Antwort bei einem Request ins Internet: ca. 0,6-2 Sekunden (kann aber auch mal länger dauern!)
    Zeit, bei einem Request im lokalen Netzwerk: ~0.04 Sekunden, ganz selten minimal länger.

    Du hast meinen Beitrag zwar schon auf der ersten Seite verlinkt, hier aber nochmal:
    Erster Eindruck: ESP8266 - WLAN-Modul mit rs232 Schnittstelle
    Schau dir dort auch (noch)mal den Tipp zur Geschwindigkeitsoptimierung an. ;)

    DON'T PANIC!

Jetzt mitmachen!

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