Tartalomjegyzék:
- Kellékek
- 1. lépés: A Raspberry Pi Zero W beállítása
- 2. lépés: Nyomtatás a Pi -ből
- 3. lépés: Csatlakozás a tárgyak internetéhez (1. rész)
- 4. lépés: Csatlakozás a tárgyak internetéhez (2. rész)
- 5. lépés: A külső hozzáférés beállítása az Ngrok segítségével
- 6. lépés: A Pi hozzáadása a nyomtatóhoz
- 7. lépés: Vidd tovább
Videó: Alexa nyomtató - Újrahasznosított nyugtanyomtató: 7 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Rajongok a régi technológia újrahasznosításáért és újra hasznosításáért. Régebben beszereztem egy régi, olcsó termikus nyugtanyomtatót, és hasznos módszert akartam használni. Aztán az ünnepek alatt megajándékoztam egy Amazon Echo Dot ponttal, és az egyik leggyakrabban használt funkció az élelmiszerek hozzáadása a bevásárló listámhoz. Ezért gondoltam, hogy jó lenne a kettőt kombinálni, és a nyugtanyomtatót IOT -nyomtatóként használni az Alexa (vagy a Google Home, vagy a Siri stb.) Számára. Lássuk, mi kell ahhoz, hogy ez az elképzelés megvalósuljon.
Kellékek
Íme az alkatrészek, amelyeket ehhez a projekthez használok:
- Olcsó általános termikus nyugta nyomtató (támogatnia kell az ESC-POS-t)
- Amazon Alexa eszköz (valószínűleg más "otthoni asszisztens" eszközök is működnek)
- Raspberry Pi Zero Wireless
- 7805 5V szabályozó
- 10μf kondenzátor
- 1μf kondenzátor
Egyéb dolgokat használok ehhez a projekthez:
- Ha ez akkor az (IFTTT.com)
- Forrasztóberendezés
1. lépés: A Raspberry Pi Zero W beállítása
Az első lépés a régi nyugtanyomtató nyomtatása. Úgy döntöttem, hogy a Raspberry Pi Zero W -t használom vezérlőként az olcsó ára és a kis mérete miatt. Valójában elég kicsi ahhoz, hogy elférjen a nyugtanyomtató tokjában, így nincs külső csatlakozás! A Pi Zero W beépített Wifivel is rendelkezik, így minden alapvetően kis méretben van integrálva.
A Pi üzembe helyezéséhez le kell töltenünk a Raspbian operációs rendszert, és el kell égetnünk egy microSD kártyára egy olyan program segítségével, mint az Etcher. Helyezze be a Pi -be HDMI -kábellel, billentyűzettel, egérrel, majd árammal.
Amikor a Pi elindul, és az asztali felületen van, csatlakozhat a vezeték nélküli hálózathoz a jobb felső sarokban található vezeték nélküli ikonra kattintva, és kiválasztva a vezeték nélküli kapcsolat nevét. Majd ha jobb gombbal rákattint ugyanarra a vezeték nélküli ikonra, akkor lépjen a hálózati beállításokhoz, és állítson be egy statikus IP -címet, hogy könnyen csatlakozhassunk hozzá a hálózaton keresztül. Végül kattintson a főmenüre, és válassza a "Raspbian Configuration Editor" lehetőséget, majd az "Interfészek" lapon ellenőrizze, hogy az SSH engedélyezve van -e. Ezután mentse el, és indítsa újra a Pi -t.
2. lépés: Nyomtatás a Pi -ből
A Raspbery Pi újraindítása után azt statikus IP -címmel és engedélyezett SSH -val kell csatlakoztatni a vezeték nélküli hálózathoz. Így most képesnek kell lennünk arra, hogy bármely más számítógépről távolról csatlakozzunk hozzá. Ehhez szüksége lesz egy SSH ügyfélre. Windows esetén a Putty jó ügyfél. Csatlakozhat hozzá a Pi statikus IP -címével, amelyet korábban beállítottunk. Ezután bejelentkezhet a "pi" felhasználónévvel és a "málna" jelszóval.
A sikeres bejelentkezés után most a Pi terminál felületén kell lennünk. Itt beírhatjuk a Raspberry Pi -n végrehajtandó parancsokat. Például az egyik első dolog, amit meg akarunk tenni, hogy meggyőződjünk arról, hogy a Pi szoftvere naprakész. Tehát a terminálba beírhatjuk:
sudo apt-get update
Ez a parancs frissíti a Pi szoftvertárait. Ezután telepíthetjük az ESC-POS nyomtatószoftvert és a szükséges könyvtárakat.
sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-frissítés pip sudo pip3 telepítés python-escpos
Ha ez megtörtént, most csatlakoztathatjuk a nyomtatót a Pi mikro-USB-portjához (adapter segítségével), és bekapcsolhatjuk. Ezután a terminálunkban létrehozhatunk egy kis python szkriptet
nano hello_world.py
És ebben hozzáadhatjuk ezt a python kódot
#!/usr/bin/pythonfrom escpos.printer import Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT nyomtató / n") p.close ()
Lépjen ki (CTRL-X), mentse el (CTRL-Y), és futtassa a teszteléshez
python3 hello_world.py
3. lépés: Csatlakozás a tárgyak internetéhez (1. rész)
Mire jó a nyomtató, ha nincs nyomtatnivalója? Szeretném engedélyezni a különböző internetes szolgáltatásokból, például az Alexából történő nyomtatást. Tehát hogyan tudom ezt megvalósítani? Az egyik lehetőség az, hogy válasszon egy adott internetszolgáltatást, kövesse nyomon az API dokumentációját, és írjon egy alkalmazást az API alapján. De én a lusta utat választom …
Van egy nagyszerű "If This then That" nevű weboldal, amely különböző internetszolgáltatások (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, stb.) Műveleteit indítja el bizonyos feltételek alapján. Például "ha" közzéteszem a Facebookon (ezt), "Akkor" küldjön egy e-mailt (azt).
Tehát ennek első felében regisztráltam egy ingyenes fiókra, és elkezdhet új "kisalkalmazás" létrehozását a kiváltani kívánt különböző szolgáltatásokhoz. A kisalkalmazásom "Ez" része Alexa lesz. Sok Alexa -trigger közül lehet választani, de én azt választom, amelyik azt mondja: "Kérdezd meg, mi van a bevásárló listádon". És végső soron azt akarjuk, hogy Python -szkriptet indítson el a Raspberry Pi -n, ezért a szkript "Ez" részéhez a Webhooks -ot szeretnénk választani.
A Webhooks opcióban hozzáadhatunk egy URL -t, amely a Pi -re mutat, erre később visszatérünk. A Method mezőt "Get" néven hagyhatjuk, a tartalomtípusnál pedig a "Plain Text" lehetőséget. A Törzs mezőben kattintson az "Összetevő hozzáadása" gombra, és válassza a "Teljes lista" lehetőséget. Ez a teljes bevásárlólistát kérésként küldi el.
4. lépés: Csatlakozás a tárgyak internetéhez (2. rész)
Az előző lépés gondoskodik az "Internet" részről, így most a "dolgok" részen dolgozhat a Raspberry Pi segítségével. Ahhoz, hogy kommunikálni tudjunk a "Ha ez azután" webhooks kisalkalmazással, be kell állítanunk egy webszervert a Raspberry Pi -n. A webszerver beállításának sokféle módja van, de mivel végső soron Python -szkriptet akarok futtatni, úgy döntöttem, hogy a Python Flask szerverét használom.
A Pi-hez minden Flask könyvtár előre telepítve van, így csak annyit kell tennünk, hogy elkezdünk írni egy teszt szkriptet:
nano flask_test.py
És tegyünk hozzá néhány kódot, amely egy egyszerű weboldalt szolgál ki.
#! flask/bin/python #A FLASK -KÖNYVTÁROK IMPORTÁLÁSA a lombik importjából Lombik, kérés #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @app.route ('/') def index (): return 'A lombik szerver működik!' #FUTD A PROGRAMOT, ha _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Most csak mentse el a programot, és futtassa ezt a parancsot:
sudo python3 flask_test.py
A parancsválasz alapján látni fogja, hogy a Flask alapértelmezett portja az 5000 -es port. Tehát, ha egy webböngészőben beírja a Pi IP -címét: 5000, akkor a "Lombik szervere működik!"
Megvan a régebbi teszt Python kódunk, amely kinyomtatja a nyugta nyomtatónkat, és van teszt lombik szerverünk. Tehát a következő lépésben egyesítenünk kell őket, és be kell illesztenünk néhány kódot, amely letölti az adatokat a Webhook kisalkalmazásunkból. Hozzunk létre egy új Python fájlt:
nano iot_print_server.py
És ezen belül adja hozzá a következő kódot:
#! flask/bin/python #A Lombik- és NYOMTATÓI KÖNYVTÁROK IMPORTÁLÁSA a lombik importjából Lombik, kérés az escpos.printer import Usb #ASSIGN VARIABLES FOR THE PRINTER AND FLASK p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CREATE 'INDEX' PAGE @app.route ('/') def index (): return 'A lombik szerver működik!' #CREATE "PAGE" CALLED "LIST" ALEXA SHOPPING LIST NYOMTATÁSÁHOZ @app.route ('/list') def list (): #CAPTURE "GET" DATA IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (tartalom) #ADATOK Osztása külön sorokba str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND ADD TO NEW LIST newlist = szóhoz str_split: word = word.split (',') newlist.extend (word) #FORMATTING MARKS eltávolítása rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Bevásárlólista / n") p.text ("Bevásárlólista: / n ") #SZÁMÍTÁS ÉS NYOMTATÁS MINDEN LISTÁBAN r = 1 x -hez az rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #RETURN RESULTS return 'x' #RUN THE PROGRAM if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Futtathatja, hogy lássa, nem ad -e vissza hibákat, de még nem fog működni a webhookunkkal, mert jelenleg a szerver csak helyileg fut. Még nincs külső URL a webhookhoz, amelyhez csatlakozni lehet. Beállíthatnánk a portátirányítást az útválasztón, és használhatnánk a külső IP -címünket, de ez nem túl biztonságos. Alternatívaként az NGROK mellett döntök.
5. lépés: A külső hozzáférés beállítása az Ngrok segítségével
Az Ngrok biztonságos kapcsolatot létesít a hálózattal anélkül, hogy feltenné a külső IP -címét, vagy zavarnia kellene a portátirányítást. Az ingyenes fiók regisztrálása után engedélyezési tokent ad. Ezután a Raspberry Pi -n letöltheti, kicsomagolhatja, csatlakoztathatja hitelesítési tokenjét, majd futtathatja az 5000 -es porton:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok -table-linux-arm./ngrok authtoken [illessze be ide az auth tokenjét]./ngrok http 5000
*** FONTOS *** Az Ngrok ingyenes verziója nem ad statikus címet, így minden alkalommal, amikor újra futtatja az Ngrok-t, más címet kap. Ha statikus címet szeretne, így nem kell folyamatosan szerkesztenie a Webhook-ot, akkor fizetnie kell a frissített fiókért.
Az Ngrok ingyenes alternatívája, amely statikus IP -t kínál, "Serveo" néven található a www.serveo.net oldalon
************************
A megjelenő képernyőn egy átirányítási címet ad (https://random-string.ngrok.io), amelyet a Webhook kisalkalmazásban használhatunk. Tehát visszatérve az "If This Then That" -hez, az URL mezőbe írja be az Ngrok továbbítási címét, és mutassa a Flask szerverünk "list" oldalára. Valahogy így kellene kinéznie
random_string.ngrok.io/list
Ezután menjen tovább, és mentse a módosításokat.
A teszteléshez tartsa futva az Ngrok -ot, nyisson meg egy új terminált, és futtassa a python -szkriptünket. Mindkét elem futása közben kérdezze meg Alexától, hogy mi szerepel a bevásárló listáján. Egy -két perc múlva ki kell nyomtatnia az eredményeket. Ha azt szeretné, hogy azonnal nyomtasson, menjen az IFTTT -n található kisalkalmazásába, és kattintson az "Ellenőrzés most" gombra. Ha minden jól megy, a nyugtanyomtatónak ki kell nyomtatnia a bevásárlólistán szereplő adatokat! A kód utolsó bitje, amelyet hozzá kell adnunk, egy módja annak, hogy automatikusan elindítsuk az ngrok -t és a lombik szerverünket, amikor a Pi elindul. Ezt egyszerűen megtehetjük, ha végrehajthatóvá tesszük a Python -szkriptünket:
chmod +x iot_print_server.py
Ezután szerkeszthetjük az /etc/rc.local fájlunkat, így néz ki:
## Alapértelmezés szerint ez a szkript nem tesz semmit. # Nyomtassa ki az IP -címet _IP = $ (gazdagépnév -I) || igaz, ha ["$ _IP"]; majd printf "Az IP -címem %s / n" "$ _IP" fi #autostart ngrok, és mutasson rá a hitelesítési fájlra./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #a nyomtató automatikus indítása python szkript sudo python3 /home/pi/iot_receipt_printer.py & exit 0
6. lépés: A Pi hozzáadása a nyomtatóhoz
A nálam lévő nyugtanyomtatónak sok üres helye van a burkolaton belül. És mivel a Raspberry Pi Zero olyan kicsi, mint amilyen, úgy gondoltam, jó lenne csak elrejteni a nyugtanyomtatóban, hogy úgy nézzen ki, mint egy eszköz. Az egyetlen probléma az, hogy a nyugtanyomtató 12 voltról, a Pi pedig 5 voltról működik. Tehát ha csak egy tápkábelt akarunk mindkettőjük táplálására, akkor le kell állítanunk ezt a 12 V -os tápegységet 5 V -ra.
Egy 7805 feszültségszabályozó, 1uf kondenzátor és 10uf kondenzátor segítségével sikerült létrehoznom egy egyszerű 5v -os szabályozót, amelyet a nyugtanyomtató logikai kártyájához kötöttem. A "-" vezetéket a közös földhöz forrasztottam, majd a "+" vezetéket a főkapcsoló "be" oldalára forrasztottam, hogy a Pi be- és kikapcsoljon a nyomtató be- és kikapcsolásakor. Multiméterrel teszteltem, hogy megerősítsem, hogy a kimenet biztonságos a Pi számára. Ezután forrasztottam egy mikro-usb kábelt, és csatlakoztattam a Pi-hez. Miután csatlakoztatta a kábelt a nyomtatóhoz és elfordította a kapcsolót, mind a nyomtató, mind a Pi bekapcsolódott!
Végül lyukat fúrtam, hogy csatlakoztassam a Pi -ből az USB -kábelt a nyomtatóhoz. Találtam egy helyet, ahol az 5v -os szabályozót és a Pi -t a nyomtatótokba kell helyezni, majd mindent újra összeraktam. Így most a nyomtatónak saját önálló webszervere is van!
7. lépés: Vidd tovább
Ha képes volt megnézni a "Ha ez, akkor ez" című részt, akkor valószínűleg észrevette, hogy rengeteg különböző webszolgáltatás kapcsolódik hozzá. Ha tehát nincs Alexája, vagy nem szeretné használni, akkor ezzel a projekttel szinte bármiről nyomtathat, például Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, stb. A Tweetek kinyomtatásához szükséges kódomat megtalálod a Github oldalamon. Most menj és nézd meg, mire juthatsz!
Első díj az IoT Challenge -ben
Ajánlott:
SLA 3D nyomtató savval maratott áramköri lapjai: 7 lépés (képekkel)
SLA 3D nyomtató savval maratott áramköri lapok: Remix..remix .. Nos, szükségem van egy fejlesztőlapra az ATtiny chipjeimhez. Nincs CNC -m vágólapra vágni Nem ismerem a Kicadot, és nem akarok táblákat rendelni. De van gyantanyomtatóm … és sav és ismerem a SketchUp -ot. És szeret készíteni dolgokat. Mi történt
DIY NANOLEAF - Nincs 3D nyomtató: 11 lépés (képekkel)
DIY NANOLEAF - Nincs 3D nyomtató: a Hii Tech szerelmesei ebben az utasításban Megmutatom, hogyan készítsük el az Arora Nanoleaf szerszámot. testreszabhatja ezeket a paneleket. Készítettem 9 panelt, összesen 54 neo pixeles LED -et. Teljes költség 20 dollár alatt (indiai ₹ 1500) Nanoleaf fénypanelek
Készíts táncoló robotot 3D nyomtató és Arduino nélkül/#intelligens kreativitás: 11 lépés (képekkel)
Készíts táncoló robotot 3D nyomtató és Arduino/#smartcreativity nélkül: Helló barátaim, ebben az oktatóanyagban megmutatom, hogyan lehet otthon táncoló robotot készíteni 3D nyomtató és Arduino nélkül. Ez a robot képes táncolni, automatikus egyensúlyozásra, zeneszerzésre és járásra. És a Robot dizájnja is nagyon jól néz ki
MOSTER FET - Dual 500Amp 40 voltos MOSFET 3d nyomtató fűtött ágy meghajtók: 7 lépés (képekkel)
MOSTER FET - Dual 500Amp 40 Voltos MOSFET 3d nyomtatóval fűtött ágy meghajtók: Valószínűleg erre a gondolkodó szent tehénre kattintott, 500 AMPS !!!!!. Hogy őszinte legyek, az általam tervezett MOSFET tábla nem képes biztonságosan 500Amp -re. Lehet, hogy egy rövid ideig, közvetlenül azelőtt, hogy izgatottan lángba borulna. Ezt nem úgy tervezték, hogy ügyes legyen
Dotter - Hatalmas Arduino alapú pontmátrix nyomtató: 13 lépés (képekkel)
Dotter - Hatalmas Arduino alapú pontmátrix nyomtató: Szia, üdvözlöm ebben a tanulságosban :) Nikodem Bartnik vagyok, 18 éves készítő. Sok mindent, robotot, eszközt készítettem a 4 éves gyártásom során. De ez a projekt valószínűleg a legnagyobb, ha a méretről van szó. Szerintem is nagyon jól megtervezett