Translate

sábado, mayo 20, 2017

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


Nota:
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)
Publicar un comentario