TinyFPGA BX Bootloader korrupt

Tim Riemann

Kennt ihr das: Ihr freut euch auf ein neues Entwicklungsboard, es kommt an, ihr schaltet es ein, führt das Tutorial durch und… Feierabend… nichts geht mehr. Aber worum geht es überhaupt? Schon während meines Studiums fand ich FPGAs sehr interessant und habe mich auch immer wieder mit der rekonfigurierbaren Hardware beschäftigt, denn, im Gegensatz zu Software, entsteht durch die Textbeschreibung eine richtige Hardware. Da es im Bereich FPGAs bisher nur proprietäre Software gab, interessieren mich natürlich die TinyFPGAs sehr, denn sie setzen auf Open Source Software und Open Hardware.
Ich habe mir deshalb zum testen mal ein TinyFPGA BX Board bestellt und es wurde auch sehr schnell geliefert. Nach dem ersten Einstecken und der Installation der entsprechenden Software unter Linux habe ich dann den Befehl (wir im Tutorial vorgegeben)

tinyfpga –update-bootloader

ausgeführt. Er wurde gestartet, brach aber direkt nach dem Löschen des EEPROMs ab. Der Chip war damit neudeutsch “gebricked” und ließ sich nicht mehr ansprechen. Man muss dazu erklären, dass das EEPROM die Hardwarebeschreibung für das FPGA enthält und natürlich auch den Bootloader.

An dieser Stelle hat man dann zwei Möglichkeiten: man schreibt den Hersteller an und er liefert dann ein neues Modul mit - hoffentlich - aktuellem Bootloader und probiert es dann noch einmal oder man schreibt den neuen Bootloader selbst in das EEPROM. Ich habe mich für die zweite Variante entschieden und möchte hier den Weg kurz beschreiben.

Zuerst musste ich an die Pins für das EEPROM herankommen. Glücklicherweise sind sie beim TinyFPGA auf der Unterseite verfügbar, allerdings nur als Pad. Die einfachste Variante wäre jetzt, ein Kabel an die Pads zu löten. Da aber das Board ggf. auch mal in einem Prototypenboard landen soll, habe ich mir ein kleines Programmierboard gebaut, das so genanne Pogo Pins (Deutsch: Federkontaktstift) zur Kontaktierung verwendet. Das sind kleine Pins, die mit Federn gegen die Kontakte gedrückt werden (siehe Bild).

Pogo Pins - Federkontaktstifte

Pogo Pins auf dem TinyFPGA Programmieradapter

Als nächstes musste noch irgendwie der Bootloader in das EEPROM gebracht werden. Genau für sowas habe ich mir vor Ewigkeiten mal den Bus Pirate von Dangerous Prototypes gekauft. Zusammen mit dem Tool flashrom kann man damit dann EEPROMs neu beschreiben.

TinyFPGA Programmieradapter mit Bus Pirate

Bus Pirate mit Programmieradapter und TinyFPGA BX Board

Anschließend braucht man nur noch das TinyFPGA Board in den Programmieradapter einstecken und mit flashrom das EEPROM neu schreiben. Hat aber leider nicht beim ersten Mal funktioniert, denn das FPGA stört die SPI Kommunikation mit dem EEPROM. Dafür gibt es aber eine ganz einfache Abhilfe: einfach den Reset-Knopf auf dem TinyFPGA Board während der Kommunikation gedrückt halten, das FPGA bleibt dann im Reset Modus und schaltet die Ein- / Ausgänge auf Tristate und die Kommunikation wird nicht gestört. Weitere Informationen zum Flashvorgang und den Bootloader findet man im TinyFPGA Forum.

Übrigens: solltet ihr auch ein Programmierboard zusammenstellen, dann denkt daran, es wenigstens halbwegs zu beschriften. Solltet ihr mal wieder vor dem gleichen Problem stehen müsst ihr nicht erst die Pinbelegung wieder herausfinden.

