btc_steckboard | Bildnachweis: Dirk Hahn IT-Services

BitCoin Chart mit WEMOS D1 mini

Seit einiger Zeit versuche ich die aktuellen Kurse für BitCoin im Auge zu behalten, um günstige Zeitpunkte für eventuelle Zukäufe oder Verkäufe ausmachen zu können. Was ich mir dafür wünschen würde wäre ein kleines Gadget, dass mir die Kurse direkt anzeigt und eventuell ein Chart schreibt, wie der Tagesverlauf des BTC-Kurses in Dollar ist. US-Dollar deswegen, weil dies einfach eine internationale Referenzwährung ist, die auch auf anderen Charts gerne verwendet wird. Was liegt also näher, als sich ein kleines Gadget dafür selbst zu bauen.

Im Netz gibt es mehrere Seiten, die aktuelle BitCoin-Kurse listen. Einige davon haben auch eine API (Advanced Programmer Interface), die man zum direkten Auslesen der Daten nutzen kann. Allerdings reagieren diese kostenlosen APIs gerne mal allergisch und verweigern den Zugriff, wenn man sie zu häufig kontaktiert. Das Gadget hier nimmt daher nur alle 5 Minuten den aktuellen Kurs bei coingecko.com ab. Aus meiner Sicht und für meinen Bedarf absolut ausreichend.

Bauteile und Aufbau

Beim Griff in die Elektronikkiste war der WEMOS D1 mini schnell als zentrales Bauteil für dieses Vorhaben ausgemacht. Er hat WLAN an Board, ist gut am Markt verfügbar und entsprechend gut dokumentiert ist er ebenfalls.

Als Display für die Anzeige verwende ich ein 1.8Zoll TFT-Farbdisplay, was mir für die Darstellung vollkommen ausreicht.

Ein Vorteil, den das WEMOS Board liefert, sind die Spannungsversorgung mit 3.3V auch für das Display und die Möglichkeit, direkt über den USB-Stecker programmieren zu können. Es bedarf keines Level-Shifters und die serielle Kommunikation ist direkt auf dem Board mit implementiert.

Die Verkabelung der Bauteile ist nicht besonders schwierig, weshalb sich das Projekt durchaus als Einsteigerprojekt eignet. Wer nicht unbedingt jedes Detail des Programmcodes verstehen muss, sondern das Tool einfach nutzen möchte, kann dies tun. Der Code ist „plug and play“, wenn die Arduino Programmierumgebung eingerichtet ist.

Die Beschreibung wie diese eingerichtet und installiert werden muss, spare ich mir an dieser Stelle, weil es genügend Anleitungen dafür im Netz gibt (google is your friend). Wichtiger Hinweis: ich nutze die Arduino IDE in der Version 1.8.19. Diese ist unter Ubuntu/Linux derzeit als Standardpaket vorgesehen und funktioniert für meine Bedürfnisse einwandfrei.

Bauteilliste

  • Den WEMOS D1 mini mit ESP8266 oder ESP12F Chip
  • 1.8 Zoll TFT-Farb-Display (hier sogar mit SD-Kartenleser)
    • Bezugsquelle: Eckstein-Shop
    • technische Daten:
      • 1.8 Zoll TFT LCD Display Modul 8 Pin (ST7735S) 128×160 SPI für Arduino mit SD-Kartenslot
      • Typ: TFT
      • Treiberchip: ST7735S
      • Auflösung: 128*160 (Pixel)
      • Anzeigefarbe: RGB 65K Farbe
      • Modulschnittstelle: 4-Draht-SPI-Schnittstelle
      • Aktive Fläche (AA-Fläche): 28,03 x 35,04 (mm)
      • Modul-PCB-Größe: 34,5 x 58,0 (mm)
      • Betriebstemperatur: -20℃~60℃
      • Lagertemperatur: -30℃~70℃
      • VCC-Versorgungsspannung: 3,3 V ~ 5 V
      • Logik-IO-Portspannung: 3,3 V (TTL)
      • Gewicht (mit Verpackung): 17 (g)
  • 120 Ohm Widerstand (nicht zwingend erforderlich)
  • 4 Schrauben M3x20
  • 4 Muttern M3

Achtung! Der Widerstand wird benötigt, wenn das Display für die Hintergrundbeleuchtung keinen eigenen Vorwiderstand hat. Werden solche Hintergrundbeleuchtungen direkt an den Microcontroller angeschlossen, kann eventuell der Controller-Port oder die Beleuchtung durchbrennen.

Das von mir hier beschriebene Display hat den Widerstand bereits integriert und es bedarf daher keines externen Widerstandes.

Aufbau

Der Aufbau der wenigen Bauteile ist auf einem Steckboard schnell erledigt:

PIN-Belegung zwischen WEMOS und DISPLAY für den nachfolgenden Code:

TFT-Display-PinBedeutungWemos D1 mini Pin
VCC+3.3V Stromversorgung3V3
GNDMasseGND
SCL / SCKSPI-ClockD5 (GPIO14)
SDA / MOSISPI-DatenD7 (GPIO13)
RES / RSTResetD2 (GPIO4)
DC / RS / A0Daten/Command-SelectD1 (GPIO5)
CSChip-SelectD8 (GPIO15)
LED / BLHintergrundlichtD3 (GPIO0) 3V3**

Quellcode

Der Quellcode hat die Besonderheit, dass ich a) den SD-Kartenslot nicht nutze und b) einen NTP-Server abfrage, um die Uhrzeit im Display mit anzuzeigen. Das ist zwar keine zwingende Notwendigkeit, ist aber als Feature ganz nett.

Außerdem hat der Code einen Werbserver / Hotspot mit integriert. Man muss also sein WLAN Passwort und die SSID nicht hart im Code hinterlegen, sondern kann dies über den Hotspot eintragen und speichern. Dazu einfach bei der ersten Inbetriebnahme mit dem Handy oder Computer via WLAN auf das WLAN mit der SSID „BTC-CHART“ verbinden. Das Passwort hier im Code lautet „btcsetup“. Beides kann über die Variablen

const char* hotspotSSID=“BTC-CHART“;
const char* hotspotPASS=“btcsetup“;

jederzeit angepasst werden.

Bei Eintragen der WLAN-Credentials für das heimische WLAN habe ich das feld für die Passworteingabe im Klartext belassen. Wer seine Credentials über das Handy eingibt, kann so besser sehen, was er dort tippt.

Wer die Zugangsdaten im EEPROM wieder löschen will, kann dies hinterher im WLAN tun. Dazu einfach ungültige Werte in die Felder des Webclients eintragen und speichern.

Wenn der Connect ins heimische WLAN einmal funktioniert hat, ist das Gerät unter der IP-Adresse, die auf dem Display angezeigt wird, per http erreichbar. Wird auf dem Display z.B. die Adresse 192.168.178.99 angezeigt, reicht der Aufruf im Browser http://192.168.178.99, um die Setup-Seite wieder anzuzeigen und ggf neue WLAN-Zugangsdaten einzutragen.

Der große Block an Steuerzeichen der Variablen myImage[16*16] erzeugt ein farbiges BitCoin Logo im Format 16x16Pixel. Dies wird im Code rechts unter der Währung USD platziert. Zu erwähnen ist, dass dieser c-array hier im Bereich PROGMEM (Programmierspeicher) und nicht im RAM des Chips gespeichert wird. Der ESP8266/ESP12 hat nicht so viel RAM, deswegen wird dieser Teil des Codes in den anderen Speicherbereich ausgelagert, um Abstürze und ständiges Neustarten des Controllers zu vermeiden.

Das Chart und der aktuelle Preis für BitCoin in USD wird bei steigenden Kursen in Grün, bei fallenden Kursen in Rot dargestellt. Jetzt aber Genug der Erläuterungen. Hier nun der vollständige und lauffähige Code:

Wer das BTC-Chart nicht nur auf dem Steckboard betreiben möchte, kann sich auch ein kleines Gehäuse dafür drucken und die Verkabelung entsprechend verlöten.

3D-Druck und .STL-Datei

Für den 3D-Druck nutze ich einen Prusa MK4 Drucker und PETG-CF Fillament. Das -CF steht dabei für „Carbon Fiber“, also PETG mit Kohlefaser-Anteilen. Das Material lässt sich sehr gut drucken und ist enorm stabil. Derzeit nutze ich dazu das PETG-CF von TINMORRY, bestellbar z.B. bei AMAZON.

Wer das Gehäuse bearbeiten will, kann dies über TinkerCAD gerne machen. Das Gehäuse ist nicht sonderlich komplex und ebenfalls für Einsteiger geeignet. TinkerCAD richtet sich auch an Einsteiger des 3D-Drucks. Ein Account dort ist kostenlos und lohnt sich.

Der direkte Link:

https://www.tinkercad.com/things/eB75U1TZ2ST-btc-chart-gehause?sharecode=AuYsBv6O1YPfPBP53Wr4mxN7_xOqz5UVrRFBrJ6FAM4

Wer eine .STL-Datei zum Slicen benötigt, findet diese hier zum Download.

Viel Spaß beim Nachbauen!

Der Artikel wurde unter der Lizenz CC4 veröffentlicht und erlaubt die Nutzung und Weiterverarbeitung unter der Nennung des Autors. Das 3D-Modell unterliegt der Lizenzbedingung CC3.