LEGO Mindstorms EV3 mit Matlab und Simulink

Wer mit Matlab und Simulink arbeitet oder lernt und einen LEGO EV3 Brick samt Sensoren und Aktoren besitzt, kann diese Systeme miteinander verknüpfen. Rund um den EV3 Brick gibt es natürlich eine Community und etliche Plattformen, über die man mit dem Brick kommunizieren kann. Doch dazu später.

Der Lego EV3 Brick ist im Wesentlichen ein Einplatinencomputer der mit einem LC-Display und vier Input- sowie vier Output-Ports (Schnittstellen für Sensoren und Aktoren) ausgestattet ist. Als Datenschnittstellen gibt es einen USB Port als HOST und einen MiniUSB Port als Interface zum PC und den diversen Softwaretools.

Will man mit dem Brick wireless kommunizieren, so ist dies über WiFi, beziehungsweise über Bluetooth möglich. Allerdings ist die Hardware zur Funkübertragung nicht im Brick verbaut und muss als USB Dongle in den Host-Port gesteckt werden.

Folgende USB Wifi Sticks sind lt. Internetrecherche mit dem EV3 und der originalen Legofirmware ab 1.08 kompatibel: (Quelle: Internet)

  • tp-link WL0084E
  • EDIMAX EW-7811Un mit dem Chipsatz RTL8188CUS
  • LogiLink WL0084W auf der Vertriebsseite (Conrad) angeblich mit dem Chipsatz Railink RT5370 jedoch das Herstellerdatenblatt gibt den Chipsatz RTL8188EUS an.

Im Test hat sich gezeigt, dass lediglich Dongles mit dem Realtek RTL8188CUS Chip im embedded Linux des EV3 Driver mäßig implementiert sind. Der Nachfolger von Realtek der RTL8188EUS funktioniert hier nicht.  Und die meisten Hersteller von Wifi USB Dongles (Stand 2021) vertreiben ihre Sticks mit dem 8188EUS Chip, sei dies TPLink, Edimax, LogiLink und wie sie alle heißen. Erkennbar ist das bei manchen an der Typenbezeichnung V2, oder 7811UN V2 (bei Edimax) oder V.02, V.03 bei TPLink. Ist diese Kennzeichnung beim Stick oder dessen Verpackung dabei dann wird das nix. Zumindest nicht, wenn mit der originalen Legofirmware gearbeitet werden will.

Vergleich edimax 7811un und 7811un v2
edimax 7188un mit RTL8188CUS chip
edimax 7188un V2 mit RTL8188EUS chip

Nun weiter zum EV3 Brick:

Auf diesem Einplatinencomputer läuft ein auf Linux basierendes embedded Betriebssystem das auf einem internen Flash- Speicher abgelegt ist. Dieses Betriebssystem wird in Form einer Firmware von LEGO zur Verfügung gestellt und ist zur Zeit in der Version 1.10 verfügbar. Diese Firmware ist beinhaltet sämtliche Partitionen der Laufwerke und deren Inhalt und wird im Rahmen eines Updates in einem „.bin“ File verpackt in den Flash geladen. Mit den Softwaretools „binwalk“ ist es unter Linux möglich, die Struktur der Partitionen aus dem Firmware File wiederherzustellen, zu ändern und wieder als „.bin“ Firmware Image auf die Hardware hochzuladen.

Es gibt aber auch Custom Firmware und Betriebssysteme die per SD-Card gebootet werden können. Welche Treiber hier mitgeliefert werden ist auf den Seiten der entsprechenden Custom OS Hersteller nachzulesen.