Ladestation für Bosch E-Bike Akku

Tim Riemann

Seit ein paar Jahren fahre ich mittlerweile mit einem E-Bike zur Arbeit (ja, auch im Winter) und bin, nach wie vor, von meinem Fahrrad begeistert. Da gibt es aber noch etwas, das ich alle 1-2 Wochen mal machen muss - den Akku laden. Bisher lag dafür das Ladegerät in meiner Wohnung und ich habe den Akku dann mit reingenommen und in meiner Wohnung wieder aufgeladen. Das hat aber zwei Nachteile: in der Wohnung liegt ein Ladegerät herum und irgendwie ist das Ganze nicht so besonders toll aufgeräumt.

Bosch Fahrradakku Ladehalterung (noch nicht montiert)

Bosch Fahrradakku Ladehalterung (noch nicht montiert)

Durch Zufall bin ich aber bei Thingiverse über ein tolles Design für eine Ladehalterung für einen Bosch Standard-Fahrradakku gestolpert und habe mir damit eine eigene Halterung gebaut. Die Halterung selbst besteht aus zwei Teilen: einmal der Halterung für den Akku (mit einer Aussparung, damit man den Ladezustand des Akkus ablesen kann) und einer weiteren Halterung für das Ladegerät. Den Akku kann man einfach in die Halterung einhängen und danach das Ladegerät ans Netz anschliessen, um den Ladevorgang zu starten. Das Ladegerät lässt sich bei diesem Design außerdem auch noch relativ einfach entnehmen, sodass man es auf eine längere Tour mitnehmen kann. Beide Teile müssen mit einem 3D Drucker gedruckt werden und benötigen eine ganze Zeit, bis sie gedruckt sind. Das Design ist aber recht unkompliziert und sollte beim Druck keine grossartigen Schwierigkeiten bereiten.

Als Träger für die Ladehalterung kommt bei mir ein Laminatbrett zum Einsatz, das ich noch als Ersatzteil herumliegen hatte. Da die Schrauben auf der Rückseite etwas aus dem Laminat herausragen, habe ich auf der Rückseite noch ein paar dünne Sperrholzplatten als Abstandshalter aufgeklebt, damit auch nichts wackelt, ruckelt oder sich durchdrückt.

Bosch Fahrradakku Ladehalterung (im Keller montiert)

Bosch Fahrradakku Ladehalterung (im Keller montiert)

Mit dem Endergebnis bin ich sehr zufrieden. Der Druck hat zwar lange gedauert, aber die Halterung sieht so gut aus, dass ich sie sogar in meiner Wohnung in einer Ecke an die Wand hängen würde. Vielleicht ist es ja auch etwas für euch…

ESP-01S Relais Board patchen

Tim Riemann

Für ein kleines Projekt, eine Zweitklingel für unsere Türsprechanlage, habe ich mir im Makershop.de ein Relaisboard bestellt, das mit “ESP-01S Relay V1.0” beschriftet ist. Ich wollte mir damit das Verkabeln einzelner Relais Boards ersparen und ein paar alte ESP-01 Boards hatte ich hier sowieso noch herumliegen - also genau das Richtige für das Projekt. Wie ich, nachdem ich das Board erhalten habe, leidvoll feststellen musste, funktioniert es überhaupt nicht und der ESP-01 startet erst gar nicht. Nach ein wenig Sucherei im Netz habe ich dann auch den Schaltplan für das Board gefunden und dabei fällt sofort ins Auge, dass CH_PD nicht mit VCC verbunden ist und was macht überhaupt der 10k Widerstand da, der GPIO0 auf GND zieht? Das ist doch der Bootloader Mode… Also heisst es wohl: das Board muss gepatcht werden, sonst funktioniert es “Out-of-the-box” überhaupt nicht.

