Bitcoin Lightning ATM – Pocket Edition
Dies ist ein Tutorial für den Bitcoin Lightning ATM – Pocket Edition. Das ist ein "Do It Youself" Projekt, bestehend aus einem Mini Computer (Raspberry Pi Zero), einem Münzprüfer, einen Display, einem Gehäuse aus dem 3D-Drucker und einem Bitcoin Lightning Wallet als Finanzierungsquelle. Der Automat übernimmt die Aufgabe des Geldwechslers. Er tauscht Fiat-Münzen in wertvolle Bitcoin Lightning ⚡ Satoshis 丰. Abholen kann sich der Benutzer die Satoshis per QR-Code (LNURL-withdraw) auf sein Handy Wallet. Es gibt bereits gute Anleitungen, auf die ich später verweise, aber mir fehlte eine Schritt für Schritt Anleitung, speziell für diese Pocket Edition mit Anbindung an ein LNTXBOT Wallet. Die Anbindung an einen BTCPayer Server ist auch möglich, wird hier aber nicht weiter erläutert. Ihr könnt Euch die Komponenten als Einzelteile beschaffen und das Gehäuse selber bauen. Alle notwendigen Daten findet ihr in den Anleitungen, auf die ich später verweise. Ich habe es mir allerdings einfach gemacht und den Bausatz von Fulmo.org bestellt. Im Shop kann man übrigens auch per Bitcoin und sogar Lightning ⚡ bezahlen.
Das ganz LightningATM Projekt beruht auf FOSS (free and open source software) nach MIT-Lizenz. Genauso werde ich hier alle Daten, Bilder und Informationen dieser Website veröffentlichen. Ihr dürft alles alles kopieren, verlinken und nach belieben weiter verwenden. Nur die Garantie und Haftung ist ausgeschlossen.
Ich denke, dass Projekt ist so mittelschwer, für versierte Einsteiger, die bereits Erfahrungen mit dem Command Line Interface (CLI) und dem Raspberry Pi haben. Falls ihr noch nicht so fit darin sein, kann ich als Einstieg das ebenfalls DIY-Projekt BTC-Ticker empfehlen. In dem Projekt werden ähnliche Komponenten und Befehle wie in diesem Tutorial verwendet, allerdings etwas weniger komplex und umfänglich.
1. Grundlagen des Projekts
- Grundlage für dieses Tutorial ist die Hardware, z.B. der Bausatz von fulmo.org:
- https://shop.fulmo.org/product/the-lightning-atm-bitcoin-construction-set/
- Alternativ könnt ihr Euch aber auch die Teile einzeln beschaffen. Hier findet ihr ein Teileliste (englisch).
- Die Software vom Github Projekt: https://github.com/21isenough/LightningATM
Nachfolgend weitere Dokumentation, die man sich anschauen kann, zur Umsetzung aber nicht erforderlich sind:
- Die original LightningATM Dokumentation, für die große Version mit Kamera und Taster:
- https://docs.lightningatm.me/
- Die Anleitung von Fulmo, die speziell für die Pocket Edition erstellt wurde:
- https://blog.fulmo.org/the-lightningatm-pocket-edition/
Empfohlenes Werkzeug:
- Schlitz Schraubendreher, Mulitimeter, Seitenschneider, Doppelseitiges Klebeband (dick/dünn), Isolierband, Spitzzange, Heißleim, Lupe, Lüsterklemmen, Lötkolben (falls vorhanden)
Geht nachfolgende Anleitung einfach Schritt für Schritt durch, dann kommt Ihr am schnellsten ans Zeil.
2. Hardware Vorbereitung
2.1 Spannungswander vorbereiten
- Micro USB Kabel durchschneiden. Ca. 15 cm vom Micro USB Stecker
- Beide Seiten abisolieren und parallel (++ / –) zusammen löten, wenn Lötkolben vorhanden
- Beide Ende auf den Eingang des Spannungswandler verlegen und festschrauben
- USB Stecker an Netzteil oder USB Powerpack anschließen
- Auf der Ausgangsseite ein Spannungsmessgerät anschließen
- Mit einem Schraubendreher das kleine Drehpotentiometer (siehe Bild) mehrfach drehen (vermutlich erst links), bis die Spannung 12,1 Volt anzeigt
Achtung:
Die Anfangsspannung kann sehr hoch sein. Bei mir waren es 35 Volt. Also nicht direkt an den Münzprüfer anschließen und das Messgerät auf den richtigen Messbereich einstellen- Leitugen für die Ausgangsseite vorbereiten:
- Plus und Minus (GND) vom Spannungswandler mit dem Münzprüfer verbinden
- Eine Leitung vom GND des Spannungswandler mit der Klemme 25 des Raspberry Pi verbinden
- Siehe dazu den Verdrahtungsplan unter den Bildern
2.2 Münzprüfer konfigurieren (6 Stück, 5 Cent bis 2 Euro)
- Schalter am Münzprüfer auf "NO" und "Medium" stellen
- Die 12V an den Münzprüfer anlegen (ohne Raspberry Pi)
- Taste ADD und MINUS gleichzeitig drücken und halten, bis A im Display erscheint
- Wenn B erscheint mit einer Taster wieder zu A wechseln
- Die Taste SET drücken und kurz halten, dann erscheint E im Display
- Das zeigt an, dass man jetzt im Menü für die Anzahl der verschiedenen Münztypen ist
- Mit ADD (bzw. MINUS) auf 6 (Münzen = 5 Cent bis 2 Euro) einstellen und SET drücken
- Jetzt steht im Display H1 (für erste Münze) und die erste von 6 LEDs ist angegangen
- Jetzt angeben werden, wie oft die Münze zum Kalibrieren eingeworfen werden soll
- Mit ADD (bzw. MINUS) auf 20 stellen und dann SET drücken
- Im Display steht jetzt P1 für weitere Einstellungen der Münze 1 und man kann das Ausgangssignal definieren
- 5 Cent = 2 Impulse / 10 Cent = 3 / 20 Cent = 4 / 50 Cent = 5 / 10 Euro = 6 / 2 Euro = 7
- Mit ADD (bzw. MINUS) auf 2 Impulse (für 5 Cent) stellen und dann SET drücken
- Als letztes steht F1 im Display und steht für die Genauigkeit der Münzerkennung. Der Wert 8 hat gut funktioniert.
- Mit ADD (bzw. MINUS) auf 8 stellen und dann SET drücken
- Die Parametrierungen für die erste Münze ist damit erfolgt und es müssen die 5 weiteren folgen
- Jetzt ist die zweit LED angegangen und im Display steht H2
- Die gleichen Schritte jetzt noch mal für die zweite Münze bis 6 Münze wiederholen
- Sind alle Coins eingestellt, blinken kurz alle LEDs zur Bestätigung und im Display steht wieder A
- Nach kurzer Zeit steht dort auch wieder 0 (Null) im Display
2.3 Münzprüfer mit Münzen kalibrieren
- Die Taste SET 2x drücken
- Die erst LED Leuchte und A1 steht im Display
- Jetzt die erste Münze (5 Cent) 20x einwerfen
- Es versteht sich hier möglichst viele verschiedene Münzen vom gleichen Typ zu verwenden
- Danach blinken zur Bestätigung alles LEDs und im Display steht A2
- Das ganze für die übrigen Münzen wiederholen
- Alle LEDs blinken wieder kurz zur Bestätigung und es wird wieder 0 (Null) Display angezeigt
- Der Münzprüfer ist jetzt bereit.
2.4 Hardware verdrahten
- Nach Plan (siehe Bilder) die Hardware verdrahten, aber noch nicht in das Gehäuse das ATM einbauen
- Schalter am e-Paper Display HAT auf A und 0 stellen
- Beim einstecken des feinen Display Flachbandkabels ist vorsicht geboten!
- Die Klemmung hat eine kleine Arretierung die vorher gelöst sein muss. Siehe Bild!
3. SD Karte erstellen und mit WLAN Daten beschreiben
3.1 Das Raspberry Pi Image auf SD Karte schreiben
- Das Raspbian Image "2019-04-08-raspbian-stretch-lightningatm.gz" von der Seite LightningATM Docs herunterladen
- https://docs.lightningatm.me/lightningatm-setup/hardware-setup/assembly-and-software
- SD Karten Image mit Balena Etcher schreiben
- https://www.balena.io/etcher/
- SD Karte rausnehmen und beiseite legen
3.2 WLAN am Raspberry Pi einrichten
Eine Datei mit dem Name wpa_supplicant.conf
erstellen, die mit folgend Inhalt beschrieben wird:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE
network={
ssid="Home"
scan_ssid=1
psk="XXXXXXXXXXXX"
id_str="Home"
}
network={
ssid="Mobil"
scan_ssid=1
psk="12345678"
id_str="Mobil"
}
- Die Datei enthält zwei WLAN Netzwerk. Die Home ist für zu Hause und die Mobil für den Unterwegs
- Man kann z.B. ein Hotspot am Handy einrichten und ist mit dem ATM somit auch mobil
- Die Werte für SSID und PSK nach belieben anpassen
- Falls benötigt, können noch mehr Netzwerk hinzugefügt werden
- Achtet darauf, dass die Datei auch auf
.conf
und nicht auf.conf.txt
endet - Windows hat in der Grundeinstellung die Angewohnheit bekannte Endungen von Dateitypen auszublenden
- Siehe dazu "Ordneroptionen/Ansicht/Erweiterte Einstellungen"
- -> "Erweiterungen bei bekannten Dateitypen ausblenden" muss abgewählt sein!
- Die neu beschriebene SD-Karte wieder in den Slot schieben
- -> Es wird wird das Verzeichis BOOT der SD-Karte angezeigt
- Dort die neue Datei
wpa_supplicant.conf
hineinkopieren - Hinweis: Nach dem ersten Starten des Raspberry Pi verschwindet die ".conf" Datei aus dem Verzeichnis
- Editiert werden kann sie nachträglich dann per CLI mit dem Befehl:
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
4. Software Grundeinstellungen und Updates durchführen
- SD-Karte in den Raspberry Pi einstecken
- Verdrahtung noch einmal genau kontrollieren und dann Spannung anlegen
- Eine Zeit lang warten und dann die vergebenen WLAN IP im eigenen WLAN Router suchen
- Login auf Raspberry Pi über CLI:
ssh pi@192.168.x.x
The authenticitiy..
mityes
bestätigen- Bei der Passwortabfrage "raspberry" eingeben
- Wenn ihr korrekt eingeloggt seit seht ihr jetzt:
pi@raspberrypi:~ $
Passwort anpassen und bitte merken!
$ passwd
- Hinweis:
$
steht fürpi@raspberrypi:~ $
im CLI und muss nicht eingeben werden
Ein Update durchführen, das ATM Github kopiert und notwendige Zusatzoptionen installieren
$ sudo apt update && sudo apt upgrade
$ git clone https://github.com/21isenough/LightningATM.git
$ cd LightningATM
$ pip3 install -r requirements.txt
- Hinweis: Beim Update muss man hin und wieder mit
y
oderq
bestätigen - Jetzt einmal die Spannungsversorgung trennen und wieder über SSH mit dem neuen Passwort anmelden
5. Display einrichten und testen
5.1 Display Software Updaten
Aktueller Hinweis:
Im April 2022 hat Waveshare ein Update im Github des e-Paper gemacht, dass nicht mehr ganz komptibel ist. Deswegen wird hier ein alter Fork empfohlen, den ich im Februar 2022 von Waveshare gemacht habe. Vorher: "$ git clone https://github.com/waveshare/e-Paper"
$ cd ~
$ git clone https://github.com/AxelHamburch/e-Paper/
$ cd ~/e-Paper/RaspberryPi*/python
$ sudo python3 setup.py install
5.2 Test des Displays
$ cd ~
$ cd e-Paper/RaspberryPi_JetsonNano/python/examples
$ sudo python3 ./epd_2in13_V2_test.py
Wenn alles korrekt angeschlossen und installiert wurde, dann zeigt das Display jetzt ein Demonstration und löscht dann wieder den Screen.
6. Einstellung der config.ini und app.py Datei
In der config.ini
werden Grundeinstellungen vorgenommen und in der app.py
wird das Programm etwas angepasst.
- Neuer Login auf Raspberry Pi über CLI:
ssh pi@192.168.x.x
6.1 ATM einmal starten um die config.ini zu erzeugen
$ cd ~/LightningATM/
$ ./app.py
- Beim ersten Start werdet ihr wahrscheinlich eine Fehlermeldung bekommen, weil der voreingestellte Display Typ nicht stimmt. Aber die Meldung könnt ihr ignorieren. Die config.ini wurde jetzt im Hintergrund erstellt.
- Der Prozess "app.py" kann jetzt mit
STRG+C
gestoppt werden - Nach kurzer Zeit wird
Manually Interrupted
angezeigt - Jetzt wie bitte wie nachfolgend beschrieben die config.ini bearbeiten
6.2 Die config.ini Datei öffnen
$ nano ~/.lightningATM/config.ini
- Nicht wundern, die Schreibweise ist wirklich
~/.lightningATM/config.ini
mit Punkt und klein geschrieben
6.3 Die config.ini Datei einstellen
Unter [atm]
Display Typ angeben
display = waveshare2in13v2
Hinweis:
Bitte den Display Typ vergleichen. Eurer kann eine abweichende Einstellungen notwendig machen.
Verzögerungzeit (von 0 auf 12 Sekunden setzen. 0 ist nur für ATM mit Taster)
payoutdelay = 12
Wallet Typen aktivieren
activewallet = lntxbot
- Hinweis: Eine gute Anleitung zum Einstieg in den LNTXBOT findet ihr hier: coincharge.io
- Wenn du ein BTCPayServer-Wallet einrichten möchtest, bekommst du hier weitere Informationen: BTCPayServer
Unter [lntxbot]
die Daten für die API zum lntxbot eingeben
[lntxbot]
# base64 encoded lntxbot api credentials
url = https://lntxbot.com
creds = abc..xyz==
- Hinweis:
url
undcreds
liefert Dir der LNTXBOT in Telegram. Dazu im Bot den Befehl/lightningATM
eingeben - Die Antwort des Bot ist wie folgt aufgebaut:
<creds>@<url>
Die Coins zu den Impulsen festlegen
[coins]
# Pulsecount, fiat value, name
coin_types = 2,0.05,5 eur cent
3,0.10,10 eur cent
4,0.20,20 eur cent
5,0.50,50 eur cent
6,1.00,1 eur
7,2.00,2 eur
- Zum Speichern und Verlassen des Editors:
STRG+x -> y -> ENTER
Die Einstellungen (bzw. den ganzen ATM) einmal testen
$ cd ~/LightningATM/
$ ./app.py
- Das Display müsste jetzt
LightningATM
anzeigen - Wenn alles korrekt eingegeben ist, dann müsste der ATM jetzt einsatzbereit sein
- Am besten einfach mal mit ein paar Cent testen
- Sollte es nicht funktionieren, kommt später noch das Kapitel mit
tmux
. Da kann man eine Diagnose machen - Zum stoppen des ATM einfach
STRG+C
drücken - Nach kurzer Zeit wird
Manually Interrupted
angezeigt und man sieht auf dem Display das derATM turned off
ist
6.4 Einstellungen in der app.py Datei
Die app.py öffnen
$ cd ~/LightningATM/
$ nano app.py
Optional Einstellung: Übspringen der Seite "Prepare for LNURL":
- Mit
STRG+W
nachdisplay.update_lnurl_cancel_notice()
suchen. (Sie ist zweimal vorhanden) - An einer Stelle steht wo drüber
if activewallet == "lntxbot"
steht, bitte die zwei Zeilen bearbeiten
Die zwei nachfolgenden Zeilen mit #
auskommentieren
# display.update_lnurl_cancel_notice()
# time.sleep(5)
-> Damit wird die LNURL "Abfrage Seite" übersprungen, da sie für die Pocket Version (ohne Druckknopft) nicht relevant ist.
7. Debugger und Monitoring System (tmux)
Der einfachste Weg mehrere Prozesse gleichzeitig zu überwachen, besteht darin, mehrere Fenster zu öffnen. Die kannst also eine für die "app.py" und eine für den Debug-Logger $ tail -f ~/.lightningATM/debug.log
öffnen und sie dann nebeneinander anzeigen. Aber um beide Prozesse gleichzeitig in einem Fenster zu sehen, kannst du auch "tmux" (Terminal Multiplexer) verwenden.
Terminal-Multiplexer (tmux) Befehlsübersicht:
STRG + b -> % = Fenster teilen
STRG + b -> Pfeil rechtes oder links = Wechsel des Fensters
STRG + b -> STRG + Pfeil rechts oder links = Trennlinie versch.
STRG + b -> d = zurück zum Einfachfenster
Damit kann das CLI Fenster vertikal gesplittet und zwei Prozesse gleichzeitig betrachtet werden. -> Siehe Bild!
tmux installieren
$ cd ~
$ sudo apt install tmux
tmux starten und verwenden
$ tmux
- tmux Fenster aufteilen:
STRG+b -> %
Den app.py
Prozess (ATM) starten
$ cd ~/LightningATM
$ ./app.py
- In das rechte Fenster wechseln:
STRG+b -> Pfeil rechts
- Hinweis: Wenn der Geldautomat bereits gestartet ist (mit
$ sudo systemctl status LightningATM.service
prüfen), sollten Sie ihn stoppen (mit$ sudo systemctl stop LightningATM.service
), bevor Sie ihn manuell (mit./app.py
) im tmux-Terminal Fenster starten. Andernfalls können seltsame Phänomene auftreten. Danach bitte nicht vergessen den LightningATM.Service wieder zu starten (mit$ sudo systemctl start LightningATM.service
). Damit kann der ATM dann auch beim nächsten Neustart auch automatisch starten.
debug.log
starten
$ tail -f ~/.lightningATM/debug.log
- Ggf. Trennlinie verschieben:
STRG+b -> STRG+Pfeil rechts bzw. links
- Zurück zum Einfachfenster:
STRG+b -> d
8. Autostart
Aktivieren:
$ cd ~/LightningATM
$ sudo cp LightningATM.service /etc/systemd/system/LightningATM.service
$ sudo systemctl enable LightningATM.service
$ sudo reboot
Weitere Befehle zur Kontrolle des Service:
$ sudo systemctl status LightningATM.service
$ sudo systemctl stop LightningATM.service
$ sudo systemctl start LightningATM.service
9. Erweiterung LED-Button und Sperrrelais
LED Taster
Ein LED Taster bereichert den ATM ungemein. Dadurch sind viele weiter Funktionen möglich. Er macht die Bedienung angenehmer und sieht dabei auch noch ganz gut aus. Hier habe ich mal ein Konstruktionsset zusammen gestellt, so das man nicht einmal löten muss und alles einfach Steckbar ist. Schaut Euch dazu am besten meine separate Seite dazu an: LED-Button-CSet
Sperrrelais (elektromagnetische Tor)
Das elektromagnetische Tor ist ein Sperrstift, der die Münzen zum Auswurf umleitet. Bei stromlosem Münzprüfer bleibt der Stift immer verriegelt und wirft alle Münzen aus. Erst bei richtiger Münzerkennung wird der Sperrstift durch eine Magnetspule zurückgezogen. Erst dann fallen die Coins in die Fiat-Hölle. Dieses elektromagnetische Tor kann von außen gesteuert oder blockiert werden. Die Funktion kann verwendet werden, um Mehrfachimpulse (bei schnellem Münzeinwurf hintereinander) oder Münzeinwurf über einen bestimmten Zeitraum (einen Displaystand oder bei AMT offline) auszuschließen.
Wer mehr über das Sperrelais erfahren will, auf der GitHub Seite habe ich ausführliche Dokumentation (englisch) dazu geschrieben. Sperrelais
10. Well done, das wars!
- Ich hoffe es hat geklappt und alles funktioniert 🙂
- Weitere Hilfe bekommt ihr in der Telegram Gruppe: https://t.me/lightningatm_building
- Falls ihr noch Fehler in der Dokumentation findet, oder sonstige Anregungen habt, erreicht ihr mich unter:
- Email:
axel@lnbitsonfire.xyz
- Telegram:
@AxelHamburch
- Twitter:
@AxelHamburch
11. Noch ein paar Tipps
- Bei Eingaben im Command Line Interface (CLI) die Befehle am besten per Copy & Past übertragen:
- -> Dazu den Befehl mit
STRG+C
in die Zwischenablage kopieren und dann im CLI Fenster auf den blinkenden Cursor zeigen und die rechte Maustaste drücken, um die Zwischenablagen in das CLI einzufügen. - Tooltips zu den Bildern findet ihr beim betrachten mit der Desktop Version der Website. Zeigt dazu auf die Bilder.
- Oder wenn ihr die Zip-Datei der Bilder herunter lädt, dann seht ihr die Namen der Bilder.
- Wenn ihr den Fehler
bash: $: command not found
bekommt, dann habt ihr das Dollarzeichen$
vor dem Befehl mitkopiert. - Wenn ihr den Fehler
bash: cd: too many arguments
bekommt, müsst ihr evtl. wieder eine Ebene mit$ cd ~
zurück. - Beim Login per SSH darauf achten, den richtigen Benutzer
pi
zu verwenden. Nehmt ihr versehentlichadmin
, oder verschreibt Euch, dann wird Euch kein Fehler angezeigt, aber das Passwort wird nicht akzeptiert. - WLAN Parameter nachträglich ändern könnt ihr mit dem Befehl:
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
- Sollte er Euch beim "clonen" eines Repository nach einem Benutzer und Passwort fragen, einmal den PC + Raspberry Pi neu starten. Hat zumindest bei mir funktioniert.
- SSH Login Probleme mit Windows: Prüfen ob unter Einstellungen / Apps / Apps & Features bzw. Optionale Features OpenSSH-Client UND OpenSSH-Server installiert ist.
- Wer noch nicht so fit ist mit dem CLI und dem Raspberry Pi, dem empfehle ich mit einem etwas kleiner Projekt anzufangen, zum Beispiel dem BTC-Ticker.
- Noch ein keine Hinweis: Ich versuche dieses deutschsprachige Tutorial up-to-date zu halten. Priorität hat bei mir aber aktuell die englische sprachige Github Version. Falls also etwas nicht ganz klar sein sollte, prüft das bitte mal hier.
Anbei noch das Video zum Tutorial:
Erstellt mit Liebe! 🧡 Block 720899 / 752907 aktualisiert