Fernsteuerung mit dem Esp8266

cesco1

Erfahrener Benutzer
#1
Ich hab ein fernsteuerungsmodul auf esp8266 basis gebastelt.



Der sender hat ppm eingang und der empfänger ppm ausgang. Kommuniziert wird connectionless / ackless über ESP-NOW. Rx und Tx werden gebunden indem man dem TX die MAC adresse des RX eingibt. Diese muss in der arduino IDE source hardcoded eingegeben werden.

Also zuerst "#define server" drinlassen, empfänger flashen, und über arduino serial monitor die MAC der empfängers auslesen. Dann "#define server" auskommentieren, "//#define server" und die MAC bei "remoteMac[]" eintippen. Dann sender flashen. Fertig. PPM-in ist D4, PPM-out ist D8.

Wenn das jemand auprobiert würde ich mich über eine rückmeldung freuen.
Source ist auf rcgroups https://www.rcgroups.com/forums/showthread.php?3044440-Esp8266-RC-with-ESPNOW#post39281315

Man kann bis zu 8 sender mit einem empfänger binden ....
 
Zuletzt bearbeitet:

cesco1

Erfahrener Benutzer
#3
Beim empfänger hab ich den esp8266 dort angehängt wo früher der PPM empfänger dran war.
Das ist das 3-adrige kabel zu dem schwarzen esp8266 auf dem schwarzen schaumstoff. Spannungsregler und so hat der esp alles drauf. Vin pin verwenden, nicht 3.3V.



Beim sender musst du schuen wo dein PPM rauskommt und dort den esp anhängen, wahrscheinlich brauchst du auch einen spannungsteiler aus 2 wiederstand für das signal, der esp will max 3.3V.

Ist nix für anfänger, die gefahr da was durchzuschmoren ist gross.
 
Zuletzt bearbeitet:

handuc

Erfahrener Benutzer
#5
Das ist sehr interessant und kostengünstig dazu!
Auf reiner NodeMCU / ESP8266 Basis habe ich eine Variante aus dem Netz nachbebaut, die allerdings gelegentlich ein Eigenleben entwickelt.
Gesteuert wird über einen Nunchuk-Controller, der einen ESP8266 "füttert". Auf der Empfängerseite kommt ein NodeMCU mit L298D Motordriver zum Einsatz. Bisher getestete Reichweite >50m.
Dies nur nebenbei.

Auf das Tankchassis aufbauend werde ich die nächsten Tage gern Dein Projekt testen, da mich diese Lösung echt interessiert!
Sowie ich was vorzeigbares zusammen habe, melde ich mich natürlich.
 

Anhänge

Minimalist

Neuer Benutzer
#6
Hallo cesco1, schön dich auch hier zu treffen.
rcgroups (da bin ich quax) ist mir mit seinem Englisch doch etwas mühsam. ;)

Hanfried und ich haben mit einigen Beispielen aus dem Internet immer wieder die Erfahrung gemacht, dass die Verbindung oft unberechenbar war. Was heute funktioniert hat, hat am nächsten Tag schon wieder nur sehr sporadisch die Steuerdaten übertragen.

Deine Ergebnisse mit ESP-NOW lassen uns hoffen, dass doch noch eine stabile Steuerung mit den ESP8266 Modulen möglich ist. Allerdings muss ich die Software noch anpassen, da wir den Nunchuck beim Sender benutzen und den ESP8266 Onboard auch als PWM-Ansteuerung für die Motoren.

Der Rückkanal ist noch nicht mit einer Funktion belegt, ich denke dabei an Strom/Spannung des Onboard Akkus.

VG Minimalist alias quax alias Konze
 

rodizio1

Erfahrener Benutzer
#7
Paar Tipps:

- Möglichst kurze Pakete senden. Normale data frames sind viel zu viel header overhead. weiss nicht, was der esp8266 da für Möglichkeiten bietet, wenn das nicht komplett frei ist, nehmt irgendwas kurzes, RTS oder CTS z.b.
- Wenn 802.11b, dann auf jedenfall drauf achten, dass short preambles gesendet werden
- Hatte ich möglichst kurze Pakete und short preambles schon erwähnt? ;)
- Optimale Datenrate liegt je nach Anwendung etc. irgendwo zwischen 2mbit und 18mbit
- Probiert mal ob kanal 14 irgendwie nutzbar ist
- Oft senden (50-150x pro Sekunde "gleichmässig") oder:
- nicht so oft senden (25-75x pro Sekunde), aber dafür doppelt mit irgendwas um 0.5-3ms zwischen den beiden doppelten Paketen.
- Diversity basteln (keine Ahnung, ob man zwei esp irgendwie zusammenschalten kann? Einer master, einer slave, beide lauschen, slave schickt alles was er bekommt zum master, master wirft dupes weg, irgendwie sowas)

Edit:
- In Wohngebieten, indoor, etc. mit vielen anderen Wlans in der Nähe CTS-to-self protection aktivieren (falls das mit dem esp geht)
 
Zuletzt bearbeitet:

handuc

Erfahrener Benutzer
#8
Hi cesko und Bernhard, es wäre prima wenn sich hieraus ein stabiles RC System auf Basis des ESPxxxx entwickeln würde.
So wie ich das Projekt von cesko verstanden habe, ist der Signalfluss auf der TX Seite -> "normaler" RC Sender, aber ab PPM Ausgang geht es direkt zum ESP8266. Auf der RX Seite -> ESP8266 mit PPM Ausgang und dann zu den ESC´s bzw. Servos etc.
In unserer bisher aufgebauten Variante geht es RX seitig dagegen vom ESP8266 bzw. NodeMCU auf einen z.B. L298 Motordriver.
Das Problem sind hier jedoch die von Bernhard und mir gemachten Erfahrungen, das es immer wieder zu unerklärlichen und sporadischen Störungen auf der HF Strecke kommt.
So setzt sich das Tankchassis mitunter ohne Steuersignal vom TX selbstständig in Bewegung!?

Mein Handicap ist es, das ich leider nur marginale Programmierkenntnisse habe, da hat mir Bernhard schon sehr geholfen!
Daher sind die sicher sehr wertvollen Hinweise von rodizio1 von mir programmtechnisch nicht umsetzbar :-(.

Aber
 
Zuletzt bearbeitet:

cesco1

Erfahrener Benutzer
#9
@Minimalist
Du bist mir schon bekannt. Eine berühmtheit. Der vater der opensource brushless controller. Simonk sowie Blheli basieren auf deiner arbeit. Fühle mich geehrt :)
Ich fliege 2 copter mit deinem seriellen "1 byte per motor" protokoll.

@handuc
Eine variante mit 2 servoausgängen ist implementiert (#define servo), aber 2 mal pwm für motoren nicht. Bei der arduino umgebung kannst du mit analogWrite() auf einfachste weise pwm machen. Dein driver braucht 2 mal pwm oder 4 mal pwm wie mein china-driver?



>immer wieder zu unerklärlichen und sporadischen Störungen auf der HF Strecke kommt.

Funkenbildung and den brushed motoren war bei mir die ursache für sporadische aussetzer. Selbst mit flysky und auch frsky empfängern. Nur mit bypass C an den bürsten und feritringen in den motorkabeln läuft das zuverlässig.


@rodizio1
Soweit ich das verstanden habe sind ESP-NOW sogenannte "vendor frames". Die haben als adresse nur die MAC. Keine IP adresse, nicht routbar, garnix. Kanal kann man einstellen, packetlänge kann man definieren (max 250 bytes) geschwindikeit nicht.
 
Zuletzt bearbeitet:

leo2e

Erfahrener Benutzer
#10
Hallo,
auf dem Fahrzeug fiel mir ein guter alter Bekannter auf: doppelte Leistungs H-Brücke L298
 

handuc

Erfahrener Benutzer
#12
Funkenbildung and den brushed motoren war bei mir die ursache für sporadische aussetzer. Selbst mit flysky und auch frsky empfängern. Nur mit bypass C an den bürsten und feritringen in den motorkabeln läuft das zuverlässig.
Das hätte ich noch verstanden, aber das Tankchassis fuhr aus dem Stillstand heraus plötzlich los!? Da ich nur wenige Meter von meinem Router entfernt war, ist vielleicht vagabundierende HF schuld?
 

handuc

Erfahrener Benutzer
#13
@handuc

Version mit 4 pwm ausgängen und mixer. Nur am KO getestet.
Kanalnummern THROCHAN = gas, DIFFCHAN = links/rechts, DIRCHAN = vor/rück.
Gas null ist unten, nicht mitte. Armt erst nach 1 sek null-gas.
Mixer kann ein mot vor, ein mot rück beim drehen oder langsam fahren.

https://www.rcgroups.com/forums/showatt.php?attachmentid=10789344&d=1520584930
Besten Dank cesko1, das gucke ich mir natürlich gern an und werde es am Wochenende auch testen!
Ein wirklich interessantes Thema!!!
 

Minimalist

Neuer Benutzer
#15
Super :D ! Die Datenübertragung vom Client(ESP-01) zum Server(D1mini) funktioniert schon mal. Ich konnte kein Zucken in der Übertragung erkennen. Endlich geht's mit den ESP8266 weiter. Für Fahrzeuge aller Art finde ich die Dinger ideal. Datenübertragung und Steuerung in einem Chip und auch noch sehr günstig.

Ich habe das gleiche Kettenfahrzeug wie Hanfried und noch einen 2WD mit Dreh-Rad vorn. Wenn die Fernsteuerung via ESP8266 steht, sind der Fantasie für Funktionserweiterungen der Modelle keine Grenzen gesetzt.

@cesco1 ich sehe gerade, dass deine 4 PWM Version für ein Kettenfahrzeug ausgelegt ist. Passt ja. :cool:

PS: schön, dass das 0xF5 Protokoll noch lebt. Ich verwende inzwischen die SimonK Software. :)
 

