Taula de continguts:

Impressora Alexa - Impressora de rebuts reciclada: 7 passos (amb imatges)
Impressora Alexa - Impressora de rebuts reciclada: 7 passos (amb imatges)

Vídeo: Impressora Alexa - Impressora de rebuts reciclada: 7 passos (amb imatges)

Vídeo: Impressora Alexa - Impressora de rebuts reciclada: 7 passos (amb imatges)
Vídeo: Impressora de rebuts HPRT 2024, Desembre
Anonim
Image
Image
Impressora Alexa | Impressora de rebuts reciclada
Impressora Alexa | Impressora de rebuts reciclada

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:

  1. Impressora de rebuts tèrmics genèrica barata (ha de ser compatible amb ESC-POS)
  2. Dispositiu Amazon Alexa (probablement també funcionaran altres dispositius "assistent per a la llar")
  3. Raspberry Pi Zero sense fils
  4. 7805 Regulador 5v
  5. Condensador de 10μf
  6. Condensador de 1μf

Altres coses que faig servir per a aquest projecte són:

  1. If This Then That (IFTTT.com)
  2. Equip de soldadura

Pas 1: Configuració del Raspberry Pi Zero W

Configuració del Raspberry Pi Zero W
Configuració del Raspberry Pi Zero W
Configuració del Raspberry Pi Zero W
Configuració del Raspberry Pi Zero W
Configuració del Raspberry Pi Zero W
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

Impressió des del Pi
Impressió des del Pi
Impressió des del Pi
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)

Connexió a Internet de les coses (primera part)
Connexió a Internet de les coses (primera part)
Connexió a Internet de les coses (primera part)
Connexió a Internet de les coses (primera part)
Connexió a Internet de les coses (primera part)
Connexió a Internet de les coses (primera part)
Connexió a Internet de les coses (primera part)
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)

Connexió a Internet de les coses (segona part)
Connexió a Internet de les coses (segona part)
Connexió a Internet de les coses (segona part)
Connexió 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

Configuració de l'accés extern amb Ngrok
Configuració de l'accés extern amb Ngrok
Configuració de l'accés extern amb Ngrok
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

Afegir el Pi a la impressora
Afegir el Pi a la impressora
Afegir el Pi a la impressora
Afegir el Pi a la impressora
Afegir el Pi a la impressora
Afegir el Pi a la impressora
Afegir el Pi a la impressora
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à

Portant-ho més enllà
Portant-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!

Desafiament IoT
Desafiament IoT
Desafiament IoT
Desafiament IoT

Primer premi a l'IoT Challenge

Recomanat: