Forum: Mikrocontroller und Digitale Elektronik ESP8266-01 Neueinsteiger Hilfe für Vorhaben


von Andy (Gast)


Lesenswert?

Hallo mikrocontroller.net!

Ich hoffe das ich hier niemanden auf den Schlips trete wenn ich einmal 
Anfrage ob ihr mir vielleicht ein wenig auf die Sprünge helfen würdet.

Gleich vorweg, meine Kenntnisse im bereich Programmiersprache und 
Mikrocontroller sind nicht gerade berauschend, bis gar nicht vorhanden,
was ich aber ein wenig, mit eurer Hilfe, aufbessern möchte.
Ich möchte auch keine vorgefertigte Lösung unbedingt haben,
nur ein paar schubser in die richtige Richtung.




Es geht um folgendes:

Ich würde gerne durch Hilfe des ESP8266 für 30 Minuten ein 12VDC Gerät 
mit Spannung versorgen.
Ausgelöst werden soll das ganze per Webinterface, indem ich mich mit dem 
Mobiltelefon zum ESP Verbinde, und auf "Ein" klicke (vielleicht sogar 
mit einstellbaren Timer?).

Soweit ich jetzt schon herausgefunden habe brauch ich auf jedenfall noch 
ein Relais, was mir meine 12V Leitung schaltet.

Das Relais sollte vom GPIO des ESP angesprochen werden.

Nur wie bekomme ich es jetzt zu Stande einen Zeitablauf von 30min (/oder 
Variabel per Webinterface) zu erstellen ? Mit LUA ?








Derzeitiger stand ist folgender, das ich es schon erfolgreich geschafft 
habe einen AP auf dem ESP einzurichten und per Wlan mich damit verbinden 
kann.

Nur jetzt komme ich einfach nicht mehr weiter.



Mfg Andy!

von Thomas Z. (thomas_z41)


Lesenswert?

Hi,
der ESP8266 hat hardware und software timer.

Wenn man das SDK benutzt sind die auf Seite 15 der Dokumentation 
beschrieben.

Damit kannst du einfach eine Funktion schreiben, die irgendetwas tut, 
und diese vom Timer nach einer gewissen Zeit aufrufen lassen.

Wenn du nicht das SDK verwendest, dann guck mal in der Dokumentation die 
zu deiner Umgebung nach Timer.

von Jochen (Gast)


Lesenswert?

> Derzeitiger stand ist folgender, das ich es schon erfolgreich geschafft
> habe einen AP auf dem ESP einzurichten und per Wlan mich damit verbinden
> kann.

Welche Firmware hast du? Ist LUA schon implementiert?

von Ulrich F. (Gast)


Lesenswert?

Andy schrieb:
> Das Relais sollte vom GPIO des ESP angesprochen werden.
Diese Anforderungen bedingt dass du den ESP programmierst.

Da bieten sich 3 Varianten an...
1. mit dem (nackten) SDK
2. die LUA Variante
3. per Arduino IDE


Ich nutze Variante 3.

von Andy (Gast)


Lesenswert?

Schon einmal danke für eure Antworten!

Derzeitig nutze ich noch die AT-Firmware - v0.9.5.0,

Ich wollte mir aber heute Abend einmal die Arduino-IDE Variante genauer
anschauen.
In der hoffnung das diese vielleicht ein wenig leichter zu händeln ist,
da vielleicht mehr genutzt auf anderen Geräten.

von kubi (Gast)


Lesenswert?

Hi Andy,

für ein solches Projekt verwende ich ausschließlich die NodeMCU Firmware 
und erstelle die Software in LUA. Warum? Weil die Aufgabe so einfach 
ist, dass kein weiterer uController erforderlich ist. Auch der 
komplexere Weg über das SDK ist da zu heftig. In LUA sind das ein paar 
wenige Zeilen und der Hardware-Aufwand ist ebenfalls minimalistisch. 
Auch der Zeitaufwand ist für mich so der geringste.

In der Doku sind Beispiele für einen Webserver und die Benutzung der 
Timer. Weiteres findest du in der LUA Doku.

Denk aber beim Anschluss des Relais an Transistor, Vorwiderstand und 
Diode ;-)

Gruß
kubi

von Robert S. (bimbo385)


Lesenswert?

Ich würde dir die Arduino Variante ans Herz legen.

Spiele auch gerade mit dem ESP8266 und Arduino rum.

https://blog.thesen.eu/esp8266-wlan-microcontroller-mit-der-arduino-ide-programmieren/

Gute Beispiele gibts in der IDE.

Für die Zeit geht ein Timer oder du benutzt die Time.h Lib:

https://github.com/PaulStoffregen/Time


Mfg Bimbo385

von Jochen (Gast)


Lesenswert?

"Gleich vorweg, meine Kenntnisse im bereich Programmiersprache und
Mikrocontroller sind nicht gerade berauschend, bis gar nicht vorhanden 
..."

Da solltest du der Empfehlung von kubi folgen. Ein paar Zeilen LUA und 
dein Projekt läuft.

von Mathias O. (m-obi)


Lesenswert?

Ich hab auch vorgestern meinen ESP zum Leben erwacht. Ich würde dir auch 
LUA ans Herz legen und das ganze mit ESPlorer hochladen. Für diese 
Zeitschaltuhr sind das wenig Zeilen. Auch das Webinterface sind nicht 
viele. Wenn es einfach alle 30min toggeln soll oder alle 30min für ein 
paar Sekunden oder Minuten aktiv sein soll, würde ich einfach 
tmr.alarm() nehmen.
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#tmralarm

von .. (Gast)


Lesenswert?

Ich rate dir ganz und gar von LUA ab!

Entweder mit AT Befehlen
oder
mit einer IDE und Code schreiben
aber keinen
Interpreter der Code wieder interpretiert.

aus dem Grunde weil du erst LUA lernen musst
und wie es arbeitet und den Code, den LUA umsetzt
auch selber schreiben kannst, dafür braucht man kein
LUA.


Andy schrieb:
> Schon einmal danke für eure Antworten!
>
> Ich wollte mir aber heute Abend einmal die Arduino-IDE Variante genauer
> anschauen.

Andy schrieb:
> Es geht um folgendes:
>
> Ich würde gerne durch Hilfe des ESP8266 für 30 Minuten ein 12VDC Gerät
> mit Spannung versorgen.

> Ausgelöst werden soll das ganze per Webinterface, indem ich mich mit dem
> Mobiltelefon zum ESP Verbinde, und auf "Ein" klicke (vielleicht sogar
> mit einstellbaren Timer?).

Timer soll dann wieder "Aus" schalten nehme ich an.

>
> Soweit ich jetzt schon herausgefunden habe brauch ich auf jedenfall noch
> ein Relais, was mir meine 12V Leitung schaltet.


>
> Das Relais sollte vom GPIO des ESP angesprochen werden.

Last ja, Versorgung ( Spule ) musst aufpassen, damit bei 
Spulenwiderstand nicht zuviel Strom über den GPIO des ESP fliesst

>
> Nur wie bekomme ich es jetzt zu Stande einen Zeitablauf von 30min (/oder
> Variabel per Webinterface) zu erstellen ? Mit LUA ?

du schreibst, dass du die Arduino IDE mal ansehen willst.
Wenn du dir den Ablauf wie du ihn beschreibst, notierst, und Schritt für 
Schritt den
in der IDE umsetzt kommst du auf etwa sowas mit ein paar Ergänzungen:

ESP Wifi AP Mode und wartet auf Eingang vom Mobiltelefon
-> über Internet?
-> local über normalen AP Mode dabei is das Handy dann Client

Kleine Webseite wird angezeigt

-> Statusmeldung
-> On / OFF
-> wenn On, Verbleib Restzeit
-> wenn gewünscht, manuel Off Schalter
-> wenn Off, Button für 'EIN'
-> Setup Button für 'Laufzeit' ( 30 minuten )



kleine Ansatzgedanken ,

Die Laufzeit wird standardmässig bei 30 minuten liegen.

TimerValue = 1800;

Eine Änderung wird zu Laufzeit als neuer Variablen Wert gespeichert.

TimerValue = 2400;

Wenn beim Ausschalten des ESP dieser Variablen Wert erhalten bleiben 
soll,
müsste eine Funktion zum speichern und lesen vom SPI Flash IC eingebaut 
werden.

// read
TimerValue = spiflash.read(TimerVar ....)

// speichern
spiflash.write(TimerVar ...)


Ohne Speicherung auf Spi Flash

TimerValue = 1800;

30 minuten sind 30 * 60 sekunden also 1800 Sekunden
du könntest eine Schleife machen, die die 1800 sekunden
abläuft, sozusagen, jedesmal wenn die Schleife durchlaufen ist,
zählt sie eins runter, wenn 0 erreicht ist, schaltet der Gpio
das Relais aus;

while (; TimerValue > 0 ; TimerValue-- ) {

  // Relais ein
}
  // Relais aus

mit dem 'Ein' schalten Button schreibst  du der Variablen wieder
1800 Sekunden gut und setzt diese

TimerValue = 1800;

von Mathias O. (m-obi)


Lesenswert?

Wenn du LUA nimmst und speichern willst, kannst du auch die Werte in 
eine Datei schreiben. Dann brauchst du nicht extra einen Flash IC bzw. 
FRAM oder so.

von Ulrich F. (Gast)


Lesenswert?

Ist doch egal, welche Sprache .....
Geschmackssache!
Vielleicht noch abhängig von Vorwissen, Verfügbarkeit und 
Lernbereitschaft.
Für einen Anfänger ist LUA vielleicht einfacher als C/C++
Ein C++ Jünger wird kein LUA verwenden wollen.

von Brater (Gast)


Lesenswert?

Ich bin auch kein Freund von LUA. Vieles an der Sprache finde ich 
einfach nur merkwürdig, da ich die Sprache on-the-fly für das NodeMCU 
lernen musste.
Der große Vorteil ist aber, dass man recht schnell und intuitiv mit dem 
LUA-Code alles zusammenbasteln kann. Außerdem bietet NodeMCU viele 
Beispiele.

Es gibt bereits irgendwo Beispiele im Netz, bei denen LEDs per 
Web-Interface geschalten wurden. Beim Einschalten musst du lediglich 
einen Timer starten, der nach den 30 Minuten den GPIO wieder auf 0 
setzt.

Zum Flashen von dem NodeMCU vorher im Netz schauen, welche Pins du auf 
welche Pegel setzen musst (z.B. bei Electrodragon) und dann das Tool von 
NodeMCU verwenden (wichtig: noch die aktuelle Firmware aus dem Netz 
laden).

Wenn du später den Code programmierst, nach dem hochladen des LUA Files 
das File compilieren. Andernfalls hatte ich immer Probleme, dass der 
Speicher nicht ausreichte (eventuell habe ich mich einfach mit dem LUA 
blöd angestellt). Als IDE verwende ich den ESPlorer - schöne IDE.

Nachtrag: kurz mal den Arduino-Code für den ESP8266 angeschaut - sieht 
auch gut aus. Und das lässt sich wahrscheinlich besser programmieren als 
LUA. Dafür gibt es für den NodeMCU LUA Code wahrscheinlich mehr 
Beispiele, weil es schon länger verfügbar ist und bereits vielfach 
eingesetzt wird.

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.