Da diese Boards auch noch über AliExpress verkauft werden und damit die Wahrscheinlichkeit hoch ist, dass noch ein paar andere Bastler darüber stolpern, hier zwei Bilder, wie ihr das Board modifizieren müsst, damit es auch bei euch reibungslos funktioniert.

Also erstmal auf der Oberseite des Boards den Widerstand auslöten:

ESP01 Relais Board: Widerstand oben entfernen

…und danach dann noch die zwei Pins (CH_PD und Vcc) miteinander verbinden:

ESP01 Relais Board: unten CH_PD an Vcc

Insgesamt eigentlich ziemliche Anfängerfehler im Design. Passt also auf, dass ihr beim Bestellen nicht auch an diese Boards geratet, sonst ist Handarbeit gefragt, um die beiden Bugs auszumerzen.

Einbau des GD-EMU in die Sega Dreamcast

Tim Riemann

Ich bin ein Retro-Gamin Fan - weiss ja wahrscheinlich jeder, der hier mal sporadisch reinschaut und dementsprechend besitze ich ein paar Konsolen / Homecomputer, die mich über all die Jahre begleitet haben. Zu diesen Konsolen gehört auch die Sega Dreamcast - ein tolles System, das leider etwas unter Wert geschlagen ist und bedauerlicherweise auch die letzte Konsole von Sega darstellt. In all den Jahren habe ich mal dafür programmiert (ich habe hier ein Coders Cable) oder auch einen Modem-Emulator mit dem Raspberry Pi gebaut, um mit der Konsole wieder online zu spielen. Es wird also Zeit, die Konsole wieder ein wenig umzubauen. Dieses Mal ist das GD-ROM Laufwerk dran.

Dreamcast mit GDEMU

Das Laufwerk hat die üblichen Probleme von CD-Laufwerken: Durch den Alterungsprozess kann die Linse eintrüben oder der Laser kaputt gehen. Glücklicherweise gibt es findige Bastler, die mittlerweile einen Emulator gebastelt haben, den GD-EMU, mit dem man das Laufwerk ersetzen kann. Die Spiele müssen dazu allerdings als Image auf einer SD-Karte vorliegen. Wie man so ein Image erstellen kann, könnt ihr in den gängigen Dreamcast Foren erfahren. Dank meines Coders Cable, konnte ich meine Spiele tatsächlich selbst in ein Image packen :-).

Ok… Los geht’s… Eins gleich vorweg: der geniale Aufbau der Sega Dreamcast macht den Tausch einzelner Komponenten sehr, sehr einfach. Hier kann auch jemand, der zwei linke Hände hat, eigentlich nichts verkehrt machen. Zuerst wird also die Sega Dreamcast mit vier Schrauben auf der Unterseite geöffnet und der Gehäusedeckel entfernt. Im Inneren werden die 3 Schrauben gelöst, die das GD-ROM halten, das dann ganz einfach entnommen werden kann. Behaltet die Schrauben auf jeden Fall für den GD-EMU über, denn hier werden sie wieder benötigt.

Dreamcast geöffnet mit GDROM Dreamcast geöffnet, GDROM ausgebaut

Ich habe zusätzlich mir noch eine Halterung für den GD-EMU selbst gedruckt, die ein paar Steckplätze für SD-Karten beinhaltet. Ihr findet sie auf Thingiverse: Sega Dreamcast GD-EMU SD Card Tray. Solltet ihr keinen 3D Drucker besitzen, könnt ihr auch einen der vielen 3D Druck Dienstleister verwenden - All3dp stellt dafür eine ganz nette Suchmaschine zur Verfügung oder schaut einfach mal bei eurem örtlichen Makerspace vorbei.

Die Halterung wird mit den 2 der drei Schrauben wieder samt GD-EMU wieder eingebaut. Beim GD-EMU liegt außerdem noch eine weitere, längere Schraube bei, die ihr vorne verwendet. Das Ganze sollte dann so aussehen:

