TuryRx / Banana-pi-m2-zero-GPIO

gpio pin configuration and use project on Bananapi m2 zero board

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Banana-pi-m2-zero-GPIO

Proyecto de configuración y uso de pin gpio en la placa Banana Pi M2 Zero

BANANAPI-ZERO-01 (1)

Hola soy Roxas

Creé este repositorio debido a la falta de información sobre el manejo GPIO con Bananapi m2 cero, así que mi propósito a través de esta pequeña guía es hacer la vida un poco más fácil en cuento a este tema.

Buy Me a Coffee at ko-fi.com

Hola a todos soy su amigo TuryRx el motivo de abrir este ko-if para con su apoyo seguir el desarrollo y mantenimiento de imágenes sobre banana pi, ya que es algo complicado generar imágenes e información sobre este tipo de placas de desarrollo y su apoyo me ayudaría mucho a seguir desarrollando no solo para esta placa si no para más así como darme apoyo para seguir compartiéndoles todo lo que pueda, de antemano les agradezco a todos los que me puedan apoyar y aunque no lo puedan hacer me alegra mucho que mi contenido les pueda servir.

Tabla de contenidos

Correcciones de configuración y script v 1.6.1

-Problema con puerto Ethernet solucionado.
-Problema con libreria oled solucionado.
-Problema con uso de librerías RPI.GPIO Solucionado.
-Problema con versiones de librerías solucionado.
-Problema con tabla gpio solucionado.

Correcciones de configuración y script v 1.5.2

-Problema de instalación automática solucionado.
-Problema con libreria oled solucionado.
-Problema con el uso de la librería RPI.GPIO solucionado.
-Problema con dependencias faltantes solucionado.

Nuevas características configuración y script v 1.4.9.2

