IOT MY CAR

10 März 2017
Andreas Heizmann

Als letztes Jahr das ferngesteuerte Auto von meinem Sohn den Dienst quittierte, hatte ich mal wieder die Gelegenheit ein wenig zu basteln.

Die erste grobe Analyse ergab, dass irgendwas mit der Platine nicht mehr stimmte. Diese gegen eine neue zu ersetzen war jedoch keine Option. Selbst wenn ich nach tagelanger Suche eine passende gefunden hätte, wäre das viel zu einfach bzw. langweilig gewesen.

Als Web-Entwickler mit elektrotechnischen Background erschien es mir passend ein IOT Entwickler-Board zu verwenden.

Auswahl:

Der Markt für IOT Prototypen-Bastelkits ist nicht gerade klein, die Anwendungsfälle sind vielfältig und jede Nische will bedient sein.

Meine Auswahlkriterien waren relativ klar: Die neue Platine muss genügend Ein- und Ausgänge haben, darf nicht größer sein als die alte, sollte ein WLAN Chip integriert haben und preislich im bastel-vertretbaren Rahmen bleiben. Entschieden habe ich mich letztlich für ein Particle Photon. Auf dieser Platine wird ein STM32 ARM Cortex M3 Mikrocontroller mit einem Broadcom WLAN-Chip kombiniert. Kostenpunkt: 29$ .Mit dem Photon alleine war mein Elektronik- Shopping jedoch noch nicht erledigt. Da die Ausgänge des Chips nicht genügend Strom für den Motor liefern können, musste ich zusätzlich einen passenden Motortreiber finden. Und weil das Akkupack des Autos 12V liefert, der Chip jedoch nur mit maximal 5.5V arbeitet, habe ich noch einen kleinen Spannungswandler benötigt. Zuletzt habe ich noch den alten 5 poligen Lenkservo gegen einen zeitgemäßen 3-pol Standard Servo ersetzt.

Aufbau:

Im Lieferumfang des Photon Kit befindet sich neben einem USB Kabel und Kleinkram ein Breadboard (Steckplatine für Versuchsschaltungen).
Auf diesem habe ich alle Komponenten folgendermaßen kombiniert:




Steuerung:

Der Mikrocontroller lässt sich also via Wi-Fi ansprechen. Sobald er die Zugangsdaten zum eigenen Netzwerk bekommen hat, verbindet er sich und ist ab dann über die Particle Cloud erreichbar. Komfortabel funktioniert dies z.B. mit dem Smartphone und der App Tinker von Particle. Mit dieser lassen sich die Zustände der Ein- und Ausgänge überwachen und setzen. Für das gleichzeitige Steuern von zwei Motoren (DC Antrieb und Lenkservo) ist die App jedoch nicht gedacht. Hierfür habe ich Blynk verwendet. Diese App kann sich mit allen gängigen IOT Boards verbinden. Dazu muss man jedoch vorher die passende Code Library von Blynk referenzieren. Danach kann man sich beliebige Steuer und Anzeigeelemente aussuchen und sehr einfach konfigurieren.

Wichtigstes Element hier: Der Joystick, mit welchem man sowohl Antrieb (Y-Achse) wie Lenkung (X-Achse) gleichzeitig steuern kann.


Programm:

Befehle kann das Board also schon mal entgegennehmen, jetzt muss es noch verstehen wie es diese umzusetzen hat. Dies geschieht via C++. Dabei muss man nicht auf unterster Ebene programmieren, sondern verwendet das Wiring Framework welches ebenfalls bei Arduino und Co. zum Einsatz kommt. So ein Programm (Sketch) besteht dann im Wesentlichen aus einer Setup() Funktion zur Konfiguration und einer Loop() Funktion welche sich ständig wiederholt.

Der Sketch für die zwei Motoren muss die X & Y Position des Joysticks in Spannung (DC Motor) und Winkel bzw. Frequenz (Servo) umwandeln:

BLYNK_WRITE(V2) {

 // get params:
 int x = param[0].asInt();
 int y = param[1].asInt();

 // drive system:
 // pullUp depends on pwm frequency and motor voltage (vm)

 int pullUpValue = 150;

 if (y == yCenter) {
    pullUpValue = 0;
 }

 int maxValue = 190;
 if (endlessPower) {
    maxValue = 255;
 }

 speedForward = map(y, 128, 255, pullUpValue, maxValue);
 if (y < 129) {
    speedForward = 0;
 }

 speedReverse = map(y, 127, 0, pullUpValue, maxValue);

 if (y > 127) {
    speedReverse = 0;
 }

 // servo position:
 // by default modelcraft rc car servo provide a usable range of 120°
 // but for this car 100° (50° each direction) is enough
 //

 servoPosition = map(x, 0, 255, 40, 140);
}


Ergebnis:

Das Auto fährt wieder und lässt sich sogar unerwartet direkt steuern, ohne größere Verzögerungen.

Mit wenigen elektrotechnischen Grundkenntnissen kann man mit den aktuellen IOT – Toolkits schnell Ideen umsetzen und dabei sogar noch Spaß haben. Die nächste Ausbaustufe wäre die alte Fernbedienung wieder gangbar zu machen. Vielleicht gibt es dazu Details in meinem nächsten Blogbeitrag.