Wir haben nun das Zeitalter der KI erreicht, weshalb hier weniger Lösungen und mehr das Technik Tagebuch Posts kommen.
Lösungen verlinke ich Kategorisch extra auf den weiteren Seiten des Blogs
Wer lange sich schon mit C# beschäftig, hat sicherlich schon mal was von AntMe gelesen oder gehört. Diese Idee hatte ich aufgegriffen und mir zumindest eine Ameisen Simulation auf dem Arduino UNO r3 mit einem TFT auszuführen.
Zugegeben der Bildschirm oder die Wahl, dass eine Ameise nur ein Scwarzer Pixel ist, ist schon klein. Und wenn man Seitlich auf dem Bildschirm schaut, erkennt man die Ameisen bewegung garnicht. Für die Simulation, dass sich zwei Parteien bekämpfen, ist deutlich besser zu erkennen.
Mit dem wissen, dass solche kleinen Simulation wirklich funktionieren, kommt man schon auf ganz neue Idee. Zunächst sind diese kleinen Anwendung eine reine Unterhaltung oder ein Bildschirmschoner, dass den ganzen Tag ablaufen kann, sowie die Bild Diashow.
Sinvoll wäre jetzt Montagevorichtung zu modulieren, damit ich den Arduino mit dem TFT Shield am Monitor anbringen kann.
Ich wusste das 3D Modelle generieren bereits geht, aber mir war nicht bewust, dass auch Platinen Layout mit Claude sich generierten lassen kann. Auch hier für den Initialen Start meiner Zielanwendung Watchmen, benötige ich noch ein Arduino UNO Q Shield, auf dem ich die Sensoren und Aktoren steuern kann. Dabei habe ich zwei Versionen anlegen lassen. Eins mit Fenster, damit die LED Matrix gesichtet werden kann. Später werde ich das sicherlich nicht brauchen und daher kann ich mit der zweiten Version eigentlich fortsetzen.
Ok, heute schreibe ich wieder über eine Sache, die ich ebenfall schon immer machen wollte und nun über Claude gelöst hatte.
Diesmal gehts darum, dass ich für den Arduino ein Schield für TFT Dislpay habe. In der Vergangenheit hatte ich bereits Sensor Daten angezeigt von mit einem MPU6050 Sensor.
Nun habe ich das mit Sensor und Bilder Diaschow kombiniert. Wenn keine Großen bewegungen statt findet, dann werden alle 30 Sekunden ein Bild von der SD Karte geladen.
Anderfalls beim überschreiten des Schwellwertes, wird die Bewegungsaktivität auf dem ganzen Display angezeigt, was ich beriets im Titelbild zeige.
In der neuen Version werden nur die Sensor Daten angezeigt, wenn keine BMP Bilder auf der SD Karte sind, oder die SD Karte nicht eingelegt ist. Und noch eine Ergänzung ist, dass über die Serielle Verbindung auch ein Bild hinzugefügt werden kann. Aber da brauche ich noch eine passende Anwendung.
Eine Sache ist noch offen: Bei meinem vorigen Blogpost konnte man in den Videos sehen, dass die LEDs beim Fade-OUT nie ganz aus waren.
Benötigt werden:
Arduino
PWM Modul PCA9685
LEDs und Widerstände
Ziel
Die LEDs sollen im Fade-OUT komplett ausgehen. Asynchrone Animationsabläufe.
Ursache
Es lag daran, dass der Wert nie den Endwert von 4095 erreicht hat. Auch, wenn das High Level nur sehr kurz anliegt, reicht die Spannungsversorgung aus, um einen LED noch glimmen zu lassen.
Daher liegt die Lösung nahe, dass am Ende eines Schleifendurchgang nochmal ein Signal-Zustand festgelegt wird, mit dem genannten Endwert. Jedoch soll das für die asynchronen Vorgänge auch funktionieren. Hier nochmal das Beispiel, in denen die LEDs nicht ganz aus sind.
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
void setup() {
pwm.begin();
pwm.setPWMFreq(1600);
Wire.setClock(400000);
}
void loop() {
int stepAdd = 10;
int leds = 4;
for (uint16_t i=0; i<4096; i += stepAdd) {
for (uint8_t pwmnum=0; pwmnum < leds; pwmnum++) {
pwm.setPWM(pwmnum, 0, 4096 - i);
}
}
delay(1000);
for (uint16_t i=0; i<4096; i += stepAdd) {
for (uint8_t pwmnum=0; pwmnum < leds; pwmnum++) {
pwm.setPWM(pwmnum, 0, i);
}
}
delay(2000);
}
Einfache Lösung
Mit der bekannten Schrittweite kann nach dem Schleifendurchlauf bedingt die PWM Ports auf den Max Wert eingestellt werden.
Das gleiche kann auch für den asynchronen Vorgang verwendet werden. Jedoch hat die bisherige Lösung einen Nachteil: Dass sie schnell unübersichtlich wird.
Die Beispiele habe ich oft nur mit zwei LEDs abgebildet, aber für 16 LEDs wird's schlecht leserlich.
Deshalb gehe ich hier mit der Beispiellösung einen Schritt weiter und lege ein Objekt an, in dem ich für die einzelne LED den Zustand hinterlegen kann.
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
unsigned long mCurrentMillis = 0;
void setup() {
pwm.begin();
pwm.setPWMFreq(1600);
Wire.setClock(400000);
// schaltet alle aus
for (uint8_t pwmnum=0; pwmnum < 16; pwmnum++) {
pwm.setPWM(pwmnum, 0, 4095);
}
}
// status objekt für eine LED
typedef struct {
unsigned long LastMillis; // letzte Zeitstand
unsigned long DistanceFromNowToLast;// Intervall länge
uint16_t Value; // aktuell verwendeter Wert
bool IsFlashing; // soll nur an und aus
bool IsGoingOn; // Schritt soll heller
// oder an sein
} ledStateType;
// Konfiguration einzelner LEDs
ledStateType mLEDs[] = {
{ 0, 5, 0, false, true }, // fade animation
{ 0, 1000, 0, true, true } // flashing
};
void PrepareLED(int ledIndex) {
int stepAdd = 10;
unsigned long rest = mCurrentMillis - mLEDs[ledIndex].LastMillis;
if(rest < mLEDs[ledIndex].DistanceFromNowToLast) {
return;
}
if(mLEDs[ledIndex].IsFlashing) {
if(mLEDs[ledIndex].IsGoingOn) {
mLEDs[ledIndex].Value = 4095;
mLEDs[ledIndex].IsGoingOn = false;
}
else {
mLEDs[ledIndex].Value = 0;
mLEDs[ledIndex].IsGoingOn = true;
}
}
else {
if(mLEDs[ledIndex].IsGoingOn) {
if(mLEDs[ledIndex].Value > stepAdd) {
mLEDs[ledIndex].Value -= stepAdd;
}
else {
mLEDs[ledIndex].Value = 0;
mLEDs[ledIndex].IsGoingOn = false;
}
}
else {
if(mLEDs[ledIndex].Value < 4096) {
mLEDs[ledIndex].Value += stepAdd;
}
if(mLEDs[ledIndex].Value > 4095 - stepAdd) {
mLEDs[ledIndex].Value = 4095;
mLEDs[ledIndex].IsGoingOn = true;
}
}
}
mLEDs[ledIndex].LastMillis = mCurrentMillis;
}
void loop() {
mCurrentMillis = millis();
for(int i = 0; i < 2; i++) {
PrepareLED(i);
pwm.setPWM(i, 0, mLEDs[i].Value);
}
}
Natürlich ist das nur eine Möglichkeit, wie der Programmablauf aussehen könnte. Der geübte C++ Programmierer würde das sicherlich anders lösen können.
Im ersten Teil habe ich erläutert, welche Schritte nötig sind, um den Arduino als Messgerät einzusetzen. Nun gehe ich einen Schritt weiter. Statt einem, können jetzt vier Messungen erfasst und auf der WPF Anwendung angezeigt werden.
Die Anwendung ist eigentlich zum Probieren von verschiedenen Mechanismen gedacht. Praktisch ein Training, um für meinen Beruf immer fit zu bleiben.
Benötigte Materialien:
Arduino
mindestens 2 x 10k Ohm Widerstände für Spannungsteiler
Verschiedene Spannungsquellen für Messungen
Was geht?
Der Arduino kann mehr als nur eine Spannungsquelle messen. Mit der WPF Anwendung können vier Spannungsquellen gleichzeitig gemessen werden. Natürlich geht mehr, doch die weiteren sollen für die Schnittstelle I²C offen bleiben.
WPF Anwendung
Bei meinem letzten Blog Eintrag habe ich am Ende bereits geschrieben, dass ich auch schon die zukünftige WPF Anwendung im GitHub Repository mit hochgeladen habe. Zu dieser Zeit war jedoch die Messung nur an einem Messpunkt möglich.
Mit der Möglichkeit mehrere Spannungen zu messen, ändert sich der Programmcode für den Arduino. Ich habe das soweit ausgebaut, dass nun vier Messungen gleichzeitig möglich sind.
Arduino Code Änderung
Damit die vier Messungen auch übertragen werden, muss die Übertragung erweitert werden. Wie beim ersten, müssen die drei weiteren INPUT Eingangswerte ebenfalls aufbereitet und dann in das zu versendete Array geschrieben werden.
Für den Test werden verschiedene Spannungsquellen eingesetzt: Eine Schaltung mit einem Lichtsensor, eine Solarplatte, Batterie mit Step-Down und eine weitere Schaltung mit einer Z-Diode.
Diese vier werden wiederum selbst am Spannungsteiler angeschlossen.
Verbindung herstellen
Die Spannungsquellen können vor dem Einschalten/Anschließen des Arduinos angeschlossen werden. Ist der Arduino verbunden, kann die Verbindung zur Anwendung gestartet werden. Hier entsprechend den COM Port auswählen und den Button Connect klicken. Im Diagrammbar sollten nun vier Linien entsprechend der Spannung angezeigt werden.
Problem mit der Diagrammlinie
Aktuell besteht mit dem Diagramm das Problem, dass durch nicht genutzte Events die Diagrammlinie nicht aktualisiert wird, wenn sich z.B. der Mauszeiger über dem Steuerelement bewegt.
Loggen starten
Nicht immer schafft man es auf die Anzeige zu schauen und eventuell verpasst man die zu beobachtende Spannung. Deshalb habe ich den Logger mit eingebaut, um hier entgegen zu wirken.
Im Test konnten zehn minütige Aufzeichnungen vorgenommen werden, trotz des CSV Datenformates. Auch, wenn die Datei nur wenige Kilobyte groß ist, ist die Art der Speicherung in performant.
Um die Aufzeichnung anzusehen, muss auf den Tab „Log Data“ gewechselt werden. Dort wird dann der Log-Name ausgewählt, der zuvor zum Speichern verwendet wurde. Die Einträge sind hier nicht nur durchscrollbar, sondern man kann auch auf die nächst Spannungsveränderung springen/wechseln.
Unfertig!
Sofern ich wieder Zeit habe, entwickle ich das Programm weiter. Das richtet sich auch etwas nach meinem eigenen Bedarf.
Ihr könnt mir auch in die Kommentare schreiben, welche Funktion man einbringen könnte.
Als nächstes kommt eine Erweiterung der Divisor Einstellung, welche aktuell noch für alle vier verwendet wird. Die Anzeige im Diagramm mit über 10V ist noch ausbaufähig, da eine höhere Spannung angezeigt werden könnte.
Neben dem Programm wäre eine vollständige Schutzschaltung schön. Das Thema bin ich bereits angegangen und ich musste feststellen, dass der Bereich größere Kreise zieht als ich gedacht habe.
Nun könnte ich alle meine Vorhaben hier unter hinschreiben, aber dann wäre das nur für heute aktuell. Deshalb packe ich meine offenen Punkte in den Issues.
In der Solution befindet sich das Projekt SimpleVoltageMeasurement, das die Grundlage der Spannungsmessung am Arduino und C# Konsolenanwendung abbildet. Das Projekt VoltageMesurementLogger ist die Anwendung, die im Blogeintrag beschrieben wurde.
Eigentlich hatte ich einen anderen Text bereits fertig,
aber der passte nicht mehr zu dem folgenden Inhalt. Diesmal geht’s darum einen Arduino als Messgerät einzusetzen und den PC als
Anzeigegerät. Natürlich mit dem Ziel eine größere Anwendung zu schreiben,
mit welcher man die Messungen aufzeichnen kann.
Benötigt
Arduino
Breadboard
2x 10kOhm Widerstände
3x Jumper Kabel
Eine Anwendung, mit der man die Messungen loggen kann
Anforderung
Mit einem Arduino soll eine Spannung an einem Step-Down Modul gemessen
werden, welches ich in meinem Crawler verwende. Da die Spannung auch höher als
5V sein kann, muss ein Spannungsteiler eingesetzt werden, der die zu
erwartenden Spannung abdeckt. Um aktiv das Spannungsgeschehen zu beobachten,
soll das Messergebnis auf dem PC wieder gegeben werden.
Arduino als Messgerät
Für ein einfaches Messgerät werden grundsätzlich zwei Widerstände benötigt.
Zwar kann man auch direkt messen, aber das schränkt den Messbereich stark ein. In meinem Fall könnte die Spannung bei 7,4V hoch gehen und vielleicht
auch drüber. Zudem soll mit den Widerständen auch der Strom begrenzt werden,
dass zudem den Arduino vom Durchbrennen schützen soll.
Bevor eine Messung stattfindet, wird ein kleines Arduino Programm benötigt,
mit dem wir auf dem Serial Monitor einen Wert ausgeben können.
Der simple Aufbau ist zunächst ein Vorläufer zu meiner eigentlichen kleinen
Anwendung. Die Auswahl des seriellen Port hätte man auch weg lassen können,
aber auf den Komfort wollte ich dann doch nicht verzichten.
class Program
{
private static int _rawValue;
private static int _divisorValue = 511;
private static float _voltage;
static void Main(string[] args)
{
Console.WriteLine("Connect Serial with");
string[] ports = SerialPort.GetPortNames();
if(!ports.Any()) {
Console.WriteLine("No Arduino connected!");
return;
}
for (int index = 0; index < ports.Length; index++) {
Console.WriteLine($"Index:{index}, Port: {ports[index]}");
}
string selectindex = Console.ReadLine();
if (!int.TryParse(selectindex, out int indexResult)) {
Console.WriteLine("You can only typ the index number!");
return;
}
if(indexResult >= ports.Length) {
Console.WriteLine("You can only typ the index number!");
return;
}
var sp = new SerialPort(ports[indexResult], 115200);
sp.DataReceived += Sp_DataReceived;
sp.Open();
while (true) {
Console.Clear();
Console.WriteLine($"{_rawValue} / {_divisorValue} * 5.0 = {_voltage:N2} V");
Thread.Sleep(1000);
}
}
private static void Sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
var sp = (SerialPort)sender;
byte[] buffer = new byte[3];
if (sp.Read(buffer, 0, 3) != 0) {
int result = (buffer[0] << 8) | buffer[1];
var b = new BitArray(new int[] { result });
bool[] bits = new bool[b.Count];
b.CopyTo(bits, 0);
if (bits.Sum(s => s ? 1 : 0) != buffer[2])
{
return;
}
_rawValue = result;
_voltage = result / (float)_divisorValue * 5.0f;
}
}
}
Divisor festlegen
Man bekommt zunächst einen Rohwert, der zunächst nichts aussagt.
Würde man direkt die 5V Pin vom Arduino abgreifen und am Eingangspin A0 anschließen, bekäme man einen Wert von 1024. Dieser Wert muss durch
1024 geteilt und dann mit 5,0 Volt multipliziert werden.
Spannung = Rohmesswert / Divisor * 5,0
5,0V = 1024 / 1024 * 5,0V
Durch den Spannungsteiler verschiebt sich der eigentliche Rohwert, der die 5
Volt darstellt. Statt durch 1024 zu teilen, fällt dieser Wert in meinem Beispiel auf 511.
2,5V = 511 / 1024 * 5,0V
Das bedeutet, der Divisor muss in meinem Fall auf den aktuellen Rohwert angepasst
werden, denn die 5V sind jetzt bei einem Rohwert von 511.
5,0V = 511 / 511 * 5,0V
Zum testen kann nun vom 3,3V Pin die Spannung zum Messen verwendet werden.
Hier sollte nun ein Rohwert bei ca. 345 ankommen. Folgendes Ergebnis ergab sich bei
meinem Test:
3,39V = 346 / 511 * 5,0V
Kleiner Anfang
Natürlich sind die Ergebnisse nicht sehr genau, aber für eine einfache
Lösung reicht die grobe Messung aus und ist besser als gar kein
Messgerät.
Der Spannungsteiler, mit den zwei 10k Ohm Widerständen, kann eine Spannung
von maximal 10V angelegt werden.
Warnung
Natürlich sollte man immer berücksichtigen, dass die Leistungsgrenzen nicht
überschritten werden. Die zu verwendenden Widerständen sollten möglich hochohmig sein, so dass am Arduino Pin kein hoher Strom eingeht.
Zielmessung
Kommen wir zum Testaufbau, mit dem wir eine Messung an einem anderem
Stromkreis vornehmen können. Wichtig ist, dass der Ground von der anderen
Spannungsquelle mit am GND des Arduinos angeschlossen wird.
Was kommt als nächstes?
Eine Sache habe ich hier zunächst ausgelassen, und zwar das Aufzeichnen der
Messungen. Eigentlich kann ein Mehrwert mit der Funktion gewonnen werden.
Andernfalls hätte man auch ein kleines Display für den Arduino einsetzen
können und auf das Spannungsergebnis ausgeben würde.
In der Solution befinden sich die Consolen Anwendung SimpleVoltageMeasurement und bereits mein neues
Projekt VoltageMeasurementLogger, dass das Aufzeichnen der Daten ermöglicht.
Wieder mal was kleines feines und auch günstiges gefunden im Bereich
Sensorik. Das Radar Modul RCWL-0516 kann Bewegungen von Personen wahrnehmen.
Genau genommen von jedem Lebewesen und nicht durch bewegte Gegenständen wie
Staubsaugerroboter.
Benötigt
Arduino
RCWL-0516 (Preislich 6 Stück ab 4€)
Eine Person die sich bewegt
Anforderung
Herausfinden in welchem Winkel und Entfernungen der Sensor funktioniert.
Technische Daten
Im Datenblatt steht mehr, da mir die anderen Details für das Grundlegende
zunächst keinen Nutzen bringen.
Betriebsspannung: 4V bis 28V und mindestens 3mA
Erkennungsreichweite: ca. 5m bis 9m
Frequenz: 3.2GHz
Ausgang (OUT): geschaltet ca. 2 Sekunden lang
PINs:
3V3 => 3,3V Versorgungsspannung (Output)
GND => Ground
OUT => Signal Ausgang Hi-Pegel wenn eine Bewegung wahrgenommen wurde
VIN => Eingang Spannung von 4V bis 28V
CDS => Externer Lichtabhängiger Widerstand (Ausschalten der Radar
Funktion)
Optional:
C- Verlängert den Geschalteten Zustand am Ausgang (OUT)Hierfür wird
ein Kondensator benötigt.
R-GN Erkennungsreichweite. Mit einem 1M Ohm Widerstand kann die Reichweite
von 7 Meter auf 5 Meter reduziert werden.
CDS Platz für die Installation eines Lichtabhängigen Lichtwiderstandes, um
bei Licht die Radar Wahrnehmung auszuschalten.
R-CDS Einstellung für die Empfindlichkeit mit dem Lichtabhängigen
Widerstandes. Dient als Spannungsteiler und je kleiner der Widerstand
gewählt ist, um so heller muß die Umgebung sein für das Ausschalten der
Radar Funktion
Test Programm
Der Code, um den Sensor auszulesen ist sehr simpel. Das Signal, welches über
den OUT Ausgegeben wird, ist entweder 0V oder 3,3V. Damit reicht einen PIN
für digitales Signal Lesen aus. Analog Signal einlesen bringt uns da keinen
Mehrwert, denn hier kann nur ein LOW- oder HIGH-Pegel ausgegeben werden.
Für den Beispielaufbau werden nur drei Leitungen zum Verbinden des Sensor
verwendet. Der Anschluß auf dem 3.3V steht, ist ein OUTPUT und kann
verwendet werden, andere Controller zu versorgen. Der CDS Anschluß kann
wiederum für ein Lichtsensor verwendet werden, um das Feststellen von
Bewegungen abzustellen.
Entfernung und Winkel
Die Reichweite ist gut für das Feststellen von Bewegungen innerhalb eines
Zimmers. Der Sensor kann Bewegungen rund um dem Modul war nehmen, aber Ideal
ist wiederum die Seite mit dem Aufgelöteten Chip. Die Wahrnehmung auf
Bewegungen wirkt unterschiedlich, aber gut brauchbar.
Typische Gegenstände wie Kunststoff oder Holz schränkt die Funktion nicht
ein. Metall hingegen wirkt Abschirmend auf das Radar.
Timing
Wenn ich mich bei der Übersetzung vertan habe, dann kann das Timing von 2
Sekunden nur verlängert werden, aber nicht verkürzt.
Anwendungsbeispiele
In den meisten Fällen würde man dieses Radar Modul zum Einschalten von
Lampen verwenden. Natürlich könnte man da auch Alarmanlagen dafür einsetzen,
setzt jedoch einen Raum voraus, in dem keiner sein sollte.
Der Empfänger, den ich für meinen FPV RC Crawler verwende, hat einen
Smartport an dem z.B. Sensoren angeschlossen werden können. Die Anzahl der
verfügbaren Sensoren von Frsky ist übersichtlich, aber speziell für meinen
Bedarf war keiner dabei. Wie gut, dass hier bereits eine Lösung mit dem
Arduino vorhanden ist und ich dazu auf den Arduino Webseite den Eintrag "S.Port sensor library for FrSky" gefunden habe.
Verwendet
Arduino Mini
Temperatur Sensor
Diode
FrSky Empfänger mit Smartport
Fernsteuerung mit OpenTX
Ziel
Die erfasste Temperatur des Sensors soll auf der Fernsteuerung umgerechnet
und auf dem Display angezeigt werden.
Funktioniert das wirklich?
Wie bei jeder neuen Sache, prüfe ich mit wenig Aufwand, ob das Zielvorhaben
erreichbar ist. Praktisch ein PoC. Im Grunde formuliere ich meine
Blogeinträge anfangs als "Proof of Concept", bevor daraus ein Beispiel wird
und das gilt auch wieder für diesen Eintrag. Nur diesmal beschreibe ich das
Testen mit.
In den Sourcen zur Bibliothek für den SmartPort, sind, wie auch bei den
anderen Beispiele Codes vorhanden. Für mich ist der ein feststehender Wert
zu wenig und deshalb ändere ich den zu sendenden Wert in der Loop Methode.
Ist der Code auf dem Arduino geschrieben, muss eine Verkabelung zum
Smartport hergestellt werden. Hierfür soll die Diode verwendet werden, aber
vielleicht sollte ich die Beschreibung nochmal durchgehen, wofür die Diode
gut ist. (Später habe ich die Diode doch nicht verwendet)
Sensor einbinden
Die Fernsteuerung mit dem OpenTX Betriebssystem kann nun eingeschaltet
werden. Im Menü TELEMETRY (Abschnitt 11 auf der Xlite pro) für Sensoren,
kann nun die Suche gestartet werden. Wenn der Arduino mit dem Code als
Sensor funktioniert, sollte schon nach wenigen Sekunden der Sensor in OpenTX
gefunden werden.
Display Wiedergabe
Für den Bildschirm können mehrere Seiten eingerichtet werden, auf denen die
Sensor Ergebnisse ausgegeben werden. Dazu muss über das Menü DISPLAY
(Abschnitt 12 auf der Xlite pro) der Screen auf "Nums" eingestellt werden
und dann muss darunter ein Feld mit "---" auf den neuen Sensor eingestellt
werden.
Ist die Fernsteuerung auf den Hauptbildschirm geschaltet, muss man in meinem
Fall den Stick für eine Sekunde nach unten ziehen, damit das eingerichtete
DISPLAY gezeigt wird.
Echten Sensor anschließen
Das war schon alles, um sich an den SmartPort ran zuhängen. Natürlich macht
der Anschluss nur Sinn mit einem echten Sensor.
Für dieses Beispiel verwende ich einen Temperatur Sensor, der über die I²C
Schnittstelle angesprochen wird. An der Stelle hätte ich auch einen
interessanteren Sensor nehmen können, dennoch soll das Beispiel schlicht
bleiben. Und der Code für den Temperatur Sensor lässt sich in wenigen Zeilen
eingeben.
Nun haben wir einen Rohwert, der einem so nichts sagt. Eigentlich könnte der
Wert am Arduino umgerechnet werden, aber ich hatte aus den Source Code
gelesen, dass nur Ganzzahlen übermittelt werden.
LUA Script
Die Antwort für das Umrechnen der Ganzzahlen in einen Wert mit
Nachkommastellen ist die Unterstützung von Lua Script auf OpenTX. Statt den
Rohwert auf dem Display auszugeben, kann dieser durch einen Script
umgerechnet werden und dann auf dem Display als lesbaren Wert ausgegeben
werden.
Aber kommen wir zunächst zu dem Teil, was eigentlich ein LUA Script haben
muss. Im Wesentlichen hilft hier die Dokumentation
Telemetry Scripts.
Vorraussetzung
Das Lua Script muss auf der SD Karte in das Unterverzeichnis
"SCRIPTS\TELEMETRY\".
Das Script muss die Namenserweiterung ".lua" haben.
Der Name des Lua Script darf nicht länger als sechs Zeichen lang sein,
ansonsten wird das Script in der DISPLAY Einrichtung nicht angezeigt. Die
Namenserweiterung ".lua" wird an der Stelle nicht mit gezählt.
Im Grunde sollte das Script mindestens die 'local function run' enthalten.
Die "Init" Funktion ist optional und eigentlich sollte das auch ohne eine
Background-Funktion funktionieren. Wichtig ist, dass die Methode am Ende
einen Return-Wert ausgibt.
local function run_func(event)
lcd.clear()
local receivedValue = getValue('TEMP')
local toDecValue = receivedValue * 0.0625;
lcd.drawText(10, 10, "Temperature", MIDSIZE)
lcd.drawText(10, 25, string.format("%.2f", toDecValue), MIDSIZE)
return 0
end
return { run=run_func }
Einbinden des Scripts
Nun kann das Script auf die SD Karte und in die Fernsteuerung mit OpenTX
gesteckt werden. Nach dem Einschalten kann über das Menü DISPLAY (auf der
Xlite Pro befindet sich dieses in Abschnitt 12), auf Screen 1 von Nums
gewechselt werden. Rechts von der Script Einstellung, kann man nun das
Script myVal.lua auswählen.
Anschließen geht’s zurück auf den Hauptscreen. Mit dem 1 bis 2 Sek nach
unten gezogenen Stick kann man vom Hauptdisplay auf den gescripteten
Bildschirm (Display) wechseln. Fertig!
Schlusswort
Irgendwie habe ich im Internet keine Beschreibung gefunden, die in wenigen
Schritten aufzeigt, was zu tun ist, um einen Wert auf dem Display
anzuzeigen. Am Ende ist der Aufbau sehr übersichtlich, aber die kleinen
Details, die man wissen muss, halten einen auf.
Natürlich werde ich an den Sensor mehr als nur ein Temperatur Sensor
anschließen, schließlich kann man die Lage noch ermitteln und Abstände
messen.
Was ich vermisse, ist ein Designer für die Bildschirm Ausgabe. Entweder habe
ich den nicht gefunden oder für diesen Zweck gibt’s einfach keinen. Dabei
wäre ein Designer nicht schwierig, aber es wäre zeitaufwendig diesen zu
entwickeln (womit ich mir praktisch die Frage selbst beantworte).
In den letzten drei Monaten habe ich an meinem RC Crawler immer
wieder weitergebastelt, so, wie gerade Zeit war. Das ist schon
eine lange Bauzeit. Andere hätten vielleicht nur zwei bis drei
Wochen benötigt.
Für den Bau kamen viele Anforderungen, zu denen ich mich erstmal
einlesen musste. Was für ein Chassis, welche Karosserie, welche
Farben, welche Farbkombination, Aufkleber, Zubehör, wie stark muss
der Motor sein, Fahrtenregler für Crawler, Steuerelektronik für
Licht und noch mehr.
Da der Bau doch viele verschiedene Bereiche anspricht, kam meine
Freundin auf die Idee, dass ganze zusammen zu tragen und daraus
ein Blogeintrag anzufertigen. Kommentar aus dem Off: <3 Beste Frau der Welt *zwinker
Hier breche ich nun meine eigenen Vorgaben für die bisherigen Blog Einträgen, die bisher nicht länger als zwei bis drei Seiten lang waren.
Dennoch versuche ich mich mit den einzelnen Themen kurz zu halten
und schreibe nur über die wesentlichen Informationen, die mich zu
meinem Ziel gebracht haben.
Ein Chassi das mir gefällt
Eine Zeitlang wollte ich den 1:16 Crawler aufrüsten, aber am Ende
wäre dieser für jede Herausforderung zu klein. Zumindest, wenn man
in einem RC Modellhaus unterwegs ist, so ist das Gelände oft für
1:10 gebaut. Doch auch normal gewachsener Rasen im Garten, hält
einen 1:16 Crawler schnell auf. Sicherlich kann man auch dort den
richtigen Motor und Getriebe erweitern, damit auch der kleine
Crawler die schwierigen Wege schafft.
Seit letzten Jahr fiel mein Blick auf ein Chassis mit CNC
gefrästen Teilen und einem Carbon Rahmen. Leider gab's dazu keinen
Namen zum Hersteller, was mich zunächst skeptisch sein ließ. Aber auch eine nennenswerte Bezeichnung
fehlte. Danach suchen ging trotzdem, wenn die
richtigen technischen Detailnamen wie
RC, Crawler, CNC und Carbon verwendete. Auf YouTube konnte
ich mir verschiedene Reviews ansehen, um mich von der Qualität und
Aufbau zu überzeugen.
Kräftiger Servo
In meinen Bestand hatte ich bereits zwei passende Servos. Mit 142
Ncm Drehmoment, doppelt Kugelgelagert, Metall-Getriebe und mit digitale Ansteuerung kann der Crawler präzise gelenkt werden. Die
Geschwindigkeit mit 60° in 0,17 Sekunden reichen ebenfalls aus.
Natürlich gibt's bessere und, falls der Bedarf besteht, kann ich
diese Komponente noch austauschen. Die Praxis wird zeigen, ob die
Leistung ausreicht.
Die Angabe für das Drehmoment ist unterschiedlich. Einige geben
diese in Kilo an und das klingt auch vertrauter. Wer wie ich damit
aufgewachsen ist, die Angabe in Ncm zu lesen, hat erstmal keinen
Bezug dazu, wieviel Kraft das nun wirklich ist. Ein Newton sind
gerundet 102g (oder 1/9,81 kg). Wenn wir einen Servo mit der
Drehmoment Angabe von 25Kg haben, dann sieht die Umrechnung
folgendermaßen aus:
254,8 Ncm = 25 * 1/9,81 kg * 100
Wenn man einmal die Rechnung gesehen hat, könnte man auch über
den Daumen die 25Kg mal 10 rechnen und die Einheit Ncm ranhängen.
In der Größenordnung sind die 4,8 Ncm fast nichts und wäre
nur bei Mini-Servos relevant.
Dann kommt noch was. Kann man mit dem Servo theoretisch 25Kg
heben? Ja, solange der Arm bei 1 cm Länge ist. Wäre der Servo-Arm
bei 10cm, dann könnten nur noch 2,5Kg gehoben werden. Und das kann
entscheiden sein, weil RC Autos immer einen Arm verwenden, der
länger als ein Zentimeter ist. Bei meinem vorigen RC
Straßenfahrzeug ist ein Servo mit einer Stärke von 35Ncm verbaut.
Dieser wäre im Crawler bereits bei einem Arm von zwei Zentimeter
überfordert und könnte in ungünstiger Lage die Lenkung nicht mehr
bewegen.
Kräftiger Motor
Zum Testen nahm ich aus meinem alten RC Modell, dem Camaro, den
Motor heraus und setzte diesen in das Chassis ein. Denn hier kam
typischerweise ein 500ter Motor Größe hinein. Eine kleine Ritzel
sollte mehr Drehmoment auf die Achsen bringen, aber ich rechnete
nicht mit dem hohen Stromabnahme. Das führte zu einem Ende des
Tamiya Standard Fahrtenregler.
Wie bei vielen Dingen suchte ich Rat im Internet und las mich
durch die Foren. Die Konstante, die ich dann fand, ist die
Empfehlung für Crawler einen Motor mit vielen Turns zu verwenden.
Daher bestellte ich einen passenden mit
50 Turns und 8300 U/min. Wer das mit den Turns nicht kennt:
Die Turns sind die Wicklungen, die Pro Anker am Rotor des Motors
gewickelt sind. Je nach Querschnitt und Anzahl Wicklung kann man
zwischen Drehmoment und Drehzahl bestimmen. Bei einigen
hochwertigen RC Modell Motoren kann nachträglich die Drehzahl und
das Drehmoment geändert werden, durch das Verstellen des Winkels der Bürstenköpfen zum Kollektor.
Die Betriebsspannung für den Motor liegt bei 7,2V bis 7,4V. Mehr
Spannung geht auch. Der Einsatz mit einem 3S und 11,1V würde
ebenfalls funktionieren, aber dies verkürzt die Lebensdauer des
Motors, wenn keine zusätzlich Kühlung montiert wurde.
Genau genommen schmilzt der Isolierlack auf dem Kupfer und
verursacht einen Kurzschluss. Kurz gesagt, die Nennleistung Leistung ist weg.
Mein damaliger Fachlehrer für Elektrotechnik sagte: Ein Motor
kann mit höheren Spannungen arbeiten, wenn ausreichend Kühlung
vorhanden ist. Spätestens die Fliehkraft, bringt jeden Motor zum
Ende.
Fahrtenregler
So wie ich den Motor aus dem Camaro zum Test nahm, nahm ich, wie
bereits beschrieben, auch den Fahrtenregler. Ich kann da nur
abraten. Wenn der Fahrtenregler nicht mehr durchsteuert, weil
dieser überhitzt ist, dann sollte man nicht warten bis dieser
abgekühlt ist. Sondern die Teile wieder herausnehmen und geduldig auf
die richtigen Teile warten.
Der neue Fahrtenregler QuickRun WP1080 von Hobbywing stellte
meine vorigen verwendeten Regler in den Schatten. Allein, dass ich
eine Programmierkarte zum Einstellen des Fahrtenregler verwenden
konnte, brachte mich zum Staunen. Früher kannte ich nur Features wie die Bremsfunktion und Anfahrt mit antirutsch Funktion.
Jetzt mache ich Bekanntschaft weiterer Funktionen, wie z.B. mit der elektronische Handbremse, auf Akkutyp einstellen, festlegen der maximale Energie für Vor-
und Rückwärts, Fahrmodus, Bremskraft und mehr.
Eine Testfahrt mit dem richtigen Motor und dem Fahrtenregler
zeigte mir, wie präzise auf unwegsamen Wegen gefahren werden kann.
Damit meine ich Folgendes: Ich gebe ganz wenig Gas (ja ich weiß,
es ist Strom!!) und das RC Fahrzeug bewegt sich ganz langsam und
konstant über ein Hindernis.
Bei meinen zwei kleinen RC Crawler dachte ich immer, ich hätte die
nicht gut geschmiert und würden deshalb über Hindernisse so vor sich hin ruckeln.
Lipo Akku
Hier hätte mein 6 Zellen NiMh Accu mit 5000mAh gereicht, aber der
war schon sehr verbraucht. Fürs Erste ging mein intakter 2S Lipo
mit 2400mAh. Entsprechen stellte ich den Fahrtenregler für diesen
Akkutyp ein.
Nachdem Fertigstellen des Hauptteil des Baus, entschied ich mich
doch einen neuen 2S Lipo Akku mit 7000mAh zu kaufen. Die Wahl hing
allerdings von der maximalen einsetzbaren Größe ab, die im Chassis
transportiert werden konnte.
Der neue Akku hat sich gelohnt. Die Fahrzeit liegt nun bei fast
einer Stunde. Ganz genau konnte ich allerdings die Betriebszeit nicht
bestimmen, weil ich beim Spazieren oft anhalte und die Gegend
fotografiere.
Karosserie im Design der 1980iger
Naja, eigentlich hatte ich nach einem Pickup mit einem neueren
Design gesucht, jedoch viel mir bei der Suche die Jeep Cherokee Karosserie immer wieder auf. Und jetzt erscheint mir der Fahrzeugtyp überall auch auf den
Straßen. Das muss die suggestive
Wahrnehmung sein.
Die neue ABS Karosserie ist nicht die Erste, die ich lackiert
habe und daher lag die Anforderung nahe, dass ich mein Können und
Erfahrungen steigere. Ok, ich bin kein Lackierer und meine
Erfahrungen sind weiterhin ausbaufähig. Ich recherchierte in
Foren, um herauszufinden, welche Schritte ich für ein gelungenes
Ergebnis zu unternehmen hatte. Und obwohl ich mich gut
vorinformierte hatte, zu nach beispielhaften Lösungen, traten beim
Lackieren offene Fragen auf.
Wahl der Karossiere
Eine Karosserie aus Lexan kam nicht in Frage, denn ich will etwas
Schönes, das man auch prima ins Wohnzimmerregal stellen kann. Auf
Pinterest und Instagram verglich ich verschiedene ausgebaute
Karosserien. Schließlich fiel die Wahl der Karosserie auf den
Jeep Cherokee von Injora.
(Neben der unlackierten
Karosserie ist ein Crawler im Maßstab 1:16)
Was wird zum Lackieren benötigt
Bei den Farbsprühdosen blieb die Wahl bei Tamiya. Die Farbwahl
wiederum war schon etwas schwieriger. Denn diesmal sollten zwei
Hauptfarben und weitere Aktzentfarben auf der Karosserie
aufgetragen werden. Lange habe ich mich farblich von Cyberpunk
2077 inspirieren lassen und hätte am liebsten den Thorton Colby
CX410 in Grün genommen.
Mit Hilfe von Adobe Color Picker (geht sicherlich auch mit
anderen Farbmischer-Tools) suchte ich eine Farbkombination, die
mit meiner Lieblingsfarbe Grün funktionieren. Überraschend sah
ich, dass auch Lila dazu passt, welche ich später als Akzent
einsetzte.
Ich kaufte wie immer von jeder Farbe eine Sprühdose und stellte
erst beim Lackieren fest, dass die Menge nicht ausreichte. Am Ende
habe ich zweimal nachbestellt. Zum Glück waren bei Conrad
Electronic alle Tamiya Farben im Angebot. Eine Sprühdose kostete
zu dieser Zeit 8,99€, statt 9,99€.
Farbe
Bezeichnung
Menge
Grundierung Weiß
Tamiya Surface Primer 180ml
1
Gun Metall
Tamiya Gun Metall TS-38 100ml
2
Grün (Candy-Lime)
Tamiya Grün (Candy-Line) TS-52 Spraydose
4
Klarlack
Tamiya Klar TS-13 100ml
3
Schwarz Glänzend
Tamiya Schwarz Glänzend TS-14 100ml
2
British Grün
Tamiya British Grün TS-9 100ml
1
Matt Schwarz
Tamiya Matt Schwarz TS-6 100ml
2
Für die Hauptfarbe Grün 'Candy-Lime' habe ich knapp drei Sprühdosen
verbraucht. Die Sekundärfarbe 'Gun Metall' wurden komplett zwei
Sprühdosen verbraucht. Für Klarlack (TS 13) hätte man auch mehr als
drei nehmen können. Allerdings reichten auch die vorhanden drei
Dosen für die vier Schichten aus.
Farben testen
Am Anfang war ich mir bei den Farben nicht sicher, wie diese
aufgesprüht miteinander wirken. Hilfreich war hier für mich die
nicht genutzte ABS Karosserie im Maßstab 1:16, welches aus Kabine
und Motorhaube besteht. Zunächst kam die Grundierung, die ich
jedoch aus Testzwecke nicht perfekt aufsprühte. Die verschiedenen
Farben habe ich jeweils nur mit einer Schicht aufgesprüht. Das
Abkleben mit dem richtigen Abklebeband ermöglichte mir harte
Kanten zu den Farben abzubilden. Die von mir ernannte
Testkarosserie eignete sich prima zum Ausprobieren der
Sprühwerkzeuge. Natürlich ist der Verbrauch auf diese Weise höher,
aber verbessert das eigene Gefühl und Umgang mit Sprühdosen.
Wann und wie wird lackiert
Idealerweise würde ein Raum zum Lackieren gut. Leider stand
mir kein Raum zur Verfügung und deshalb fand das Lackieren im
Freien statt. Das bedeutet, dass das Lackieren
nur unter guten Wetterbedingungen stattfinden konnte. Schon
ein wenig Wind führt dazu, dass sich beim Sprühen ein zu großer
Teil das Lacks in der Luft verteilte. Bei meinem Verbrauch hätte man sicherlich eine halbe Sprühdose einsparen können.
Für das nächste Mal, würde ich eine extra Lackierbox bauen mit
Entlüftung. Denn im Freien konnte ich nicht konstant durcharbeiten
und nach vier Wochen verspürte ich die Ungeduld. Dies zeigte sich
in Form von Fehlern, die in den letzten Schritten zu sehen
sind.
Trocknen
Bei sonnigen Tagen trocknet der Lack sehr schnell. Schon nach 15
Minuten war die Farbe trocken und ließ sich auch nicht mehr
verschmieren. An bewölkten Tagen braucht dies jedoch schon eine
halbe Stunde. Was man nicht vergessen darf, ist die
Karosserieteile gut zu schützen. Im meinem Umfeld hat ein Vogel Kot
meine Karosserie getroffen. Zum Glück war das keine Stelle, die
von außen zu sehen ist.
Am Ende, nach dem mehrere Schichten Klarlack fertig
aufgesprüht wurden, ließ ich den Lack einen Tag
durchtrocknen.
Lagern von Karosserie und Sprühfarben
Vielleicht habe ich mir das eingebildet, aber am Anfang hatte ich
vorrübergehend die Sachen im Wohnzimmer abgestellt. Da ich auch im
Wohnzimmer mein Homeoffice Platz aufgebaut habe, bekam ich des
öfteren Kopfschmerzen. Das passt zu den Warnhinweisen auf den
Sprühdosen. Nach dem Lackieren der Karosserie verdampft noch
Hilfsmittel von der Sprühfarbe. Das ist mir früher nie
aufgefallen, da ich zuvor die lackierten Teile in der Garage zum
Trocknen stehen ließ. Zum Schutz vor Schmutz und Staub, habe ich die Teile in einem großen Karton in der Abseite abgedeckt und gelagert.
Zusammensetzen
Für die Karosserie liegen ausreichend Schrauben bei. Man muss
jedoch darauf achten, dass man die Schrauben auch wie vorgesehen
verwendet. Die Reihenfolge beim Zusammensetzten der Teile, wurde
in der Anleitung nur teilweise bildlich erklärt. Ist allerdings
nicht so schwer, als dass man sich einige Reihenfolgen nicht
selbst erschließen kann. Umso umständlicher war die Größe der Teile beim
Zusammenschrauben.
Löcher bohren
Auf dem Dach sollte nun der Dachgepäckträger montiert werden.
Hierfür mussten Löcher ins Dach gebohrt werden, damit die Montage funktionierte. Damit die Löcher nicht verreißen,
habe ich die Stellen mit einem spitzen Gegenstand vorgekörnt.
Anschließend habe ich eine Bohrspitze mit einem kleinen
Durchmesser begonnen und die Löcher millimeterweise mit einer
größeren Bohrspitze aufgebohrt bis die Zielgröße erreicht war. In
meinem Fall mussten für den Dachgepäckträger 3mm und für die
Licht- und FPV-Leitungen 6mm Löcher gebohrt werden. Damit die 6mm
Löcher nicht so konturlos werden, verwendete ich die Halterungen
für 5mm LEDs (Auf dem Foto kaum zu erkennen).
Weitere Details
Das Nummernschild habe ich mir über den Ebay Händler RC-Decals
bestellt und freute mich über die Möglichkeit, dies mit meinem
Internet Nickname bedrucken zu lassen. Allerdings wollte ich den
Aufkleber nicht direkt auf die Karosserie kleben, denn dass
erschien mir doch zu flach. Deshalb entschied ich einen Rahmen für
das Nummernschild zu entwerfen, an dem auch LEDs angebracht werden
können.
Geplant waren weitere Aufkleber. Nun sind da meine Erfahrungen
eigene herzustellen gleich null und die Aufkleber, die ich bisher
gefunden habe, gefielen mir nicht. Zudem wollte ich keine
Werbetafel fahren. Sieht man sich die Fahrzeuge in Cyberpunk an,
sind einige Beschriftungen zu erkennen. Beschriftungen an Klappen,
an Erweiterungen, an Anschlüssen und andere Markierungen.
Das wollte ich, aber dann habe ich diese Idee verworfen.
Gepäck
Auf dem Dachgepäckträger waren mir zu wenig Gepäck. Die
Holzkiste, die ich bei einem Set bekam, fand ich nicht sonderlich
passend (ist aber noch drauf) und auch eine Tonne wollte ich
nicht. Ich habe mir als Alternative eine SD Karten Schutzhülle in
schwarz lackiert und zusätzlich eine Funktion gegeben. Die
eingelassene Solarplatte versorgt einen Mikrokontroller, der
wiederum 5 LEDs zum Blinken bringt.
Einen weiteren passenden Kunststoffbehälter habe ich in Matt schwarz
lackiert. Dieser bekam die Aufgabe die FPV
Funktion zu beherbergen. Hier kommt ein Lipo Akku hinein, der die
Kameras und den FPV Sender versorgt. Der FPV Sender passt ebenfalls
hinein und durch eine Bohrung in das Kunststoffgehäuse, konnte die 5GHz Antenne
angebracht werden.
Die Flutlichtscheinwerfer auf dem Dach und an der Frontstoßstange
hatten zuvor nur sehr helle und weiße LEDs. Diese habe ich durch die
RGB LEDs WS2812b ersetzt und sie werden durch einen Arduino
angesteuert.
Elektronik und Steuerung
Neben dem Empfänger, Fahrtenregler und Servo zum Lenken, kamen
noch die LEDs und in meinem Fall die FPV Kameras hinzu. Eine FPV
Kamera ist nicht das Highlight, doch das eine zweite als
Rückfahrkamera dient schon. Zumindest habe ich bis heute noch
keinen anderen Eintrag im Internet gefunden.
Für die LEDs hätte ich ein fertiges System verwenden können, aber
keins der System sagte mir wirklich zu. Denn hier sollte jede LED
einzeln steuerbar sein und das funktioniert prima mit einem
Arduino.
Arduino für die Signalverarbeitung
Klingt etwas hoch gestochen, wenn man von Signalverarbeitung
schreibt. Kurz gesagt bedeutet das, dass die Signale vom Receiver
eingelesen und entsprechend für die Zielausgabe übersetzt werden.
Für dieses Projekt werden hauptsächlich die LEDs angesteuert.
Insgesamt stehen vier PWM Signale zum Einlesen bereit. Eigentlich
fehlt aber noch ein fünftes. Das Fünfte soll die
Fahrgeschwindigkeit prüfen, um das Bremslicht zu kontrollieren.
Das ist mir jedoch erst viel später eingefallen.
Das Signal zum Lenken lässt sich ohne Störung auslesen, womit dann der erste Eingang zum Arduino verbunden wurde und damit die Blink LEDs stuerte. Die drei weiteren Kanäle wurden ebenfalls zum Schalten der LEDs und RGB LEDs eingesetzt. So kann ich dann an der Fernsteuerung das Fahrlicht einschalten und die Flutlichter ihre Animation starten.
LEDs durch LED Treiber ansteuern
Die Helligkeit könnte eigentlich durch die verwendeten
Widerstände festgelegt werden. Ich will jedoch die LEDs mit einem
LED Treiber einzeln einstellbar haben. Das ermöglicht auch Effekte
zu erzeugen wie sanftes Aufleuchten oder die Blinker für das
Lenken einzustellen.
Hierzu passte für den Einsatz der PCA9685 mit 16 PWM Ausgängen.
Das ist auch die Menge an Ausgängen, die für den Crawler
tatsächlich benötigt werden.
2x Front Stoßstangen Licht
2x Front Scheinwerfer
2x Front Standlicht
2x Front Blinker
2x Heck Lichter
2x Heck Blinker
2x Heck Stoßstangen Licht (aktuell noch nicht montiert)
2x Nummernschild
Wenn jedoch mehr PWM Ausgänge benötigt werden, kann ein weiteres
Modul verbaut werden, dank I²C Bus.
RGB WS2812b für Flutlicht
Die LEDs in den Flutlichter haben dieselbe Breite wie die
Streifen von den WS2812b. Daher ist ein Austausch simpel. Die
Anzahl der RGBs ist natürlich abhängig von der Breite des
Scheinwerfergehäuse. In den Dachscheinwerfer passen 20 und für die
Stoßstange können 11 eingesetzt werden.
Aus mir nicht ersichtlichen Gründen ist mir zweimal bei beiden
Streifen die erste RGB LED ausgefallen. Zuviel Spannung ist
ausgeschlossen, weil hier in der ganzen Schaltung 5V verwendet
werden. Zu dem Thema habe ich einen Eintrag gefunden, aber keine
Antwort, was wirklich das Problem verursacht. Das erste Mal, dass
zweimal derselbe Defekt auftaucht. Hier ist der Aufbau nicht
anders als bei meinem Quadrocopter und auch hier verwendet ich für
die RGB LEDs einen extra Step Down Stromversorgung. Wenn ich den
Fehler gefunden habe, dann schreibe ich einen Blogpost dazu.
Piezo Summer als Hupe
Nach einer Stunde und verschiedenen Tönen und Melodien,
klingelten meine Ohren. Ehrlich gesagt tat das in meinen
Ohren weh, weshalb ich mich entschied die Hupe erstmal
auszulassen.
Alternative habe ich noch einen MP3 Modul, dass mit einfachen
Lautsprechern funktioniert. Aber als Hupe eher ungeeignet. Also
werde ich da noch etwas forschen müssen.
Gimbel für Fahrkamera
Bereits mein kleiner 1:16 Crawler hat einen Servo, mit dem nach
links und recht die Kamera schwenken kann. Um da noch einen
draufzusetzen, kann jetzt mein neuer Crawler auch hoch und runter
kippen. Hierfür verwende ich (noch) ein bestehendes Gimbal System,
das aber kein passende Steckhalterung für die Kamera hat. Deshalb
habe ich die Kamera provisorisch mit Heizkleber angebracht.
So ganz stimmt mich das noch nicht zufrieden. Im Grunde verwendet
der Aufbau viel Raum und mir fehlt die Möglichkeit, nachträglich
die Kamera in der Höhe zu verstellen.
Von der Fernsteuerung konnte ich die Bewegungsgrenze einstellen,
so dass die Kamera im Gehäuse nicht mehr sinnlos aneckt. Das geht
bei OpenTX im Bereich des Mixer, wo auch das Steuersignal
umgekehrt werden kann, wenn z.B. ein Servo sich in die umgekehrte
Richtung bewegen sollte.
In der Entwicklung habe ich ein eigen entworfenes Gimbal. Muss
allerdings noch gedruckt werden. Und dann muss sich noch zeigen,
ob meine Lösung auch wirklich funktioniert.
Fehler finden und Ausbessern
Nach den ersten zwei Spazierfahrten traten erste Fehler auf. Die
Verkabelung war in Ordnung, aber die Kräfte, die auf den Leitungen
auftraten waren stärker. Alle betroffenen Stellen habe ich neu
verlötet und zusätzlich mit Heizkleber verstärkt.
Der zweite Mangel sind die Magneten, die die Karosserie
festhalten. Denn die sind eigentlich für das Anheften von Lexan
Karosserien gedacht. Für ABS Karosserien reichen vier in der
kleinen Größe nicht aus.
Bei zu ruckartigen Bewegungen kam es dazu, dass die
Magnetverankerung nicht hielt und somit sich die Karosserie sich
ablöste. (Verbesserung ist in Arbeit.)
Die Rückfahrkamera war im Gegensatz zur Frontkamerahalterung
nicht festgeschraubt und ist aktuell noch aus LEGO Teilen
aufgeklebt. Nicht ideal und auch etwas schwer. Allerdings nur ein Provisorium.
Natürlich wird dies durch ein Eigenentwurf ersetzt und muss noch
gedruckt werden. Hier bin ich jedoch noch nicht sicher, ob ich das
noch überarbeiten kann. Das Beste daran ist, dass dort auch die
Kamera nach links und rechts geschwenkt werden kann.
Schlusswort
Das Ergebnis kann sich sehen lassen. Auch wenn ein paar Macken am
Lack sind oder das Kabel-Management nicht perfekt ausgelegt ist.
In Summe habe ich einiges geschafft und ein Teil meiner
Erfahrungen erweitern können. Besser wäre jemanden zu kennen, der
sich genau mit der Materie beschäftigt.
Foren wären toll, wenn man nicht am Ende so viel Informationen
selektieren müsste, welche Lösungen für einen selbst geeignet
sind. Am Ende bin ich mit dem eigenständigen Erschließen auf eine
ähnliche Zeitspanne gekommen. Als Zeitmaß sehe ich die damalige
Forenhilfen, bei denen ich am Ende keine Antwort bekam und ich die
Lösung selbst gefunden oder entwickelt habe. Ok, ganz ohne Foren
lesen bin ich nicht ausgekommen. Empfehlung für den Fahrtenregler war
in den Foren sehr eindeutig.
Die Firmware für die Beleuchtung braucht noch etwas feintuning.
Hier sollen die LEDs dimmen beim Ein- und Ausschalten und mit dem
vierten Kanal der Modus und Helligkeit eingestellt werden. Aber das habe ich noch in Arbeit...