-Nueva tabla gpio con pines corregidos (comando: sudo gpioread)
-Incremento de memoria swap a 1G automático 
-Detección de eventos en pines gpio corregida y funcional   
-Implementación de uso de resistencias pull up corregida y funcional   
-Ejemplos disponibles y uso de pines gpio (https://github.com/TuryRx/Bananapi-m2-zero-GPIO-files)

Instalación Rápida

Mediante la instalación rápida solo se tendrá que seleccionar su directorio una vez lo solicite (Ejemplo:/home/(su_directorio)).

Además de que se tendrá que tener en cuenta que la instalación tardara un poco y que tal vez tengan que ejecutar el script una segunda vez para evitar fallos que se hayan podido suscitar durante la instalación.

sudo git clone https://github.com/TuryRx/Banana-pi-m2-zero-GPIO.git
cd Banana-pi-m2-zero-GPIO
sudo chmod 777 -R Banana_Pi_M2Z_GPIO.sh
sudo ./Banana_Pi_M2Z_GPIO.sh

Para terminar ahora solo quedaria habilitar GPIO e I2C

Nota:Imagen ya configurada para cualquier capacidad de SD en seccion de descargas

Usuario Contraseña
roxas pi
root pi

Instalación Manual

Comenzando tendremos que instalar los siguientes repositorios.

sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y universe
sudo add-apt-repository -y multiverse
sudo add-apt-repository -y restricted

Luego realizaremos una actualización al sistema.

sudo apt-get update -y
sudo apt-get upgrade -y

Una vez hecho esto, procederemos a la instalación de los paquetes que necesitaremos para poder utilizar las bibliotecas y dependencias que utilizaremos más adelante.

sudo apt-get install -y \
inxi \
git \
build-essential \ 
python3-pip \
python3-dev \
python3-smbus \ 
i2c-tools \
vsftpd \
python3-pil \ 
python3-setuptools \ 
libfreetype6-dev \
libjpeg8-dev \
libsdl1.2-dev \
libsdl-dev \
libportmidi-dev \ 
libsdl-ttf2.0-dev \ 
libsdl-mixer1.2-dev \ 
libsdl-image1.2-dev \
libjpeg-dev \
python-dev \
lm-sensors \
unrar \
libgpiod2 \
python3-libgpiod \
gpiod \
python3-all \
python3-all-dev \
debhelper \
armbian-config

Seguido esto vamos a descargar e instalar las librerías que utilizaremos con python3, dicho esto en este punto no instalaremos todas ya que existen algunas librerías que solo podremos instalar más adelante por falta de algunas dependencias que iremos resolviendo mediante avancemos con la instalación.

sudo pip3 install setuptools==58.3.0
sudo pip3 install wheel==0.37.0
sudo pip3 install pyserial==3.5
sudo pip3 install pyusb==1.2.1
sudo pip3 install pyftdi==0.54.0
sudo pip3 install Adafruit-PureIO==1.1.9
sudo pip3 install Adafruit-PlatformDetect==3.22.0
sudo pip3 install Adafruit-Blinka==7.1.1
sudo pip3 install smbus2==0.4.1
sudo pip3 install Deprecated==1.2.13
sudo pip3 install Pillow==9.4.0
sudo pip3 install RPi.GPIO==0.6.3
sudo pip3 install spidev==3.5
sudo pip3 install argcomplete==2.1.1
sudo pip3 install wrapt==1.14.0
sudo pip3 install pusherclient==0.3.0
sudo pip3 install psutil==5.8.0
sudo pip3 install oauthlib==3.1.1
sudo pip3 install requests-oauthlib==1.3.0
sudo pip3 install tweepy==4.2.0
sudo pip3 install sgmllib3k==1.0.0
sudo pip3 install feedparser==6.0.8
sudo pip3 install subprocess.run==0.0.8
sudo pip3 install vcgencmd==0.1.1

En este punto procederemos a ejecutar la descarga e instalación de las siguientes dependencias que utilizaremos en base a los siguientes repositorios.

git clone https://github.com/adafruit/Adafruit_Python_GPIO.git
cd Adafruit_Python_GPIO
sudo python3 setup.py install
cd

git clone https://github.com/bontango/BPI-WiringPi2.git
cd BPI-WiringPi2
sudo chmod 777 build
sudo ./build 
cd

git clone https://github.com/GrazerComputerClub/RPi.GPIO.git
cd RPi.GPIO
sudo python3 setup.py install
cd

git clone https://github.com/LeMaker/RPi.GPIO_BP -b bananapi
cd RPi.GPIO_BP
sudo python3 setup.py install
cd

git clone https://github.com/codelectron/ssd1306.git
cd ssd1306
sudo python3 setup.py install
cd

git clone https://github.com/rm-hull/luma.oled.git
cd luma.oled
sudo python3 setup.py install
cd

git clone https://github.com/rm-hull/luma.examples.git
cd luma.examples
sudo -H pip install -e .
cd

git clone https://github.com/TuryRx/Bananapi-m2-zero-GPIO-files.git

Antiguas Librerias

git clone https://github.com/BPI-SINOVOIP/BPI-WiringPi2.git
cd BPI-WiringPi2
sudo chmod 777 build
sudo ./build 
cd

git clone https://github.com/BPI-SINOVOIP/RPi.GPIO.git
cd RPi.GPIO
sudo python3 setup.py install
cd

Perfecto una vez terminado esto terminaremos con la instalación de las bibliotecas faltantes de python3.

sudo pip3 install Adafruit-SSD1306==1.6.2
sudo pip3 install ssd1306==0.2.0
sudo pip3 install adafruit-circuitpython-busdevice==5.1.0
sudo pip3 install adafruit-circuitpython-framebuf==1.4.7
sudo pip3 install adafruit-circuitpython-ssd1306==2.12.2
sudo pip3 install cbor2==5.4.2
sudo pip3 install luma.oled==3.8.1

Ahora iremos a la carpeta Banana-Pi-m2-zero-GPIO-files y copiaremos los archivos a los siguientes directorios para habilitar el uso de los pines GPIO.

cd Bananapi-m2-zero-GPIO-files/bpi-servicee
cd etc
sudo cp -r * /etc

cd ..

cd usr
sudo cp -r * /usr

cd ..

cd var
sudo cp -r * /var

cd ..

Igualmente realizaremos la copia de los archivos para la nueva tabla de pines gpio con la corrección de BMC que la ejecutaremos con el comando (sudo gpioread)

sudo mv gpioread.sh /usr/local/bin/gpioread
sudo chmod o+x /usr/local/bin/gpioread
sudo chmod 777 /usr/local/bin/gpioread

sudo touch /var/lib/bananapi/gpio
sudo chmod o+x /var/lib/bananapi/gpio
sudo chmod 777 /var/lib/bananapi/gpio

Bueno ahora que hemos copiado los archivos a nuestro sistema solo nos queda cambiar algunas cosas dentro de uno de ellos para que podamos establecer el modelo de nuestra banana pi m2 zero.

sudo nano /var/lib/bananapi/board.sh

Cambiaremos

BOARD=bpi-m3
BOARD_AUTO=bpi-m3
BOARD_OLD=bpi-m64

Por

BOARD=bpi-m2z
BOARD_AUTO=bpi-m2z
BOARD_OLD=bpi-m64

Y ahora procederemos a copiar los archivos de ejemplo que les deje para el uso de los gpio.

cd Bananapi-m2-zero-GPIO-files
sudo chmod 777 led_m2z.py
sudo mv led_m2z.py /home/$directory 
sudo chmod 777 led_button_m2z.py
sudo mv led_button_m2z.py /home/$directory 
sudo chmod 777 button_state_m2z.py
sudo mv button_state_m2z.py /home/$directory
sudo chmod 777 button_event_m2z.py
sudo mv button_event_m2z.py /home/$directory
sudo chmod 777 gpio_funcion_m2z.py
sudo mv gpio_funcion_m2z.py /home/$directory
sudo chmod 777 info_board_m2z.py
sudo mv info_board_m2z.py /home/$directory
sudo chmod 777 info_gpio_m2z.py
sudo mv info_gpio_m2z.py /home/$directory
sudo chmod 777 pwm_m2z.py
sudo mv pwm_m2z.py /home/$directory
sudo chmod 777 button_pull_up_m2z.py
sudo mv button_pull_up_m2z.py /home/$directory
sudo chmod 777 gpio_read_pin_m2z.py
sudo mv gpio_read_pin_m2z.py /home/$directory
sudo chmod 777 button_event_rising_m2z.py
sudo mv button_event_rising_m2z.py /home/$directory
sudo chmod 777 sys_stats.py
sudo mv sys_stats.py /home/$directory/luma.examples/examples/

Ahora solo agregaremos a nuestro usuario a la lista i2c para poder trabajar con el bus de datos.

sudo adduser (your user) i2c

Habilitar GPIO

Para terminar recuerda que también tendrás que habilitar las opciones i2c, wl-gpio, pwm, cpu y uart con armbian-config, así también te dejaré los enlaces de mis imágenes de armbian que e compilado tanto de escritorio como de servidor con la capacidad de hacer overclock si se requiere.

sudo armbian-config

Además, aquí les dejare unos comandos para poder configurar los pines desde terminal, no poner parentesis al ejecutar el comando (Ejemplo: sudo gpio -1 mode 29 in).

Uso Comando
Cambiar modo de pin gpio -1 mode (Numero_de_Pin) (Estado: in o out)
Escribir estado de pin gpio -1 write (Numero_de_Pin) (Modo: 1 o 0)
Leer estado de pin gpio -1 read (Numero_de_Pin)
Activar o Desactivar resistencia pull-up gpio -1 mode (Numero_de_Pin) (Modo: up o down)

Habilitación de pines gpio (I2C,PWM,SPI,UART,OVERCLOCK)

1

2

3

4

5

Ampliar Swap

A la hora de ampliar la memoria de intercambio(swap), se recomienda dejar por defecto solo el doble de la memoria actual, esto en caso de placas como esta aun que se puede establecer la que uno desee utilizar.

Para aumentar la memoria actual al doble solo ejecutar por defecto aumentara 735M para tener 1G.

sudo chmod 777 swap_memori.sh
sudo ./swap_memori.sh

Para aumentar por otra cantidad modificar la línea (sudo fallocate -l 735M) por la cantidad que quieran.

sudo chmod 777 swap_memori.sh
sudo sed -i 's/sudo fallocate -l 735M /sudo fallocate -l (Cantidad #M o #G) /g' swap_memori.sh
sudo ./swap_memori.sh

Uso de ejemplos

Puedes encontrar ejemplos para la pantalla oled en el directorio /home/$user/gpio_files/luma.examples/examples/ y otros ejemplos sobre uso de leds, botones, eventos, pull_up, pwm, informacion de sistema y deteccion de eventos en el directorio /home/$user/gpio-examples/

Tabla de pines gpio mediante terminal (sudo gpioread)

6

Deteccion de direccion i2c de dispositivos (sudo i2cdetect -y 0)

9

Ejemplos de uso de pantalla oled i2c

7

oled

Ejemplo informacion de sistema con pantalla oled i2c

8

sys_info

Ejemplo de uso de led

10

led

Ejemplo coneccion de boton pull_up

11

button

Ubicacion y funciones de pines fisicos

1e2e5830e341ad050857fd65e18ea8e5680841ec

Links y Videos

Espero les guste y sirva este pequeño aporte, ademas aqui les dejo dos videos un poco mas detallado sobre esto.

▶️ Banana PI M2 Zero Configuracion y Uso de GPIO ✔️
https://www.youtube.com/watch?v=LGlon4DOIwc&t=18s

▶️ Banana PI M2 Zero GPIO Script ✔️🔥
https://www.youtube.com/watch?v=yt4lLYp91zM

▶️ Banana PI M2 Zero Nuevas Imagesnes ✔️🔥
https://www.youtube.com/watch?v=d5MLndnQ6w4&t=198s

Tambien les dejare el link de mi canal de youtube y los links de mis imagenes.

▶️ TuryRx 🔥
https://www.youtube.com/channel/UC2qm0bsEO0u1wBgiINs8-5w

Descargas

Imagenes Bananapi M2 Zero 18-02-23

Base Ubuntu Focal

Ubuntu Focal Server

https://www.mediafire.com/file/f3zop887yjmqvo6/Armbian_23.02.0-trunk.0264_Bananapim2zero_focal_current_5.15.93_server.rar/file

Ubuntu Focal Server Minima

https://www.mediafire.com/file/fjba6l2uqfcstqq/Armbian_23.02.2_Bananapim2zero_focal_current_5.15.93_server_minimal.rar/file

Ubuntu Focal Desktop xfce

https://www.mediafire.com/file/yms7q2hiyqeob6u/Armbian_23.02.0-trunk_Bananapim2zero_focal_current_5.15.93_xfce_desktop.rar/file

Base Ubuntu Jammy

Ubuntu Jammy Server

https://www.mediafire.com/file/fvjhy045ybfc81n/Armbian_22.11.0-trunk_Bananapim2zero_jammy_current_5.15.80_server.rar/file

Ubuntu Jammy Server Minima

https://www.mediafire.com/file/509uuchjp8jmk34/Armbian_22.11.0-trunk_Bananapim2zero_jammy_current_5.15.80_server_minimal.rar/file

Ubuntu Jammy Desktop xfce

https://www.mediafire.com/file/250razne7xr4ocq/Armbian_22.11.0-trunk_Bananapim2zero_jammy_current_5.15.80_xfce_desktop.rar/file

Ubuntu Jammy Desktop i3wm

https://www.mediafire.com/file/vjcj0sqdj3hhakn/Armbian_22.11.0-trunk_Bananapim2zero_jammy_current_5.15.80_i3-wm_desktop.rar/file

Base Debian Buster

Debian Buster Server

https://www.mediafire.com/file/kx4zckpabug0y87/Armbian_23.02.0-trunk.0264_Bananapim2zero_buster_current_5.15.93_server.rar/file

Debian Buster Server Mininal

https://www.mediafire.com/file/pjqn7xw9bqbejab/Armbian_23.02.0-trunk.0264_Bananapim2zero_buster_current_5.15.93_server_minimal.rar/file

Debian Buster Desktop lxde

https://www.mediafire.com/file/uofhauefzrkxq91/Armbian_23.02.0-trunk.0264_Bananapim2zero_buster_current_5.15.93_lxde_desktop.img.rar/file

Debian Buster Desktop Mate

https://www.mediafire.com/file/4i761iai2eazgu9/Armbian_23.02.0-trunk.0264_Bananapim2zero_buster_current_5.15.93_mate_desktop.rar/file

Base Debian Bullseye

Debian Bullseye Server

https://www.mediafire.com/file/0jilyu1f2ohtvqk/Armbian_22.11.0-trunk_Bananapim2zero_bullseye_current_5.15.80_server.rar/file

Debian Bullseye Server Mininal

https://www.mediafire.com/file/1yltw5sk4q4vzzu/Armbian_22.11.0-trunk_Bananapim2zero_bullseye_current_5.15.80_minimal.img.rar/file

ArchLinux

coming soon

AlpineLinux

coming soon

LibreELEC

LibreELEC Kodi 20

https://www.mediafire.com/file/6vuzdxlawoomisq/LibreELEC_H2_Bananapi_M2_Zero.rar/file

Imagenes Antiguas

Referencias y Menciones

Menciones

Agradecimiento especial a bontango por ayuda con fallo de pines con uso de nueva librería ademadas de ayuda en uso de comunicación UART

https://www.lisy.dev/
https://forum.banana-pi.org/u/bontango
https://forum.banana-pi.org/t/configuracion-y-uso-de-gpio-bpi-m2-zero/13179/79

Referencias

https://github.com/adafruit/Adafruit_Python_GPIO
https://github.com/adafruit/Adafruit_Python_SSD1306
https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/installing-circuitpython-on-raspberry-pi#enable-i2c-and-spi-3-5
https://unipython.com/gpio-raspberry-pi-explicacion-uso-encender-led/
https://github.com/codelectron/ssd1306
https://github.com/PyAV-Org/PyAV/issues/491
https://github.com/rm-hull/luma.oled/wiki/Usage-&-Benchmarking
https://github.com/rm-hull/luma.examples
https://luma-oled.readthedocs.io/en/latest/hardware.html
https://github.com/rm-hull/luma.oled
https://www.raspberrypi-spy.co.uk/2018/04/i2c-oled-display-module-with-raspberry-pi/
https://stackoverflow.com/questions/47694421/pil-issue-oserror-cannot-open-resource
https://github.com/adafruit/Adafruit_CircuitPython_SSD1306
https://github.com/adafruit/Adafruit_Blinka
https://ssd1306.readthedocs.io/en/latest/python-usage.html
https://ssd1306.readthedocs.io/en/latest/index.html
https://ssd1306.readthedocs.io/en/latest/intro.html
https://programmerclick.com/article/48301644742/
https://github.com/BPI-SINOVOIP/RPi.GPIO
https://github.com/LeMaker/RPi.GPIO_BP/blob/bananapro/test/info_RPi.GPIO.py
https://github.com/GrazerComputerClub/RPi.GPIO
https://github.com/BPI-SINOVOIP/BPI-WiringPi2

About

gpio pin configuration and use project on Bananapi m2 zero board


Languages

Language:Shell 52.4%Language:C 46.9%Language:Python 0.7%