Formas de recopilar datos con Raspberry Pi y cómo configurarlos

La recopilación de datos es fundamental para muchos usos de una Raspberry Pi. Como parte de mi objetivo de encontrar las mejores formas de analizar y usar datos en una Raspberry Pi, preparé esta lista para darte una idea de la variedad de formas en que una Raspberry Pi puede recopilar datos.

Una Raspberry Pi puede recopilar datos utilizando sensores conectados directamente a su GPIO. También puede recopilar datos de otros dispositivos al recibirlos mediante WiFi, Bluetooth o USB. La Raspberry Pi admite una variedad de protocolos para comunicar esta recopilación de datos, incluidos MQTT y HTTP, lo que también permite que Raspberry Pi use Internet para la recopilación de datos.

Diferentes formas en que una Raspberry Pi puede recopilar datos

En esta guía, he visto cómo una Raspberry Pi puede recopilar datos usando:

  • Sensores conectados directamente al GPIO
  • Otros dispositivos, que comunican sus datos a la Raspberry Pi utilizando varios protocolos (MQTT, HTTP) y utilizando redes de comunicación en las que la Raspberry Pi puede participar (WiFi, Bluetooth, USB)
  • Fuentes de datos remotas, incluso a través de Internet o mediante almacenamiento USB

1. Conexión de un sensor

Raspberry Pi está diseñado para recopilar datos de sensores. El GPIO ofrece una interfaz sencilla a la que se puede conectar un sensor para que la Raspberry Pi pueda recopilar los datos del sensor.

Los sensores que se pueden conectar a una Raspberry Pi incluyen:

  • Temperatura, humedad y presión del aire.
  • Inclinación, gravedad y aceleración
  • Toque y proximidad

Los sensores se pueden conectar a una Raspberry Pi usando sus pines I2C, SPI o UART en el GPIO. Los pines exactos a los que conectarse se pueden encontrar aquí. Una vez conectados, los pines relevantes deberán configurarse en código antes de que el sensor pueda comenzar a enviar datos. Los datos recibidos del sensor se pueden almacenar en un archivo o base de datos en la Raspberry Pi.

Mi Raspberry Pi con un Sense Hat enchufado (y los sensores en la placa)

Para recopilar datos de sensores con una Raspberry Pi:

  • Asegúrese de estar utilizando un sensor que tenga una interfaz I2C, SPI o UART
  • Conecte el sensor a los pines apropiados en la Raspberry Pi (la lista de pines se puede encontrar aquí)
  • Escriba el código para importar la biblioteca correspondiente a la interfaz y luego use esa interfaz para leer los datos del sensor

Después de leer los datos del sensor, el código puede tomar una acción inmediata (por ejemplo, si la temperatura> 26 grados, activar el aire acondicionado) o almacenar los datos para un análisis posterior.

2. Usando MQTT

MQTT es un protocolo de comunicación para enviar pequeñas cantidades de datos a través de conexiones no confiables. Esto lo convierte en una excelente manera para que una Raspberry Pi reciba datos de dispositivos que pueden no tener una conexión confiable con la Raspberry Pi, como los sensores remotos.

Escribí una guía sobre docenas de sensores que se pueden conectar a un Arduino, que luego puede enviar esos datos a una Raspberry Pi usando MQTT. Si está interesado en esa guía de sensores, compruébelo aquí: revhardware.com/arduino-sensors-uses-costs-connections/

Una Raspberry Pi puede ejecutar un agente MQTT que escucha los datos enviados desde el dispositivo remoto. Luego, puede almacenar estos datos o pasarlos a otra aplicación (como un sistema de tablero) para su análisis y uso. La frecuencia con la que se reciben los datos del sensor remoto puede variar, no es tan frecuente como si el sensor estuviera conectado directamente a la Raspberry Pi.

Para recopilar datos con MQTT y una Raspberry Pi:

  • Instale un corredor / servidor MQTT en una Raspberry Pi (las instrucciones se pueden encontrar aquí) e inicie el servidor
  • Configure el dispositivo remoto para usar MQTT
  • Conecte los dispositivos a la misma red (puede ser WiFi, Ethernet o incluso a través de Internet)
  • Comience a enviar datos desde el dispositivo remoto usando MQTT

El dispositivo remoto debe estar conectado a la misma red que la Raspberry Pi. Esta conexión se puede hacer usando WiFi, Ethernet, Internet o incluso un protocolo como Zigbee (una vez construí un sensor de potencia remoto usando Zigbee que enviaba sus datos a una computadora).

