Cuprins:
- Provizii
- Pasul 1: Configurarea Raspberry Pi Zero W
- Pasul 2: Tipărirea din Pi
- Pasul 3: Conectarea la internetul obiectelor (partea 1)
- Pasul 4: Conectarea la internetul obiectelor (partea 2)
- Pasul 5: Configurarea accesului extern cu Ngrok
- Pasul 6: Adăugarea Pi la imprimantă
- Pasul 7: Să-l ducem mai departe
Video: Imprimanta Alexa - Imprimantă de chitanțe reciclată: 7 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Sunt un fan al reciclării tehnologiei vechi și al utilizării din nou. Cu ceva timp în urmă, achiziționasem o imprimantă termică de chitanțe veche și ieftină și îmi doream o modalitate utilă de a o reface. Apoi, de sărbători, mi s-a înmânat un Amazon Echo Dot și una dintre caracteristicile pe care le-am folosit cel mai mult a fost adăugarea de produse alimentare pe lista mea de cumpărături. Așa că m-am gândit că ar fi grozav să combin cele două și să folosesc imprimanta de chitanțe ca imprimantă IOT pentru Alexa (sau Google Home sau Siri etc.). Să vedem ce va fi nevoie pentru a face această idee o realitate.
Provizii
Iată părțile pe care le folosesc pentru acest proiect:
- Imprimantă generică de primire termică ieftină (trebuie să accepte ESC-POS)
- Dispozitiv Amazon Alexa (probabil vor funcționa și alte dispozitive „asistent la domiciliu”)
- Raspberry Pi Zero Wireless
- 7805 Regulator 5v
- 10μf Condensator
- Condensator 1μf
Alte lucruri pe care le folosesc pentru acest proiect sunt:
- If This Then That (IFTTT.com)
- Echipamente de lipit
Pasul 1: Configurarea Raspberry Pi Zero W
Primul pas este să reinstalați vechea imprimantă de chitanțe. Am ales să folosesc Raspberry Pi Zero W ca controler din cauza prețului său ieftin și a dimensiunilor mici. De fapt, este suficient de mic pentru a se încadra în carcasa imprimantei de chitanțe, deci nu există conexiuni externe! Pi Zero W are și Wifi încorporat, astfel încât totul este practic integrat în dimensiunea sa mică.
Pentru a pune Pi în funcțiune, trebuie să descărcăm sistemul de operare Raspbian și să-l inscriem pe un card microSD folosind un program precum Etcher. Introduceți-l în Pi împreună cu un cablu HDMI, tastatură, mouse și apoi alimentați.
Când Pi pornește și sunteți la interfața desktopului, vă puteți conecta la conexiunea wireless făcând clic pe pictograma wireless din partea dreaptă sus și selectând numele conexiunii wireless. Apoi, dacă faceți clic dreapta pe aceeași pictogramă wireless, puteți merge la setările de rețea și setați o adresă IP statică, astfel încât să ne putem conecta cu ușurință la ea prin rețea. În cele din urmă, doriți să faceți clic pe meniul principal și să selectați „Raspbian Configuration Editor” și sub fila „Interfețe”, asigurați-vă că SSH este activat. Apoi salvați-l și reporniți Pi.
Pasul 2: Tipărirea din Pi
Odată ce Raspbery Pi a fost repornit, acesta ar trebui să fie conectat la rețeaua fără fir cu un IP static și cu SSH activat. Deci, acum ar trebui să ne putem conecta la el de la distanță de pe orice alt computer. Pentru a face acest lucru, veți avea nevoie de un client SSH. Pentru Windows, un client bun este Putty. Vă puteți conecta utilizând adresa IP statică a lui Pi pe care am stabilit-o mai devreme. Apoi vă puteți conecta folosind „pi” ca nume de utilizator și „zmeură” ca parolă.
După o conectare reușită, ar trebui să fim acum la interfața terminalului Pi. Aici putem introduce comenzi care se vor executa pe Raspberry Pi. De exemplu, unul dintre primele lucruri pe care vrem să le facem este să ne asigurăm că software-ul de pe Pi este actualizat. Deci, în terminal putem tasta:
sudo apt-get update
Această comandă va actualiza depozitele de software de pe Pi. Apoi, putem instala software-ul imprimantei ESC-POS și bibliotecile necesare.
sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install --upgrade up sudo pip3 install python-escpos
După ce am făcut acest lucru, putem conecta imprimanta la portul Micro-USB al lui Pi (folosind un adaptor) și îl putem porni. Apoi, în terminalul nostru putem crea un mic script Python
nano hello_world.py
Și în el putem adăuga acest cod python
#! / usr / bin / pythonfrom escpos.printer import Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT Printer / n") p.close ()
Ieșiți-l (CTRL-X), salvați-l (CTRL-Y) și rulați-l pentru a-l testa
python3 hello_world.py
Pasul 3: Conectarea la internetul obiectelor (partea 1)
La ce bun ar fi o imprimantă fără ceva de imprimat? Am vrut să activez funcționalitatea de imprimare din diferite servicii de internet, cum ar fi Alexa. Deci, cum pot realiza asta? O opțiune este să alegeți un anumit serviciu de internet, să urmăriți documentația API și să scrieți o aplicație pe baza API-ului lor. Dar aleg să merg pe traseul leneș …
Există un site excelent numit „If This Then That” care declanșează acțiuni pentru diferite servicii de internet (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter etc.) pe baza unui set de criterii. De exemplu, „dacă” postez pe Facebook (acesta), „Apoi” trimiteți-mi un e-mail (acela).
Deci, pentru prima jumătate a acestui lucru, m-am înscris pentru un cont gratuit, puteți începe să creați un nou "applet" pentru diferitele servicii pe care doriți să le declanșați. Partea „Această” a applet-ului meu va fi Alexa. Există o mulțime de declanșatoare Alexa dintre care puteți alege, dar o voi selecta pe cea care spune „Întrebați ce este pe lista dvs. de cumpărături”. Și, în cele din urmă, dorim ca acesta să declanșeze un script Python pe Raspberry Pi, așa că pentru porțiunea „Acea” a scriptului, vrem să alegem Webhooks.
În opțiunea Webhooks, putem adăuga o adresă URL care indică Pi-ul nostru, la care vom reveni mai târziu. Putem lăsa câmpul Metodă ca „Obțineți”, iar pentru tipul de conținut selectați „Text simplu”. Pentru câmpul Corp, faceți clic pe „Adăugați un ingredient” și selectați „Întreaga listă”. Aceasta va trimite întreaga listă de cumpărături ca o cerere de primire.
Pasul 4: Conectarea la internetul obiectelor (partea 2)
Pasul anterior se ocupă de partea „Internet”, așa că acum permite să lucreze la partea „lucruri” folosind Raspberry Pi. Pentru a comunica cu applet-urile web „If This Then That”, trebuie să configurăm un server web pe Raspberry Pi. Există multe modalități diferite de a configura un server web, dar având în vedere că în cele din urmă doresc să rulez un script Python, am decis să folosesc serverul Flask al Python.
Pi are toate bibliotecile Flask preinstalate, deci tot ce trebuie să facem este să începem să scriem un script de testare:
nano flask_test.py
Și în ea, să adăugăm un cod care servește o pagină web simplă.
#! flask / bin / python # IMPORT BIBLIOTECILE FLASK din flask import Flask, solicitați #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @ app.route ('/') def index (): returnează „Serverul dvs. Flask funcționează!” # RULAȚI PROGRAMUL dacă _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Acum doar salvați programul și rulați-l folosind această comandă:
sudo python3 flask_test.py
Veți vedea prin răspunsul de comandă că portul implicit pe care rulează Flask este portul 5000. Deci, într-un browser web, dacă introduceți adresa IP a lui Pi: 5000, ar trebui să vedeți textul "Serverul dvs. Flask funcționează!"
Avem codul nostru Python de testare de mai devreme, care se imprimă pe imprimanta de chitanțe și avem serverul nostru Flask de testare. Deci, în continuare, trebuie să le combinăm și să încorporăm un cod care extrage datele din applet-ul nostru Webhook. Să creăm un nou fișier Python:
nano iot_print_server.py
Și în cadrul acestuia, adăugați următorul cod:
#! flask / bin / python # IMPORT BIBLIOANELE FLACON ȘI IMPRIMANȚĂ din import flacon Flacon, solicitare de la escpos.printer import Usb #ASIGN VARIABLES FOR PRINTER AND FLASK p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CREATE 'INDEX' PAGE @ app.route ('/') def index (): returnează 'Serverul dvs. Flask funcționează!' #CREATE „PAGINA” NUMITĂ „LISTA” PENTRU PRINTAREA LISTEI DE CUMPĂRĂTURI ALEXA @ app.route ('/ list') def list (): #CAPTURĂ „OBȚINE” DATE DIN PAGINELE IFTTT content = request.get_data () #CONVERTIZAȚI DATE PRIME STRING str_content = str (content) #DIVIDE DATA ÎN LINEURI SEPARATE str_split = str_content.splitlines () #SEORDATE CUVINTE DE COMMA ȘI ADĂUGAȚI LA O LISTA NOUĂ newlist = pentru cuvânt în str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Lista de cumpărături / n") p.text ("Lista de cumpărături: / n ") #ENUMERAȚI ȘI PRINTAȚI FIECARE ARTICOL ÎN LISTA r = 1 pentru x în rmv_marks: #print (str (r) +". "+ X +" / n ") p.text (str (r) +". "+ x + "\ n") r + = 1 #RETURN REZULTATE returnează 'x' # RUN PROGRAM dacă _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Puteți să-l rulați pentru a vedea dacă returnează erori, dar nu va funcționa încă cu webhook-ul nostru, deoarece, în acest moment, serverul rulează doar local. Nu există încă o adresă URL externă la care să se conecteze webhook-ul. Am putea configura redirecționarea porturilor pe routerul nostru și doar să ne folosim adresa IP externă, dar asta nu este prea sigur. Ca alternativă, decid să merg cu NGROK.
Pasul 5: Configurarea accesului extern cu Ngrok
Ngrok configurează o conexiune sigură la rețeaua dvs. fără a fi nevoie să vă expuneți IP-ul extern sau să vă încurcați cu redirecționarea porturilor. După ce vă înscrieți pentru un cont gratuit, acesta vă oferă un jeton de autorizare. Apoi, pe Raspberry Pi, îl puteți descărca, dezarhiva, conecta jetonul de autentificare și apoi îl puteți rula pe portul 5000:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… dezarhivați ngrok-stable-linux-arm./ngrok authtoken [introduceți token-ul de autentificare aici]./ngrok http 5000
*** IMPORTANT *** Versiunea gratuită a Ngrok nu vă oferă o adresă statică, deci de fiecare dată când executați din nou Ngrok, vă va oferi o altă adresă. Dacă doriți o adresă statică, astfel încât să nu trebuie să continuați să vă reeditați Webhook-ul, atunci va trebui să plătiți pentru un cont actualizat.
O alternativă gratuită la Ngrok care oferă IP-uri statice se numește „Serveo” la www.serveo.net
************************
Pe ecranul rezultat, vă oferă o adresă de redirecționare (https://random-string.ngrok.io) pe care o putem folosi în applet-ul nostru Webhook. Așadar, revenind la „If This Then That”, în câmpul URL, introduceți adresa dvs. de redirecționare Ngrok și indicați-o către pagina „listă” de pe serverul nostru Flask. Ar trebui să arate cam așa
random_string.ngrok.io/list
Apoi continuați și salvați modificările.
Pentru a-l testa, mențineți Ngrok în funcțiune, deschideți un terminal nou și rulați scriptul nostru Python. Cu ambele articole în funcțiune, întrebați-o pe Alexa ce este pe lista dvs. de cumpărături. După un minut sau două, ar trebui să imprime rezultatele. Dacă doriți să se tipărească imediat, mergeți la Applet-ul dvs. pe IFTTT și faceți clic pe „Verificați acum”. Dacă totul merge bine, imprimanta de chitanțe ar trebui să imprime ce este pe lista dvs. de cumpărături! Ultimul bit de cod pe care trebuie să-l adăugăm este o modalitate de a porni automat ngrok și serverul nostru de balon de fiecare dată când pornește Pi. Putem face acest lucru cu ușurință executând scriptul Python executabil:
chmod + x iot_print_server.py
Apoi putem edita fișierul /etc/rc.local astfel încât să arate astfel:
## În mod implicit, acest script nu face nimic. # Imprimați adresa IP _IP = $ (hostname -I) || adevărat dacă ["$ _IP"]; apoi printf "Adresa mea IP este% s / n" "$ _IP" fi #autostart ngrok și îndreptați-l către fișierul dvs. de autentificare./home/pi/ngrok/ngrok http -config = / home / pi /.ngrok2 / ngrok. yml 5000 #autostart scriptul python al imprimantei sudo python3 /home/pi/iot_receipt_printer.py & exit 0
Pasul 6: Adăugarea Pi la imprimantă
Imprimanta de chitanțe pe care o am are mult spațiu gol în interiorul carcasei. Și Raspberry Pi Zero fiind la fel de mic pe cât este, m-am gândit că ar fi grozav doar să-l ascund în imprimanta de chitanțe, astfel încât să arate ca un singur dispozitiv. Singura problemă este că imprimanta de chitanțe funcționează pe 12v și Pi rulează pe 5v. Deci, dacă vrem doar un cablu de alimentare pentru a le alimenta pe amândouă, va trebui să renunțăm la sursa de alimentare de 12v la 5v.
Folosind un regulator de tensiune 7805, un condensator de 1uf și un condensator de 10uf, am reușit să creez un regulator simplu de 5v pe care l-am conectat la placa logică a imprimantei de recepție. Am lipit firul "-" la solul comun, iar apoi am lipit firul "+" pe partea "pe" a întrerupătorului, astfel încât Pi să se aprindă și să se oprească când imprimanta este pornită și oprită. Folosind un multimetru, am testat pentru a confirma că ieșirea este sigură pentru Pi. Apoi am lipit pe un cablu micro-usb și l-am conectat la Pi. După conectarea cablului la imprimantă și apăsarea comutatorului, atât imprimanta, cât și Pi-ul au pornit!
În cele din urmă, am făcut o gaură pentru a conecta cablul USB de la Pi la imprimantă. Am găsit un loc pentru a pune regulatorul de 5V și Pi în carcasa imprimantei și apoi am pus totul la loc. Deci, acum imprimanta are propriul server web, de asemenea!
Pasul 7: Să-l ducem mai departe
Dacă ați reușit să aruncați o privire la „If This Then That”, probabil ați observat că are o mulțime de servicii web diferite la care să vă conectați. Deci, dacă nu aveți un Alexa sau nu vă interesează să utilizați unul, puteți utiliza acest proiect pentru a imprima din aproape orice, cum ar fi Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, etc. Puteți găsi codul meu pentru tipărirea Tweets pe pagina mea Github. Acum du-te și vezi cu ce poți veni!
Premiul I în Provocarea IoT
Recomandat:
Mașină RC reciclată: 23 de pași (cu imagini)
Mașină RC reciclată: mașinile RC au fost întotdeauna o sursă de entuziasm pentru mine. Sunt rapide, sunt distractive și nu trebuie să vă faceți griji dacă le prăbușiți. Cu toate acestea, în calitate de pasionat de RC mai în vârstă, mai matur, nu pot fi văzut jucându-mă cu mașini RC mici pentru copii. Trebuie sa am
Banca de energie solară de 5 $ de la bateria de laptop reciclată: 5 pași (cu imagini)
5 $ Solar Power Bank de la bateria de laptop reciclată: Deoarece unii dintre voi știți că facultatea mea avea o expoziție științifică, a fost, de asemenea, o competiție de afișare a proiectelor pentru Juniori. Prietenul meu a fost interesat să participe la asta, m-au întrebat ce să fac, le-am sugerat acest proiect și
Motocicletă reciclată din capacul sticlei: 9 pași (cu imagini)
Motocicletă reciclată din capacul sticlei: v Ce să faci acasă? Iată câteva modalități simple de a face mașini de curse acasă. Vă voi ghida pas cu pas pentru a crea mașini de curse de bază până la cele avansate. Puteți face și încerca. sau îl puteți împacheta ca cadou pentru a le oferi copiilor sau prietenilor. Sper
Lampă de monitor spartă reciclată: 8 pași (cu imagini)
Lampă de monitor spartă reciclată: faceți o piesă ușoară sculpturală frumoasă, ușor de realizat cu un monitor spart neutilizat
Cameră de rezervă pentru camera video reciclată: 7 pași (cu imagini)
Cameră de rezervă pentru camera video reciclată: sunt sigur că majoritatea dintre voi care citiți acest lucru au un sertar sau un dulap undeva plin de tehnică iubită odată care tocmai a devenit prea veche și depășită. Cu siguranță am partea mea de tehnologie veche și este trist să văd că un astfel de potențial se pierde. Ei bine, în acest ghid, sunt g