Tearran / 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.

Tabla de contenidos

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 \
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 pip install setuptools==58.3.0
sudo pip install wheel==0.37.0
sudo pip3 install pyserial==3.5
sudo pip3 install pyusb==1.2.1
sudo pip3 install pyftdi==0.53.3
sudo pip3 install Adafruit-PureIO==1.1.9
sudo pip3 install Adafruit-PlatformDetect==3.17.1
sudo pip3 install Adafruit-Blinka==6.15.0
sudo pip3 install smbus2==0.4.1
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/BPI-SINOVOIP/BPI-WiringPi2.git
cd BPI-WiringPi2
sudo chmod 777 build
sudo ./build 
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/BPI-SINOVOIP/RPi.GPIO.git
cd RPi.GPIO
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

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 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 ..

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 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 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)

Captura de pantalla (162)

Captura de pantalla (143)

Captura de pantalla (144)

Captura de pantalla (145)

Captura de pantalla (146)

Captura de pantalla (147)

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 245M.

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

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

sudo chmod 777 swap_memori.sh
sudo sed -i 's/sudo fallocate -l 245M /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 luma.examples/examples/ y un ejemplo para poder usar leds y botones en Bananapi-m2-zero-GPIO-files/

Ejemplo de uso de pantalla oled i2c

Captura de pantalla (158)

128302021-96c60a6c-ece6-4109-b3a1-a1b8c9d0955d

128302087-cf29cb78-10c1-4c27-a41d-53d6d2185d88

Ejemplo de uso de led

Captura de pantalla (159)

128302140-6df6db0c-94c3-4736-a85d-50e8a1b16386

Ejemplo coneccion de boton

Captura de pantalla (436)

Captura de pantalla (408)

Ejemplo coneccion de boton sin resistencia (hay que configurar como pull-down antes de utiliza mas info en apartado de habilitar gpio Ejemplo: sudo gpio -1 mode 7 1)

Captura de pantalla (434)

Ubicacion y funciones de pines fisicos

1e2e5830e341ad050857fd65e18ea8e5680841ec

Captura de pantalla (151)

Captura de pantalla (152)

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

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

TuryRx
https://www.youtube.com/channel/UCsVnls-pcXUDKCafBRPJIsg

Descargas

Ubuntu Focal Servidor

https://www.mediafire.com/file/8bbmt4ovp1np3l5/Armbian_21.08.0-trunk_Bananapim2zero_focal_current_5.10.52.img_26-07-2021_optifine.rar/file

Ubuntu Focal Servidor Minima

https://www.mediafire.com/file/9mttmdoegw8nxeb/Armbian_21.11.0-trunk_Bananapim2zero_focal_current_5.10.75_minimal_05-11-2021.rar/file

Ubuntu Focal Escritorio xfce

https://www.mediafire.com/file/314d3jlg5xuiv2t/Armbian_21.08.0-trunk_Bananapim2zero_focal_current_5.10.52_xfce_desktop_26-07-2021_optifine.rar/file

Ubuntu Focal Escritorio i3wm

https://www.mediafire.com/file/e2a3x1l21kri4ai/Armbian_21.11.0-trunk_Bananapim2zero_focal_current_5.10.75_i3-wm_desktop_05-11-2021.rar/file

Ubuntu Focal GPIO configurado rev1.3 28-03-22

https://www.mediafire.com/file/rt3ww2bvezotqsg/Banana_Pi_M2Z_GPIO_28_03_22.rar/file

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/BPI-SINOVOIP/BPI-WiringPi2

About

gpio pin configuration and use project on Bananapi m2 zero board


Languages

Language:Shell 98.1%Language:Python 1.9%