Salidas GPIO Orange PI 2G IoT
Salidas GPIO Orange PI 2G IoT
En el anuncio de la Orange Pi 2G IoT dicen "40 pins Header Compatibe witch Raspberry pi B+"
Voy a comparar los interfaces.
1.Orange Pi 2G IoT, SoC RDA8810:
Probando comunicación con los pins GPIO (pruebas, gracias a la ayuda del grupo de Telegram):
1.Bajar ultima distro, yo uso Ubuntu Server:
http://www.orangepi.org/downloadresources/
2. Aplicar modulo GPIO:
#cd /lib/modules/3.10.62-rel5.0.2/kernel/drivers/gpio
#insmod gpio-OrangePiRDA.ko
3. Con el comando dmesg vemos el log y como queda aplicado el modulo:
[ 1299.883361] GPIO name B24
[ 1299.883789] GPIO_INIT finish used!
4.De momento han activado un pin (el 7 que corresponde con el GPIO_B24), aparece tras aplicar el modulo del punto numero 2, y está en /sys/class/gpio_OrangePi/ .Si queremos encender / apagar un led debemos usar el pin GPIO numero 7 (GPIO_B24):
Encendio: /sys/class/gpio_OrangePi/B24# echo "1">data
Apagado:/sys/class/gpio_OrangePi/B24# echo "0">data
NOTA IMPORTANTE (otra forma de trabajar con los gpio de esta placa):
Gracias al trabajo de Reinhard http://ec.hobbykompetenz.de/index.php/2017/06/07/gpio/ también se puede trabajar sobre los puertos GPIO sin la carga del modulo GPIO en memoria en tal caso para encender/apagar el led sería usando el pin 7 de la placa (GPIO_B24) que en el sistema de archivos es gpio56:
Hay que habilitar en el sistema de archivos el puerto GPIO al pin 7 de la placa:
echo "56" > /sys/class/gpio/export
Apagar LED: echo "in" > /sys/class/gpio/gpio56/direction
Enceder LED1: echo "out" > /sys/class/gpio/gpio56/direction
Para consultar el estado de entrada/salida del puerto: cat cat /sys/class/gpio/gpio56/value
He realizado un script para que parpadee el LED (blink.sh):
#!/bin/sh
echo 56 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio56/direction
while true
do
echo 1 > /sys/class/gpio/gpio56/value
sleep 1
echo 0 > /sys/class/gpio/gpio56/value
sleep 1
done
Desde el grupo de telegram nos han enseñado como manejar relays o swiches mediante el GPIO e la opi 2g iot:
i, por supuesto, conecte una placa de relays generica de las que se usan para Arduino, como la de este enlace, conecte el pin VCC al 2 de la Opi, GND al 6 de la Opi y IN1 al 7 de la Opi. https://articulo.mercadolibre. com.ar/MLA-620857002-modulo- de-relee-relay-opto-2-canales- 5v-10a-arduino-pic-ptec-_JM
luego cada vez que arranca hay que ejecutar
echo 56 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio56/ direction
Y luego:
Encender salida
echo 1 > /sys/class/gpio/gpio56/value
Apagar salida
echo 0 > /sys/class/gpio/gpio56/value
Trabajando con Phyton y GPIO en Orange Pi IoT 2G:
He creado un repositorio en GITHUB con codigo para trabajar con GPIO en pyton:
Hacer que funcione el LCD dando un mensaje del sistema (por ejemplo la dirección IP):
1-
Crear el directorio /opt/python con los los siguientes ficheros:
wget https://raw.githubusercontent.com/txurtxil/OpiIoTGPIO/master/lcd2.sh
wget https://raw.githubusercontent.com/txurtxil/OpiIoTGPIO/master/lcd2.py
Damos permisos de ehecucion a los dos ficheros:
chmod 777 lcd2.sh
chmod 777 lcd2.py
2- Mandamos a crontab (como root) ejecutar el script lc2.sh cada 2 minutos:
crontab -e
*/2 * * * * /opt/python/lcd2.sh
En este script sacaremos la información de IP en el LCD pero podemos modificar el script para visualizar todos lo que nos interese (jugando con comandos del sistema operativo y meterlos en una variable)
Comentarios
https://t.m-e/joinchat/AAAAAEHxVPlYqktFzY6Sxg
En la ultima Ubuntu Server de la pagina oficial de Orange Pi para la 2G-IoT, el modulo gpio-OrangePiRDA.ko ya no aparece. Se puede obtener de algun otro lugar?
Muchas gracias. Un blog genial!