Taula de continguts:
- Subministraments
- Pas 1: Configuració del Raspberry Pi Zero W
- Pas 2: Impressió des del Pi
- Pas 3: Connexió a Internet de les coses (primera part)
- Pas 4: connectar-se a Internet de les coses (segona part)
- Pas 5: Configuració de l'accés extern amb Ngrok
- Pas 6: Afegir el Pi a la impressora
- Pas 7: Prendre-ho més enllà
Vídeo: Impressora Alexa - Impressora de rebuts reciclada: 7 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Sóc un fan de reciclar tecnologia antiga i tornar-la a fer útil. Fa un temps, havia adquirit una antiga impressora de rebuts tèrmics barata i volia una manera útil de tornar-la a fer. Després, durant les vacances, em van regalar un Amazon Echo Dot i una de les funcions que més vaig utilitzar va ser afegir queviures a la meva llista de la compra. Així que vaig pensar que seria fantàstic combinar les dues i utilitzar la impressora de rebuts com a impressora IOT per a Alexa (o Google Home, o Siri, etc.). Vegem què es necessita per fer realitat aquesta idea.
Subministraments
Aquí teniu les parts que faig servir per a aquest projecte:
- Impressora de rebuts tèrmics genèrica barata (ha de ser compatible amb ESC-POS)
- Dispositiu Amazon Alexa (probablement també funcionaran altres dispositius "assistent per a la llar")
- Raspberry Pi Zero sense fils
- 7805 Regulador 5v
- Condensador de 10μf
- Condensador de 1μf
Altres coses que faig servir per a aquest projecte són:
- If This Then That (IFTTT.com)
- Equip de soldadura
Pas 1: Configuració del Raspberry Pi Zero W
El primer pas és tornar a imprimir la impressora de rebuts antiga. Vaig optar per utilitzar el Raspberry Pi Zero W com a controlador pel seu preu barat i mida petita. En realitat, és prou petit per cabre dins de la caixa de la impressora de rebuts, de manera que no hi ha connexions externes. El Pi Zero W també està integrat a Wifi, de manera que tot està bàsicament integrat en la seva petita mida.
Per posar en funcionament el Pi, hem de descarregar el sistema operatiu Raspbian i gravar-lo en una targeta microSD mitjançant un programa com Etcher. Inseriu-lo al Pi juntament amb un cable HDMI, un teclat, un ratolí i, a continuació, alimenteu-lo.
Quan el Pi s’engegui i estigueu a la interfície de l’escriptori, podeu connectar-vos a la vostra connexió sense fils fent clic a la icona sense fils de la part superior dreta i seleccionant el nom de la vostra connexió sense fils. A continuació, si feu clic amb el botó dret a la mateixa icona sense fils, podeu anar a la configuració de la xarxa i configurar una adreça IP estàtica perquè ens hi puguem connectar fàcilment a través de la xarxa. Finalment, voleu fer clic al menú principal i seleccionar "Raspbian Configuration Editor" i, a la pestanya "Interfícies", assegureu-vos que SSH estigui activat. A continuació, deseu-lo i reinicieu el Pi.
Pas 2: Impressió des del Pi
Un cop s'hagi reiniciat Raspbery Pi, s'hauria de connectar a la vostra xarxa sense fils amb una IP estàtica i amb SSH activat. Per tant, ara hauríem de poder connectar-nos-hi remotament des de qualsevol altre equip. Per fer-ho, necessitareu un client SSH. Per a Windows, un bon client és Putty. Podeu connectar-vos-hi mitjançant l'adreça IP estàtica del Pi que hem establert anteriorment. A continuació, podeu iniciar la sessió utilitzant "pi" com a nom d'usuari i "raspberry" com a contrasenya.
Després d'un inici de sessió correcte, ara hauríem d'estar a la interfície del terminal Pi. Aquí podem escriure ordres que s’executaran al Raspberry Pi. Per exemple, una de les primeres coses que volem fer és assegurar-nos que el programari del Pi estigui actualitzat. Així doncs, al terminal podem escriure:
sudo apt-get update
Aquesta ordre actualitzarà els repositoris de programari del Pi. A continuació, podem instal·lar el programari de la impressora ESC-POS i les biblioteques necessàries.
sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install --upgrade pip sudo pip3 install python-escpos
Fet això, ara podem connectar la impressora al port Micro-USB del Pi (mitjançant un adaptador) i encendre-la. A continuació, al nostre terminal podem crear un petit script python
nano hello_world.py
I en ell hi podem afegir aquest codi python
#! / usr / bin / pythonfrom escpos.printer import Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT Printer / n") p.close ()
Sortiu-lo (CTRL-X), deseu-lo (CTRL-Y) i executeu-lo per provar-lo
python3 hello_world.py
Pas 3: Connexió a Internet de les coses (primera part)
De què serviria una impressora sense imprimir alguna cosa? Volia habilitar la funcionalitat per imprimir des de diferents serveis d'Internet, com Alexa. Llavors, com puc aconseguir-ho? Una opció és triar un servei d’Internet específic, rastrejar la documentació de l’API i escriure una aplicació basada en la seva API. Però trio seguir la ruta mandrosa …
Hi ha un lloc web fantàstic anomenat "If This Then That" que activa accions per a diferents serveis d'Internet (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, etc.) en funció d'un conjunt de criteris. Per exemple, "si" publico a Facebook (això), "Llavors" envieu-me un correu electrònic (això).
Així doncs, durant la primera meitat d’això, m’he inscrit per obtenir un compte gratuït. Podeu començar a crear un “applet” nou per als diferents serveis que vulgueu activar. La part "Aquesta" del meu applet serà Alexa. Hi ha molts activadors d’Alexa per triar, però vaig a seleccionar el que digui "Pregunta què hi ha a la llista de la compra". I, en última instància, volem que activi un script Python al Raspberry Pi, de manera que per a la secció "That" del script volem triar Webhooks.
A l’opció Webhooks, podem afegir un URL que apunti al nostre Pi, al qual tornarem més endavant. Podem deixar el camp Mètode com a "Obtén" i, per al tipus de contingut, seleccionar "Plain Text". Per al camp Cos, feu clic a "Afegeix ingredient" i seleccioneu "Llista sencera". S’enviarà tota la llista de la compra com a sol·licitud d’obtenció.
Pas 4: connectar-se a Internet de les coses (segona part)
El pas anterior es fa càrrec de la part "Internet", de manera que ara podeu treballar a la part "coses" mitjançant el Raspberry Pi. Per comunicar-nos amb l’applet de webhooks "If This Then That", hem de configurar un servidor web al Raspberry Pi. Hi ha moltes maneres diferents de configurar un servidor web, però tenint en compte que en última instància vull executar un script Python, vaig decidir utilitzar el servidor Flask de Python.
El Pi té totes les biblioteques Flask preinstal·lades, de manera que tot el que hem de fer és començar a escriure un script de prova:
nano flask_test.py
Afegiu-hi un codi que serveixi per a una pàgina web senzilla.
#! flask / bin / python # IMPORTACIÓ DE LES BIBLIOTECES FLASK d'importació de flask Flask, sol·licitud #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @ app.route ('/') def index (): tornar "El vostre servidor Flask funciona!" # EXECUTI EL PROGRAMA si _name_ == '_main_': app.run (depuració = True, host = '0.0.0.0')
Ara només cal desar el programa i executar-lo amb aquesta ordre:
sudo python3 flask_test.py
Veureu per la resposta de l'ordre que el port per defecte en què s'executa Flask és el port 5000. Per tant, en un navegador web, si escriviu l'adreça IP del vostre Pi: 5000, hauríeu de veure el text "El vostre servidor Flask funciona!"
Tenim el codi de prova Python anterior que s’imprimeix a la impressora de rebuts i tenim el servidor Flask de prova. Per tant, a continuació, els hem de combinar i incorporar algun codi que extreu les dades del nostre applet Webhook. Creem un fitxer Python nou:
nano iot_print_server.py
I dins d’aquest, afegiu el codi següent:
#! flask / bin / python # IMPORTACIÓ DE LES BIBLIOTECES DE FLASK I IMPRESSORA des de la importació de flask Flask, sol·licitud d’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 'El vostre servidor de Flask funciona!' #CREATE "PAGE" ANOMENAT "LIST" PER IMPRIMIR ALEXA SHOPPING LIST @ app.route ('/ list') def list (): #CAPTURE "GET" DATA OF IFTTT WEBOOKS content = request.get_data () #CONVERTIR DADES CRUDES A STRING str_content = str (content) #DIVIDEIX LES DADES EN LÍNIES SEPARADES str_split = str_content.splitlines () # PARAULES SEPARADES PER COMA I AFEGEIX A UNA LLISTA NOU llista nova = per a la paraula str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") per a la llista nova] #PRINT HEADER #print ("Llista de la compra / n") p.text ("Llista de la compra: / n ") #ENUMERAR I IMPRIMIR CADA ARTICLE A LA LLISTA r = 1 per a x en rmv_marks: #print (str (r) +". "+ X +" / n ") p.text (str (r) +". "+ x + "\ n") r + = 1 #RETORNAR RESULTATS retornar 'x' # EXECUTAR EL PROGRAMA si _name_ == '_main_': app.run (depuració = True, host = '0.0.0.0')
Podeu executar-lo per veure si retorna algun error, però encara no funcionarà amb el nostre webhook perquè a hores d’ara el servidor només s’executa localment. Encara no hi ha cap URL extern per connectar-se al webhook. Podríem configurar el reenviament de ports al nostre encaminador i utilitzar la nostra adreça IP externa, però això no és massa segur. Com a alternativa, decideixo anar amb NGROK.
Pas 5: Configuració de l'accés extern amb Ngrok
Ngrok estableix una connexió segura a la vostra xarxa sense haver d’exposar la vostra IP externa ni embolicar-vos amb el reenviament de ports. Després de registrar-vos per obtenir un compte gratuït, us proporciona un testimoni d’autorització. A continuació, al Raspberry Pi, podeu descarregar-lo, descomprimir-lo, connectar el vostre testimoni d’autorització i executar-lo al port 5000:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… descomprimiu ngrok-stable-linux-arm./ngrok authtoken [inseriu aquí el vostre testimoni d'autenticació]./ngrok http 5000
*** IMPORTANT *** La versió gratuïta de Ngrok no us proporciona cap adreça estàtica, de manera que cada vegada que torneu a executar Ngrok us proporcionarà una adreça diferent. Si voleu una adreça estàtica perquè no hàgiu de continuar reeditant el Webhook, haureu de pagar un compte actualitzat.
Una alternativa gratuïta a Ngrok que ofereix IP estàtiques es diu "Serveo" a www.serveo.net
************************
A la pantalla resultant, us proporciona una adreça de reenviament (https://random-string.ngrok.io) que podem utilitzar al nostre applet Webhook. Tornant a "Si això és així", al camp URL, introduïu la vostra adreça de reenviament Ngrok i assenyaleu-la a la pàgina "llista" del nostre servidor Flask. Ha de semblar una cosa així
random_string.ngrok.io/list
A continuació, deseu els canvis.
Per provar-ho, manteniu Ngrok en execució, obriu un terminal nou i executeu el nostre script python. Amb els dos articles en funcionament, pregunteu a Alexa què hi ha a la llista de la compra. Al cap d’un minut o dos, hauria d’imprimir els resultats. Si voleu que s'imprimeixi immediatament, aneu al vostre applet a IFTTT i feu clic a "Comprova ara". Si tot va bé, la impressora de rebuts hauria d'imprimir el contingut de la vostra llista de compres. L'últim bit de codi que hem d'afegir és una manera d'iniciar automàticament ngrok i el nostre servidor de flascons cada vegada que s'inicia el Pi. Ho podem fer fàcilment executant el nostre script Python:
chmod + x iot_print_server.py
A continuació, podem editar el nostre fitxer /etc/rc.local de manera que tingui el següent aspecte:
## Per defecte, aquest script no fa res. # Imprimiu l'adreça IP _IP = $ (nom de l'amfitrió -I) || cert si ["$ _IP"]; després printf "La meva adreça IP és% s / n" "$ _IP" fi #autostart ngrok i apunteu-lo al fitxer d'autenticació./home/pi/ngrok/ngrok http -config = / home / pi /.ngrok2 / ngrok. yml 5000 #autostart l'script de la impressora python sudo python3 /home/pi/iot_receipt_printer.py i sortir de 0
Pas 6: Afegir el Pi a la impressora
La impressora de rebuts que tinc té molt d’espai buit dins de la carcassa. I, com que el Raspberry Pi Zero és tan petit com és, vaig pensar que seria genial amagar-lo a la impressora de rebuts perquè sembli un dispositiu. L’únic problema és que la impressora de rebuts funciona amb 12v i el Pi funciona amb 5v. Per tant, si només volem un cable d’alimentació per alimentar tots dos, haurem d’abandonar aquesta font d’alimentació de 12v a 5v.
Utilitzant un regulador de voltatge 7805, un condensador de 1uf i un condensador de 10uf, vaig poder crear un regulador senzill de 5v que vaig connectar a la placa lògica de la impressora de rebuts. Vaig soldar el cable "-" a la terra comuna i després vaig soldar el cable "+" al costat "on" de l'interruptor d'alimentació perquè el Pi s'encengui i s'apagui quan la impressora estigui engegada i apagada. Amb un multímetre, vaig provar per confirmar que la sortida era segura per al Pi. Després vaig soldar amb un cable micro-usb i el vaig connectar al Pi. Després d'endollar el cable a la impressora i girar l'interruptor, tant la impressora com el Pi s'han encès.
Finalment, he forat un forat per connectar el cable USB del Pi a la impressora. Vaig trobar un lloc per posar el regulador de 5 V i Pi dins de la caixa de la impressora i després vaig tornar a posar-ho tot junt. Així doncs, ara la impressora també té el seu propi servidor web autònom.
Pas 7: Prendre-ho més enllà
Si heu pogut fer una ullada a "Si això és així", probablement haureu observat que té molts serveis web diferents per connectar-vos. Per tant, si no teniu un Alexa o us interessa fer-ne un, podeu fer servir aquest projecte per imprimir gairebé qualsevol cosa, com ara Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, etc. Podeu trobar el meu codi per imprimir tuits a la meva pàgina de Github. Ara ves a veure què et ve de gust!
Primer premi a l'IoT Challenge
Recomanat:
Banc d'energia solar de 5 $ amb bateria d'ordinador portàtil reciclada: 5 passos (amb imatges)
Banc d'energia solar de 5 $ amb bateria d'ordinador portàtil reciclada: ja que alguns sabeu que la meva universitat tenia una exposició científica, la seva participació també era una competició de presentació de projectes per als juniors. El meu amic estava interessat a participar-hi, em van preguntar què fer, els vaig suggerir aquest projecte i
Motocicleta reciclada des del tap d'ampolla: 9 passos (amb imatges)
Motocicleta reciclada des del tap d'ampolla: v Què fer a casa? Aquí teniu algunes maneres senzilles de fabricar cotxes de carreres a casa. Us guiaré pas a pas per fer cotxes de carreres bàsics i avançats. Podeu fer-ho i provar-ho. o podeu empaquetar-lo com a regal per regalar als vostres fills o amics. Espero
Càmera de seguretat de càmera de vídeo reciclada: 7 passos (amb imatges)
Càmera de seguretat de càmera de vídeo reciclada: estic segur que la majoria de vosaltres que llegiu això teniu un calaix o un armari ple de tecnologia una vegada estimada que acaba d’envellir-se i estar obsoleta. Definitivament, tinc la meva part de tecnologia antiga i és trist veure perdre aquest potencial. Bé, en aquesta guia, sóc g
Llum LED RGB reciclada: 6 passos (amb imatges)
Làmpada LED RGB reciclada: aquest projecte es va fer amb materials reciclats i els d’un altre projecte. Originalment, el projecte anava a ser un alimentador automàtic de peixos. Algunes imatges poden reflectir el projecte d'alimentació de peixos. Com que el projecte es va construir principalment a partir de materials a mà jo
Anell LED de la vora de la bicicleta reciclada: 9 passos (amb imatges)
Anell LED de la vora de la bicicleta reciclada: inspirat en el mètode instructiu de Loek Vellkoop, recentment he tallat una bicicleta per a nens de rebuig per veure tots els materials que en podia reutilitzar. Un dels elements que realment em va impactar va ser la vora de la roda després d’haver tret tots els radis. Sòlid