ESP8266-01 mit Arduino Due programmieren

Im meinem Blog zur Modellfernsteuerung mit Webbrowser habe ich bereits einen Programmieradapter für den ESP8266-01 vorgestellt.  Die Schaltung kann vereinfacht werden, wenn man einen Arduino Due einsetzt.

Der Arduino Due basiert im Gegensatz zu den meisten anderen Arduino Boards auf einem Controller mit 3,3 Volt Logik und kann daher zwei Funktionen übernehmen:

  • USB zu UART Adapter mit 3,3 V Ausgangspegel
  • Spannungsquelle für die vom ESP8266 benötigten 3,3 V

Das Verdrahtungsschema ist im Titelbild für diesen Beitrag  dargestellt. Zusätzlich ist zu beachten, dass der Arduino Controller „still zu legen“ ist, damit er die Programmierung des ESP8266 nicht stört. Hierzu wird der Reset des Due fest mit GND verbunden.

Der praktische Aufbau des Programmieradapters kann auf einem Prototyp-Board erfolgen.

Hierbei wird der ESP8266-01 über einen Breakout-Adapter verbunden, da der Stecker nicht für den Einsatz in einem Prototyp-Board geeignet ist.

Schuco Speed-Buggy Leiterplatten-Hack

Überblick

Dieser Blog beschreibt die Schuco Speed-Buggy Leiterplatte und die hierauf notwendigen Änderungen für den Einsatz mit dem PiKoder/SSC wRX um den Buggy mit einem Android Smartphone oder Tablett fernsteuern zu können.

Zur Adaptierung des Empfängers an die Leiterplatte sollen die vom PiKoder/SSC wRX erzeugten Impulse für die einzelnen Kanäle hinter dem auf der Leiterplatte vorhandenen Dekoder eingespeist werden.

Aufbau der Leiterplatte

Die Leiterplatte realisiert einen Digital-Proportional-Empfänger für drei Kanäle – Richtung, Geschwindigkeit und Licht – einschließlich der erforderlichen Servo- und Motoransteuerung.

Auf der Leiterplatte sind ein diskret aufgebauter Superhet-Empfänger (der in der neuen Konfiguration nicht mehr benötigt wird), ein Dekoder-IC (IC 1 im folgenden Bild), das die eingehenden PPM – Signale in die je Kanal erforderlichen PWM Signale umsetzt, ein IC für die Lenkservosteuerung (IC 2 im folgenden Bild)  und ein integrierter Schaltkreis für die Motoransteuerung (IC 3 im folgenden Bild) vorhanden.

Umbau der Leiterplatte

Die Kanalinformationen des PiKoder/SSC sollen die vom Dekoder erzeugten PWM Signale ersetzen. Um zu verhindern, dass sich die beiden Ausgangssignale gegenseitig stören bzw. die gegeneinander geschalteten Ausgangsstufen zerstört werden, habe ich das Dekoder-IC ausgelötet. Da die Leiterplatte einseitig ausgeführt ist, ging dies ohne Komplikationen und Leiterbahnablösungen.

Die Pins, an denen die dekodierten Signale abgegeben wurden, habe ich durch eine Stiftleiste ersetzt.

Die Belegung der Stifte von links nach rechts ist: Eingang für Lenkung, Motor, Licht.

Wie Sie vielleicht später beim Vergleich der Leiterplattenbilder feststellen werden, musste ich aufgrund eines Defektes der Leiterplatte das IC2 ersetzen.

Test und Messungen

Um die Änderungen testen zu können, habe ich ein einfaches Funktionsmodell des Buggy aufgebaut – das Lenkservo ist original, die Scheinwerfer werden durch eine LED simuliert und ein kleiner Gleichstrommotor ersetzt die originale Motor-/ Getriebeeinheit. Der Fernsteuerempfänger wird mit Klettband befestigt.

Zunächst habe ich dann die erforderlichen Impulslängen ermittelt. Da in der Vergangenheit fast jeder Hersteller seine eigenen spezifischen Impulslängen verwendet hat, empfiehlt sich in jedem Fall eine Überprüfung.

Zur Ermittlung der besten Einstellung habe ich den PiKoder/SSC wRX mit dem Aufbau verbunden und gemäß dem nachfolgenden Bild verdrahtet. (Wichtig: der Empfänger und das rote Kabel sind nicht eingesteckt!)

Mit Hilfe des PiKoder Control Centers (PCC) habe ich verschiedene Werte ausprobiert. Die nachfolgenden Einstellungen waren für meinen Aufbau am besten geeignet.

Im Bild sind für die Kanäle 1 und 2 jeweils die Neutralstellung sowie die Minimal- und Maximalwerte gezeigt. Für den Schaltkanal 3 (Scheinwerfer) gibt es keine Neutralposition – ab ca. 1920 µs schaltet das Licht ein. Da die Scheinwerfer nicht über eine Output-Pin geschaltet werden wie bei meiner Umrüstung, sondern über ein PWM-Signal, habe ich eine neue Version 1.11 der udpRC-App erstellt, in der Sie in den App-Settings von der Default-Konfiguration ‚Output-Pin‘ auf PWM umschalten können. Die App ist kostenlos im Play Store erhältlich.

Die ermittelten Werte werden mit ‚Save Parameters‘ im PiKoder abgespeichert, so dass die udpRC-App immer die richtigen Werte vorfindet.

 

 

Schuco Speed-Buggy mit Smartphone fernsteuern

Überblick

Dieser Blog beschreibt die Umrüstung eines Schuco Speed-Buggy von traditioneller Fernsteuerung auf eine Smartphone-Fernsteuerung mit einem PiKoder/SSC wRX. Obwohl diverse Schritte Buggy-spezifisch sind, lässt sich trotzdem die Vorgehensweise für den Umbau eines beliebigen Fernsteuermodells ableiten.

Meine Idee war, den Empfängerteil der Fernsteuerung still zu legen und die Kanalimpulse des neuen Smartphone-Empfängers am Ausgang des Kanal-Decoders – einzuspeisen, so dass sich die mechanischen und elektrischen Umbauten des Buggy auf ein Minimum beschränken.

Der von mir dann auf ebay als defekt erworbene Buggy hatte leider ausgerechnet eine nicht funktionierende Empfänger-Leiterplatte, so dass ich den Buggy entgegen meiner Planung auch mechanisch und elektrisch umbauen musste.

Vom Umbau hat aber auch meine Smartphone App udpRC deutlich profitiert: für den Lenk-Kanal gibt es jetzt eine Richtungsumkehr (reverse) und für beide Kanäle wird eine Trimfunktion angeboten. Und schließlich habe ich noch einen Schaltkanal (LIGHTS) realisiert, damit ich, wie in der Originalkonfiguration, auch die Scheinwerfer ein- und ausschalten kann.

Hinweis: Ich habe geplant, die Buggy-Leiterplatte noch weiter zu analysieren, zu reparieren und dann den Anschluss des Smartphone Empfängers an die Leiterplatte in einem weiteren Blog zu beschreiben.

Mechanische und elektrische Umbauten

Bestandsaufnahme und Funktion der Originalfernsteuerung

Das folgende Bild zeigt die Ausgangssituation des Buggy.

Die Ansteuerung des Antriebsmotors erfolgt traditionell über eine Brückenschaltung. Ein Standard-Fahrtregler kann diese Aufgabe ohne weitere Anpassungen übernehmen (und hat den Vorteil, dass die Spannungsversorgung des Empfängers in der Regel durch eine BEC-Funktion (Battery Eliminatior Circuit) bereit gestellt wird).

Das Lenkservo ist diskret aufgebaut: es wird nicht nur der Motor angesteuert, sondern auch ein Poti zur Auswertung der Position eingelesen. Da diese Logik nicht ohne größeren Aufwand nachzubilden ist, habe ich mich entschlossen, das diskret aufgebaute Servo komplett durch ein Fernsteuerservo zu ersetzen. Ein Graupner-Servo aus meiner Bastelkiste hat mechanisch perfekt gepasst.