cesco1

Erfahrener Benutzer
#16
Für Fahrzeuge aller Art finde ich die Dinger ideal.
Mir gefällt das soft-pwm nicht. Das könnte bei kleinen werten oder bei hoher pwm frequenz störungen geben. Die cpu muss ja neben pwm noch einen ganzen wifi stack bearbeiten. Keine ahnung wie zuverlässig das "analogWrite" ist.

An 2S ist kein regler nötig. D6 und D7 sind über kreuz. Läuft ganz gut.
 
Zuletzt bearbeitet:

Minimalist

Neuer Benutzer
#17
So, mein 2WD läuft. :D :D

So einer ist das:
https://www.ebay.de/itm/Motor-Smart...-Batterie-Box-2WD-Fur-Roboter-CJ/112695410813
Der Nunchuk ist an einem ESP-01 angeschlossen und der 2WD hat einen D1mini.

Nach ersten Tests kann ich sagen, dass die Übertragung glatt läuft, die Reaktion des 2WD ist direkt. Wenn man client oder server aus- und wieder ein-schaltet, verbinden die beiden sich gleich wieder - ein SUPER Verhalten!

In den Server habe ich einen Timeout von 1s eingebaut, dann gehen die Motoren auf Stop. Mein Akku vom ESP-01 war nämlich plötzlich leer und da fuhr mein 2WD einfach weiter, weiter, weiter, ....

Ich bin schon sehr neugierig auf weitere Tests.

Hier meine Sourcen:
www.b-konze.de/dies_n_das/espnow_RC_client-server_011.7z

ESPNOW ist sehr viel versprechend. :D - Meinen Dank an cesco1. :)
 
Zuletzt bearbeitet:

cesco1

Erfahrener Benutzer
#18
Nach ersten Tests kann ich sagen, dass die Übertragung glatt läuft, die Reaktion des 2WD ist direkt. Wenn man client oder server aus- und wieder ein-schaltet, verbinden die beiden sich gleich wieder - ein SUPER Verhalten!
Danke, Gut zu wissen.

Ich sehe du hast wire.h verwendet. Ich überleg einen mpu6050 oder 9250 and den esp8266 zu hängen und das für einen copter zu verwenden. RC mit telemetrie und FC vereint für $10. ESC über 0xF5 gesteuert (simonk kann das auch).
 
Zuletzt bearbeitet:

Minimalist

Neuer Benutzer
#19
Erster Entfernungstest

Heute habe ich mal ein wenig auf Entfernung getestet. Nach 95 Schritt, also ca. 60m, funktioniert noch alles bestens. Server und Client hatten nur die PCB Antenne.

Weiter konnte ich nicht, da müsste ich an einem anderen Ort testen. 60m für ein Bodenfahrzeug würde mir schon reichen. Mal sehen, wo ich auf größere Entfernung testen kann, ohne in die Nähe von Autos zu kommen. Da möchte ich doch gern auf "Nummer Sicher" gehen.

Egal welchen ESP8266 man zuerst einschaltet, die beiden haben sich wieder sofort gefunden. :)

Hier mein "Testequipment":
 

Anhänge

RCLogger

FPV1

Banggood

Banggood

Oben