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.
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.
- Instalación Rápida
- Instalación Manual
- Habilitar GPIO (I2C,PWM,SPI,UART,OVERCLOCK)
- Ampliar Swap
- Uso de ejemplos
- Links y Video.
- Descarga de Imagenes
- Referencias y Menciones
-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.
-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.
-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)
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
Usuario | Contraseña |
---|---|
roxas | pi |
root | pi |
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
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
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
BOARD=bpi-m3
BOARD_AUTO=bpi-m3
BOARD_OLD=bpi-m64
BOARD=bpi-m2z
BOARD_AUTO=bpi-m2z
BOARD_OLD=bpi-m64
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/
sudo adduser (your user) i2c
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) |
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
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/
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
▶️ TuryRx 🔥
https://www.youtube.com/channel/UC2qm0bsEO0u1wBgiINs8-5w
https://www.mediafire.com/file/f3zop887yjmqvo6/Armbian_23.02.0-trunk.0264_Bananapim2zero_focal_current_5.15.93_server.rar/file
https://www.mediafire.com/file/fjba6l2uqfcstqq/Armbian_23.02.2_Bananapim2zero_focal_current_5.15.93_server_minimal.rar/file
https://www.mediafire.com/file/yms7q2hiyqeob6u/Armbian_23.02.0-trunk_Bananapim2zero_focal_current_5.15.93_xfce_desktop.rar/file
https://www.mediafire.com/file/fvjhy045ybfc81n/Armbian_22.11.0-trunk_Bananapim2zero_jammy_current_5.15.80_server.rar/file
https://www.mediafire.com/file/509uuchjp8jmk34/Armbian_22.11.0-trunk_Bananapim2zero_jammy_current_5.15.80_server_minimal.rar/file
https://www.mediafire.com/file/250razne7xr4ocq/Armbian_22.11.0-trunk_Bananapim2zero_jammy_current_5.15.80_xfce_desktop.rar/file
https://www.mediafire.com/file/vjcj0sqdj3hhakn/Armbian_22.11.0-trunk_Bananapim2zero_jammy_current_5.15.80_i3-wm_desktop.rar/file
https://www.mediafire.com/file/kx4zckpabug0y87/Armbian_23.02.0-trunk.0264_Bananapim2zero_buster_current_5.15.93_server.rar/file
https://www.mediafire.com/file/pjqn7xw9bqbejab/Armbian_23.02.0-trunk.0264_Bananapim2zero_buster_current_5.15.93_server_minimal.rar/file
https://www.mediafire.com/file/uofhauefzrkxq91/Armbian_23.02.0-trunk.0264_Bananapim2zero_buster_current_5.15.93_lxde_desktop.img.rar/file
https://www.mediafire.com/file/4i761iai2eazgu9/Armbian_23.02.0-trunk.0264_Bananapim2zero_buster_current_5.15.93_mate_desktop.rar/file
https://www.mediafire.com/file/0jilyu1f2ohtvqk/Armbian_22.11.0-trunk_Bananapim2zero_bullseye_current_5.15.80_server.rar/file
https://www.mediafire.com/file/1yltw5sk4q4vzzu/Armbian_22.11.0-trunk_Bananapim2zero_bullseye_current_5.15.80_minimal.img.rar/file
coming soon
coming soon
https://www.mediafire.com/file/6vuzdxlawoomisq/LibreELEC_H2_Bananapi_M2_Zero.rar/file
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
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