Sisukord:

Alexa printer - Ümbertöödeldud kviitungi printer: 7 sammu (piltidega)
Alexa printer - Ümbertöödeldud kviitungi printer: 7 sammu (piltidega)

Video: Alexa printer - Ümbertöödeldud kviitungi printer: 7 sammu (piltidega)

Video: Alexa printer - Ümbertöödeldud kviitungi printer: 7 sammu (piltidega)
Video: 🚀 AMAZON 2.0 - ИНТЕРНЕТ МАГАЗИН с нуля за 6 часов [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, Juuni
Anonim
Image
Image
Alexa printer | Ümbertöödeldud kviitungi printer
Alexa printer | Ümbertöödeldud kviitungi printer

Olen vana tehnoloogia taaskasutuse ja selle taas kasulikuks muutmise fänn. Mõni aeg tagasi olin soetanud vana odava termokviitungite printeri ja soovisin kasulikku viisi selle ümbertegemiseks. Siis kingiti mulle pühade ajal Amazon Echo Dot ja üks funktsioone, mida ma kõige rohkem kasutasin, oli toidukaupade lisamine oma ostunimekirja. Nii et ma arvasin, et oleks lahe need kaks ühendada ja kasutada kviitungi printerit Alexa (või Google Home'i või Siri jne) IOT -printerina. Vaatame, mida teha, et see idee teoks teha.

Tarvikud

Siin on osad, mida ma selle projekti jaoks kasutan:

  1. Odav üldine termokviitungite printer (peab toetama ESC-POS-i)
  2. Amazon Alexa seade (tõenäoliselt töötavad ka teised "koduabilise" seadmed)
  3. Raspberry Pi Zero Wireless
  4. 7805 5v regulaator
  5. 10μf kondensaator
  6. 1μf kondensaator

Muud asjad, mida ma selle projekti jaoks kasutan, on järgmised:

  1. Kui see siis see (IFTTT.com)
  2. Jootmisseadmed

Samm: seadistage Raspberry Pi Zero W

Raspberry Pi Zero W seadistamine
Raspberry Pi Zero W seadistamine
Raspberry Pi Zero W seadistamine
Raspberry Pi Zero W seadistamine
Raspberry Pi Zero W seadistamine
Raspberry Pi Zero W seadistamine

Esimene samm on vana kviitungi printeri uuesti printimine. Valisin kontrollerina Raspberry Pi Zero W, kuna see on odav ja väike. See on tegelikult piisavalt väike, et mahtuda kviitungi printeri korpuse enda sisse, seega pole väliseid ühendusi! Pi Zero W -l on ka sisseehitatud Wifi, nii et kõik on põhimõtteliselt väikese suurusega integreeritud.

Pi käivitamiseks peame alla laadima Raspbian OS -i ja põletama selle microSD -kaardile, kasutades sellist programmi nagu Etcher. Sisestage see Pi koos HDMI -kaabli, klaviatuuri, hiire ja seejärel toitega.

Kui Pi käivitub ja olete töölaua liideses, saate traadita ühenduse luua, klõpsates paremas ülanurgas asuvat traadita ühenduse ikooni ja valides oma traadita ühenduse nime. Kui paremklõpsate sama traadita ühenduse ikooni, saate minna võrguseadetele ja määrata staatilise IP -aadressi, et saaksime sellega võrgu kaudu hõlpsalt ühenduse luua. Lõpuks soovite klõpsata peamenüül ja valida "Raspbian Configuration Editor" ning vahekaardi "Liidesed" all veenduge, et SSH oleks lubatud. Seejärel salvestage see ja taaskäivitage oma Pi.

2. samm: printimine Pi -st

Trükkimine Pi -st
Trükkimine Pi -st
Trükkimine Pi -st
Trükkimine Pi -st

Kui Raspbery Pi on taaskäivitatud, peaks see olema ühendatud teie traadita võrguga, millel on staatiline IP ja SSH. Nüüd peaksime saama sellega kaugühenduse luua mis tahes muust arvutist. Selleks vajate SSH -klienti. Windowsi jaoks on hea klient Putty. Saate sellega ühenduse luua, kasutades Pi varem määratud staatilist IP -aadressi. Seejärel saate sisse logida, kasutades kasutajanimeks "pi" ja parooliks "vaarikas".

Pärast edukat sisselogimist peaksime nüüd olema Pi terminaliliideses. Siin saame sisestada käsud, mis käivitatakse Raspberry Pi -l. Näiteks üks esimesi asju, mida me teha tahame, on veenduda, et Pi tarkvara on ajakohane. Niisiis, terminalis saame sisestada:

sudo apt-get update

See käsk värskendab Pi tarkvarahoidlaid. Järgmisena saame installida ESC-POS printeritarkvara ja vajalikud teegid.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-uuenda pip sudo pip3 install python-escpos

Kui see on tehtud, saame nüüd printeri ühendada Pi mikro-USB-pordiga (adapteri abil) ja selle sisse lülitada. Siis saame oma terminalis luua väikese pythoni skripti

nano tere_maailm.py

Ja sellesse saame lisada selle püütoni koodi

#!/usr/bin/pythonfrom escpos.printer import Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT printer / n") p.close ()

Väljuge sellest (CTRL-X), salvestage see (CTRL-Y) ja käivitage see testimiseks

python3 tere_maailm.py

3. samm: asjade internetiga ühenduse loomine (1. osa)

Asjade Interneti -ühenduse loomine (1. osa)
Asjade Interneti -ühenduse loomine (1. osa)
Asjade Interneti -ühenduse loomine (1. osa)
Asjade Interneti -ühenduse loomine (1. osa)
Asjade Interneti -ühenduse loomine (1. osa)
Asjade Interneti -ühenduse loomine (1. osa)
Asjade Interneti -ühenduse loomine (1. osa)
Asjade Interneti -ühenduse loomine (1. osa)

Mis kasu oleks printerist ilma printimiseta? Tahtsin lubada funktsionaalsust printida erinevatest Interneti -teenustest, näiteks Alexast. Niisiis, kuidas ma saan seda saavutada? Üks võimalus on valida konkreetne Interneti -teenus, leida nende API dokumentatsioon ja kirjutada rakendus nende API põhjal. Aga ma valin laisa tee …

Seal on suurepärane veebisait nimega "Kui see siis see", mis käivitab kriteeriumide alusel toiminguid erinevate Interneti -teenuste (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter jne) jaoks. Näiteks "kui" postitan Facebooki (see), "Siis" saatke mulle e-kiri (see).

Nii registreerisin selle esimese poole jaoks tasuta konto, saate alustada uue "apleti" loomist erinevate teenuste jaoks, mida soovite käivitada. Minu apleti osa "See" on Alexa. Valida on palju Alexa päästikuid, kuid ma valin selle, mis ütleb "Küsi, mis on teie ostunimekirjas". Ja lõpuks tahame, et see käivitaks Raspberry Pi -s Pythoni skripti, nii et skripti osa "See" jaoks tahame valida Webhooks.

Valikus Webhooks saame lisada URL -i, mis osutab meie Pi -le, mille juurde tuleme hiljem tagasi. Võime jätta meetodi väljale "Hangi" ja sisutüübi jaoks valida "Tavaline tekst". Väljale Body klõpsake "Lisa koostisosa" ja valige "Kogu loend". See saadab kogu ostunimekirja hankimise taotlusena.

4. samm: asjade internetiga ühenduse loomine (2. osa)

Asjade Interneti -ühenduse loomine (2. osa)
Asjade Interneti -ühenduse loomine (2. osa)
Asjade Interneti -ühenduse loomine (2. osa)
Asjade Interneti -ühenduse loomine (2. osa)

Eelmine samm hoolitseb "Interneti" osa eest, nii et lubage nüüd "asjade" osas Raspberry Pi abil töötada. Veebipakkide apletiga "If This Then That" suhtlemiseks peame Raspberry Pi seadistama veebiserveri. Veebiserveri seadistamiseks on palju erinevaid viise, kuid arvestades, et soovin lõpuks käivitada Pythoni skripti, otsustasin kasutada Pythoni Flaski serverit.

Pi-l on kõik Flaski teegid eelinstallitud, nii et kõik, mida peame tegema, on testskripti kirjutamine:

nano kolb_test.py

Ja lisame sellesse koodi, mis teenib lihtsat veebilehte.

#! kolb/prügikast/python #IMPORTEERI KOLBIDE RAAMATUKOGUD kolvi importimisest Kolb, taotle #LOO KOLBI MUUTUV rakendus = Kolb (_ name_) #CREATE ANDEX 'PAGE @app.route ('/') def index (): return 'Teie kolviserver töötab!' #Käivitage programm, kui _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Nüüd salvestage programm ja käivitage see selle käsu abil:

sudo python3 flask_test.py

Käsuvastuse järgi näete, et Flaski vaikimisi kasutatav port on port 5000. Seega, kui sisestate veebibrauseris oma Pi IP -aadressi: 5000, peaksite nägema teksti "Teie kolviserver töötab!"

Meil on varasem testpythoni kood, mis prindib meie kviitungiprinterisse, ja meil on meie testkolbiserver. Järgmisena peame need ühendama ja lisama koodi, mis tõmbab andmed meie Webhooki apletist. Loome uue Pythoni faili:

nano iot_print_server.py

Ja lisage selle sisse järgmine kood:

#! kolb/prügikast/python #IMPORTEERI KOLBI JA PRINTERI RAAMATUKOGUD kolvi impordist Kolb, päring escpos.printer import USB "INDEX" PAGE @app.route ('/') def index (): tagastage "Teie kolviserver töötab!" #CREATE "PAGE" CALLED "LIST" ALEXA SHOPPING LIST'i printimiseks @app.route ('/list') def list (): #CAPTURE "GET" DATA IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (sisu) #JAGA ANDMED Eraldi ridadesse str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND ADD TO UUSE LOENDI newlist = sõna str_split: word = word.split (',') newlist.extend (sõna) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") s uues nimekirjas] #PRINT HEADER #print ("Ostunimekiri / n") p.text ("Ostunimekiri: / n ") #ENUMERATE JA PRINTIGE LOENDIS IGAD KAUBAD r = 1 x jaoks rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #TAGASITULEMUSED tagastavad 'x' #TÖÖTA PROGRAMMI, kui _nimi_ == '_main_': app.run (silumine = tõsi, host = '0.0.0.0')

Saate selle käivitada, et näha, kas see tagastab vead, kuid see ei tööta veel meie veebihaakiga, kuna praegu töötab server ainult kohapeal. Veebihaakul ühenduse loomiseks pole veel välist URL -i. Võiksime seadistada oma ruuteri pordi suunamise ja kasutada lihtsalt meie välist IP -aadressi, kuid see pole tegelikult liiga turvaline. Alternatiivina otsustan minna NGROKiga.

Samm: välise juurdepääsu seadistamine Ngroki abil

Välise juurdepääsu seadistamine Ngrokiga
Välise juurdepääsu seadistamine Ngrokiga
Välise juurdepääsu seadistamine Ngrokiga
Välise juurdepääsu seadistamine Ngrokiga

Ngrok loob turvalise ühenduse teie võrguga, ilma et peaksite paljastama oma välist IP -d või segama pordi edastamist. Pärast tasuta konto registreerimist annab see teile volitusloa. Seejärel saate oma Raspberry Pi -l selle alla laadida, lahti pakkida, ühendada oma autentimisluba ja seejärel käivitada see pordis 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok -table-linux-arm./ngrok authtoken [sisestage oma autentimismärk siia]./ngrok http 5000

*** TÄHTIS *** Ngroki tasuta versioon ei anna teile staatilist aadressi, nii et iga kord, kui Ngroki uuesti käivitate, annab see teile erineva aadressi. Kui soovite staatilist aadressi, et te ei peaks oma Webhooki uuesti redigeerima, peate täiendatud konto eest maksma.

Tasuta alternatiivi Ngrokile, mis pakub staatilisi IP -sid, nimetatakse saidil www.serveo.net "Serveo"

************************

Saadud ekraanil annab see teile edastusaadressi (https://random-string.ngrok.io), mida saate kasutada meie Webhooki apletis. Niisiis minnes tagasi "If This Then That" juurde, sisestage URL -i väljale oma Ngroki edastusaadress ja suunake see meie Flaski serveri lehele "list". See peaks välja nägema umbes selline

random_string.ngrok.io/list

Seejärel jätkake ja salvestage muudatused.

Selle testimiseks jätkake Ngroki töötamist, avage uus terminal ja käivitage meie pythoni skript. Kui mõlemad esemed töötavad, küsige Alexalt, mis on teie ostunimekirjas. Minuti või kahe pärast peaks see tulemused välja printima. Kui soovite selle kohe printida, minge IFTTT -s oma apletile ja klõpsake "Kontrolli kohe". Kui kõik läheb hästi, peaks kviitungi printer printima teie ostunimekirja! Viimane koodibitt, mille peame lisama, on viis ngroki ja meie kolviserveri automaatseks käivitamiseks iga kord, kui Pi käivitub. Seda saame hõlpsalt teha, muutes meie Pythoni skripti käivitatavaks:

chmod +x iot_print_server.py

Seejärel saame muuta oma /etc/rc.local faili nii, et see näeb välja selline:

## Vaikimisi ei tee see skript midagi. # Printige IP -aadress _IP = $ (hostinimi -I) || tõsi, kui ["$ _IP"]; seejärel printf "Minu IP -aadress on %s / n" "$ _IP" fi #autostart ngrok ja osuta see oma autentimisfailile./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #automaatkäivitage printer python skript sudo python3 /home/pi/iot_receipt_printer.py & exit 0

Samm 6: Pi lisamine printerile

Pi lisamine printerisse
Pi lisamine printerisse
Pi lisamine printerisse
Pi lisamine printerisse
Pi lisamine printerisse
Pi lisamine printerisse
Pi lisamine printerisse
Pi lisamine printerisse

Minu kviitungi printeril on korpuse sees palju tühja ruumi. Ja kuna Raspberry Pi Zero on nii väike kui see on, mõtlesin, et oleks lahe lihtsalt see kviitungiprinterisse peita, et see näeks välja nagu üks seade. Ainus probleem on see, et kviitungi printer töötab 12v ja Pi 5v. Nii et kui me tahame mõlema toiteks ainult ühte toitekaablit, peame selle 12 -voldise toiteallika 5 -voldisele taandama.

Kasutades 7805 pingeregulaatorit, 1uf kondensaatorit ja 10uf kondensaatorit, suutsin luua lihtsa 5v regulaatori, mille ühendasin kviitungi printeri loogikaplaadiga. Jootsin traadi "-" ühisesse maasse ja seejärel jootsin "+" juhtme toitelüliti "sisse" poole, et Pi lülituks printeri sisselülitamisel sisse ja välja. Mitme meetri abil testisin, et kinnitada, et väljund on Pi jaoks ohutu. Siis jootsin mikro-USB-kaabli külge ja ühendasin selle Pi-ga. Pärast kaabli ühendamist printeriga ja lüliti pööramist lülitusid nii printer kui ka Pi sisse!

Lõpuks puurisin auku, et ühendada Pi -ga USB -kaabel printeriga. Leidsin koha, kus 5v regulaator ja Pi printerikarbi sisse panna, ja siis panin kõik kokku. Nüüd on printeril ka oma iseseisev veebiserver!

7. samm: edasiarendamine

Edasi viimine
Edasi viimine

Kui suutsite vaadata pilti "Kui see siis see", märkasite ilmselt, et sellel on ühendamiseks palju erinevaid veebiteenuseid. Nii et kui teil pole Alexat või ei soovi seda kasutada, saate selle projekti abil printida peaaegu millestki, näiteks Facebookist, Twitterist, Gmailist, Google Home'ist, Evernote'ist, Tumblrist, Flickrist, Wordpressist, jne. Minu koodi säutsude printimiseks leiate minu Githubi lehelt. Nüüd minge ja vaadake, mida saate välja mõelda!

IoT väljakutse
IoT väljakutse
IoT väljakutse
IoT väljakutse

IoT Challenge esimene auhind

Soovitan: