August 18, 2019

IOTA Machine Wallet auf einem ESP32

IOTA Machine Wallet auf einem ESP32

Der Hackster.io Machine Money Contest steht vor der Tür und wir wissen nun dank dem Webinar von Lewis, was Machine Money ist und für was es gut ist.

Was wir aber noch nicht genau wissen, wie wir diese Maschinen “Machine Money Ready” machen, also ihnen die Möglichkeit geben, Geld zu senden und zu empfangen. Ein Maschine muss ein Wallet haben! Wie das genau geht, erklären wir dir in diesem Artikel!

Die IOTA Foundation hat vor kurzem einen Artikel über ein IOTA Wallet auf dem ESP32 Mikrocontroller veröffentlicht.

Wir benutzen hier die Version von TIm Rappe (timrappe#3027), die auf den Code der IOTA Foundation aufbaut, aber die Erstinstallation für uns noch viel einfacher macht.
Viel Spaß beim Basteln!

Der ESP32

https://www.espressif.com/en/products/hardware/esp32/overview

Wir schauen uns in diesem Artikel den ESP32 für Rund 10 Euro etwas genauer an. Der ESP32 ist der mittlere Freund hier auf dem Bild aus dem Machine Money Workshop.

Raspberry Pi, ESP32 und der 

Der ESP32 ist anders als der Raspberry Pi nur ein Mikrocontroller und ist in etwa vergleichbar mit einem Arduino - nur hat der ESP32 viel mehr Power und Funktionalität.

Zum Beispiel bringt er direkt einen WLAN und Bluetooth Chip mit und kann auf diese Weise einfach mit dem Heimnetz kommunizieren. An die GPIO Pins könnt ihr, ähnlich wie beim Raspberry Pi, Sensoren, Schalter oder andere Sachen anschließen.

Der ESP32 kostet rund 10 Euro und kann mit verschiedenen Komponenten gekauft werden. Zum Beispiel einer Kamera oder einem kleinen Display. Achtung! Der ESP32 mit Cam hat keinen USB Anschluss. Ihr müsst euch also ein passendes USB Modul dazu kaufen, um ihn beschreiben zu können.)

ESP32-CAM
ESP32 with e-ink display

Machine Wallet installieren

Im Grunde geht das ganz einfach:

  • Alle benötigten Programme installieren
  • Machine Wallet Software herunterladen
  • Die Software auf den ESP hochladen (flashen)
  • Seed eingeben und Transaktionen versenden

Das ist nur die Theorie... In der Praxis geht das leider nicht immer ganz so reibungslos. Falls bei dir Fehler auftreten und du nicht mehr weiter kommst, kannst du dich gerne bei uns im Discord anmelden und im #hardware Channel nach Hilfe fragen!

Das Ganze wurde bis jetzt mit MacOS getestet. Andere Plattformen folgen in kürze!

Schritt für Schritt Anleitung

  1. Installiere Homebrew (https://brew.sh/index_de), falls du es nicht schon hast. Homebrew ist ein Paketmanager für MacOS, mit dem wir die Pakete für den ESP einfach herunterladen können.
  2. Installiere git, das ist ein Tool zur Verwaltung von Code, damit wir den Quellcode im nächsten Schritt einfach von Github kopieren können.
  3. Öffne dein Terminal und lade das Repository herunter
    git clone https://github.com/magnisinfo/IOTA_ESP32_integration.git
  4. Gehe in den neuen Ordner
    cd IOTA_ESP32_integration
  5. Installiere alle Abhängigkeiten
    ./init
  6. Jetzt wurde bereits einiges installiert. Vergewissere dich, dass auch hier alles ohne Fehler geklappt hat! Falls nicht, versuche den Fehler zu lösen oder finde Hilfe bei uns im Discord. Danach musst du in den Ordner, der den Code für den ESP beinhaltet.
    cd ~/IOTA_ESP32/iota_cclient_esp32
  7. Nun müssen wir den Code noch konfigurieren, damit sich der ESP32 mit dem WLAN verbinden kann. Führe dazu folgendes Script aus.
    ./config
  8. So weit so gut. Jetzt müssen wir den ESP32 mit einem USB Kabel am Rechner anschliessen und flashen. Das Ganze geht recht einfach mit diesem Script
    ./flash
  9. Nun müsst ihr noch den USB Port angeben. In meinem Fall ist das “/dev/cu.SLAB_USBtoUART”. Dazu einfach die Zahl, die vorne steht, eingeben.

Das war's schon! Nach einiger Zeit werdet ihr nach einen Seed gefragt. Dort könnt ihr einen beliebigen Test Seed eingeben, um das Ganze auszuprobieren.

Ihr könnt nun mit dem ESP32 IOTA Transaktionen versenden!

So sieht eine Transaktion im Devnet aus:
https://devnet.thetangle.org/transaction/OGCTFFLELYCLNKY9WBMRMRKOEVACNHWUKIEBCKHNJEUKI9QGFMIWAOG9D9DQKDQPEYBMA9KCAUBGA9999