Dreamcast geöffnet, GDEMU mit 3D Druck eingebaut

Als letztes wird noch der “Tray” in den Deckel eingebaut. Hierfür einfach das gedruckte Teil in den Deckel drücken. Dazu etwas Kraft aufwenden. Da es nichts zu halten hat, wird hier keine Verschraubung benötigt.

Dreamcast geöffnet, 3D Druckteil im GDROM Tray

Und das war es dann auch schon. Wenn ihr alles richtig gemacht habt, dann könnt ihr eure Sega Dreamcast wieder zusammenschrauben und nach dem Öffnen des Deckels sollte es dann im Inneren so aussehen:

Dreamcast mit fertig eingebauten GDEMU

Sieht doch gut aus. Wie die Einrichtung des GD-EMUs funktioniert (Firmware Updates, etc.), könnt ihr auf der GD-EMU Seite erfahren. Was ich allerdings anmerken möchte ist, dass das Netzteil durch die nicht mehr benötigte 12V Leitung (das GD-ROM fehlt ja jetzt) mehr Wärme produziert - klingt komisch, ist aber so ;-). Deshalb werde ich im nächsten Schritt ein PicoPSU in meine Dreamcast einbauen. Dazu aber demnächst mehr. Wem das zu kompliziert ist, der kann sich mal die DreamPSU anschauen. Ist zwar etwas teurer, dafür aber sehr einfach einzubauen (und hoffentlich auch bald verfügbar ;-)).

Prototypenbau gestern und heute

Tim Riemann

Ideen umsetzen ist eines der Ziele der Make Bewegung. Egal ob man im Bereich Stricken, Holzarbeiten oder Elektronik unterwegs ist - man möchte irgendwie schnell ans Ziel kommen. Da auch die Maker durch die Verfügbarkeit von günstigen Herstellungsmethoden und immer günstiger werdenden Geräten ihre Art und Weise des Prototypenbaus verändert haben, möchte ich einmal kurz vorstellen, wie meine Vorgehensweise mittlerweile aussieht und auch zeigen, wie ich das früher gemacht habe.

Möchte ich heute ein Projekt umsetzen, so starte ich nur noch sehr selten mit einem einzelnen Mikrocontroller, um den ich die Logik auf einer Lochrasterplatine aufbaue, da es viele unterschiedliche Entwicklungsboards gibt, die mir die Arbeit hier stark vereinfachen können. Hier liegt die Arduino Plattform, die ESP8266 und ESP32 Boards aber auch die Discovery Boards mittlerweile weit vorne. Für diese Boards gibt es bereits eine große Community, die sich um Bibliotheken und Anbindung von externen Sensoren, etc. kümmern. Im Idealfall sucht man sich also nur noch ein passendes Modul aus, lädt ein Beispielprogramm herunter und fertig ist der Prototyp.

USBasp: selbstgebauter Programmieradapter

Früher: Lochrasterplatine mit Atmel Mikrocontroller

LoRaWAN Entwicklungsboards

Heute: verschiedene (LoRa) Entwicklungsboards

Reicht die einfache Variante nicht aus, so kann man sich im Bereich von Open Hardware umschauen. In meinem Beispiel habe ich nach einem LoRa Board geschaut, das möglichst flexibel einzusetzen ist, Standardkomponenten verwendet,  stromsparend arbeitet und auch über Batterie betrieben werden kann. Wie so oft wird man hier bei GitHub fündig. Bei diesem Board hatte ich wieder Glück, denn es verwendet wieder ein Standardentwicklungsboard - den Arduino Pro Mini - und lässt sich dadurch wieder ganz einfach programmieren. Findet man kein passendes Board setzt man sich einfach hin und bastelt schnell ein eigenes Platinenlayout. Passende Layoutsoftware gibt es mittlerweile für kleinere Designs umsonst, bspw. EAGLE oder KiCad. In letzter Zeit verwende ich ab und an auch mal das Online-Layoutprogramm EasyEDA.