Después de recibir datos a través de MQTT, deben enviarse a otra aplicación para su uso. Por lo general, esta es su propia aplicación de Python que puede usarse para tomar medidas sobre los datos o almacenarse para su uso y análisis posteriores.

3. Desde una conexión Bluetooth

Bluetooth se puede utilizar para establecer una red entre dispositivos que les permita transmitir pequeñas cantidades de datos, como las mediciones de sensores, para que una Raspberry Pi las recopile. La Raspberry Pi puede establecer la red Bluetooth a la que otros dispositivos pueden conectarse y enviar sus datos a la Raspberry Pi.

Raspberry Pi es compatible con Bluetooth Low Energy, un estándar dentro de Bluetooth para conectar dispositivos de baja potencia y transmitir pequeñas cantidades de datos. Dichos dispositivos pueden incluir un Arduino que tiene sensores recopilados para recopilar datos y luego puede enviar estos datos a la Raspberry Pi.

Me resultó difícil configurar una Raspberry Pi para permitir que sus aplicaciones reciban datos a través de la interfaz Bluetooth. Es posible que deba configurar los archivos de Bluetooth de una manera que dependa específicamente del sistema operativo que instaló en su Raspberry Pi.

En general, los pasos para establecer una conexión Bluetooth para recopilar datos son:

  • Configure la Raspberry Pi para usar BLE
  • Importe la biblioteca BLE a su aplicación (Python lo hace fácil)
  • Establecer la conexión BLE con el dispositivo remoto
  • Reciba datos en su aplicación

Su aplicación puede utilizar los datos inmediatamente o almacenarlos para su uso posterior.

Puede encontrar más detalles sobre cómo configurar Raspberry Pi para BLE y cómo usar esta red BLE en Python aquí.

4. Desde la entrada USB

Los puertos USB de una Raspberry Pi se pueden utilizar para recopilar datos de los dispositivos conectados. Los dispositivos pueden conectarse a los puertos USB de la Raspberry Pi y luego las aplicaciones de la Raspberry Pi pueden leer los datos del dispositivo.

El uso de los puertos USB de una Raspberry Pi puede ser útil para recopilar:

  • Datos de audio, como mediante el uso de un micrófono o un dispositivo ultrasónico
  • Datos del sensor donde el sensor tiene una interfaz USB
  • Datos de retroalimentación de otro dispositivo que usa una interfaz USB
  • Datos en serie USB, de dispositivos que utilizan USB como comunicación en serie

Para leer datos de audio desde el USB, consulte la biblioteca PyAudio Python. Le permite leer los datos de audio entrantes desde un micrófono conectado al puerto USB de la Raspberry Pi. Para configurarlo, hay una guía aquí.

Para leer datos en serie USB desde un dispositivo conectado a la Raspberry Pi, una aplicación Python puede usar la biblioteca en serie para acceder a los datos. La biblioteca en serie puede establecer la comunicación con el dispositivo conectado y luego leer los datos a medida que llegan. Encontré que la información aquí es útil para configurar una aplicación Python para leer datos en serie.

Para leer desde un dispositivo, ya sea un sensor o datos de retroalimentación, la forma de comunicarse dependerá del dispositivo. Esto podría involucrar una aplicación personalizada producida por ese dispositivo, o podría involucrar el uso de la biblioteca en serie que mencioné anteriormente. Consulte el manual o la hoja de datos del dispositivo para obtener más detalles.

Una vez que su aplicación ha leído los datos, puede almacenarlos o analizarlos para su uso.

5. Como servidor HTTP

Al establecerse como un servidor HTTP, una Raspberry Pi puede recopilar datos que otros dispositivos le envían. Se ejecuta un programa de servidor en la Raspberry Pi, otros dispositivos se conectan al servidor y cargan sus datos.

Ejecutar un servidor HTTP en su Raspberry Pi puede ser una forma útil de recopilar:

  • Datos que se envían a su Raspberry Pi a través de Internet
  • Datos de la aplicación, cuando tiene una aplicación ejecutándose en un teléfono y desea que envíe datos a la Raspberry Pi
  • Datos de sensores de sensores conectados a la misma red, algunos sensores pueden enviar sus datos usando HTTP a través de Ethernet o WiFi

Ejecutar un servidor HTTP y las aplicaciones asociadas puede consumir más recursos que ejecutar, digamos un servidor MQTT simple, sin embargo, debido a lo común que es, hay una gran variedad de guías disponibles para ayudarlo a configurar un servidor HTTP y usar aplicaciones asociadas para recopilar y guardar datos. Muchos servicios de almacenamiento de datos basados ​​en la nube son un servidor HTTP que está configurado para recibir datos a través de Internet.