Das Schalten der Scheinwerfer erfolgt interessanterweise nicht über den im Dekoderbaustein enthaltenen Schaltausgang, sondern wird diskret über die Auswertung der Kanalimpulslänge realisiert. Auch hier habe ich davon abgesehen, die vorhandene Logik nachzubilden und statt dessen für die Scheinwerfer die optionale Schaltfunktion des PiKoder/SSC wRX vorgesehen und eine einfache Treiberschaltung auf einer Prototypleiterplatte aufgebaut.

Das folgende Bild zeigt den modifizierten Aufbau.

Details zum Umbau

Einbau des Fahrtreglers

Das nächste Bild zeigt den Einbau des Fahrtreglers.

Der gewählte Fahrtregler passt mechanisch zwischen die Plastikstehbolzen vor der Motor-/Getriebeeinheit. Den zum Regler gehörigen Schalter (im Bild noch vorhanden) habe ich durch den Originalschalter des Buggy ersetzt, der dann wieder an der ursprünglichen Position eingesetzt wird.

Beleuchtung

Die Ansteuerung der Beleuchtung erfolgt durch eine kleine Treiberschaltung (im folgenden Bild sichtbar auf Prototypleiterplatte).

Die Schaltung ist denkbar einfach:

Als Schalttransistor habe ich einen 2N2222 mit einem Basiswiderstand von 1k verwendet. Weiterhin ist im Bild ein Hochlastwiderstand von 10R erkennbar, den ich in Reihe mit den Glühbirnen geschaltet habe (ich habe keine Angaben zu den Glühbirnen gefunden und da die Glühbirnen von der Buggy-Leiterplatte aus mit 6V angesteuert werden, ich aber eine direkte Verbindung zu den Akkus ( 6 x 1,2 V = 7,2 V) hergestellt habe, will ich so die Lebensdauer der Glühbirnen verlängern).

Da die Treiberschaltung die Glühbirnen im Gegensatz zur ursprünglichen Aufbau nun gegen Masse schaltet, mußte ich die Verkabelung der Beleuchtung ändern (schwarzes Kabel entfernt und gelbes Kabel verlegt).

Weitere umbauten und hinweise

Die vorhandene Kontrolllampe habe ich durch eine rote LED mit einem Vorwiderstand ersetzt, weil die Versorgung über den BEC erfolgt und ich den Leistungsbedarf minimieren wollte, um ggf. später noch andere Erweiterungen durchführen zu können (weißes Kabel im Bild).

Einbau des Empfängers PiKoder/SSC wRX

Mit dem Entfall der Original-Leiterplatte konnte ich den Empfänger mit Leichtigkeit in den entstandenen Raum einbauen; die Befestigung erfolgte mit Klettband.

Die Karosserie wird dann aufgesetzt und die Kabel von den Servos, der Lichtansteuerung und der Kontrolllampe werden, wie im nachfolgenden Bild zu sehen, aufgesteckt.

Die Reihenfolge der Kabel lautet von links nach rechts: Eingang Lichtsteuerung (rotes Kabel auf Kanalpin, Fahrtregler, Lenkservo und Kontrolllampe (weißes Kabel auf Pluspol der Spannungsversorgung des PiKoder/SSC wRX aufstecken).

udpRC Android Fernsteuer-App

Die Fernsteuerung erfolgt über die udpRC App, die ich speziell für diese Buggy-Anwendung erweitert habe (Release 1.10). Neben dem neuen Buggy Picto bietet die Touch-Bedieneroberfläche nun eine Trim- sowie eine reverse- und Light-Funktion an.

 

Die udpRC App ist kostenlos im Google Play Store erhältlich.

Ardupilot Mega Rover mit Smartphone fernsteuern (II)

Überblick

Wie im vorherigen Blog zum Thema „Ardupilot Mega Rover mit dem Smartphone fernsteuern“ bereits angedeutet, steht nun nach einiger weiterer Beschäftigung mit dem Thema eine neue Android(TM) App „udpRC4UGV“ mit Rover-spezifischen Funktionen zur Verfügung. Als wesentliche Erweiterung kann bei dieser App der „Flight Mode“ eingestellt werden und Kanal 7 ein- und ausgeschaltet werden, so dass diverse Sonderfunktion des APM verfügbar werden.

Beschreibung

Die Realisierung folgt der bereits im vorherigen Beitrag beschriebenen Vorgehensweise: ein PiKoder/SSC wRX Empfänger ersetzt den traditionellen Empfängerbaustein. Die Fernsteuerung erfolgt dann über WLAN, indem sich das Smartphone an den vom Empfänger angebotenen Access Punkt (AP) anmeldet.

Die Fernsteuer-App bietet verschiedene Bedieneroberflächen an: von einer einfachen Tastensteuerung über einen virtuellen Joystick bis hin zu einer Accelerometer-basierten Option.

Jede Bedienoberfläche bietet neben den allgemeinen Bedienelementen zur Fernsteuerung noch die Möglichkeit, den Flugmodus zu wählen. Zusätzlich kann Kanal 7 über die „CH7“-Taste ausgelöst werden (damit wird z.B. im LEARNING-Modus die aktuelle Position als Wegpunkt abgespeichert).

Die App ist im Google Play Store kostenfrei erhältlich. Das User Manual kann auf der PiKoder Webseite heruntergeladen werden; es beschreibt nicht nur die Programmbedienung im Detail, sondern auch den Hardwareaufbau.

Modellfernsteuerung mit Webbrowser – verbesserte Bedieneroberfläche

Vor einigen Tagen bin ich auf das ESP8266 MikroE Buggy Projekt gestoßen.

In diesem Projekt wird ein Webserver auf dem ESP8266 implementiert – ähnlich wie in meinem Blog Modellfernsteuerung mit Webbrowser. Damit kann dann ebenfalls eine Betriebssystem-neutrale Fernsteuerung realisiert werden. Besonders interessant an diesem Projekt ist allerdings die einfache HTML5 Oberfläche, mit der ein Joystick realisiert wird.

 

Die Software ist Open Source und so konnte ich das Programm für den Einsatz in einem PiKoder/SSC wRX umstellen. Zusätzlich habe ich den Code so verändert, dass ein normales Fahrzeug mit einem Motor- und einem Richtungskanal gesteuert werden kann. Der angepasste Source Code steht in einem github Repository zur Verfügung.

Die Programmierung des ESP8266 ist ebenfalls im Blog zur Modellfernsteuerung mit Webbrowser beschrieben. Eine zusätzliche Besonderheit des ESP8266 MikroE Buggy Projekts besteht darin, dass das Arduino Filesystem benutzt wird. Die Installation und Benutzung ist hier beschrieben.

 

 

Empfänger mit bis zu 64 Kanälen für digitale Fernsteuerung oder Roboter

Für die Fernsteuerung im Funktionsmodellbau und bei komplexeren Robotern ergibt sich häufiger die Notwendigkeit für mehr als die üblichen 8 oder 12 Fernsteuerkanäle. Eine digitale Fernsteuerung mit einem Notebook, Tablet oder Smartphone als WLAN- oder Bluetooth- Sender, der anstelle des traditionellen PPM-Impulsrahmens kanalbezogene Kommandos verwendet, bietet vielfältige Möglichkeiten zur Realisierung einer eigenen, modellspezifischen Bedieneroberfläche.

Auf der Modellseite kann ein PiKoder/SSC zum Einsatz kommen, der die Kommandos dann in entsprechende Servosignale umsetzt. Für Einsatzfälle mit bis zu acht Kanälen stehen bereits kombinierte Empfänger- und Controller-Bausteine zur Verfügung (PiKoder/SSC wRX für WLAN und PiKoder/SSC RX für Bluetooth). Dieser Beitrag beschreibt, wie Empfänger mit mehr als acht Kanälen realisiert werden.

Die serielle Schnittstelle des PiKoder/SSC verfügt mit dem miniSSC-Interface über ein Kommando, das ein Daisy-Chaining von PiKodern zur Ansteuerung von bis zu 255 Servokanälen erlaubt. Die Grundzüge des Verfahrens sind in der PiKoder/SSC Application Note „Daisy Chaining“ beschrieben.  In dieser Konfiguration übernehmen PiKoder/SSC, die im Modell verteilt und über einen Datenbus miteinander und dem UART des Empfängers verbunden sind, lokale Steueraufgaben.

Der Empfängerbaustein wird sinnvollerweise auf einer gesonderten Busplatine untergebracht, die zusätzlich noch eine Spannungsanpassung auf 3,3 Volt, die vom WLAN-Empfänger und den PiKoder/SSC benötigt wird, Bustreiber, um auch längere Verbindungswege realisieren zu können und eine Logik, die verhindert, dass eventuelle irrtümliche TX-Signale der PiKoder zu einer Zerstörung von Pins führen, aufnimmt. Die folgenden Bilder zeigen den Aufbau der Busplatine auf einer Prototypleiterplatte, den Schaltplan sowie die Pinbelegungen.

Aufbau des Prototypen

Schaltplan

Anschlussbelegungen Prototyp

Die Busplatine kann alternativ mit einem WLAN- oder einem Bluetooth-Empfänger versehen werden. Die nachfolgenden Bilder zeigen beide Konfigurationen.

Busplatine mit WLAN Empfänger …

… oder alternativ mit Bluetooth bestückt

Die PiKoder/SSC werden über vier-adrige Verbindungskabel mit der Busplatine verbunden und mit Spannung versorgt. Die Programmierung der PiKoder/SSC für diese Konfiguration ist in der oben genannten AN beschrieben.

Ergänzung: Die Busplatine ist inzwischen auch als Bausatz erhältlich. Nähere Informationen finden Sie auf der PiKoder-Webseite.

ESP8266-01 Sketch für den PiKoder/SSC wRX

Der PiKoder/SSC wRX verwendet das ESP8266-01 als Access Point (AP) zur Realisierung einer transparenten seriellen Kommunikation. Diese Anforderung lässt sich mit der Konfiguration über AT-Befehle realisieren. Allerdings ist dieser Weg unnötig kompliziert und aufgrund der zahlreichen Eingaben Fehler trächtig. Hinzu kommt, dass sich das Parametrierungsergebnis nur schwer verifizieren lässt und für Änderungen eine Neuprogrammierung des ESP8266 erforderlich ist.

Wesentlich einfacher ist es, den ESP8266-01 mit einem Sketch zu laden, der hinsichtlich der seriellen Kommunikation die identische Funktion realisiert und zusätzlich mit einigen effektiven Kommandos die Einstellung der benötigten AP-Parameter ermöglicht.

Der benötigte Sketch udpRC_ESP8266-01 ist Open Source und steht in einem github-Repository zum Download bereit. Die Firmware wird über das Arduino IDE, wie im Beitrag Modellfernsteuerung mit Webbrowser beschrieben, in den ESP geflasht.

Die Bedienung ist denkbar einfach. Beim ersten Start überprüft das Programm den Speicher des ESP8266, ob bereits ein gültiger Parametersatz vorliegt. Ist dies nicht der Fall, dann werden die Defaultwerte abgelegt. Nach einem erneuten Start ist der Controller dann mit Defaultwerten einsatzbereit.

Der Screenshot zeigt die Bedienung und die verfügbaren Kommandos. Nach dem Reset meldet sich der ESP8266-01 mit einigen unlesbaren Zeichen, die die Betriebsbereitschaft anzeigen.

Mit dem Kommando ‚$?<cr><lf>‘ wird der aktuelle Parametersatz abgefragt und ausgegeben. Die SSID des AP wird mit dem Kommando ‚$s=‘ gefolgt von <cr><lf> geändert und zur Veränderung des Passwords wird ‚$p=‘ eingesetzt. Die neuen Parameter werden zwar direkt abgespeichert aber erst nach einem Neustart verwendet. Nach erfolgreicher Parametrierung können die geänderten Einstellungen jederzeit mit ‚$?<cr><lf>‘ abgefragt werden.

Modellfernsteuerung mit Webbrowser

Ein Fernsteuermodell, dessen Empfänger als Access-Point konfiguriert ist und einen Webserver anbietet, kann mit einem Webbrowser von einem Smartphone aus ferngesteuert werden.

Als Hardwareplattform zur Implementierung dieses Konzepts bietet sich der PiKoder/SSC wRX an (s.u.): der ESP8266-01 realisiert den Access Point und den Webserver, der PiKoder/SSC übernimmt die zeitkritische Ansteuerung der Modellservos.

pikoder_ssc_wrx-catalogue-image-png

PiKoder/SSC wRX

In der Standardkonfiguration des PiKoder/SSC wRX wird der ESP8266-01 als transparente Brücke verwendet. Da zur Modellfernsteuerung mit dem Browser ein Webserver benötigt wird, ist der Wifi-Controller mit neuer Firmware zu laden. Hierzu kommt das IDE des Arduino zum Einsatz, das inzwischen auch generische ESP8266 Boards unterstützt.

Der benötigte Sketch ist Open Source und wird über das github Repository makerprojects/httpRC verteilt. Laden Sie den Sourcecode herunter und öffnen den Sketch mit dem Arduino IDE. Am Anfang des Programms finden Sie Hinweise zu den benötigten Boardeinstellungen.

Der ESP8266-01 kann zum Flashen nur über einen USB-Serial-Umsetzer mit dem PC verbunden werden, da er nicht über eine USB-Schnittstelle verfügt. Hierbei ist zusätzlich zu beachten, dass das Modul eine Spannungsversorgung und Signalpegel von 3,3 Volt benötigt; der direkte Anschluss von 5 Volt zerstört die Leiterplatte! Da diese Kombination bei USB-Serial-Umsetzern nicht ganz alltäglich ist, wird üblicherweise ein Umsetzer mit 3,3 Volt Signalpegel und einem 5 Volt Spannungsausgang gewählt wie beispielsweise der bei Ebay erhältliche PL2303TA und eine zusätzliche Spannungsanpassung mit einem 3,3 Volt Regler vorgesehen.

usb-connector-ebay

USB-Serial Umsetzer

Da man zum Flashen außerdem noch einen Reset-Taster und einen Programmiertaster benötigt, baut man sich zweckmäßigerweise einen entsprechenden Adapter auf einer Lochrasterplatine auf.

programmieradapter-esp8266

Programmieradapter für den ESP8266-01

Der Schaltplan für den eigentlichen Programmierteil ist in der folgenden Schaltung dargestellt.

esp8266_flash_prog_board_sch

Die Erzeugung der ebenfalls benötigten 3,3 Volt kann genauso wie beim PiKoder/SSC wRX mit einem Standard-Lowdrop-Spannungsregler LF 33 CV erfolgen (s. Schaltplanauszug; die 5 Volt vom USB-Serial-Adapter werden rechts angeschlossen, der Ausgang ist auf der linken Seite.

spannungsanpassung

Leider startet die Programmierung des ESP8266 nicht automatisch wie man dies vielleicht vom Arduino gewöhnt ist, sondern ist manuell einzuleiten. Hierzu werden der RST und der PROG Taster gleichzeitig gedrückt und der RST-Taster bei noch gedrücktem PROG-Taster losgelassen. Wenn danach dann auch der PROG-Taster losgelassen wird, befindet sich das Modul im Programmiermodus. Nun kann das Upload gestartet werden und nach der erfolgreichen Programmübersetzung wird die neue Firmware aufgespielt. Bevor das Modul eingesetzt werden kann, ist ein weiterer Reset erforderlich.