Lightning ATM

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 LNbits 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
Zum Flaschen des Raspberry Pi Image verwendet am besten den original Raspberry Pi Imager. Die Software ist recht einfach zu bedienen.
Auf der ersten Hauptseite stellt ihr folgendes ein:
Raspberry Pi Model: Raspberry Pi Zero 2 W Betriebssystem (OS): Raspberry Pi OS (Legacy, 32-bit) SD-Karte: Deine SD-Karte
Eine Seite weiter bekommt ihr die Möglichkeit Einstellungen vorzunehmen. Hier stellt ihr ein:
Hostname: atm Benutzername: pi Passwort: raspberry SSID: DeinWifi Passwort: DeinPasswort
Hinweis: Wenn der den Nutzername „pi“ ändert, dann müsst ihr auch den Pfad der LightningATM.service anpassen.
Hier ein paar Bilder dazu:
Die Wlan Konfigurationsdatei könnt ihr auch nachträglich noch ändern:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Allerdings muss das Passwort vorher generieren werden. Das könnte ihr mit dieser Funktion machen:
wpa_passphrase "DeinWifi" "DeinPasswort"
Damit könnt ihr auch ein zweites WLAN-Netzwerke anlegen. Einfach einen zweite network={ .. } Schleife mit den der neue ssid= und dem psk= anhängen.
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 (falls gewünscht) und bitte merken!$ passwd
- Hinweis:
$
steht fürpi@raspberrypi:~ $
im CLI und muss nicht eingeben werden Das SPI interface für die Waveshare Displays aktivieren
Geht dazu in die raspi-config
mit
sudo raspi-config
Dann wählt ihr Interface Options - Configure..
-> SPI - enable/disable..
und aktiviert es mit Yes
.
Das wars, jetzt könnt ihr mit der Installation beginnen.
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 herunterladen und installieren
cd ~ git clone https://github.com/waveshareteam/e-Paper cd ~/e-Paper/RaspberryPi*/python sudo python3 setup.py install
5.2 Test des Displays
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.
Achtung:
Wenn ihr ein anderen Display Typen habt, dann müsst ihr hier auch eine andere Testfunktion als „epd_2in13_V2_test.py“ verwenden. Z.B. „epd_2in13_V3_test.py“ für die neue Version, siehe dazu die Rückseite des Displays. Oder „epd_2in13d_test.py“, für die flexible (goldfarbig) (D-)Version.
6. Einstellungen über die config.ini
In der config.ini
werden Grundeinstellungen vorgenommen.
- Neuer Login auf euren 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 wird die Meldung
No display configuration matched. Exiting...
kommen, da ihr ja noch kein passendes Display vorgegeben habt. Die könnt ihr also ignorieren. Die config.ini die wir jetzt brauchen, wurde dadurch aber im Hintergrund erstellt. - 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 = lnbits
- Hinweis: Eine eine kleine Anweisung wie ihr ein LNbits Wallet einrichtet findet ihr hier: Quick guide on how to set up an LNbits
Unter [lnbits]
die Daten für die Schnittstelle zum LNbits Wallet angeben
[lnbits] # api credentials url = https://demo.lnbits.com/api/v1 apikey = DeinAdminKey # One of "invoice" or "lnurlw" method = lnurlw # only for lnurlw - seconds to redeem the lnurlw timeout = 90
**Hinweis: ** Hier musst du nur den apikey = Admin key
angeben. Diesen erhälst du vom LNbits Wallet, z.B. Admin key = apikey = 8682516eaf0c457…

Bild: Beispiel LNbits Wallet. Die Extension LNURLw müsst ihr nur aktivieren (-> ENABLE).
**Hinweis: ** Falls ihr für einen bestehenden ATM nur das obsolete LNTXBOT Wallet durch ein LNbits Wallet ersetzten möchtet, müsst ihr noch ein paar weitere Schritte unternehmen. Schaut euch das zu diese Anleitung auf dem orignal Github an.
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
- 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
7. Debugger und Monitoring
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.
Den app.py
Prozess (ATM) im ersten Fenster starten
cd ~/LightningATM ./app.py
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.
Neus Fenster öffnen und debug.log
starten
tail -f ~/.lightningATM/debug.log
Jetzt beider Fenster nebeneinander stellen und ihr könnte beide Prozess gleichzeitig beobachten.
8. Autostart
Damit der ATM auch nach einer Spannungswiederkehr automatisch anläuft, braucht es ein kleines Programm im Systemspeicher.
Service einrichten und aktivieren:
Hinweis: Die Kopie-Funktion funktioniert nur, wenn ihr auch den User „pi“ habt. Anstonsten müsst ihr den Pfad der LightningATM.service noch anpassen.
sudo cp ~/LightningATM/LightningATM.service /etc/systemd/system/LightningATM.service sudo systemctl enable LightningATM.service sudo systemctl start LightningATM.service
Das System startet jetzt einmal neu und ist ab dann auch nach dem einschalten bereit.
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:
- 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.
- Bei der Meldung: „WARNING: The script qr is installed in ‚/home/pi/.local/bin‘ which is not on PATH“, folgendes ausführen: „echo ‚export PATH=$PATH:/home/pi/.local/bin‘ >> ~/.bashrc“ und dann „source ~/.bashrc“
Anbei noch das Video zum Tutorial:
Erstellt mit Liebe! 🧡 Block 720899 / 896685