Nano pi_移植CircuitPython(历史遗留具有参考价值)

1,049 阅读1分钟

1_移植CircuitPython


参考这两篇博客

https://learn.adafruit.com/adding-a-single-board-computer-to-platformdetect-for-blinka

https://learn.adafruit.com/adding-a-single-board-computer-to-blinka

1.1_第一部分

sudo apt-get install -y python3 git python3-pip

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1

sudo update-alternatives --config python

升级

sudo pip3 install --upgrade setuptools

查看板子名称和芯片名称

cat /etc/armbian-release
git clone https://github.com/adafruit/Adafruit_Python_PlatformDetect.git
cd ~/Adafruit_Python_PlatformDetect/adafruit_platformdetect/constants

修改boards.py

sudo nano boards.py

# Nano Pi boards
NANO_PI_DUO2 = "NANO_PI_DUO2"

# NanoPI
_NANO_PI_IDS = (NANO_PI_DUO2,)

修改board.py

cd ~/Adafruit_Python_PlatformDetect/adafruit_platformdetect
sudo nano board.py

        if board_value == "nanopiduo2":
            board = boards.NANO_PI_DUO2

    @property
    def any_nano_pi(self):
        """Check whether the current board is any defined Nano Pi."""
        return self.id in boards._NANO_PI_IDS

self.any_nano_pi,

修改detect.py

cd ~/Adafruit_Python_PlatformDetect/bin/
sudo nano detect.py

if detector.board.any_nano_pi:
    print("Nano Pi detected.")
sudo pip3 install --upgrade Adafruit-PlatformDetect
sudo cp -R ~/Adafruit_Python_PlatformDetect/adafruit_platformdetect /usr/local/lib/python3.7/dist-packages
cd ~/Adafruit_Python_PlatformDetect/bin

sudo python3 detect.py

1.2_第二部分

安装adafruit_blinka

sudo pip3 install adafruit-blinka

安装libgpiod

sudo apt-cache search gpiod

安装以下三个

sudo apt-get install libgpiod2 python3-libgpiod gpiod

安装I2C工具

sudo apt-get install -y python3-smbus python3-dev i2c-tools

sudo adduser pi i2c
cd /usr/local/lib/python3.7/dist-packages/adafruit_blinka/microcontroller/allwinner/h3
sudo nano pin.py

PL11 = Pin((1, 11))

uartPorts = (
    (1,UART1_TX,  UART1_RX),
    (3, UART3_TX, UART3_RX), 
)

添加板文件

cd /usr/local/lib/python3.7/dist-packages/adafruit_blinka/board
sudo mkdir nanopi
cd nanopi

sudo nano nanopiduo2.py
"""Pin definitions for the Nano Pi Duo2."""

from adafruit_blinka.microcontroller.allwinner.h3 import pin

PL11 = pin.PL11
PG11 = pin.PG11

SCL = pin.PA11
SDA = pin.PA12

PA13 = pin.PA13
SCLK = pin.SPI1_SCLK
MISO = pin.SPI1_MISO
MOSI = pin.SPI1_MOSI
PG7 = pin.PG7
PG6 = pin.PG6

TX = pin.PG6
RX = pin.PG7
sudo nano __init__.py

"""Boards definition from Youshan Nano Pi"""
cd /usr/local/lib/python3.7/dist-packages
sudo nano board.py

elif board_id == ap_board.NANO_PI_DUO2:
    from adafruit_blinka.board.nanopi.nanopiduo2 import *

编辑/boot/armbianEnv.txt并在最后添加这些行

sudo nano /boot/armbianEnv.txt 
overlays=uart1 i2c0 spi-spidev
param_spidev_spi_bus=1

重启

sudo reboot

验证是否拥有I2C和SPI设备

ls /dev/i2c* /dev/spi*
cd /usr/local/lib/python3.7/dist-packages
sudo nano busio.py

        elif detector.board.any_nano_pi and detector.chip.id == ap_chip.SUN8I:
            from adafruit_blinka.microcontroller.allwinner.h3.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI

1.3_检测gpio和i2c和spi

sudo nano main.py
import board
import digitalio
import busio

print("Hello blinka!")

# Try to great a Digital input
pin = digitalio.DigitalInOut(board.PL11)
print("Digital IO ok!")

# Try to create an I2C device
i2c = busio.I2C(board.SCL, board.SDA)
print("I2C ok!")

# Try to create an SPI device
spi = busio.SPI(board.SCLK, board.MOSI, board.MISO)
print("SPI ok!")

print("done!")
sudo python3 main.py