Open Hardware Board: Mini LoRa von CH2i

Heute: Fertig designtes Open Hardware Board (grün)

Früher habe ich mich dann noch selbst in den Keller gestellt und per Tonertransferverfahren das Platinenlayout auf die Rohplatine gebracht und danach dann in dem selbst gebauten Ätzgerät geätzt. Danach einmal kurz drüberschauen, ob die Leiterbahnen in Ordnung sind, die Löcher für die Bauteile bohren und zum Schluß Leiterbahnen verzinnen.

Erste Platine mit Ätzgerät

Früher: selbstgebautes Ätzgerät

Das das alles sehr umständlich und zeitraubend ist und wir als Maker, wenn wir gerade mal ein paar Stunden in der Woche an unseren Projekten arbeiten, auch zu wenig Zeit dafür haben, dürfte klar sein. Aus diesem Grund bin ich dazu übergegangen, einen der vielen Leiterplattenhersteller zu verwenden, die mir die fertigen Platinen durchkontaktiert, mit Lötstopplack und Beschriftung direkt nach Hause liefern und dank der Konkurrenz aus Fernost bekommt man so als Maker sehr schnell eine sehr gute Qualität, sodass sich das Design eines Prototypen schon lohnt.

Weiter geht’s mit der Bestückung: während man früher eher PTH Bauelemente verwendet hat, verwende ich - wenn möglich - heute ausschließlich SMD Bauteile. Das hat den Grund, das sie wesentlich einfacher zu verarbeiten sind und ich natürlich auch kleinere Boards bauen kann. Mit einer kleinen Spritze mit Lötpaste, werden die freien Pads auf dem Boards “eingeschmiert” und die SMD Bauteile in die Lötpaste gesetzt. Man braucht hier nicht einmal sehr genau zu arbeiten, da der Kapillareffekt und der Lötstopplack der Platine dafür sorgen, dass das Bauteil notfalls auch in Position gezogen wird. Danach geht’s ab in den Reflow-Ofen - wir Maker haben uns dafür Pizza Öfen umgebaut oder einfach einen der günstigen Reflow-Öfen aus Fernost gekauft. Ich besitze einen letzteren und habe ihn erstmal umgebaut: Krepp Band raus und Kapton Band rein, Gehäuse vernünftig geerdet, neue Temperaturreferenz eingebaut und eine neue Firmware eingespielt. Damit kann man dann auch schnell mal ein paar Platinen mehr “backen”.

Platine mit Lötpaste

Heute: bestücktes Board mit Lötpaste und aufgesetzten Bauteilen

Reflowofen für Prototypen

Heute: Platinen backen im Reflow Ofen

Danach überprüfe ich mit einem Mikroskop nochmal den Sitz der Bauteile und ob die Lötstellen soweit in Ordnung sind. Falls nicht, wird nochmal nachgearbeitet und entweder mit einer Reflow Workstation nachgelötet oder mit Entlötsauglitze überschüssiges Lot entfernt.

USB Mikroskop mit Platine

Heute: Sichtprüfung mit Mikroskop - hier zu viel Lot zwischen zwei Kontakten

Das war’s auch schon. Klar, dass ich mittlerweile das ein oder andere Gerät in meiner Werkstatt habe, das ein Anfänger noch nicht haben dürfte - ist halt alles so nach und nach zusammen gekommen, aber dennoch denke ich, dass es nie einfacher war, selbst eigene Schaltungen zu realisieren und das alles für sehr wenig Geld.

Wie sieht bei euch denn die Entwicklung aus? Immernoch Lochrasterplatinen und Kupferlackdraht? Auch schon gefertigte Platinen? PTH Komponenten oder auch schon SMD? Würde mich freuen, wenn ihr mir einen Kommentar hinterlasst und mal schreibt wie ihr das macht.