Para recopilar datos en un servidor HTTP Raspberry Pi:

  • Configurar una aplicación de servidor HTTP como API
  • Configure su aplicación para usar los datos o almacenar los datos en una base de datos
  • Configure su otro dispositivo para conectarse a la Raspberry Pi usando HTTP
  • Recopile los datos usando su aplicación de servidor

Encontré una guía realmente completa sobre cómo hacer esto con Python y Raspberry Pi aquí.

6. Desde el almacenamiento USB

Una Raspberry Pi puede recopilar datos que se han almacenado en una unidad flash USB o una tarjeta SD (conectada a un lector USB). Los archivos guardados en el almacenamiento USB se pueden abrir mediante aplicaciones en la Raspberry Pi y se pueden recopilar y utilizar los datos almacenados.

La recopilación de datos del almacenamiento USB puede resultar útil para:

  • Datos de sensores muy remotos, como una unidad USB conectada a una estación meteorológica remota y tiene que recopilar esa unidad USB manualmente
  • Cualquier dato en el que la frecuencia del análisis no sea importante (como los datos que solo se utilizan anualmente)
  • Alta capacidad de almacenamiento, como datos de video que se guardan en un almacenamiento USB para su posterior análisis.

Encontré muchos dispositivos que pueden escribir sus registros y datos en el almacenamiento USB; este almacenamiento puede ser leído por la Raspberry Pi de modo que la Raspberry Pi pueda recopilar esos datos para su análisis y uso. Normalmente, estos datos se almacenan como un archivo .csv, un archivo .xlsx o en formato XML. Estos formatos se pueden leer con una aplicación de Python.

Para recopilar datos de un dispositivo de almacenamiento USB conectado a una Raspberry Pi:

  • Conecte el dispositivo de almacenamiento USB a la Raspberry Pi (si sus datos están en una tarjeta SD, necesitará usar un lector de tarjetas SD)
  • Encuentra la ruta del almacenamiento USB en la Terminal
  • Use la función open () en Python para abrir el archivo desde la ruta

Aquí se puede encontrar una guía para encontrar el camino. En resumen, debe usar el comando lsblk en el terminal para enumerar los dispositivos de almacenamiento y luego identificar cuál es su dispositivo de almacenamiento USB. También puede montar el dispositivo de almacenamiento USB en una ubicación predecible usando esta guía.

7. De Internet

Hay una gran cantidad de fuentes de datos disponibles en Internet para que una Raspberry Pi recopile datos. Muchas organizaciones, incluidos todos los niveles de gobierno, tienen conjuntos de datos abiertos que una Raspberry Pi puede leer (usando sus capacidades WiFi o Ethernet) y luego almacenar localmente para su uso o análisis.

Algunos ejemplos útiles de una Raspberry Pi que recopila datos de Internet:

  • Advertencias meteorológicas de la oficina meteorológica local, una Raspberry Pi puede recibir estas advertencias y convertirlas en acciones en el hogar.
  • Datos de transporte público, una Raspberry Pi puede recopilar los datos de la hora de llegada del próximo tren y analizarlos durante semanas para determinar qué tan confiable es (y cuánto tiempo de búfer debe permitir si busca tomar uno)
  • Lea los datos de la Companies House del Reino Unido para analizar los datos de insolvencia de miles de empresas.

Encontré una cantidad infinita de datos disponibles en Internet de forma gratuita a los que puede acceder, recopilar en su Raspberry Pi y luego usarlos para análisis y acción.

La mayoría de estos datos están disponibles mediante la API (interfaz de programación de aplicaciones) del host. Una Raspberry Pi puede conectarse al host utilizando su API y solicitar datos. El anfitrión responde con esos datos.

Para recopilar datos de Internet con una Raspberry Pi

  • Identifique una API de la que le gustaría recuperar datos (intente buscar en Google un servicio con «API» en el término de búsqueda)
  • Identifique el tipo de API para que pueda encontrar el módulo de Python relevante para conectarse a él (generalmente API accesibles a través de Internet, API «REST»)
  • Instale e incluya el módulo Python y acceda a la API (consulte la guía aquí si es una API REST)
  • Utilice los datos en su aplicación o guárdelos para un análisis posterior

El otro tipo de API que se encuentra comúnmente se llama API de «gráfico». Estos son un poco más complicados de usar y dependen del host de la API; si sabe que desea usar una API gráfica, busque instrucciones del host sobre cómo conectarse para recopilar datos.

Ruben ha estado experimentando con software, API y recopilando datos de la electrónica durante décadas. Comparte su experiencia e investigación con el objetivo de ayudar a otros a mejorar sus proyectos, su entorno y sus vidas con buenos datos.