Uso de la IMU integrada de reCamera Pro para la detección de inclinación y sacudidas

Introducción
Este artículo explica cómo utilizar la unidad de medición inercial (IMU) de seis ejes integrada en la reCamera Pro — el giroscopio ICM-42670-P — para implementar la detección de inclinación y sacudidas del dispositivo. Cuando el dispositivo se inclina o se sacude, el sistema reproducirá avisos de voz correspondientes a través del altavoz integrado. A través de este tutorial, aprenderás cómo leer datos brutos del giroscopio mediante el controlador IIO de Linux, reproducir sonidos de advertencia usando el controlador de audio ALSA y, en última instancia, integrar un programa completo de detección y alerta.
Preparación de hardware
- una reCamera Pro
| reCamera Pro |
|---|
![]() |
Principio de implementación
Al recopilar datos brutos de velocidad angular del giroscopio integrado (ICM-42670-P), el sistema determina si el dispositivo se ha inclinado o se ha sacudido. La implementación actual utiliza un sencillo juicio basado en umbrales, que puede optimizarse más adelante según los requisitos reales.
Detección de sacudidas
Cuando el valor absoluto de los datos de velocidad angular en cualquier eje supera un umbral preestablecido, se determina como una sacudida.
Detección de inclinación
Cuando el valor absoluto de los datos de velocidad angular en cualquier eje supera un umbral preestablecido, se determina como una inclinación.
Adquisición de datos del giroscopio integrado
El entorno Linux de la reCamera Pro utiliza el controlador IIO (Industrial I/O), que expone los datos y la configuración del sensor a través de la interfaz sysfs, lo que permite que las aplicaciones en espacio de usuario accedan a ellos. La ruta de los datos del sensor es:
/sys/bus/iio/devices/iio:device1
Los archivos de datos brutos del giroscopio se exponen en este directorio, como se muestra en la imagen siguiente:

Para obtener los datos brutos del giroscopio, simplemente lee el archivo correspondiente. Por ejemplo, para obtener los datos del eje X del giroscopio, lee el archivo in_anglvel_x_raw:
cat /sys/bus/iio/devices/iio:device1/in_anglvel_x_raw
El resultado de la ejecución se muestra a continuación:

Uso del altavoz integrado
El altavoz integrado de la reCamera Pro se controla mediante el controlador estándar ALSA de Linux. Puedes ver los dispositivos de tarjeta de sonido actuales con el siguiente comando:
aplay -l

Utiliza el siguiente comando para reproducir un archivo de audio:
aplay test.wav
aplay es un reproductor ALSA PCM. Solo puede reproducir datos en formato PCM/WAV y no puede decodificar MP3. Puedes usar el siguiente comando para convertir MP3 a formato WAV:
ffmpeg -i test.mp3 test.wav
Código de implementación básica
Ahora que entendemos cómo leer datos brutos del giroscopio y reproducir audio, escribamos el código para implementar toda la funcionalidad.
Adquisición de datos del giroscopio
A continuación se muestra un ejemplo de función mínima que demuestra cómo recopilar datos del giroscopio en el eje X. Puedes ampliar esta función para obtener datos de otros ejes.
#!/usr/bin/env python3
DEVICE = "/sys/bus/iio/devices/iio:device1"
with open(f"{DEVICE}/in_anglvel_scale", "r") as f:
scale = float(f.read().strip())
with open(f"{DEVICE}/in_anglvel_x_raw", "r") as f:
raw = int(f.read().strip())
gyro_x = raw * scale
print(f"Gyroscope X: {gyro_x:.6f} rad/s")
Reproducción de audio
Cuando el dispositivo detecta una inclinación o una sacudida, es necesario reproducir un aviso de voz correspondiente. El siguiente código muestra cómo reproducir audio usando Python:
#!/usr/bin/env python3
import subprocess
AUDIO = "test.wav"
subprocess.run([
"aplay",
AUDIO
])
Código de implementación final
- Cuando el dispositivo se sacude, reproducirá "Warning: Do not shake the device".
- Cuando el dispositivo se inclina, reproducirá "Warning: The equipment has toppled over. Please immediately check the equipment status to prevent any accidents".
El código correspondiente se puede descargar desde reCamera_PRO_IMU_Detect.

Despliegue del código
Los siguientes pasos describen cómo desplegar el código en la reCamera Pro y ejecutarlo:
- Sube la carpeta completa a la reCamera Pro mediante SSH:
scp -r ./icm42670_project root@deviceIP:/userdata
- Ejecuta el programa principal:
./main.py
- El programa realizará una operación de calibración en la primera ejecución. Asegúrate de que el dispositivo esté colocado de forma estable antes de ejecutar
main.py. Si es necesario recalibrar (la duración de calibración predeterminada es de 3 segundos), ejecuta:
./main.py --force-calib
- Ver la ayuda de uso del código:
./main.py --help
Solución de problemas
- No se pueden leer los datos del giroscopio: Verifica que la ruta
/sys/bus/iio/devices/iio:device1exista y que el archivoin_anglvel_x_rawsea legible. Si la ruta no existe, es posible que el controlador IIO no esté cargado; comprueba los módulos del kernel. - Fallo en la reproducción de audio: Confirma que el archivo de audio esté en formato WAV y que el comando
aplayesté disponible. Si el altavoz no emite sonido, revisa la configuración de volumen de ALSA. - Fallo en la calibración: Asegúrate de que el dispositivo esté inmóvil y nivelado durante la calibración. Si el tiempo de calibración no es suficiente, utiliza
--force-calibpara recalibrar.
Soporte técnico y debate sobre el producto
Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos múltiples canales de comunicación para adaptarnos a distintas preferencias y necesidades.
