Construye un indicador LED con una Raspberry Pi (para correo electrónico, clima o cualquier cosa)
La Raspberry Pi es una buena plataforma compacta para conectar una luz indicadora para todo tipo de proyectos: notificaciones del clima, nuevos correos electrónicos, etc. Sigue leyendo mientras te mostramos cómo conectar un módulo LED a tu Pi y configurar algunas notificaciones básicas..
¿Por qué quiero hacer esto??
Porque es divertido. A diferencia de muchos de nuestros tutoriales, en los que incluimos una pequeña reseña en la parte superior que describe exactamente qué beneficios obtendrá del proyecto, la propaganda es bastante breve en este caso porque la ventaja es simplemente divertirse.
La Raspberry Pi es un dispositivo perfecto para jugar, experimentar con la electrónica y aprender algo de programación. Nadie necesariamente un indicador de lluvia ambiental en su cocina, por ejemplo, pero construir uno es un ejercicio divertido y un gran recordatorio para que traiga su paraguas con usted en los posibles días de tormenta.
Qué necesito?
Para seguir junto con nuestro tutorial necesitarás algunas cosas. Primero, asumimos que ya ha seguido nuestro tutorial anterior: la Guía HTG para comenzar a utilizar Raspberry Pi (y, por lo tanto, hemos cubierto los aspectos básicos para instalar Rasbian en nuestra Raspberry Pi).
Si está buscando realizar este proyecto con un presupuesto limitado, podemos decirle con confianza que el modelo más reciente de Raspberry Pi es una exageración significativa para el trabajo y lo alentamos a eliminar el polvo de un Raspberry Pi viejo que ha rechazado. en el armario o recoja uno usado barato de eBay o similar. En cuanto al presupuesto, el Raspberry Pi 1 Modelo A o Modelo B de largo en el diente que se enganchó en eBay por $ 10-15 es el ajuste perfecto para este proyecto sobre la compra de una nueva generación actual Pi de $ 35.
Además de tener una unidad Pi funcional con Raspbian instalado, necesitarás lo siguiente:
- 1 módulo LedBorg (~ $ 5.00 con $ 4 de envío desde el Reino Unido a EE. UU., Funciona con todos los modelos Raspberry Pi).
- 1 Estuche Clear Raspberry Pi compatible con su modelo Pi particular como este Estuche Raspberry Pi 1 Modelo B.
Nota: La funda transparente / helada de Pi es completamente opcional, pero si actualmente está utilizando una funda opaca, su indicador LED se ocultará en el interior. Tendrá que hacer un agujero en su estuche para dejar que se apague la luz o usar un cable de extensión GPIO con un kit de arranque (como el de Adafruit Industries) para atar el LedBorg a su Raspberry Pi. Si bien el uso del cable de ruptura agrega alrededor de $ 8 a expensas del proyecto, ofrece un mayor potencial para personalizar el producto final, ya que puede colocar el LED más fácilmente dentro de las cosas o debajo de algo que desee iluminar..
Instalando el LedBorg
Si bien usted podría construirse un indicador LED completamente desde cero (y una búsqueda en un motor de búsqueda dará como resultado un montón de personas que lo han hecho), la organización de Piborg produce un módulo LED tan compacto y económico, el LedBorg, que no pudimos Evite utilizarlo como base para nuestro proyecto de indicador LED Raspberry Pi.
La instalación del módulo es muy sencilla, ya que está diseñado para encajar directamente sobre los pines GPIO en la Pi. Primero, apaga tu Pi y abre el estuche.
La parte más importante del proceso de instalación es que usted orienta el módulo de modo que el icono de LedBorg esté más cerca del módulo RCA en la placa Raspberry Pi (y, por lo tanto, el borde de la LedBorg esté al ras de los bordes de la placa Pi con el saliente). parte del LedBorg que cuelga sobre el tablero Pi y no fuera del borde). Mira la fotografia de arriba.
Si bien tiene la placa Pi abierta, ahora sería un excelente momento para cubrir los indicadores LED integrados (junto a los puertos USB), especialmente si está usando un estuche transparente. No desea que sea confuso leer su indicador LedBorg porque las luces indicadoras de alimentación y de red son muy brillantes.
Cubrimos el nuestro con una capa de cinta aislante blanca. Esto los atenuó lo suficiente como para que aún pudiéramos referirnos a ellos, pero eran mucho más tenues que el LedBorg que ya no distraía.
Una vez que haya instalado el LedBorg y, opcionalmente, haya cubierto los indicadores LED de Pi con cinta aislante, es hora de cerrar la caja de nuevo. Arranque su Pi antes de pasar a la siguiente fase del tutorial.
Instalación del software de LedBorg
PiBorg proporciona un excelente paquete de software para el LedBorg que incluye un controlador GUI y controladores para acceder al LedBorg desde la línea de comandos.
Antes de comenzar, debe asegurarse de que está agarrando el paquete correcto para su versión de Rasbian y el número de revisión de su placa Raspberry Pi.
Si su tarjeta Raspberry Pi no tiene orificios de montaje, es la Revisión 1. Si su Raspberry Pi tiene orificios de montaje (ubicados por los puertos USB y entre la alimentación y el puerto HDMI), entonces es la Revisión 2. También necesita saber la versión del kernel de su instalación de Rasbian. Abra el terminal e ingrese el siguiente comando para verificar:
uname -r
Una vez que tenga el número de Revisión y el número del kernel, puede visitar la sección de Paquetes aquí para obtener el enlace de su paquete. En nuestro caso, estamos usando una placa de Revisión 1 con el kernel 3.6.11, por lo que deberíamos agarrar el archivo raspbian-2013-02-09-rev1.zip.
Para instalar todos los accesorios, necesitamos abrir el terminal en el Pi. y luego ingrese los siguientes comandos para instalar el paquete LedBorg.
Nota: Debe reemplazar la URL en el tercer comando con la URL del paquete para su combinación de placa / kernel.
mkdir ~ / ledborg-setup
cd ~ / ledborg-setup
wget -O setup.zip http://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip
descomprimir setup.zip
chmod + x install.sh
./install.sh
En este punto, ahora tiene el contenedor de GUI para los controladores LedBorg y los controladores instalados. En su escritorio Raspbian verá un icono para el contenedor de GUI:
Continúe y haga clic en el icono de LedBorg para iniciar el contenedor de GUI. Serás tratado a la interfaz del selector de color de la siguiente manera:
Ahora es el momento perfecto para asegurarse de que su módulo es funcional. Elige cualquier color, excepto el negro, para probarlo. Vamos a probarlo eligiendo algunos colores:
¡Se ve bien! Es brillante y el plástico esmerilado de la caja que pedimos para el proyecto ofrece una difusión moderada. Si desea jugar más con el módulo LED antes de continuar, haga clic en Modo de demostración:
En el modo de demostración puede alternar entre todos los colores a varias velocidades, verifique la salida alta / baja y, de lo contrario, ponga el módulo LED a prueba..
Aquí, en la sección Modo de demostración, también puede convertir su LedBorg en el primero de muchos indicadores. Al seleccionar la CPU en la sección de Colores, el LED comenzará a cambiar de verde a amarillo a rojo para indicar la carga en el procesador ARM de la Raspberry Pi. Sugerimos cambiar la velocidad a lenta mientras está en ello. Rápido actualiza el LED demasiado rápido y hace que el indicador de la CPU distraiga en lugar de ser útil..
Además de utilizar la interfaz GUI para seleccionar colores, puede seleccionar colores del terminal utilizando valores RGB. Abra el terminal e ingrese el siguiente comando para apagar el LED:
echo "000"> / dev / ledborg
La forma en que LedBorg maneja los valores RGB es que 0 significa que el canal está desactivado, 1 significa que el canal tiene la mitad de la potencia, y 2 significa que el canal tiene la máxima potencia. Así, por ejemplo, 001 establecería el canal rojo en 0%, el canal verde en 0% y el canal azul en 50% de potencia.
Cambie el valor a 002 y la salida del LED permanecerá azul pero se volverá más brillante porque el canal azul está ahora en una salida del 100%. Cambie el valor a 202 y el rojo y el azul a máxima potencia se combinan para crear un color magenta..
Ahora que sabemos cómo manipular el LED manualmente, echemos un vistazo al uso de scripts para convertir nuestro LED de una luz simple a un indicador real.
Configurando su LedBorg como un indicador de lluvia
Para esta parte del tutorial, combinaremos varias cosas para convertir nuestro módulo LedBorg LED en un indicador de lluvia basado en el pronóstico del tiempo para nuestra ubicación. Usaremos un script de Python para llamar a una API meteorológica que a su vez leerá la posibilidad de lluvia durante el día, y luego cambiaremos el LED de apagado a azul brillante para indicar la lluvia pronosticada.
Primero, necesitamos obtener una clave de acceso API para Weather Underground. Para uso personal y pequeños proyectos de desarrollo, la API es gratuita. Visite la página de registro de Weather API aquí y regístrese para obtener una clave API.
Una vez que tenga su clave API, visite Weather Underground y busque la ciudad que desea monitorear. En nuestro caso vamos a monitorear San Fransisco, CA. La URL para la página de pronóstico de San Fransisco es:
http://www.wunderground.com/US/CA/San_Francisco.html
La parte importante para nuestros propósitos es la última parte de la URL: /CA/San_Francisco.html. Vamos a usar eso para editar la URL de pronóstico para la herramienta API. La URL base es:
http://api.wunderground.com/api/YOUR API KEY / forecast / q / STATE / CITY.json
Puede generar el pronóstico para cualquier ciudad de los EE. UU. Ingresando su clave API, el código de estado de dos letras y el nombre de la ciudad de la URL que obtuvo de los resultados de búsqueda de Weather Underground.
Una vez que haya insertado la URL de la API con su clave de API y su estado / ciudad, puede editar el siguiente script de Python creando un nuevo documento de texto en su Pi utilizando Leafpad y pegando el siguiente código en él:
de urllib2 import urlopen
importar json
req = urlopen ('http://api.wunderground.com/api/YOUR API KEY / forecast / q / STATE / CITY.json')
parsed_json = json.load (req)
pop = int (parsed_json ['forecast'] ['txt_forecast'] ['forecastday'] [0] ['pop'])# El siguiente es un valor de depuración.
# Editar el hash y cambiar
# el entero a un 0-100 para probar
# la respuesta del LED.# pop = 0
Imprimir 'La probabilidad actual de precipitación es .'. Formato (pop)
# La configuración por defecto es encender el LED.
# para cualquier probabilidad de lluvia por encima del 20%. Puedes ajustar
# el valor en "if pop> 20:" como desee.
si pop> 20:
LedBorg = abierto ('/ dev / ledborg', 'w')
LedBorg.write ('002')
del LedBorg
imprimir ('Rain!')
más:
LedBorg = abierto ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
imprimir ('No rain!')
Guarde el archivo como wunderground.py en el directorio / home / pi /. Abre el terminal y escribe el siguiente comando:
python wunderground.py
Si ingresó su clave de API y los códigos de su estado / ciudad correctamente, debería responder a una respuesta que se parece a lo siguiente:
Si se pronostica precipitación para su área, su salida de LedBorg debe tener el siguiente aspecto:
Ahora sería tedioso esperar un día lluvioso para probar adecuadamente el guión. Si no hay posibilidad de lluvia en su área hoy y desea ver que se ilumina el LED, edite el script wunderground.py y reemplace el valor pasante "pop = pop" en la línea 13 con un valor mayor que 20 como el 60 que nuestro pronóstico volvió. Solo recuerda cambiar la línea de nuevo a "pop = pop" cuando hayas terminado.
El último paso es configurar un trabajo cron para ejecutar automáticamente el script que acabamos de guardar en un intervalo regular para mantener el indicador LED actual. Ya que esta tarea es necesaria tanto para este script como para el indicador de correo electrónico que sigue, vamos a cubrir la configuración de un trabajo cron después de que le mostremos cómo configurar el otro script..
Configurando su LedBorg como un indicador de Gmail
¿A quién no le gusta la solución de dopamina que viene con ver un nuevo correo electrónico en su bandeja de entrada? En esta parte del tutorial, le mostraremos cómo usar LedBorg como un nuevo indicador de Gmail. Al igual que la última vez, vamos a combinar una entrada externa (en este caso, una fuente Atom en lugar de una API) y un script simple para dirigir nuestro LED..
Necesitamos ampliar un poco la funcionalidad de nuestra instalación de Python mediante la instalación de FeedParser, una herramienta de lectura de feeds RSS / Atom de Python. Abre el terminal e ingresa el siguiente comando:
sudo easy_install feedparser
Una vez que se complete la instalación, podemos configurar el trabajo para crear nuestro script de comprobación de Gmail. Nuevamente, utilizando Leafpad, pegue el siguiente texto en el editor. Cambie el nombre de usuario y la contraseña para que coincidan con el nombre de usuario y la contraseña de la cuenta de Gmail que desea verificar.
importar feedparser
# Ingrese su nombre de usuario de Gmail
# y contraseña. No incluir
# la parte @ gmail.com de
# su nombre de usuario.
username = "username"
contraseña = "contraseña"
mail = int (feedparser.parse ("https: //" + nombredeusuario + ":" + contraseña + "@ mail.google.com/gmail/feed/atom")["feed"◆◆"fullcount"])
# El siguiente es un valor de depuración.
# Editar el hash y cambiar
# el entero a un 0 o 1 para probar
# la respuesta del LED.# mail = 0
si correo> 0:
LedBorg = abierto ('/ dev / ledborg', 'w')
LedBorg.write ('020')
del LedBorg
imprimir ('Correo!')
más:
LedBorg = abierto ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
imprimir ('No hay correo!')
Guarde el script como gmailcheck.py. Abre el terminal y escribe el siguiente comando:
python gmailcheck.py
Si tiene un correo electrónico en su bandeja de entrada de Gmail, el LED se volverá verde y obtendrá una respuesta como la siguiente:
Si tiene correo en su bandeja de entrada de Gmail, su LedBorg se verá así:
Al igual que el script de comprobación de lluvia, hemos incluido un valor de depuración. Si no tiene ningún correo electrónico nuevo, puede enviarse un correo electrónico para aumentar el recuento de su bandeja de entrada a 1 o puede editar el hash de comentarios y cambiar la línea de depuración a "mail = 1" para probar el script. Recuerda revertir la línea cuando hayas terminado de probar..
Vaya a la siguiente sección del tutorial para configurar su script de Gmail para que se ejecute de forma programada.
Configuración de un trabajo cron para ejecutar su script
Ahora que tenemos dos scripts para jugar, necesitamos configurar un trabajo cron para ejecutarlos durante todo el día para mantener el indicador LED actual.
Lo primero que queremos hacer es apagar el LED si está encendido desde nuestros experimentos anteriores. En el tipo de terminal:
echo "000"> / dev / ledborg
Mientras todavía estás en la línea de comandos, puedes abrir el editor cron. Si nunca ha configurado un trabajo cron anteriormente, le recomendamos que consulte nuestra guía para utilizarlo aquí. Dicho esto, lo guiaremos a través de la configuración de un programa básico aquí.
En el tipo de terminal:
sudo crontab -e
Esto abrirá la tabla cron de Raspbian en el editor de texto Nano. Utilice las teclas de flecha para desplazarse hacia abajo hasta la parte inferior. Aquí es donde vamos a configurar el trabajo cron recurrente para nuestros scripts de Python.
Si desea configurar el script de lluvia, ingrese la siguiente línea en la tabla cron:
* / 5 * * * * python /home/pi/wunderground.py
Presione CTRL + X para salir; seleccione sí para guardar y sobrescribir la tabla cron existente. El valor que ingresamos en la tabla cron "* / 5 * * * *" establece que el script se ejecute cada 5 minutos, para siempre..
Cada 5 minutos es un período de tiempo adecuado para una secuencia de comandos que verifica la lluvia pronosticada (incluso podría argumentar que es un poco demasiado agresivo), pero si está tratando de mantenerse al tanto de su correo electrónico es un período demasiado largo para la notificación . Si está configurando la programación para el script de notificación de Gmail, ingrese la siguiente línea en la tabla cron:
* / 1 * * * * python /home/pi/wunderground.py
Esta entrada ejecuta el script gmailcheck.py cada minuto para una notificación de actualización mucho más rápida.
¡Eso es todo al respecto! Puede experimentar con sus propios scripts de Python sacando las declaraciones if / else de las nuestras y probándolas con nuevas variables. Si puede encontrar una fuente de entrada para los datos, puede convertirla en una variable en sus promedios del mercado de valores de Python, conteos de polen, menciones en Twitter, si hay una API para ella, puede convertirla en un indicador LED de ambiente..
Finalmente, quiero agradecer a todos los excelentes recursos que solía trabajar en este proyecto. Ha pasado un poco más de una década desde que estaba escribiendo programas activamente y me costó unos cuantos golpes sacar el polvo y la oxidación. Los colaboradores de / r / LearnPython me ayudaron a repudiar en la salida de la API para Weather Underground, estudiando cómo Michael en Mitch Tech manejó el feed de Gmail Atom, lo que lo hizo fácil para LedBorg, y estudiar los módulos de aprendizaje de Python en Code Academy fue una excelente manera de captar la sintaxis básica y la estructura de un lenguaje que nunca había usado antes.