Folgende Betriebssysteme habe ich für den EV3 auf die Schnelle gefunden:

  • ev3dev (https://www.ev3dev.org/)
  • leJOS (https://sourceforge.net/projects/lejos/files/lejos-EV3/)

Man kann den EV3 mit folgenden (und ich nenne hier auch nur die gängigen die auch mir eingefallen sind) Tools bzw. Programmiersprachen programmieren:

  • LEGO EV3 Originalsoftware
  • NI Labview bist Labview Fall2016 ? (Unterstützt bzw. EV3 Plugins implementiert)
  • Matlab und Simulink (Harware Supportpackage für EV3 notwendig) link
  • MicroPython EV3 link

Fakt ist jedoch: der in die originale Lego EV3 Firmware (1.08H , 1.09D) integrierte Treiber für WLAN-Sticks unterstützt nur den Chipsatz RTL8188CUS. Und den benötigt man, wenn man über SIMULINK im „Monitor und Tune“ Modus mit dem Brick arbeiten will. Denn interessanter Weise klappt das NUR über eine WiFi Verbindung und NICHT über einen direkten USB Link zwischen PC und EV3.

Es ist auch NUR mit der Firmware 1.08H möglich mit Simulink zu kommunizieren da hier TELNET und SSH als Kommunikationsprotokoll genutzt werden. Und nur in der 1.08H ist eine ungeschützte Verbindung der Weg zum Erfolg. Ab der Version 1.09D ist ein Login notwendig.

Da die Firmware Versionen mittlerweile schwer zu finden sind, stelle ich hier einen Link zum Download herein.

Download EV3 Firmware 1.08H
Download EV3 Firmware 1.09D

Was benötigt man nun, um über Simulink mit dem EV3 sprechen zu können ?

  • zunächst muß Matlab und Simulink installiert sein
  • dann muss man das Support Package EV3 für Matlab und EV3 für Simulink herunterladen und installieren
  • auf dem EV3 Brick solltedie originale Firmware 1.08H vorhanden sein. Ist dies nicht der Fall kann die Version über den Firmwaredownloader in der orginalen EV3 PC Software auf das Gerät übertragen werden.
  • im EV3 Brick muß ein USB Wifi Dongle mit dem „CUS“ Chipsatz stecken
  • der PC muß idealerweise im selben Netz hängen wie auch das Wifi-Funknetz mit dem sich der Brick verbindet. Ein DHCP Server muß die IP Adressen für die Funkgeräte verteilen
  • jetzt kann der Brick gestartet werden. Danach muß er mit dem WLAN Netz verbunden werden (es sollten WPA2 Passwörter ohne Sonderzeichen festgelegt sein, da der EV3 Brick diese nicht zur Verfügung stellt)
  • ist der EV3 mit dem Netz verbunden, dann ist unter dem Menu „Brick Info“ die aktuelle IP Adresse des Bricks und die Brick ID zu notieren. Diese Infos werden gleich im Simulink Setup benötigt
  • nun zu Simulink: dort ist im Menu „configuration Parameters“ unter „Hardware Implementation -> Hardware board“ Mindstorms EV3 zu wählen 
  • das Setup wird im selben Menu unter „Hardware board settings“ -> Target hardware resources -> Groups -> Host to Target Connection festgelegt. Hier ist „Ethernet“ als Connection Type einzustellen. Die vorher ermittele IP Adresse und ID des Brick sind hier auch einzugeben.Das war´s dann auch schon. Nun sollte es möglich sein eure Simulink Modelle mit der EV3 Hardware zu nutzen und auch die Tune Infos während der Simulation am PC zu sehen …

 

 

 

Videostreaming im Auto – Android Auto – die Billiglösung

Da in der zurzeit etwas wärmeren Jahreszeit meine Freizeitaktivitäten vermehrt im Outdoor Bereich stattfinden, leidet das Schreiben von den Weblogs ein wenig. Ich arbeite aber trotzdem an einigen Projekten, Reparaturen und Restaurationen. So kommt auch wieder einiges an Material zusammen, um daraus -in der kälteren Jahreszeit- Beiträge zu verfassen. Diesmal habe ich mich nur wieder über die Abzocke und Preisgestaltung im KFZ – Bereich geärgert und nach einer alternativen Lösung gesucht.

Es geht dabei um mein fünf Jahre altes Auto, das mit einem OnBoard Navigationssystem ausgestattet ist. Die Navigationsdaten sind auf einer im Fahrzeug gesteckten SD-Karte gespeichert. Soweit so gut. Die Kartendaten des Fahrzeuges sind mittlerweile allerdings auch in die Jahre gekommen und vieles ist nicht mehr aktuell. Sowas stört besonders wenn man sich auf einer Urlaubsreise befindet und das Navi das Ziel nicht kennt, oder den Weg dorthin nicht verzeichnet hat. Alles kein Problem dachte ich mir, Kartendaten sind ja auf der SD-Karte – da gibt´s doch sicher Updates. Und ja es gibt sie – allerdings kosten die Kartenupdates von 200Euro aufwärts und mehr. Dafür bekomme ich ja ein komplettes Navigationsgerät samt aktuellen Karten mit gratis Onlineaktualisierung.

Also habe ich versucht, mich schlau zu machen und eine aktuelle Karte im Netz zu finden und auf die SD-Karte zu speichern. Aber das klappt natürlich nicht. Hier werden einige Sicherheitsmechanismen angewandt. So ist zum Beispiel die Hardware ID der Speicherkarte im Navigationssystem hinterlegt (kodiert). So scheiterte mein erster Versuch die originale Navikarte als Image auf eine neue SD-Karte zu kopieren. Sie wird als nicht gültige Karte erkannt. Und mit Diagnosegerät VCP und VCDS im Navirechner ohne Anleitung herumzubasteln ist mir dann zu viel Aufwand. Also musste eine andere Möglichkeit her. So ist auf jedem Smartphone ein online Navi installiert – nennt sich Google Maps. Und zudem gibt es auch einige offline Navisystemen die kostenfrei von den Webstores zu laden sind.  So war nun meine Idee das Auto um eine Phone Mirror Funktion zu erweitern. (diese Dinge nennen sich Android Car Play in der Obstabteilung usw.) Da meine alte Kiste nichts davon im Entertainmentsystem bereitstellt gab es für mich folgende Alternativen:

Entweder kaufe ich ein China Navi zum Nachrüsten – und dabei meine ich die, den originalen Boardmonitoren des Autos nachempfundenen Bildschirme, in die dann ein Android Rechner eingebaut ist. Dort können dann die entsprechenden Apps zur Navigation und andere Spielereien installiert werden. Die Daten des originalen Bildes des Auto Infotainment Systems werden natürlich weiterhin dargestellt. Solche Systeme sind in der Größenordnung von 400-600 Euro zu bekommen. Dazu kommen dann noch ein paar Stunden an Einbau- (Bastel-) Arbeiten.

Eine andere Möglichkeit ist ein Retro Fit Umbau. Das bedeutet, ich baue das höherwertige Infotainment System mit dem entsprechenden Funktionsumfang in das Fahrzeug ein. Das wiederum bedeutet: das alte System ausbauen, ein neues System vom Fahrzeughersteller samt allen notwendigen Steuergeräten, Kabelbäumen, Abdeckblenden etc. zu kaufen, dann einzubauen und im Anschluss alles mit viel Aufwand codieren, Parameter einspielen usw. Die Kosten sind immens und rechnen sich auf keinen Fall (>2500,- wenn’s reicht) und dann noch die Arbeit für den Aus- und Einbau. -> alles kann man das vergessen.

MiraScreen Empfänger

Und hier die letzte Möglichkeit für alles zusammen gerade mal 50Euro und mit einem Aufwand von 30 Minuten Einbau bestehend aus folgenden Punkten:

 

 

  • die Video In Motion (VIM) Funktion des Displays bzw. der Radiounit freischalten
  • ein AMI Kabel mit Composite Video In und Audio In erwerben
  • einen MiraScreen WLAN-Receiver um gerade mal 40Euro erwerben, der imstande ist, das Videosignal auch per CVBS auszugeben
  • das ganze Teil (in diesem Fall) in der Ablage der Mittelkonsole einbauen
  • das Kabel für die Energieversorgung der Mirabox durch die Ablage zur 12V Steckdose verlegen und anschliessen.

Diese Arbeiten sind schnell gemacht und das Smartphone kann per „Stream“ (im Android Smartphone unter „Kabellose Übertragung in Bluetooth- & Geräteverbindung“) verbunden werden. Jetzt wird der Bildschirm und der Ton des Smartphones auch über das Infotainmentsystem des Fahrzeugs wiedergegeben.

AMI Videokabel

Das AMI-Videokabel wird an der AMI Buchse des Fahrzeugs angesteckt und die analogen Video- und Audioleitungen mit den Chinch-Steckern des MiraScreen Anschlusskabels verbunden.

Stecker für Versorgung, Video und Audio an den MiraScreen

Die Energieversorgung für den Mira Screen habe ich direkt von der 12V Steckdose hinter der Mittelarmlehne entnommen. Dazu habe ich den Stecker der 12V Dose ausgepinnt, je einen Draht an 12V und GND angelötet und wieder eingepinnt.  An das andere Ende der beiden Drähte habe ich eine 13,5mm Tamiya Kupplung gekrimpt. Zusätzlich hat die 12V Leitung auch noch eine Flugsicherung erhalten. An diese Tamiya Kupplung wird nun das, durch die Ablage gefädelte Mira Screen Anschlusskabel gefädelt und der entsprechende Tamiya Stecker aufgekrimpt. Um das Kabel durch die Ablage zu bekommen, habe ich einfach ein 7mm Loch gebohrt und einen Gummikantenschutz in das Loch gesteckt.

Kabeldurchführung

Ist das Kabel nun angeschlossen, dann kann die Box angesteckt und in der Ablage verstaut werden.

Im Bild oben ist die Box fertig angeschlossen und in der Mittelarmlehnenablage zu erkennen.

Ist die Lehne heruntergeklappt, so ist von der Box nichts mehr zu erkennen. Man kann sie nach Abziehen der Stecker auch wieder einfach und schnell entfernen.

Nachdem die Zündung nun eingeschaltet ist, kann man im Multimediasystem „Media“ auswählen und dort dann auf CVBS-Videoeingang anklicken. Jetzt sollte der Startschirm der Mira Screen Box zu sehen sein. Man kann die Mira Screen Box auch konfigurieren, indem man das Handy per WLAN mit der SSID „MIRAxxxx“ verbindet und die IP Adresse, die auf dem Startbildschirm angegeben ist im Browser des Smartphones eingibt. Das SSID Password steht ebenfalls am Startbildschirm.

Die Fotos oben zeigen das Innenleben der Box. Bei diesem Gerät hatte sich der Pinheader der Stack-Platine aus der Buchsenleiste teilweise gelöst und dies hatte zu Kontaktproblemen der beiden Platinen geführt. Der Messingabstandhalter (im letzten Bild unten links zu erkennen) ist 2mm zu lange, sodass die beiden Platinen nicht ordentlich zusammenhalten. Als Abhilfe habe ich die beiden Abstandhalter um diese 2mm gekürzt und wieder verschraubt. Somit kann ich die Google Maps problemlos im Auto benutzen.

 

 

 

Sony Walkman WM-DD11

Der portable Kassettenspieler des Herstellers SONY mit der Typenbezeichnung WM-DD11 ist Inhalt dieses Beitrages. Umgangssprachlich als „Walkman“ bezeichnet, habe ich dieses Teil für meine Sammlung erhalten. Natürlich mit der Anmerkung „defekt“ – also wieder eine kleine Herausforderung und gleichzeitig die Hoffnung, dass keine mechanischen, nicht mehr erhältlichen Teile betroffen sind. Auch meine Anfrage vor dem Erwerb, ob es Beschädigungen auf der Platine gäbe, wurde verneint. Das Gerät sei soweit in Ordnung, das Band einer eingelegten Kassette bewegt sich – es komme nur kein Ton aus den Kopfhörern. Also ideale Voraussetzungen für eine Restaurierung.

Aber leider kann man nicht jeder Aussage vertrauen und auch nicht vorher „unter die Haube“ sehen und sich überzeugen, ob der tatsächliche Zustand eines Gerätes auch der Beschreibung entspricht. Als ich das Teil dann in Händen hielt, war der erste Eindruck auch ganz überzeugend. Es waren keine nennenswerten Kratzer und Dellen zu sehen. Der von außen sichtbare Bereich des Batteriefaches war auch sauber. Also Batterien eingelegt, ebenso eine Audiokassette und dann auf Play gedrückt. Und siehe da, wie beschrieben läuft der Bandtransport. Auch wie beschrieben gibt das Teil keinen Ton von sich. Also perfekte Startbedingungen für mein mini Reparatur- /Restaurierungsprojekt.

Doch bevor ich mit der Demontage beginne, habe ich ein wenig über die Geschichte zur DD-Walkman Serie von SONY recherchiert. Das erste Modell der Serie DD wurde 1982 verkauft. Die Bezeichnung „DD“ steht für „Disc Drive“, was bedeutet, dass die „Disk“, also die Schwungradscheibe auch gleichzeitig Teil des Capstan-Antriebssystems (Motors) ist. Der Riemen für die weiteren Antriebe (tape reels) wird direkt um die Scheibe (Disk) gelegt. Von den DD Modellen gibt/gab es zwei Preisschienen – die DD-Serie mit der einstelligen Nummerierung (DD-1, DD-2, etc.) und jene mit der zweistelligen Nummerierung (DD-11, …). Zur „Highend-Schiene“ zählen dabei die Geräte mit der einstelligen Nummer. Das hier restaurierte Gerät stammt quasi aus der „Billig-Schiene“. Der DD-11 ist zwar nicht so hochwertig und auch einfacher aufgebaut, aber dafür sind defekte Geräte für ganz geringes Geld zu bekommen und auch ziemlich einfach zu reparieren. (Der DD-11 hat beispielsweise kein Center Wheel, ein häufig defektes – aufgrund von Materialschwäche gebrochenes Teil der High End Serie. Übrig bleiben dann meist Fehler in der Elektronik oder auf der mechanischen Seite – ein gealterter Riemen. Nach einer Recherche im Netz ist der Riemen der selbe, der auch schon im legendären TPS-L2 Walkman verbaut wurde und hat die Bauteilseriennummer: SN 3-499-042-99 (diese Quelle bzw. Nummer habe nicht verifiziert) Man findet den Riemen aber auch, wenn man unter „TPS-L2 Riemen“ auf verschiedenen Onlineportalen sucht.Doch nun genug Infos zum allgemeinen Teil. Eine Ernüchterung und Erdung meiner Restaurierungseuphorie habe ich gleich nach dem Aufschrauben und Öffnen des Gehäuses erfahren. Die Platine ist leider ganz und gar nicht unbeschädigt. Wieder einmal hat jemand die 1.5Volt Zellen nicht entfernt und sehr, sehr lange im Gerät gelassen.

Die, wie es eben so ist, ausgelaufenen Batterien haben deutliche Spuren auf der Platine hinterlassen. Das bedeutet, es ist wieder eine aufwendige Reinigung der Platine notwendig, bis die Suche nach korrodierten Leiterbahnen beginnen kann.

Nach der Reinigung und dem Entfernen der Batterieelektrolyte Reste, konnte ich ein paar defekte Leiterbahnen ausmachen. Diese sind glücklicherweise recht einfach zu reparieren. In den meisten Fällen genügt es, den Lötstoplack im defekten Bereich zu entfernen, die freigelegten Kupferbahnen zu verzinnen. Je nach Leiterbahnbreite wird die defekte Stelle der Bahn dann mit einzelnen Litzen oder Drähten wieder verbunden.

Jetzt ist es soweit, um nach einem provisorischen Zusammenbau einen ersten Funktionstest durchzuführen. Und wie beschrieben, arbeitet der Capstan Antrieb, das Band wird transportiert – aber aus den angeschlossenen Lautsprechern kommt keinerlei Geräusch. Jetzt ist es Zeit sich die Fehlerquelle Nummer Eins anzusehen – die alten Elektrolytkondensatoren. Davon sind auf dem Board elf Stück verbaut.

Schon beim Ausbau des ersten Elkos für einen Kapazitätstest, stieg mir wieder einmal der alt bekannte Fischgeruch in die Nase. Wie erwartet war die Kapazität des Kondensators auch weit unter dem des Nominalwertes. Also habe ich kurzentschlossen alle elf Elkos ausgebaut um einen Flächentausch vorzunehmen. (modernsprachlich nennt man das „recap“ 😀 )

Folgende Werte sind zu erneuern:
– 5 Stück 220 µF / 4V
– 1 Stück 100µF / 4V
– 3 Stück  47µF / 4V
– 1 Stück 10µF / 16V
– 1 Stück 4.7µF / 25V

 

Ich ersetze die SMD-Elkos gerne durch SMD Vielschichtkondensatoren, da diese mittlerweile auch bei sehr kleinen Bauformen in hohen Kapazitäten mit passender Spannungsfestigkeit erhältlich sind.

Nach dem Erneuern sieht das Board wieder ganz ansehnlich aus. Eine wiederholte provisorische Inbetriebnahme zeigt, dass sich der Aufwand gelohnt hat. Die Musik auf dem eingelegten Band ertönt in erwarteter Qualität. Im nächsten Schritt ist jetzt noch ein Kalibrieren oder Justieren der Bandgeschwindigkeit notwendig. Dazu benötigt man ein Referenzband. Ich hatte mir vor Jahren einmal eines mit einem sehr guten Tape Recorder aufgenommen. Die Aufnahme besteht aus einem 1kHz und einem 5kHz Sinuston. Diese Band dient jetzt im DD11 als Referenz. Dazu wird der Ausgang des DD11 mit einem Frequenzzähler oder Oszilloskop verbunden und während des Abspielens mit dem Trimmpotentiometer so lange justiert, bis die 1000Hz bzw. 5000Hz am Oszilloskop exakt zu sehen sind.

Jetzt kann der Walkman wieder zusammengebaut werden. Alle Schrauben wieder ordentlich festgezogen und abschließend nochmals die Funktion getestet und das schöne Stück kann in die Vitrine…

Der Wetterfrosch 2.0 oder Umweltdatenlogger

Vor ein paar Jahren habe ich ein Projekt vorgestellt, in dem ein Raspberry Pi als Datenlogger arbeitete. An diesen Raspberry waren ein paar Sensoren angeschlossen, die Umweltdaten, wie Lufttemperatur, relative Luftfeuchte, den Luftdruck und auch die aktuelle GPS Position aufzeichneten. Die Sensoren bestanden größtenteils aus fertigen Breakoutboards, die über die diversen Busse (I²C, Serial, SPI…) an den RaspberryPi angeschlossen waren. Am PI selber liefen Python Skripten, die das Auslesen der Sensoren übernahmen, die Daten zusammenfassten und auf einen USB-Flashspeicher ablegten. Dieses Sammelsurium an Komponenten hatte ich dann in eine Kunststoffbox mit einer Größe von 150x80x50mm eingebaut.

Doch es geht auch um einiges kleiner. Im Rahmen eines kleinen Projektes war es die Aufgabe, diesen Sensor/Datenlogger zu verkleinern. Mein Ansatz, das zu realisieren, war ganz einfach: „Alles neu“. So habe ich das Konzept folgendermaßen geändert:

  • der RaspberryPi wird durch einen Microcontroller ersetzt
  • es wird eine Platine erstellt, auf der sämtliche Komponenten untergebracht sind
  • die erfassten Daten werden auf einer MicroSD Karte gespeichert
  • das Board ist auf die wesentlichsten Komponenten reduziert. Die Sensorelektronik und der SD-Card Reader wird direkt auf dem Board platziert
  • ein GPS-Empfänger (in Form eines Breakoutboards) soll optional aufgesteckt werden können
  • die Programmierung des Controllers wird durch eine ISP Schnittstelle durchgeführt
  • die Spannungsversorgung beträgt 5V DC

Daraus habe ich folgendes Blockschaltbild erstellt:

Blockschaltbild

Das zentrale Element ist, wie so oft, der Microcontroller Atmega328. Er benötigt als externe Beschaltung lediglich einen Quarz als Taktstabilisierung. (genauer gesagt bietet er aber auch die Optionen interne Oszillatoren zu benutzen…) Der Microcontroller kommuniziert über den I²C Bus mit den Sensoren HYT939 und BME280. Über die ausgeklügelte bidirektionale Levelshifter Schaltung mittels BSS138 Mosfet mit integrierter Body Diode wird die Anpassung der Pegel von 5V auf der Controller Seite zu den 3,3V auf der Sensorseite realisiert. Diese Schaltung wird sowohl für die SCL- (Serial Clock), als auch für die SDA-Leitung (Serial Data) angewendet.

Die Datenspeicherung findet auf einer MicroSD-Karte statt. Dafür wird ein Card Slot verbaut, der per SPI (Serial Peripheral Interface) mit dem Controller kommuniziert. Auch hier ist eine Anpassung der Signalamplituden notwendig. Das übernimmt dieses Mal jedoch der Chip TXB0108 von Texas Instruments. Das ist ein 8Bit Bidirektionaler Levelshifter.

Ein Taster wird die Datenaufzeichnung starten und stoppen und eine LED soll diverse Statusmeldungen durch Blinkfolgen darstellen.

Das optional aufsteckbare GPS Modul arbeitet mit 5V Spannungsversorgung und die Pegel der seriellen Datenkommunikation (RS232) sind ebenfalls 5V kompatibel.

Zu guter letzt ist natürlich auch die Spannungsversorgung zu planen. Hier soll lediglich eine externe, stabilisierte 5VDC Quelle angeschlossen werden, um den Logger zu versorgen. Die für die Sensoren und SD-Card benötigten 3,3VDC werden am Board mittels einem LDO (Low Drop Out) Regler erzeugt.

Sind alle Komponenten und deren Zusammenspiel definiert, dann wird daraus der Schaltplan gezeichnet. Für meine Bastelprojekte verwende ich hauptsächlich den Schaltplan- und Layout Editor „Eagle“.  Aus dem Blockschaltbild ergibt sich die unten abgebildete Schaltung.

Aus dem Schaltplan habe ich ein Layout mit zwei Layern erstellt, dessen Grundriss die Abmessungen 55x25mm hat. Bis auf die Steckverbinder befinden ausschließlich SMD Komponenten auf dem Board.

Im Layout Tool gibt es die Funktion, eine optische Vorschau der gefertigten Platine zu betrachten. So kann man vorab überprüfen, ob die Platine den Vorstellungen entspricht und gegebenenfalls die Lage der Bauteile optimieren. Ist das erledigt, wird aus dem Design ein Paket mit Produktionsfiles (Gerberdateien) erzeugt und das dann dem Platinen Hersteller seines Vertrauens gesendet. Da der auch sehr, sehr weit weg angesiedelt ist, dauert die Produktion auch ein paar Tage. Aber schlussendlich kommen die Platinen an und können sich auch sehen lassen.

Die beiden Bilder oben zeigen die Platine von der TOP und der BOTTOM Seite. Der nächste Schritt besteht darin, die Komponenten entsprechend der Planung zu bestellen und danach zu bestücken.

Die Bestückung erledige ich per Hand mit einem, für die SMD-Komponenten geeigneten Lötkolben mit entsprechend kleiner Spitze. Für die ganz kleinen Teile, wie den BME280 Sensor, kommt auch noch ein Mikroskop, bzw. eine Mikroskop Kamera zum Einsatz.

Wie die Platine nach der Bestückung aussieht, zeigen die beiden Bilder oben. Das folgende Foto zeigt den Größenunterschied des fertigen Loggers mit dem aufgesteckten GPS Modul im Vergleich zum alten „Wetterfrosch“Nach der Fertigstellung der Hardware, geht es nun an die Software. Die habe ich praktischer Weise mit dem Arduino IDE Tool gebastelt und per AVRISP mk2 über ISP auf den Controller geflashed. Um den AVRISP auf einem Windows 10 Rechner zum Laufen zu bekommen, muss ein geeigneter Treiber installiert sein. (hier hilft libusb-win32-1.2.6.0)

Programmcode mit der ArduinoIDE erstellt
Controller mit AVRISPmkII geflashed

Auf der SD-Karte wird nach Anlegen der Versorgungsspannung und nach Betätigen des Tasters die Datenaufzeichnung gestartet. Die Messwerte werden im Sekundentakt geschrieben. Wenn, wie in diesem Beispiel der GPS-Sensor gesteckt ist, so werden auch die GPS Daten mit aufgezeichnet. Die Software zeichnet auch auf, wenn der GPS Sensor noch keinen „fix“ hat. (Da in dem Beispiellog unten noch kein GPS-Fix vorhanden war, sind auch keine gültigen GPS Daten enthalten.)

Beispiel des Datenlogs:

Luftdruck962.41
Luftfeuchte37.05
Temperatur26.96
-----------------------------
$PGACK,103*40
$PGACK,105*46
$PMTK011,MTKGPS*08
$PMTK010,001*$GPGGA,235947.799,,,,,0,00,,,M,,M,,*71
$GPGLL,,,,,235947.799,V,N*73
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,00*79
$GPRMC,235947.799,V,,,,,0.00,0.00,050180,,,N*48
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPGGA,235948.799,,,,,0,00,,,M,,M

-----------------------------
Luftdruck962.39
Luftfeuchte36.72
Temperatur26.95
-----------------------------
Luftdruck962.43
Luftfeuchte36.66
Temperatur26.97
-----------------------------

CO2-Messung mit SCD30, Arduino und Matlab

Dieses Projekt – eigentlich Miniprojekt – könnte vielleicht auch für den einen oder anderen interessant sein. Es handelt sich um den mittlerweile bekannten und häufig verwendeten Kohlendioxid Sensor SCD30 (CO2-Sensor) des Herstellers Sensirion. Es gibt etliche Projekte die man dazu im Netz findet. Im Rahmen eines schnellen Testaufbaues habe ich versucht, die Daten des Sensors mithilfe eines Arduino Uno Boards auszulesen, um sie dann mit der Software Matlab in einem Plot darzustellen. Die Datenübertragung erfolgt über die Serielle Schnittstelle bzw. über serielles Protokoll des USB-UART.

Um den SCD30 am Arduino anzuschließen, benötigt man die Spannungsversorgung und den I²C Datenbus – also in Summe gerade einmal vier Drähte. Damit ist die minimale Konfiguration erfüllt und die Daten können ausgelesen werden.

Der Sensor selbst arbeitet nach dem Prinzip der NDIR Technologie.  (NDIR = non-dispersive-infrared). Das bedeutet, der Sensor ist also ein kleines Spektrometer. Hierbei wird das zu untersuchende Medium in eine Probenkammer geleitet. Die Probenkammer wird von einer Infrarotquelle durchleuchtet und das IR-Licht durchstrahlt das Medium und einen sehr schmalbandigen Wellenlängenfilter und trifft dann auf den IR-Detektor auf. Die Wellenlänge des Filters ist dabei so ausgelegt, dass genau diejenigen Wellenlängen durchgelassen werden, die von den Molekülen des Mediums (Gases) absorbiert werden. Je nach Anzahl der Moleküle, oder Dichte des Gases, werden entsprechend weniger Lichtstrahlen vom Detektor erkannt.  Eine zweite Messkammer, die mit einem Referenzgas gefüllt ist, dient dabei als Referenz. Ein Controller am Sensor wertet diese Informationen aus und gibt sie in Form von ppm über die I²C (oder umschaltbar auch MOD-Bus) Schnittstelle weiter. Zusätzlich befindet sich auch ein Temperatur und Luftfeuchtesensor am Board, deren Daten ebenso über den Bus ausgelesen werden können. Die voreingestellte I²C Adresse des SCD30 ist 0x61. Die genauen Informationen zum Datenprotokoll sind in den Dokumentationen der Firma Sensirion zu finden.

Idealerweise gibt es, wie fast immer, schon eine fertige, studententaugliche Library für die diversen Microcontroller. So braucht man sich keine Gedanken mehr zu machen und kann die Daten des angeschlossenen Sensors direkt auslesen. Die Beispielprogramme findet man unter den Examples der Libraries.

electrical specifications

Für die Versorgungsspannung des Sensors kann der Arduino mit 3.3V oder 5V dienen. Vorsicht ist jedoch geboten, wenn man den I²C Bus, verwendet: Hier ist der Input High-Level mit 1,75-3.0V festgelegt und der Output High Level mit max. 2.4V. An einem Arduino sind die Pegel aber 5V!! Also muss hier ein Levelshifter eingebaut werden – oder zumindest, für einen schnellen Test geeignete Widerstände.

Der hier angeführte Programmcode stammt im Wesentlichen aus dem Beispiel der Library von Nathan Seidle von SparkFun Electronics:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
By: Nathan Seidle SparkFun Electronics  
Library: http://librarymanager/All#SparkFun_SCD30  
*/

#include <Wire.h>
#include "SparkFun_SCD30_Arduino_Library.h" 
SCD30 airSensor;

void setup()  
{
  Wire.begin();
  Serial.begin(9600);
  //Serial.println("SCD30 Example");
  airSensor.begin(); //This will cause readings to occur every two seconds
}

void loop()  
{
  if (airSensor.dataAvailable())
  {
   // Serial.print("co2(ppm):");
   
    Serial.print(airSensor.getCO2());

    //Serial.print(" temp(C):");
    Serial.print(",");
    Serial.print(airSensor.getTemperature(), 1);

   // Serial.print(" humidity(%):");
    Serial.print(",");
    Serial.print(airSensor.getHumidity(), 1);

    Serial.println();
  }
  else
    //Serial.println("No data");

  delay(500);
}

 

Mit diesen Codezeilen im Arduino Uno und der korrekten Verdrahtung (SDA -> an Arduino A4 und SCL -> an Arduino A5 über einen geeigneten Pegelwandler) geht’s dann mit Matlab weiter. Der Arduino sollte jetzt in einem seriellen Terminal folgende Zeilen ausgeben: (Beispiel)

473,28.5,12.9
473,28.5,13.0
470,28.5,13.1
469,28.5,12.9
466,28.5,12.9
465,28.5,12.7
465,28.5,12.5
463,28.6,12.6
461,28.6,12.5
463,28.5,12.4 … und so weiter

Diese gilt es nun in Matlab einzulesen und über einen definierbaren Zeitraum aufzuzeichnen und gleichzeitig in einem Plot darzustellen. Das Matlabskript hier macht es möglich… (pn falls es jemand benötigt)

Als Ergebnis erhält man dann einen Plot, der den CO2 Verlauf im Raum (in dem Fall am Schreibtisch meines Büros) darstellt.

 

 

Amiga – Genlock Kabel

Vor einiger Zeit habe ich über das Amiga Genlock „VESONE“ einen Beitrag verfasst. Der ist unter dem Titel „Amiga und Genlock“ zu finden. (link)

Es gibt anscheinend doch noch einige Leute, die ein solches Gerät besitzen und es wieder in Betrieb nehmen möchten. Da aber, so wie auch bei mir, die notwendigen Kabel, Software etc, nicht unbedingt dort gelagert sind, wo auch das Gerät ist, kann es schwierig werden. Ich dachte mir zwar, dass es keine Rolle spielt, denn wofür gibt es denn das Internet – doch weit gefehlt. Man findet nichts. Das habe ich jetzt gemerkt als mich ein Blogbesucher nach dem Pinout des RGB zu Genlock Kabel gefragt hat. Ich habe nichts im Netz gefunden. Doch tief in den Schachteln im Keller in diversen Kabelkisten hatte ich Glück. Das Kabel tauchte auf. Um die Steckerbelegung nun auch mit andrern Retrofans zu teilen habe ich die Pinbelegung heraus gezeichnet und stelle sie hier online.

Hier also die Bilder und das Pinout (Amiga_VESGenlock_Cable)

Das zweite Buch zum Blog

Nach dem großen Erfolg meines ersten Buches zum Retroblog, habe ich mich nun durchgerungen und ein zweites Buch verfasst – NEIN SPASS – es gab gar keinen Erfolg. Das Buch habe ich damals verfasst, um für mich selber ein in Papier gedrucktes Werk meiner (Un)taten dieser Website in Händen zu halten. Denn erstens ist es wesentlich praktischer, einmal schnell was nachsehen zu können – ohne immer ein Internet zu Verfügung zu haben und zweitens: was wenn der/die Server nicht mehr erreichbar sind, oder gelöscht werden, oder gar abbrennen? Oder noch schlimmer, wenn jemand das Internet löscht… 😀

Ich dachte mir damals zwar, es über eine „Druck on Demand“ Option aufzulegen, aber wer weiß ob das irgendjemanden interessiert und ob ich das überhaupt so einfach darf. Und wer würde dafür auch so viel Geld ausgeben. Denn die Einzeldrucke sind auch ganz schon kostenintensiv. Also sind die hier Vorgestellten, gedruckten Exemplare quasi Unikate. Und ich bin auch ein bisschen stolz darauf, denn es steckt doch einiges an Arbeit drinnen.

Also nun gibt es das Retrobuch Nr.2 mit der Fortsetzung der Blogeinträge vom Ende der ersten Version bis zum Eintrag „Schukosteckdose mit USB (reparieren)“ vom 19.Dezember 2020 und das sind immerhin wieder 96 „Geschichten“ die diesmal 498 Seiten belegen. Auch für diesen Druck habe ich wieder „epubli“ gewählt und dort bestellt. Das hat den Vorteil, dass ich, sollte ich noch einen Druck eines der bestehenden Bücher haben wollen, einfach nur wieder auf „bestellen“ klicken muss, da ja alle Produktionsdaten bereits vorhanden sind.

Ich habe auch einiges dazu gelernt, was die Formatierung der Texte, Fonts, Schrittgrößen und Verzeichnisse betrifft. Die Bilder sind jetzt mit einer höheren Auflösung gedruckt und es sieht alles in allem besser aus.

So bleibe ich dran und werde in ein paar Jahren, wenn wieder genug Content verfasst ist, wieder an einer Ausgabe basteln.

Tomy Racing Cockpit – die elektrische Verkabelung

Aufgrund einiger Anfragen betreffend der elektrischen Verkabelung des Tomy-Racing-Cockpit, habe ich mich mal dazu gesetzt und die Verdrahtung herausgezeichnet. Es gibt scheinbar doch viele Altersgenossen, die in ihren Kellern, Dachböden etc. noch Spielzeug aus den 80iger finden und es wieder reparieren. Bei dem Tomy Cockpit kommt es immer wieder vor, dass die dünnen Drähte schon beim Zerlegen abbrechen oder die Lötstellen nicht mehr halten, oft haben sich auch vergessene Zellen im Batteriefach aufgelöst und die Kontakte und Lötstellen sind daraufhin korrodiert.

Eine Skizze der Verdrahtung habe ich in der folgenden Abbildung dargestellt.

Ich verwende übrigens nur zwei 1.5V Zellen, da die in dem Batteriefach vorgesehene Parallelschaltung von je zwei Zellen ein Nonsens ist, da die Zellen garantiert unterschiedliche Innenwiderstände haben und sich so auch bei Nichtverwendung gemütlich gegenseitig entladen.

Um meine in der Skizze dargestellten Komponenten auch im Racing Cockpit identifizieren zu können, habe ich sie auch fotografiert.

Das ist die Rückseite des „Schalters“ der das Zündschloss des Cockpits darstellt und mit dem das System eingeschaltet wird.

Dieses Teil habe ich „Unterbrecher“ genannt, da es ein Öffnerkontakt ist, der von einem kleinen „Zahnrad“ ausgelöst wird und dadurch ein Blinken der Trommelbeleuchtung bewirkt. Das passiert, wenn man die „Straße“ verlässt.

Das sind die Anschlüsse des Batteriekasten. Ob die Farben der Drähte bei allen Ausführungen gleich sind, bezweifle ich. Denn bei den Geräten, die ich mittlerweile wiederbelebt habe, waren unterschiedlichste Drahtfarben verbaut.

Mit diesen Informationen sollte es nun etwas einfacher sein, die abgerissenen Drähte und Lötstellen wieder herzustellen.

 

Aufräumen und Archivieren

Hinter dem, in der Beitragsüberschrift genannten Titel versteckt sich meine Idee, in dem „ingmarsretro“ Blog einmal etwas Ordnung zu machen und ein wenig aufzuräumen. Mit „Aufräumen“ meine ich, die einzelnen Beiträge wieder mal auf Rechtschreibfehler zu prüfen, vielleicht auch den einen oder anderen Beitrag neu zu formatieren und ihn auch zu ergänzen. Darum wird es im Jänner 2021 auch keinen anderen Beitrag geben.

Es haben sich auch reichlich neue Beiträge angesammelt, die zwar digital auf dem Server gesichert sind, jedoch eine Papierform davon gibt es noch nicht. So will ich alle Posts, die seit der letzten Sicherung entstanden sind, wieder in Form eines Buches zu Papier bringen. Und das ist leider nicht ruck-zuck gemacht, sondern bedarf einiges an Arbeit. Der Beruf und die „Familienzeit“ mit meinem kleinen Sohn erlauben es nur, meistens nachts an den Beiträgen zu arbeiten. Und zwischen den Beiträgen bastle ich ja auch an den Projekten (Projekt’chen), über die ich dann ja schreibe. Davon habe ich auch noch viele im Kopf, die vielleicht einmal realisiert werden. Und dann gibts noch einige, an denen ich arbeite und die noch fertiggestellt, oder zumindest daran weitergearbeitet werden soll.

So bastle ich seit den letzten Monaten an einer Nixie-Uhr, die ziemlich diskret aufgebaut werden soll. Die Uhr hat mittlerweile auch einen vernünftigen Status erreicht, so dass hier Platinen vom selber geätzten Prototyp bis zum vernünftigen, industriell gefertigten Zustand, entstanden sind.

der NixieUhr Prototyp

Auch der „Röhrenradioempfänger“ mit dem ich vor einigen Jahren begonnen habe, wartet darauf, dass daran weitergebastelt wird.

Das Thema Retro Computer lässt mich natürlich auch nicht los. Hier sind ein paar Geräte noch zu restaurieren und warten darauf, wieder zum Leben erweckt zu werden. (Hier fällt mich gleich ein: ich suche eine RUN/STOP Taste für einen Commodore Plus 4 – würde mich freuen, wenn irgendein Leser da helfen könnte…)

auf der Suche nach einer RUN/STOP Taste

Das Projekt mit der MOS8501 CPU als Lattice – FPGA – Miniplatine steht auch in der „Weitermach-Warteschlange“ hier gibts noch einiges zu tun (Die Levelshifter tun noch nicht so, wie sie sollen, der VHDL Code muss noch weiter angepasst werden, die Prototypen Platinen müssen auf ein Board zusammengefasst werden und dann auch noch miniaturisiert werden…) ist also auch noch genug zu tun.

Dann gibt´s auch noch alte Geräte, die ich hier im Blog vorstellen möchte und noch etliche Reparaturen, die mir immer wieder in die Hände fallen… Auch das eine oder andere HomeMatic-Gebastel steht noch an.

Auch habe ich mit dem Gedanken gespielt, Content hier aus dem Blog in Form von Videos auf YouTube zu veröffentlichen. Aber ich kann zum einen nicht abschätzen, ob das jemanden interessiert und ob ich mir das antun möchte, meine Visage vor der Kamera zu präsentieren. Wahrscheinlich wäre es sinnvoller, es mit einem didaktisch begabteren Menschen als Protagonisten zu machen. Und das natürlich für Lau, als Spaß an der Sache. Andererseits gibt es hier ja etliche Youtuber, die hier sehr erfahren (z. Bsp.: Dave Jones mit seinem EEVblog, NoelsRetroLab, Adrians Digital Basement, GreatScott, ZeroBrain, JanBeta, etc.)  sind und das schon lange betreiben. Auch nicht zu vernachlässigen ist der immense Aufwand, solche Filmchen zu Produzieren. Wenn ich hier meine Aufbauvideos betrachte: So geht fast ein Tag für das Aufnehmen des Rohmaterials beim Zusammenlöten des jeweiligen Bausatzes drauf und zusammengerechnet fast drei Tage für den Schnitt und Nachbearbeitung. Mal sehen ob daraus einmal etwas werden kann…

 

 

 

Schukosteckdose mit USB (reparieren)

Dank dem USB Standard ist es heute einfach, seine Mobiltelefone, Tablets, Arduinos, Raspberry PI´s, Zahnbürsten, Power Banks etc., etc., mit ein und demselben Ladeadapter oder auch Steckernetzteil zu betreiben oder aufzuladen. Das „Steckernetzteil“ ist ein AC/DC Wandler, der im Idealfall die Netzseite mit den 240VAC/50Hz unter Einhaltung der geltenden Vorschriften von der Niedervolt-Gleichspannungsseite galvanisch trennt.  Die Niedervoltseite stellt dabei über eine USB-A Buchse die 5VDC zur Verfügung. Je nach Modell und Herkunft sind maximale Ströme von 1A bis zu ca. 2A zu entnehmen.

Durch die Vielzahl, der in den Haushalten vorhandenen USB versorgten Geräte, sind auch etliche dieser Steckernetzteile vorhanden. Zum Betrieb benötigt man nun für das Steckernetzteil logischerweise auch eine Steckdose der Hausinstallation um das Netzteil auch mit dem EVU Netz zu verbinden. Sind nun mehrere USB Geräte im Betrieb, oder besser – im Ladebetrieb, sind so schnell einige der Steckdosen im Haushalt belegt und für wichtigere Geräte, wie Kaffee Maschinen und dergleichen fehlt dann die Energieversorgung…

So kamen einige Hersteller auf die Idee, in eine Schuko Steckdose, die zum Einbau in einen Wandauslass konstruiert wurde, ein USB konformes Netzteil mit entsprechender USB Buchse zu integrieren, ohne dass der Platz für die Schuko Steckdose verloren geht.

Diese Steckdosen mit integriertem USB-Netzteil sind jetzt auch nichts Neues und daher schon einige Jahre am Markt. Natürlich musste auch ich damals solche Steckdosen einbauen, denn sie sind wirklich äußerst praktisch. So – nun sind natürlich die Jahre vergangen und die Lebensdauer der, in den Steckdosen eingebauten, Netzteile neigt sich dem Ende und sie fallen aus. Genauer gesagt liefern sie keine 5V Versorgung mehr.

keine Spannung mehr am 5V Ausgang

Da ich jedoch nicht gleich alles wegwerfe und gegen Neues ersetze – die Steckdosen waren damals auch teuer – war mein Plan, den Fehler zu suchen und sie nach Möglichkeit zu reparieren. In diesem Fall handelt es sich um eine Steckdose von Busch-Jaeger der Type 20EUCBUSB-214-500 die nun ihre Funktion verweigert. Das Netzteil soll im Standby Betrieb ca. 100mW benötigen und es kann bei5VCD einen maximalen Strom von 700mA abgeben.

Nach dem Ausbau der Steckdose war sie auch schnell zerlegt. Der an der Rückseite angebrachte Kunststoffdeckel wird über Rastnasen in seiner Gegenseite gehalten. Jetzt kam eine Platine zum Vorschein, die sich einfach herausziehen lässt. Die Kontaktierung zur Netzseite und auch die zur USB-Buchse wird über Federkontaktstifte realisiert. Hier sei gleich erwähnt – sie fallen schnell heraus. Darum sollte man die Steckdose immer mit der Rückseite nach oben bearbeiten. So erspart man sich das lästige Suchen nach den kleinen Stiftchen.

Deckel entfernt
Steckdose ohne Netzteil-Platine

 

Als die Platine nun aus ihrem Gehäuse befreit war, offenbarte sich auch gleich zumindest ein Problem, das den Ausfall des Netzteils erklärt. Ein kleiner Chip auf dem Board hatte ein Loch, das dort definitiv nicht hingehört. Die ihn umgebenden Bauteile wiesen auch Schmauchspuren auf. Dank einer funktionierenden weiteren Steckdose dieser Baureihe konnte ich das IC identifizieren.

Netzteilplatine
das Loch im IC gehört da nicht hin
„Schmauchspuren“ am Widerstand

 

Es handelt sich um einen LNK614DG der Serie Link Switch-II von PowerIntegrations. Es ist ein kleiner ALL-IN-ONE IC, der den Leistungs FET, den Oszillator und die Regelung über eine Feedbackwicklung des Transformators integriert hat. Die Leistungsangabe laut Datenblatt liegt bei 3.5W eingebaut in ein geschlossenes Gehäuse und bei 4.1W im open Frame oder belüfteten Zustand.

„typical“ application – Quelle: Datenblatt https://ac-dc.power.com/products/product-archive/linkswitch-ii/

Der Chip benötigt also nur wenige periphere Bauteile, was in diesem Fall auch die Suche nach weiteren Fehlern erleichtertere. Netzseitig ist ledig die AC-Gleichrichtung und Glättung sowie die Line-Filterung notwendig. Diese Komponenten waren auch in Top Zustand und funktionierten. Dann gibt´s nur mehr den Transformator mit seiner Primar-, Sekundär- und Feedbackwicklung, die sekundäre Gleichrichtung und Glättung und ein paar Widerstände die als Teiler geschaltet sind. Bei all diesen Bauteilen war kein Fehler festzustellen. Also – who dares wins – den IC bestellt und getauscht – und Bingo – die 5V stehen wieder am Ausgang an und lassen sich auch belasten.

der neue Chip vor dem Einbau 🙂