Tabla de contenido:
- Suministros
- Paso 1: Configurar la Raspberry Pi Zero W
- Paso 2: Imprimir desde la Pi
- Paso 3: Conexión a Internet de las cosas (Parte 1)
- Paso 4: Conexión a Internet de las cosas (Parte 2)
- Paso 5: Configurar el acceso externo con Ngrok
- Paso 6: agregar el Pi a la impresora
- Paso 7: llevarlo más lejos
Video: Impresora Alexa - Impresora de recibos reciclada: 7 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Soy un fanático de reciclar tecnología antigua y hacerla útil nuevamente. Hace un tiempo, había adquirido una impresora térmica de recibos vieja y barata, y quería una forma útil de reutilizarla. Luego, durante las vacaciones, me obsequiaron un Amazon Echo Dot, y una de las características que más usé fue agregar comestibles a mi lista de compras. Así que pensé que sería genial combinar los dos y usar la impresora de recibos como una impresora IOT para Alexa (o Google Home, o Siri, etc.). Veamos qué se necesita para hacer realidad esta idea.
Suministros
Aquí están las partes que utilizo para este proyecto:
- Impresora de recibos térmica genérica barata (debe ser compatible con ESC-POS)
- Dispositivo Amazon Alexa (otros dispositivos de "asistente doméstico" probablemente también funcionarán)
- Raspberry Pi Zero inalámbrico
- Regulador 7805 5v
- Condensador 10μf
- Condensador de 1μf
Otras cosas que uso para este proyecto son:
- Si esto, entonces eso (IFTTT.com)
- Equipo de soldadura
Paso 1: Configurar la Raspberry Pi Zero W
El primer paso es hacer que la antigua impresora de recibos vuelva a imprimir. Elegí usar la Raspberry Pi Zero W como controlador debido a su precio económico y su tamaño pequeño. En realidad, es lo suficientemente pequeño como para caber dentro de la caja de la impresora de recibos, por lo que no hay conexiones externas. El Pi Zero W también tiene Wifi incorporado, por lo que todo está básicamente integrado en su pequeño tamaño.
Para poner en funcionamiento el Pi, necesitamos descargar el sistema operativo Raspbian y grabarlo en una tarjeta microSD usando un programa como Etcher. Insértelo en el Pi junto con un cable HDMI, teclado, mouse y luego encienda.
Cuando el Pi se inicia y estás en la interfaz de escritorio, puedes conectarte a tu conexión inalámbrica haciendo clic en el icono de conexión inalámbrica en la parte superior derecha y seleccionando el nombre de tu conexión inalámbrica. Luego, si hace clic con el botón derecho en ese mismo icono inalámbrico, puede ir a la configuración de red y establecer una dirección IP estática para que podamos conectarnos fácilmente a él a través de la red. Finalmente, desea hacer clic en el menú principal y seleccionar el "Editor de configuración de Raspbian" y, en la pestaña "Interfaces", asegúrese de que SSH esté habilitado. Luego guárdalo y reinicia tu Pi.
Paso 2: Imprimir desde la Pi
Una vez que se haya reiniciado la Raspbery Pi, debe conectarse a su red inalámbrica con una IP estática y con SSH habilitado. Así que ahora deberíamos poder conectarnos a él de forma remota desde cualquier otra computadora. Para hacer eso, necesitará un cliente SSH. Para Windows, un buen cliente es Putty. Puede conectarse a él utilizando la dirección IP estática de Pi que configuramos anteriormente. Luego puede iniciar sesión usando "pi" como nombre de usuario y "raspberry" como contraseña.
Después de un inicio de sesión exitoso, ahora deberíamos estar en la interfaz de terminal de Pi. Aquí podemos escribir comandos que se ejecutarán en la Raspberry Pi. Por ejemplo, una de las primeras cosas que queremos hacer es asegurarnos de que el software del Pi esté actualizado. Entonces, en la terminal podemos escribir:
sudo apt-get update
Este comando actualizará los repositorios de software en la Pi. A continuación, podemos instalar el software de la impresora ESC-POS y las bibliotecas necesarias.
sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install --upgrade pip sudo pip3 install python-escpos
Una vez hecho esto, ahora podemos conectar la impresora al puerto Micro-USB de la Pi (usando un adaptador) y encenderla. Luego, en nuestra terminal podemos crear un pequeño script de Python
nano hello_world.py
Y en él podemos agregar este código de Python
#! / usr / bin / python desde escpos.printer import Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT Printer / n") p.close ()
Salga (CTRL-X), guárdelo (CTRL-Y) y ejecútelo para probarlo
python3 hello_world.py
Paso 3: Conexión a Internet de las cosas (Parte 1)
¿De qué serviría una impresora sin algo para imprimir? Quería habilitar la funcionalidad para imprimir desde diferentes servicios de Internet, como Alexa. Entonces, ¿cómo puedo lograr eso? Una opción es elegir un servicio de Internet específico, rastrear la documentación de su API y escribir una aplicación basada en su API. Pero elijo ir por la ruta perezosa …
Hay un gran sitio web llamado "If This Then That" que activa acciones para diferentes servicios de Internet (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, etc.) según un conjunto de criterios. Por ejemplo, "si" publico en Facebook (esto), "Entonces" envíame un correo electrónico (eso).
Entonces, durante la primera mitad de esto, me registré para obtener una cuenta gratuita, puede comenzar a crear un nuevo "applet" para los diferentes servicios que desea activar. La parte "Esta" de mi subprograma será Alexa. Hay muchos activadores de Alexa para elegir, pero voy a seleccionar el que dice "Pregunta qué hay en tu lista de compras". Y, en última instancia, queremos que active una secuencia de comandos de Python en la Raspberry Pi, por lo que para la parte "Eso" de la secuencia de comandos, queremos elegir Webhooks.
En la opción Webhooks, podemos agregar una URL que apunte a nuestra Pi, a la que volveremos más adelante. Podemos dejar el campo Método como "Obtener", y para el tipo de contenido seleccionar "Texto sin formato". Para el campo Cuerpo, haga clic en "Agregar ingrediente" y seleccione "Lista completa". Esto enviará la lista de compras completa como una solicitud de obtención.
Paso 4: Conexión a Internet de las cosas (Parte 2)
El paso anterior se encarga de la parte de "Internet", así que ahora vamos a trabajar en la parte de "cosas" usando la Raspberry Pi. Para comunicarnos con el subprograma de webhooks "If This Then That", necesitamos configurar un servidor web en la Raspberry Pi. Hay muchas formas diferentes de configurar un servidor web, pero considerando que en última instancia quiero ejecutar un script de Python, decidí usar el servidor Flask de Python.
El Pi tiene todas las bibliotecas de Flask preinstaladas, por lo que todo lo que tenemos que hacer es comenzar a escribir un script de prueba:
nano flask_test.py
Y en él, agreguemos un código que sirva para una página web simple.
#! flask / bin / python # IMPORTA LAS BIBLIOTECAS DE FRASCOS de flask import Flask, solicita #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @ app.route ('/') def index (): return '¡Su servidor Flask está funcionando!' # EJECUTE EL PROGRAMA if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Ahora simplemente guarde el programa y ejecútelo usando este comando:
sudo python3 flask_test.py
Verá por la respuesta del comando que el puerto predeterminado en el que se ejecuta Flask es el puerto 5000. Por lo tanto, en un navegador web, si escribe la dirección IP de su Pi: 5000, debería ver el texto "¡Su servidor Flask está funcionando!"
Tenemos nuestro código Python de prueba anterior que se imprime en nuestra impresora de recibos, y tenemos nuestro servidor Flask de prueba. Entonces, a continuación, debemos combinarlos e incorporar algún código que extraiga los datos de nuestro subprograma Webhook. Creemos un nuevo archivo de Python:
nano iot_print_server.py
Y dentro de él, agrega el siguiente código:
#! flask / bin / python # IMPORTAR LAS BIBLIOTECAS DE IMPRESORAS Y DE FRASCO de flask import Flask, solicitud de escpos.printer import Usb #ASIGNAR VARIABLES PARA LA IMPRESORA Y FRASCO p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CREATE 'INDICE' PAGE @ app.route ('/') def index (): return '¡Su servidor Flask está funcionando!' #CREAR "PÁGINA" LLAMADA "LISTA" PARA IMPRIMIR LA LISTA DE COMPRAS DE ALEXA @ app.route ('/ list') def list (): #CAPTURE "OBTENER" DATOS DE IFTTT WEBOOKS content = request.get_data () #CONVERTIR DATOS SIN PROCESAR PARA STRING str_content = str (content) #DIVIDIR LOS DATOS EN LÍNEAS SEPARADAS str_split = str_content.splitlines () # SEPARAR PALABRAS POR COMA Y AÑADIR A UNA NUEVA LISTA newlist = por palabra en str_split: palabra = palabra.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Lista de compras / n") p.text ("Lista de compras: / n ") #ENUMERAR E IMPRIMIR CADA ELEMENTO DE LA LISTA r = 1 para x en rmv_marks: #print (str (r) +". "+ X +" / n ") p.text (str (r) +". "+ x + "\ n") r + = 1 # DEVOLUCIÓN DE RESULTADOS return 'x' #RUN THE PROGRAM if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Puede ejecutarlo para ver si devuelve algún error, pero todavía no funcionará con nuestro webhook porque a partir de ahora, el servidor solo se está ejecutando localmente. Todavía no hay una URL externa a la que conectarse el webhook. Podríamos configurar el reenvío de puertos en nuestro enrutador y simplemente usar nuestra dirección IP externa, pero eso no es demasiado seguro. Como alternativa, decido ir con NGROK.
Paso 5: Configurar el acceso externo con Ngrok
Ngrok establece una conexión segura a su red sin tener que exponer su IP externa o meterse con el reenvío de puertos. Después de registrarse para obtener una cuenta gratuita, le otorga un token de autorización. Luego, en su Raspberry Pi, puede descargarlo, descomprimirlo, conectar su token de autenticación y luego ejecutarlo en el puerto 5000:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… descomprima ngrok-stable-linux-arm./ngrok authtoken [inserte su token de autenticación aquí]./ngrok http 5000
*** IMPORTANTE *** La versión gratuita de Ngrok no le da una dirección estática, por lo que cada vez que vuelva a ejecutar Ngrok, le dará una dirección diferente. Si desea una dirección estática para no tener que volver a editar su Webhook, deberá pagar una cuenta actualizada.
Una alternativa gratuita a Ngrok que ofrece IP estáticas se llama "Serveo" en www.serveo.net
************************
En la pantalla resultante, le da una dirección de reenvío (https://random-string.ngrok.io) que podemos usar en nuestro subprograma de Webhook. Así que volviendo a "If This Then That", en el campo URL, ingrese su dirección de reenvío de Ngrok y apúntela a la página de "lista" en nuestro servidor Flask. Debería verse algo como esto
random_string.ngrok.io/list
Luego continúe y guarde los cambios.
Para probarlo, mantenga Ngrok en ejecución, abra una nueva terminal y ejecute nuestro script de Python. Con ambos elementos en ejecución, pregúntele a Alexa qué hay en su lista de compras. Después de uno o dos minutos, debería imprimir los resultados. Si desea que se imprima de inmediato, vaya a su subprograma en IFTTT y haga clic en "Comprobar ahora". Si todo va bien, ¡la impresora de recibos debería imprimir lo que está en su lista de compras! El último fragmento de código que debemos agregar es una forma de iniciar automáticamente ngrok y nuestro servidor de matraces cada vez que se enciende la Pi. Podemos hacerlo fácilmente haciendo que nuestro script de Python sea ejecutable:
chmod + x iot_print_server.py
Luego podemos editar nuestro archivo /etc/rc.local para que se vea así:
## Por defecto, este script no hace nada. # Imprima la dirección IP _IP = $ (nombre de host -I) || verdadero si ["$ _IP"]; luego printf "Mi dirección IP es% s / n" "$ _IP" fi #autostart ngrok y apúntalo a tu archivo de autenticación./home/pi/ngrok/ngrok http -config = / home / pi /.ngrok2 / ngrok. yml 5000 #autostart the printer python script sudo python3 /home/pi/iot_receipt_printer.py & exit 0
Paso 6: agregar el Pi a la impresora
La impresora de recibos que tengo tiene mucho espacio vacío dentro de la carcasa. Y como la Raspberry Pi Zero es tan pequeña como es, pensé que sería genial esconderla en la impresora de recibos para que parezca un solo dispositivo. El único problema es que la impresora de recibos funciona con 12v y la Pi funciona con 5v. Entonces, si solo queremos un cable de alimentación para alimentar a ambos, tendremos que reducir esa fuente de alimentación de 12 V a 5 V.
Usando un regulador de voltaje 7805, un capacitor de 1uf y un capacitor de 10uf, pude crear un regulador simple de 5v que conecté a la placa lógica de la impresora de recibos. Soldé el cable "-" a la tierra común, y luego soldé el cable "+" al lado "on" del interruptor de encendido para que el Pi se encienda y apague cuando la impresora se encienda y apague. Usando un multímetro, probé para confirmar que la salida era segura para el Pi. Luego soldé un cable micro-usb y lo conecté al Pi. Después de conectar el cable a la impresora y accionar el interruptor, ¡tanto la impresora como la Pi se encendieron!
Finalmente, perforé un agujero para conectar el cable USB del Pi a la impresora. Encontré un lugar para poner el regulador de 5v y el Pi dentro de la carcasa de la impresora, y luego volví a armar todo. ¡Así que ahora la impresora también tiene su propio servidor web autónomo!
Paso 7: llevarlo más lejos
Si pudieras echar un vistazo a "If This Then That", probablemente hayas notado que tiene toneladas de diferentes servicios web a los que conectarte. Entonces, si no tiene una Alexa, o no le importa usar una, puede usar este proyecto para imprimir desde casi cualquier cosa, como Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, etc. Puedes encontrar mi código para imprimir Tweets en mi página de Github. ¡Ahora ve a ver qué se te ocurre!
Primer premio en el IoT Challenge
Recomendado:
5 $ Banco de energía solar de la batería reciclada de la computadora portátil: 5 pasos (con imágenes)
Banco de energía solar de 5 $ de batería reciclada para computadora portátil: Como algunos de ustedes saben que mi universidad estaba teniendo una exhibición de ciencia, también había una competencia de exhibición de proyectos para los Juniors. Mi amigo estaba interesado en participar en eso, me preguntaron qué hacer les sugerí este proyecto y
Motocicleta reciclada de la tapa de la botella: 9 pasos (con imágenes)
Motocicleta reciclada de tapa de botella: v ¿Qué hacer en casa? Aquí hay algunas formas sencillas de hacer autos de carreras en casa. Te guiaré paso a paso para hacer autos de carreras básicos a avanzados. Puedes hacerlo y probarlo. o puedes empacarlo como regalo para regalar a tus hijos o amigos. Espero
Lámpara de monitor rota reciclada: 8 pasos (con imágenes)
Lámpara de monitor rota reciclada: crea una hermosa pieza de luz escultural, hecha fácilmente con un monitor roto sin usar
Cámara de respaldo de videocámara reciclada: 7 pasos (con imágenes)
Cámara de respaldo de videocámara reciclada: estoy seguro de que la mayoría de los que leen esto tienen un cajón o armario en algún lugar lleno de tecnología que alguna vez amaba y que acaba de volverse demasiado vieja y obsoleta. Definitivamente tengo mi parte de tecnología antigua, y es triste ver que tal potencial se desperdicia. Bueno, en esta guía, estoy g
Lámpara LED RGB reciclada: 6 pasos (con imágenes)
Lámpara LED RGB reciclada: este proyecto se hizo con materiales reciclados y los de otro proyecto. Originalmente, el proyecto iba a ser un alimentador automático de peces. Algunas imágenes pueden reflejar el proyecto del alimentador de peces. Como el proyecto se construyó principalmente con materiales disponibles, yo