Uso de Hardware e Interfaces
Este wiki introduce los distintos componentes de hardware e interfaces en el reTerminal y cómo utilizarlos para expandir tus ideas de proyecto.
Nota: Para cierto hardware e interfaces, las instrucciones de uso varían entre la imagen de Raspberry Pi OS, la imagen Buildroot y la imagen Yocto. Por defecto se describen los pasos para Raspberry Pi OS. Cuando difiera en Buildroot o Yocto, se indicará explícitamente.
Visión General de Hardware
Pines de 40 pines compatibles con Raspberry Pi
Los 40 pines constan de 26 GPIO, hasta 5 × I2C, hasta 5 × SPI, hasta 5 × UART, 1 x PCM, 1 x PWM, 1 × interfaz SDIO, 1 × DPI (Parallel RGB Display), hasta 3× GPCLK outputs y 1 interfaz USB.
La interfaz USB se extiende desde la interfaz USB 2.0 interna del Compute Module 4, lo que permite expandir más conectores USB y lograr velocidades de hasta 480 Mbit/s usando esta interfaz.
También puedes usar estos 40 pines para conectar Hats compatibles con Raspberry Pi y expandir tus proyectos.
Visita aquí para explorar varias Hats de Raspberry Pi que ofrece Seeed Studio y aquí para más Hats de terceros.
Los GPIO pueden consumir una corriente máxima de 50 mA en total. Esto significa 50 mA distribuidos entre todos los pines. Por lo tanto, cada pin GPIO individual puede consumir 16 mA de forma segura. En cambio, el consumo máximo para cada uno de los pines restantes es 2 A. Tenlo en cuenta al conectar hardware adicional.
Esquemático
Consejo: Haz clic aquí para una imagen de mayor resolución.
Uso - GPIO
- Configurar pin como GPIO
sudo -i #habilita privilegios de root
cd /sys/class/gpio
echo 23 > export #GPIO23 es el Pin 16
cd gpio23
- Configurar GPIO como entrada/salida
echo in > direction #GPIO como entrada
echo out > direction #GPIO como salida
- Configurar GPIO en nivel alto/bajo
echo 1 > value #GPIO nivel alto
echo 0 > value #GPIO nivel bajo
- Obtener estado de entrada/salida
cat direction
- Obtener estado de nivel
cat value
- Reiniciar pin
cd ..
echo 23 > unexport
Uso en imagen Buildroot
- Reemplaza sudo -i con su - para privilegios root.
- Los demás pasos son iguales.
Uso en imagen Yocto
- No hace falta sudo -i pues ya somos root.
- Pasos restantes son iguales.
Uso - I2C
Enciende reTerminal, clic en el ícono de Raspberry Pi en la UI Desktop =>
Preferences > Raspberry Pi Configuration
.Clic en la pestaña
Interfaces
y habilita I2C.
Clic en OK.
Conecta un dispositivo I2C al reTerminal.
Lista los buses I2C:
i2cdetect -l
- Escanea direcciones estándar en bus I2C 1 (i2c-1):
i2cdetect -y 1
Nota: el 1
representa el número de bus I2C.
La imagen anterior muestra dispositivos I2C con direcciones 0x20, 0x51, 0x45, 0x19, 0x29 y 0x5c.
Uso en Buildroot
- No necesitas activar I2C, viene habilitado por defecto.
- Los pasos restantes son iguales.
Uso en Yocto
- I2C no se activa al encender. Solo funciona con modprobe i2c-dev tras cada arranque. Se actualizará cuando se corrija.
Uso - SPI
Enciende reTerminal, clic ícono Raspberry Pi =>
Preferences > Raspberry Pi Configuration
.Pestaña
Interfaces
, habilita SPI.
Conecta un dispositivo SPI al reTerminal.
Lista dispositivos SPI:
ls /dev/spi*
- Descarga herramienta de prueba SPI:
wget https://files.seeedstudio.com/wiki/102110497/spidev_test
- Cambia permisos:
chmod +x spidev_test
Con un jumper, cortocircuita GPIO 10 (Pin 19) y GPIO 9 (Pin 21) (MOSI y MISO).
Ejecuta la herramienta:
./spidev_test -D /dev/spidev0.0 -v -p hello
Si ves salida similar a la imagen, SPI funciona correctamente.
Uso en Buildroot/ Yocto
- Para activar SPI, edita config.txt con
vi /boot/config.txt
, añadedtparam=spi=on
, guarda y reinicia. - La herramienta spidev_test presenta problemas en Buildroot/Yocto. Se actualizará.
Interfaz de Alta Velocidad para Módulos de Expansión
En la parte trasera del reTerminal hay un conector de expansión de alta velocidad. Consta de 1 PCIe 1-lane Host Gen 2 (hasta 5Gbps), 1 USB 2.0, 1 PoE y 26 GPIO. Estos 26 GPIO pueden usarse como 2 I2C, 2 SPI y 1 UART.
Consejo: Clic aquí para imagen de mayor resolución.
PCIe, USB 3.0, 2 x CAN-FD y SDIO3.0 están definidos para productos futuros, por lo que no son utilizables actualmente.
Planeamos módulos de expansión futuros para reTerminal, usando este conector:
- Matriz de micrófonos y altavoz
- Módulo de cámara
- E/S industriales
- Módulo LoRaWAN
- Módulo 5G/4G
- Módulo PoE
- Switch Ethernet
Hay 2 orificios M4 a los lados del reTerminal para fijar estos módulos.
Interfaz de cámara CSI
El reTerminal tiene una interfaz de cámara MIPI CSI de 2 carriles, lo que permite conectar hasta 2 cámaras: uno con 15 pines y otro con 22 pines. Asegúrate de usar el cable flex adecuado. Estas interfaces sirven para detección de objetos y machine learning.
Esquemático
Consejo: Clic aquí para mayor resolución.
Uso
- Conecta cámara al conector FPC de 15 pines o 22 pines.
Enciende reTerminal, clic en ícono Raspberry Pi =>
Preferences > Raspberry Pi Configuration
.Pestaña
Interfaces
, habilita Camera.
- Clic en Yes para reiniciar.
- Abre terminal y toma una foto:
raspistill -o Desktop/image.jpg
Nota: Cambia la ubicación según prefieras.
Haz doble clic en el archivo de Desktop para ver la imagen.
Graba un video:
raspivid -o Desktop/video.h264
- Reproduce el video haciendo doble clic.
Más info en documentación oficial de Raspberry Pi.
Uso en Buildroot/ Yocto
- No probado aún, se actualizará.
LCD de 5 pulgadas
La pantalla LCD de 5" en reTerminal se conecta vía DSI de 30 pines. Soporta táctil multipunto (5 puntos), conectada al conector TP.
Esquemático
Consejo: Clic aquí para mayor resolución.
Panel Táctil para LCD
Uso
El panel táctil se conecta vía un conector FPC de 6 pines. Para probarlo, usa evtest:
- Instala evtest:
sudo apt install evtest
- Ejecuta evtest:
evtest
- Teclea 1, verás salida:
- Toca la pantalla y verás:
Uso en Buildroot
- evtest ya está instalado.
- Primero haz su - para root.
- Demás pasos igual.
Uso en Yocto
- evtest ya instalado.
- Pasos igual.
Conectar otros dispositivos a conector FPC vía I2C
El panel táctil se comunica por I2C. Puedes conectar otros dispositivos I2C a este conector FPC de 6 pines. El diagrama:
Luego sigue los pasos de la sección I2C.
4 Botones Programables
Hay 4 botones programables en la parte frontal de reTerminal. Pueden asignarse para encender/apagar distintas funciones según tu aplicación.
Esquemático
Consejo: Clic aquí para mayor resolución.
Uso
- Abre evtest:
evtest
- Teclea 0 y verás:
- Pulsa los botones de izquierda a derecha y verás:
Nota: Los botones se configuran como a s d f de izquierda a derecha por defecto.
- Para configurar, edita:
sudo nano /boot/config.txt
- Añade al final:
dtoverlay=reTerminal,key0=0x100,key1=0x101,key2=0x102,key3=0x103,tp_rotate=1
Los valores hexadecimales 100,101,102 y 103 se asignan a key0, key1, key2, key3.
Uso en Buildroot
- evtest ya instalado.
- Primero su -.
- Demás pasos igual.
Uso en Yocto
- evtest ya instalado.
- Pasos igual.
3 LEDs Programables
Hay 2 LED programables en la parte frontal del reTerminal. El LED USR en color verde, el LED STA en color rojo o verde.
Esquemático
Consejo: Clic aquí para mayor resolución.
Uso
- Hazte root:
sudo -i
- Ve a:
cd /sys/class/leds
- Dirígete a LED USR Verde:
cd usr_led0
- Enciende LED al brillo máximo:
echo 255 > brightness
Nota: valores 1-255 para brillo.
- Apaga LED:
echo 0 > brightness
- LED STA Rojo:
cd ..
cd usr_led1
Repite pasos 4-5.
LED STA Verde:
cd ..
cd usr_led2
- Repite pasos 4-5.
Buildroot
- Cambia sudo -i por su -.
- Pasos iguales.
Yocto
- No hace falta sudo -i (ya somos root).
- Pasos iguales.
Puerto Gigabit Ethernet
reTerminal posee un conector Ethernet RJ45 Gigabit, conectado al PHY Gigabit del CM4 (Broadcom BCM54210PE), compatible con IEEE 1588-2008.
Esquemático
Consejo: Clic aquí para mayor resolución.
Co-procesador de Encriptación
reTerminal incluye un co-procesador criptográfico Microchip ATECC608A con almacenamiento seguro de claves en hardware. Soporta ECDSA y algoritmos simétricos, networking key management y secure boot.
Esquemático
Consejo: Clic aquí para mayor resolución.
Uso
- Lista buses I2C:
i2cdetect -l
- Escanea direcciones en I2C-3:
i2cdetect -y 3
El dispositivo con dirección 0x60 es el co-procesador.
Buildroot
- Funciona igual.
Yocto
- I2C no activado al arrancar. Necesita modprobe i2c-dev tras cada reinicio.
RTC
El reTerminal trae un RTC NXP PCF8563T con pila CR1220. Bajo consumo de respaldo ~0.25µA. Útil para funciones de hora.
Nota: Una pila CR1220 viene preinstalada.
Esquemático
Consejo: Clic aquí para mayor resolución.
Uso
sudo hwclock
Buildroot
- Escribe su - y luego hwclock.
Yocto
- No hace falta sudo.
- Solo hwclock.
Sensor de Luz
reTerminal incluye un sensor digital de luz Levelek LTR-303ALS-01, conectado al conector FPC de 6 pines. Útil para ajuste automático de brillo LCD según luz ambiente.
Esquemático
Consejo: Clic aquí para mayor resolución.
Uso
- root:
sudo -i
- Ve a:
cd /sys/bus/iio/devices/iio:device0
- Lee intensidad lumínica en Lux:
cat in_illuminance_input
El sensor se comunica vía I2C. Puedes conectar otros dispositivos I2C al mismo conector FPC:
Luego sigue pasos de I2C.
Buildroot
- Cambia sudo -i por su -.
- Pasos restantes igual.
Yocto
- No hace falta sudo.
- Pasos iguales.
Acelerómetro
Un acelerómetro ST LIS3DHTR de 3 ejes. Se puede usar, por ejemplo, para rotar la pantalla automáticamente al inclinar reTerminal.
Esquemático
Consejo: aquí para mayor resolución.
Uso
evtest
evtest
- Teclea 1 para ver valores X,Y,Z.
Buildroot
- evtest ya instalado.
- Primero su -.
- Resto igual.
Yocto
- evtest ya instalado.
- Igual.
Buzzer
Incluye un buzzer integrado controlable via software. Útil como indicador.
Esquemático
Consejo: aquí para mayor resolución.
Uso
- root:
sudo -i
- Ve a:
cd /sys/class/leds/usr_buzzer
- Enciende buzzer:
echo 1 > brightness
- Apaga buzzer:
echo 0 > brightness
Buildroot
- Reemplaza sudo -i con su -.
- Igual.
Yocto
- No sudo.
- Igual.
Puertos USB 2.0
El CM4 trae un hub USB 2.0 integrado. Se extiende a 2 puertos USB 2.0 como USB HOST.
Esquemático
Consejo: aquí para alta resolución.
Uso
- Conecta un dispositivo USB a uno de los puertos del reTerminal.
- Lista el dispositivo:
lsusb
- Más info:
lsblk
- Accede a la unidad y lista archivos:
cd /media/pi/NEW VOLUME
ls -l
Nota: El punto de montaje varía.
Ranura Micro-SD
reTerminal tiene ranura micro-SD, útil para instalar SO en micro-SD con CM4 sin eMMC. Se recomienda al menos 8GB. Más info aquí.
Esquemático
Consejo: aquí para alta resolución.
Puerto Micro HDMI
reTerminal ofrece micro HDMI, compatible con displays HDMI vía cable micro-HDMI a HDMI. Hasta 4K@60fps.
Esquemático
Consejo: aquí para alta resolución.
Uso
- Conecta una pantalla HDMI al puerto micro-HDMI con el cable respectivo.
- Enciende reTerminal y verás UI en LCD y pantalla HDMI.
Nota: Si conectas la pantalla mientras está encendido, ejecuta sudo service lightdm restart para mostrar la UI.
- Instala la utilidad Screen Configuration:
sudo apt install arandr
- Clic en ícono Raspberry Pi =>
Preferences > Screen Configuration
.
- Pestaña "Screen Layout Editor" =>
Configure > Screens > HDMI-1 > Resolution
para ajustar.
Nota: también cambias frecuencia y orientación.
- Arrastra los dos recuadros para organizar monitores.
- Clic en la marca de verificación para aplicar ajustes.
Buildroot/ Yocto
- El hot-plug no funciona actualmente. Actualizaremos.
- Necesitas conectar primero el display y luego encender reTerminal.
- arandr no disponible en Buildroot.
Puerto USB Tipo-C
El Puerto USB-C se usa para alimentar reTerminal con 5V/4A (recomendado). Pero también puede actuar como USB Device para conectar reTerminal a un PC HOST y acceder a la eMMC interna, flashear un SO, etc. Más info aquí.
Montura de cámara estándar (1/4 pulgada)
reTerminal tiene una montura de cámara estándar de 1/4 pulgada. Puedes montar el reTerminal en un trípode estándar.
Librería Python para reTerminal
Hemos preparado una librería Python para usar el hardware incorporado del reTerminal. Actualmente soporta acelerómetro, LEDs de usuario, botones de usuario y buzzer.
Instalación
En reTerminal, ejecuta:
sudo pip3 install seeed-python-reterminal
Nota: El código fuente aquí.
Uso
- Crea un archivo Python nuevo y ábrelo con nano:
nano test.py
- Pega el código.
- Pulsa CTRL + X, luego Y para guardar.
- Ejecuta:
python3 test.py
A continuación, ejemplos de códigos:
Test de LEDs de Usuario
import seeed_python_reterminal.core as rt
import time
print("STA ON, USR OFF")
rt.sta_led = True
rt.usr_led = False
time.sleep(1)
print("STA OFF, USR ON")
rt.sta_led = False
rt.usr_led = True
time.sleep(1)
print("STA RED, USR OFF")
rt.sta_led_green = False
rt.sta_led_red = True
rt.usr_led = False
time.sleep(1)
print("STA OFF, USR OFF")
rt.sta_led = False
rt.usr_led = False
Test Buzzer
import seeed_python_reterminal.core as rt
import time
print("BUZZER ON")
rt.buzzer = True
time.sleep(1)
print("BUZZER OFF")
rt.buzzer = False
Test Botones de Usuario
import seeed_python_reterminal.core as rt
import seeed_python_reterminal.button as rt_btn
device = rt.get_button_device()
while True:
for event in device.read_loop():
buttonEvent = rt_btn.ButtonEvent(event)
if buttonEvent.name != None:
print(f"name={str(buttonEvent.name)} value={buttonEvent.value}")
Test Acelerómetro
import seeed_python_reterminal.core as rt
import seeed_python_reterminal.acceleration as rt_accel
device = rt.get_acceleration_device()
while True:
for event in device.read_loop():
accelEvent = rt_accel.AccelerationEvent(event)
if accelEvent.name != None:
print(f"name={str(accelEvent.name)} value={accelEvent.value}")
Test Acelerómetro + Botones
import asyncio
import seeed_python_reterminal.core as rt
import seeed_python_reterminal.acceleration as rt_accel
import seeed_python_reterminal.button as rt_btn
async def accel_coroutine(device):
async for event in device.async_read_loop():
accelEvent = rt_accel.AccelerationEvent(event)
if accelEvent.name != None:
print(f"accel name={str(accelEvent.name)} value={accelEvent.value}")
async def btn_coroutine(device):
async for event in device.async_read_loop():
buttonEvent = rt_btn.ButtonEvent(event)
if buttonEvent.name != None:
print(f"name={str(buttonEvent.name)} value={buttonEvent.value}")
accel_device = rt.get_acceleration_device()
btn_device = rt.get_button_device()
asyncio.ensure_future(accel_coroutine(accel_device))
asyncio.ensure_future(btn_coroutine(btn_device))
loop = asyncio.get_event_loop()
loop.run_forever()
Buildroot
- Esta librería se añadirá más adelante al Buildroot.
- Primero "su -" para root.
pip3 install seeed-python-reterminal
.- Usa vi en lugar de nano.
- El demo accel+button presenta problemas. Se actualizará.
Yocto
- Aunque Python está instalado, pip no lo está. Luego incluiremos esta librería en la imagen.
Soporte técnico y debate de productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte soporte y asegurar que tu experiencia sea fluida. Ofrecemos varios canales de comunicación para diferentes preferencias y necesidades.