Tartalomjegyzék:

Alexa nyomtató - Újrahasznosított nyugtanyomtató: 7 lépés (képekkel)
Alexa nyomtató - Újrahasznosított nyugtanyomtató: 7 lépés (képekkel)

Videó: Alexa nyomtató - Újrahasznosított nyugtanyomtató: 7 lépés (képekkel)

Videó: Alexa nyomtató - Újrahasznosított nyugtanyomtató: 7 lépés (képekkel)
Videó: Átalakulás 3... 2... 1... 2024, November
Anonim
Image
Image
Alexa nyomtató | Újrahasznosított nyugtanyomtató
Alexa nyomtató | Újrahasznosított nyugtanyomtató

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:

  1. Olcsó általános termikus nyugta nyomtató (támogatnia kell az ESC-POS-t)
  2. Amazon Alexa eszköz (valószínűleg más "otthoni asszisztens" eszközök is működnek)
  3. Raspberry Pi Zero Wireless
  4. 7805 5V szabályozó
  5. 10μf kondenzátor
  6. 1μf kondenzátor

Egyéb dolgokat használok ehhez a projekthez:

  1. Ha ez akkor az (IFTTT.com)
  2. Forrasztóberendezés

1. lépés: A Raspberry Pi Zero W beállítása

A Raspberry Pi Zero W beállítása
A Raspberry Pi Zero W beállítása
A Raspberry Pi Zero W beállítása
A Raspberry Pi Zero W beállítása
A Raspberry Pi Zero W beállítása
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

Nyomtatás a Pi -ből
Nyomtatás a Pi -ből
Nyomtatás a Pi -ből
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)

Csatlakozás a tárgyak internetéhez (1. rész)
Csatlakozás a tárgyak internetéhez (1. rész)
Csatlakozás a tárgyak internetéhez (1. rész)
Csatlakozás a tárgyak internetéhez (1. rész)
Csatlakozás a tárgyak internetéhez (1. rész)
Csatlakozás a tárgyak internetéhez (1. rész)
Csatlakozás a tárgyak internetéhez (1. rész)
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)

Csatlakozás a tárgyak internetéhez (2. rész)
Csatlakozás a tárgyak internetéhez (2. rész)
Csatlakozás a tárgyak internetéhez (2. rész)
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

Külső hozzáférés beállítása az Ngrok segítségével
Külső hozzáférés beállítása az Ngrok segítségével
Külső hozzáférés beállítása az Ngrok segítségével
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 Pi hozzáadása a nyomtatóhoz
A Pi hozzáadása a nyomtatóhoz
A Pi hozzáadása a nyomtatóhoz
A Pi hozzáadása a nyomtatóhoz
A Pi hozzáadása a nyomtatóhoz
A Pi hozzáadása a nyomtatóhoz
A Pi hozzáadása a nyomtatóhoz
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

Továbbvitel
Továbbvitel

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!

IoT kihívás
IoT kihívás
IoT kihívás
IoT kihívás

Első díj az IoT Challenge -ben

Ajánlott: