Tabla de contenido:

Escala inteligente Raspberry Pi: 10 pasos (con imágenes)
Escala inteligente Raspberry Pi: 10 pasos (con imágenes)

Video: Escala inteligente Raspberry Pi: 10 pasos (con imágenes)

Video: Escala inteligente Raspberry Pi: 10 pasos (con imágenes)
Video: 1) Open CV 4.5.0 en Raspberry PI - Visión Artificial - Python - Imagen Compilación Completa 2024, Mes de julio
Anonim
Image
Image

¿Estás cansado de mirar todas las mañanas esa báscula de baño aburrida, vieja y con malas noticias? La que a menudo te dices "te odio" como cada vez que la pisas. ¿Por qué nadie ha creado una báscula que sea realmente divertida o motivadora? Es hora de crear una báscula que no solo sea inteligente sino que tenga un poco más de personalidad para alegrar tu día. Vamos a construir nuestra propia báscula de baño de mensajería de texto, seguimiento de peso y hackeable que viene con un sentido del humor incorporado.

Este es un proyecto fácil y divertido que combina un tablero de equilibrio de Wii, una Raspberry Pi y una plataforma de análisis de datos en línea para crear una báscula conectada a la web controlada por un script de Python que puede piratear.

Nivel del proyecto: Principiante Tiempo aproximado para completar: 20 minutos Factor de diversión: Inmensurable

En este tutorial paso a paso, podrá:

  • conecte una tabla de equilibrio de Wii a una Raspberry Pi a través de bluetooth ejecute un script de Python que mida su peso cuando pise la tabla de equilibrio
  • use una Raspberry Pi para transmitir su peso a un servicio en la nube (estado inicial)
  • configurar una notificación por SMS cada vez que se pese
  • Cree un panel de control de peso al que pueda acceder en su navegador web.

Paso 1: Equipo

Báscula de Wii Balance Board
Báscula de Wii Balance Board

Aquí hay una lista de todo el equipo que usaremos en este tutorial con enlaces a dónde puede comprar cada artículo.

  • Raspberry Pi 3 con tarjeta SD y fuente de alimentación (https://init.st/psuufmj)
  • Tablero de equilibrio de Wii (https://init.st/qg4ynjl)
  • Paquete de baterías recargables Wii Fit (https://init.st/iyypz2i)
  • Almohadillas de fieltro de 3/8 "(https://init.st/8gywmjj)
  • Lápiz (no te voy a dar un enlace a dónde comprar un lápiz … deberías tener uno de estos)

Nota: si tiene una Raspberry Pi 1 o 2, necesitará un adaptador bluetooth (https://init.st/7y3bcoe)

Paso 2: báscula de Wii Balance Board

¿Por qué una Wii Balance Board? Resulta que es una báscula realmente agradable y duradera que tiene conectividad bluetooth. Esto nos permitirá conectarlo a una computadora de placa única (Raspberry Pi) para leer su peso en un script de Python y enviar esas medidas a un servicio de datos en línea para hacer cosas interesantes. Además, es muy probable que usted o alguien que conozca ya tenga uno que simplemente esté acumulando polvo.

Tendremos que hacer un par de modificaciones simples a nuestra Wii Balance Board para que este proyecto sea realmente práctico y conveniente.

Paso 3: configuración de Bluetooth

La Raspberry Pi 3 viene con bluetooth integrado, todo lo que necesitamos para comunicarnos con la Wii Balance Board. Si tienes una Raspberry Pi 1 o 2, tendremos que usar uno de nuestros puertos USB para enchufar un adaptador.

Encienda su Pi (supongo que ya ha instalado Raspbian y se inicia) y vaya a la ventana de su terminal Raspberry Pi. Puede ver la dirección de su dongle bluetooth con el comando "hcitool dev":

$ hcitool dev Dispositivos: hci0 00: 1A: 7D: DA: 71: 13

Instale los módulos bluetooth que usaremos en nuestros scripts de Python:

$ sudo apt-get install python-bluetooth

Una vez completada la instalación, estamos listos para conectarnos y comunicarnos con la Wii Balance Board. No emparejaremos permanentemente nuestra placa con nuestro Pi como lo hacemos con la mayoría de nuestros dispositivos bluetooth. La Wii Balance Board nunca fue diseñada para ser emparejada con otra cosa que no sea una Wii, y la sincronización permanente resultó ser un desafío bastante confuso. El emparejamiento ocurrirá cada vez que ejecutemos nuestro script de Python.

Paso 4: lectura de la escala

Es hora de conectar nuestra Wii Balance Board a nuestra Raspberry Pi. Haremos esto modificando una versión del script Gr8W8Upd8M8.py de Stavros Korokithakis (https://github.com/skorokithakis/gr8w8upd8m8). El script de Python que usaremos para este paso se encuentra aquí. Puede copiar el contenido de este archivo a un archivo que cree en su Raspberry Pi o puede clonar todos los archivos de Python que usaremos para todo este proyecto. Hagamos lo último. Escriba los siguientes comandos en una terminal de su Raspberry Pi:

$ cd ~ $ git clone $ git clone https: github.com/initialstate/smart-scale.git clonación en 'escala inteligente' … remoto: Contando objetos: 14, listo. remoto: Comprimir objetos: 100% (12/12), hecho. remoto: Total 14 (delta 1), reutilizado 8 (delta 0), empaquetado reutilizado 0 Desembalaje de objetos: 100% (14/14), listo. Comprobando la conectividad … hecho.

clonación en 'escala inteligente' … remoto: Contando objetos: 14, hecho. remoto: Comprimir objetos: 100% (12/12), hecho. remoto: Total 14 (delta 1), reutilizado 8 (delta 0), empaquetado reutilizado 0 Desembalaje de objetos: 100% (14/14), listo. Comprobando la conectividad … hecho.

Debería ver dos archivos de Python en el nuevo directorio de escala inteligente: smartscale.py y wiiboard_test.py.

$ cd escala inteligente $ lsREADME.md smartscale.py wiiboard_test.py

Ejecute el script wiiboard_test.py para probar la comunicación y tomar lecturas de peso de la Wii Balance Board:

$ sudo python wiiboard_test.py

Verá la siguiente respuesta:

Descubriendo tablero … Presiona el botón rojo de sincronización en el tablero ahora

Retire la tapa de la batería debajo de la placa para ubicar el botón rojo de sincronización. Asegúrese de presionar el botón unos segundos después de ejecutar el script o se agotará el tiempo de espera. Una vez que tenga éxito, verá algo similar a lo siguiente:

Se encontró Wiiboard en la dirección 00: 23: CC: 2E: E1: 44 Intentando conectarse … Conectado a Wiiboard en la dirección 00: 23: CC: 2E: E1: 44 Wiiboard conectado ATRÁS a la escritura de datos recibida84.9185297 lbs84.8826412 lbs84.9275927 lbs

El script wiiboard_test.py toma la cantidad de medidas de peso especificadas en la línea 10 y genera el promedio:

# --------- Configuración de usuario --------- WEIGHT_SAMPLES = 500 # ------------------------- --------

Puede jugar con este número cambiando el valor y volviendo a ejecutar el script para ver la variación en el peso medido y el tiempo requerido para cada medición. Pésese, pese a su perro, pese lo que sea y compruebe si las medidas tienen sentido. Para detener la secuencia de comandos, presione CTRL + C.

Ahora ha convertido con éxito su Wii Balance Board en una báscula conectada Raspberry Pi. Ahora, hagámoslo una escala genial.

Paso 5: Ajustes de hardware

Ajustes de hardware
Ajustes de hardware

Nintendo asumió que siempre alimentaría su Wii Balance Board con cuatro baterías AA y no incluyó un adaptador de corriente CA. Tener solo energía de la batería sería un inconveniente porque no podemos emparejar permanentemente nuestra Wii Board con nuestro Pi a través de bluetooth. Necesitamos sincronizarlo, luego permitir que permanezca sincronizado sin agotar las baterías para que podamos simplemente subirnos a la báscula y pesar. Afortunadamente, existen varios adaptadores de terceros hechos para la Wii Balance Board que podemos usar para proporcionar energía constante desde una toma de corriente. Reemplace las baterías con un paquete de baterías y conecte el adaptador de CA a una toma de corriente.

Tener que emparejar Wii Balance Board y Raspberry Pi cada vez que ejecutamos nuestro script Python presenta otro inconveniente debido a la ubicación del botón de sincronización. El botón de sincronización está en la parte inferior de la Wii Board, lo que significa que tendríamos que darle la vuelta cada vez que necesitemos sincronizar. Podemos solucionar este problema haciendo una pequeña palanca con un lápiz y tres almohadillas de fieltro de 3/8 "como se muestra arriba. El paquete de batería recargable expone el botón de sincronización a la superficie inferior de la pizarra. Pegue un lápiz (o algo similar) que abarque desde el botón de sincronización hasta el frente exterior de la pizarra. Apile tres almohadillas de fieltro de 3/8 "(o algo similar) en el centro del lápiz para crear un pivote fijo. Tenga cuidado de no exponer demasiado lápiz del tablero, ya que no quiere que alguien lo saque accidentalmente. Dale la vuelta al tablero y puedes presionar el botón de sincronización simplemente presionando la palanca. Un poco truco pero efectivo.

Dependiendo de cómo guardes tu Wii Board, es posible que desees quitar las almohadillas de goma de los pies de la tabla (las almohadillas son simplemente pegatinas que puedes quitar). Se pueden colocar almohadillas de fieltro de 3/8 en los pies de la tabla para facilitar el deslizamiento.

Paso 6: estado inicial

Estado inicial
Estado inicial

Queremos transmitir nuestro peso / datos a un servicio en la nube y que ese servicio convierta nuestros datos en un agradable panel de control al que podamos acceder desde nuestra computadora portátil o dispositivo móvil. Nuestros datos necesitan un destino. Usaremos Estado inicial como ese destino.

Paso 1: Regístrese para obtener una cuenta estatal inicial Vaya a https://iot.app.initialstate.com y cree una nueva cuenta.

Paso 2: Instale ISStreamer Instale el módulo Python de estado inicial en su Pi: En un símbolo del sistema (no olvide SSH en su Pi primero), ejecute el siguiente comando:

$ cd / home / pi / $ / curl -sSL https://get.initialstate.com/python -o - | sudo bash

Paso 3: haz algo de Automagic Después del paso 2, verás algo similar al siguiente resultado en la pantalla:

pi @ raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: ¡Comenzando con la instalación fácil de ISStreamer Python! Esto puede tardar un par de minutos en instalarse, tómate un café:) Pero no olvides volver, ¡tendré preguntas más tarde!

Encontrado easy_install: setuptools 1.1.6

Encontrado pip: pip 1.5.6 de /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip versión principal: 1 pip versión menor: 5 ISStreamer encontrado, actualizando… Requisito ya actualizado: ISStreamer en /Library/Python/2.7/site-packages Limpiando… ¿Desea obtener automáticamente un script de ejemplo? [s / N]

(la salida puede ser diferente y tomar más tiempo si nunca antes ha instalado el módulo de transmisión de Python de estado inicial)

Cuando se le solicite obtener automáticamente un script de ejemplo, escriba y. Esto creará un script de prueba que podemos ejecutar para asegurarnos de que podemos transmitir datos al estado inicial desde nuestro Pi. Se le pedirá:

¿Dónde quieres guardar el ejemplo? [predeterminado:./is_example.py]:

Puede escribir una ruta local personalizada o presionar Intro para aceptar la ruta predeterminada. Se le pedirá su nombre de usuario y contraseña que acaba de crear cuando registró su cuenta de estado inicial. Ingrese ambos y la instalación se completará.

Paso 4: claves de acceso

Echemos un vistazo a la secuencia de comandos de ejemplo que se creó.

$ nano is_example.py

En la línea 15, verá una línea que comienza con streamer = Streamer (bucket_…. Esta línea crea un nuevo depósito de datos llamado "Python Stream Example" y está asociado con su cuenta. Esta asociación ocurre debido a access_key = "…" en la misma línea. Esa larga serie de letras y números es la clave de acceso a su cuenta de estado inicial. Si va a su cuenta de estado inicial en su navegador web, haga clic en su nombre de usuario en la parte superior derecha, luego vaya a "Mi configuración", encontrará la misma clave de acceso en la parte inferior de la página, en "Claves de acceso de transmisión".

Cada vez que crea un flujo de datos, esa clave de acceso dirigirá ese flujo de datos a su cuenta (por lo tanto, no comparta su clave con nadie).

Paso 5: ejecutar el ejemplo

Ejecute el script de prueba para asegurarse de que podamos crear un flujo de datos en su cuenta de estado inicial. Ejecute lo siguiente:

$ python is_example.py

Paso 6: Beneficio

Regrese a su cuenta de estado inicial en su navegador web. Debería haber aparecido un nuevo depósito de datos llamado "Python Stream Example" a la izquierda de su estantería de registros (es posible que deba actualizar la página). Puede ver los datos en Tiles para ver estos mismos datos en forma de panel.

Paso 7: Guión final

Suponiendo que ejecutó el comando "git clone https://github.com/InitialState/smart-scale.git" en la Parte 2, el script final que une todo se llama smartscale.py en su directorio ~ / smart-scale. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Es necesario establecer algunas configuraciones en el script antes de poder ejecutarlo. Abra smartscale.py en su editor de texto favorito, como nano.

$ cd ~ $ cd escala inteligente $ nano smartscale.py

Cerca de la parte superior de este archivo, hay una sección de Configuración de usuario.

# --------- Configuración de usuario --------- BUCKET_NAME = ": apple: Mi historial de peso" BUCKET_KEY = "weight11" ACCESS_KEY = "COLOQUE SU LLAVE INICIAL DE ACCESO ESTATAL AQUÍ" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7 # ---------------------------------

  • BUCKET_NAME establece el nombre del depósito de datos del estado inicial al que se transmitirán sus datos / peso. Esto se puede configurar aquí y cambiar más adelante en la interfaz de usuario.
  • BUCKET_KEY es el identificador de depósito único que especifica hacia dónde se transmitirán sus datos. Si desea crear un depósito / panel de control diferente, utilice un identificador diferente aquí (* nota, si archiva un depósito, no puede reutilizar su clave en un depósito nuevo).
  • ACCESS_KEY es su clave de cuenta de estado inicial. Si no ingresa su ACCESS_KEY en este campo, sus datos no aparecerán en su cuenta.
  • METRIC_UNITS le permite especificar su peso en kg si se establece en Verdadero o lb si se establece en Falso.
  • WEIGHT_SAMPLES especifica cuántas medidas se toman y se promedian juntas para obtener su peso real. 500 mediciones tardan entre 4 y 5 segundos y proporcionan resultados bastante precisos.
  • THROWAWAY_SAMPLES especifica el número de muestras que se desechan cuando pisas el tablero por primera vez. Esto evita que los pasos iniciales y los cambios desvíen la medición final. Esto siempre debe ser mucho menor que WEIGHT_SAMPLES.
  • WEIGHT_HISTORY establece el número de mediciones tomadas antes de que se envíe una actualización adicional. Solo las mediciones tomadas con dos horas o más de diferencia cuentan para el historial.

Una vez que haya especificado cada parámetro en esta sección y guardado sus cambios, estará listo para ejecutar el script final. Antes de ejecutar el script, veamos lo que va a hacer.

  • Al comienzo de la secuencia de comandos, se le pedirá que vincule su Wii Balance Board con su Raspberry Pi. Use la palanca que hackeó en la sección Parte 2: Ajustes de hardware para presionar el botón de sincronización cuando se le solicite.
  • Una vez que se esté ejecutando el guión, párate en la Wii Board para comenzar a medir tu peso. Después de 4-5 segundos, su peso se enviará automáticamente a su cuenta de estado inicial.
  • Después de que configuremos las notificaciones por SMS (en un par de pasos), recibirá un mensaje de texto poco después de su medición.

Ejecute el script para iniciar la magia.

$ sudo python smartscale.py

Paso 8: Panel de control

Tablero
Tablero

Vaya a su cuenta de estado inicial y haga clic en el nuevo depósito de datos con el nombre correspondiente al parámetro BUCKET_NAME (es decir, Mi historial de peso). Haga clic en Tiles para ver el panel de su historial de peso. Debería ver tres mosaicos la primera vez que vea sus datos en Mosaicos: Actualización, Fecha de peso y Peso (lb). Puede personalizar su panel cambiando el tamaño y moviendo mosaicos, así como cambiando los tipos de vista e incluso agregando mosaicos. Este tablero le brinda la posibilidad de ver su historial de peso de un vistazo. Es compatible con dispositivos móviles e incluso puede compartirlo con otras personas.

Puede agregar una imagen de fondo a su tablero para darle a sus datos más personalidad y contexto.

Paso 9: SMS

SMS
SMS

Creemos una alerta por SMS cada vez que la báscula tome una medición de peso. Asegúrese de que el depósito de datos del historial de peso esté cargado.

  1. Haga clic en la configuración del depósito (debajo de su nombre) en la ventana del depósito de datos.
  2. Haga clic en la pestaña Desencadenadores.
  3. Seleccione el flujo de datos para activar. Puede usar la lista desplegable para seleccionar entre las transmisiones existentes una vez que se haya cargado un depósito de datos o puede escribir el nombre / clave de la transmisión manualmente. En la captura de pantalla de ejemplo anterior, se selecciona "Actualizar".
  4. Seleccione el operador condicional, en este caso 'coincidencia'.
  5. Seleccione el valor de activación que activará una acción (escriba manualmente el valor deseado). Escriba lb si no usa unidades métricas o kg si usa unidades métricas. Siempre que la transmisión "Actualización" contenga "lb" (o "kg"), recibirá una notificación por mensaje de texto.
  6. Haga clic en el botón '+' para agregar la condición de activación.
  7. Ingrese su dirección de correo electrónico o número de teléfono en el campo "Contactos para notificar".
  8. Haga clic en el botón '+' para agregar la información de contacto.
  9. Ingrese cualquier código de verificación si agrega un nuevo número de teléfono para completar la configuración.
  10. Haga clic en el botón Listo en la parte inferior para volver a la pantalla principal. Su disparador ahora está activo y se disparará cuando se cumpla la condición.

Una vez que se complete la configuración, cada vez que se pese, recibirá un SMS que contiene su peso, cuánto cambió su peso desde la última medición y una broma, un insulto o un cumplido al azar.

Paso 10: Conclusión

Hay opciones ilimitadas para que pueda construir sobre lo que ha creado ahora. Aquí hay algunas ideas para este proyecto:

  • Puede transmitir datos de otras fuentes al mismo panel de historial de peso (información) para crear su propio panel de salud personal.
  • Puede cambiar las bromas en las funciones messageWeighFirst, messageWeighLess, messageWeighMore y messageWeighSame a su propio sentido del humor.
  • Puede convertir los chistes en mensajes prácticos o eliminarlos y usar el código de la báscula para rastrear el peso de algo más importante además de su propio peso corporal.
  • Puede crear su propio refrigerador inteligente de cerveza / vino utilizando el mismo enfoque. Ya hay un tutorial increíble hecho para eso aquí.

Hackea y avísame si este tutorial te inspira a crear algo asombroso.

Recomendado: