Forum: Mikrocontroller und Digitale Elektronik ESP als Fernbedienung


von Kurt (Gast)


Lesenswert?

Hallo

Ich würde gerne einen Motor mittels PWM von einem ESP ansteuern lassen.
Der PWM-Wert soll von einem Poti kommen.
Soweit wahrscheinlich kein Problem.

Motor und Poti sollen aber an zwei verschiedenen ESPs hängen.

Meine bisherige Überlegung ist, den Motor-ESP als AP-Server laufen zu 
lassen
und den Poti-ESP sich als Client dort anzumelden.
Der Wert des Potis wird in die URL eingebunden, die der Client auf dem 
Server aufruft.
Der Server wandelt die GET-Variable in das PWM-Signal um.

Ist das ein gangbarer Weg?
Oder wie sähe eine Alternative aus?

Es ist zwar keine kritische Anwendung, aber es wäre schon notwendig,
dass es keine (oder kaum) Verzögerung zwischen dem Drehen des Potis und 
der Bewegung des Motors gibt.

von Sascha W. (sascha-w)


Lesenswert?

Kurt schrieb:
> Hallo
>
> Ich würde gerne einen Motor mittels PWM von einem ESP ansteuern lassen.
> Der PWM-Wert soll von einem Poti kommen.
> Soweit wahrscheinlich kein Problem.
ok
> Motor und Poti sollen aber an zwei verschiedenen ESPs hängen.
ok
> Meine bisherige Überlegung ist, den Motor-ESP als AP-Server laufen zu
> lassen
> und den Poti-ESP sich als Client dort anzumelden.
Kannst auch beide an einem anderen AP anmelden
> Der Wert des Potis wird in die URL eingebunden, die der Client auf dem
> Server aufruft.
> Der Server wandelt die GET-Variable in das PWM-Signal um.
>
> Ist das ein gangbarer Weg?
zusammen mit dem unten - Nein!
> Oder wie sähe eine Alternative aus?
>
> Es ist zwar keine kritische Anwendung, aber es wäre schon notwendig,
> dass es keine (oder kaum) Verzögerung zwischen dem Drehen des Potis und
> der Bewegung des Motors gibt.
Dafür ist ein HTTP-Request durch den Overhead viel zu langsam.
Für verzögerungsfreie/arme Verbindungen kann du Websocket nehmen. 
Allerdings macht das nur Sinn wenn du sowieso was mit dem Browser machen 
willst.
Für deinen Zweck reicht es aus wenn auf dem Motortreiber ein Programm 
auf einem UDP-Port lauscht und dein Poti-ESP bei Veränderungen einfach 
ein UDP-Paket mit dem neuen Wert sendet.

Sascha

von Kurt (Gast)


Lesenswert?

Sascha W. schrieb:
> Kannst auch beide an einem anderen AP anmelden

Das möchte ich nicht, da ich dann ja immer noch einen Router, Handy oder 
sonstwas benötige.

Sascha W. schrieb:
> Dafür ist ein HTTP-Request durch den Overhead viel zu langsam.

War meine Befürchtung

UDP sagt mir noch gar nichts, wenn du ein Beispiel kennst,
würde ich mich freuen, wenn du es verlinken würdest.
Ansonsten ist das Internet ja groß und enthält alles :-)

Vielen Dank für deine Hilfe

von Frank (Gast)


Lesenswert?

Kurt schrieb:
> Der PWM-Wert soll von einem Poti kommen.
> Soweit wahrscheinlich kein Problem.

Ich kenne nur die, wo ein einziger Pin als ADC bis 1V !!! benutzt werden 
kann.
Hat jeder ESP ADCs?

von Kurt (Gast)


Lesenswert?

Ja, Einen (A0).
Bei den nackten ESP Modulen (1 bis 12e) darf nur 1V rein,
bei den NodeMCUs können bis zu 3.3V gemessen werden.
(Spannungsteiler auf dem Board)

Aus Erfahrung kann ich berichten, mit 8V am A0 ist der ESP kaputt.

von Sascha W. (sascha-w)


Lesenswert?

Kurt schrieb:
> UDP sagt mir noch gar nichts, wenn du ein Beispiel kennst,
> würde ich mich freuen, wenn du es verlinken würdest.
> Ansonsten ist das Internet ja groß und enthält alles :-)
http baut auf einer TCP-Verbindung auf. Client muss sich mit dem Server 
verbinden, die Datenverbindung ist dann vom TCP-Stack gegen 
Übertragungsfehler gesichert.
UDP arbeitet "verbindungslos", ein Client sendet einfach ein Paket an 
einen Server, wenns ankommt kanns verarbeitet werden. Da vom Server 
keine Rückmeldung erfolgt ist jedoch nicht feststellbar ob das Paket 
auch angekommen ist. Für deinen Zweck eine Stellgröße zu übertragen ist 
das jedoch völlig ausreichend, da ja sowieso bei jeder Änderung des 
ADC-Werts ein neues Paket gesendet werden muss.
Ein Beispiel für den ESP? -kann ich dir nicht liefern. Im Netz findest 
du aber jede Menge Beispiele für "UDP SOCKET".

Sascha

von Strubi (Gast)


Lesenswert?

Moin,

wie gross darf deine Latenz sein? Kannst du damit leben, dass ab und an 
mal ein Kommando nicht ankommt?
Das Problem der ESP-Plattformen ist oft die HW, die mies/null konform zu 
irgendwas (CE, FCC) designt ist, so dass die harten Radiopakete oft 
nicht ankommen, aber zudem auch die Software und das grottigste 
Callback-Gefrickel das ich bisher gesehen habe.
Zuverlässigen Betrieb mit vernünftiger Latenz (50-100ms möglich) ist nur 
mit den FreeRTOS-Varianten hinzukriegen, aber auch da nicht sonderlich 
robust.
Mein Rat: Gib ein paar Euro mehr aus, und probier das Ganze auf einem 
Linkit Duo. Das Linux-Frontend läuft im Dauerbetrieb und der AVR macht 
im Hintergrund das Realtime-Zeug. Ist deutlich robuster und läuft bei 
mir in einigen IoT-Projekten ordentlich 24/7 und v.a. debugbar.
Für Motorensteuerung kannst du z.B. eine einfache modbus-Implementierung 
wie libmodbus verwenden (das macht die Industrie auch so).

Grüsse,

- Strubi

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.