Плата на NAPI-C своими руками. Часть 2. Софт.
Плата из части 1
В первой части мы сделали плату с UART, I2C, SPI, GPIO

Теперь покажем как с ней работать в Linux
Ставим Linux
Так как Napi это Linux компьютер, на него надо поставить Linux. Мы рекомендуем поставить наш вариант ARMbian, уже подготовленный для работы с NAPI и с предустановленным софтом.
Вы можете поставить чистый ARMbian, но необходимо доставить его "допилить" для использования с NAPI
Скачать и записать на SD образ ARMbian -->
Читаем датчик bmb280
Подключаем оверлей i2c3
В Armbian
- Сделайте файл с приведенным исходным кодом, имя файла
rk3308-i2c3-m0.dts
/dts-v1/;
/plugin/;
/ {
compatible = "rockchip,rk3308";
fragment@0 {
target = <&pwm2>;
__overlay__ {
status = "disabled";
};
};
fragment@1 {
target = <&pwm3>;
__overlay__ {
status = "disabled";
};
};
fragment@2 {
target = <&i2c3>;
__overlay__ {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c3m0_xfer>;
};
};
};
- Выполните команду
armbian-add-overlay rk3308-i2c3-m0.dts
Перезагрузитесь, должно появиться устройство /dev/i2c-3
root@napi-armbian:~# ls /dev/i2c-3
/dev/i2c-3
root@napi-armbian:~#
В NapiLinux
- Откройте файл
/boot/uEnv.txt - Добавьте в раздел
overlays=разделrk3308-i2c3-m0 - Файл должен выглядеть примерно так
verbosity=7
fdtfile=rk3308-rock-pi-s.dtb
console=ttyS0,115200n8
overlays=rk3308-uart3 rk3308-i2c3-m0
kernelimg=Image
extraargs=
- Сохраните файл
- Перезагрузитесь, должно появиться устройство
/dev/i2c-3
Читаем датчик bmp280 (библиотека python)
Самый простой способ (но не единственный), подключить бибилотеку Python и запустить пример.
- Устанавливаем пакет python
python3 -m pip install pimoroni-bme280
Cсылка на репозиторий: https://github.com/pimoroni/bme280-python
- Создаем файл с примером, меняем строчку
bus = SMBus(1)наbus = SMBus(3), так как у нас i2c3.
#!/usr/bin/env python
import time
from smbus2 import SMBus
from bme280 import BME280
print(
"""all-values.py - Read temperature, pressure, and humidity
Press Ctrl+C to exit!
"""
)
# Initialise the BME280
bus = SMBus(3)
bme280 = BME280(i2c_dev=bus)
while True:
temperature = bme280.get_temperature()
pressure = bme280.get_pressure()
humidity = bme280.get_humidity()
print(f"{temperature:05.2f}°C {pressure:05.2f}hPa {humidity:05.2f}%")
time.sleep(1)
В этом листинге номер шины уже поменян.
Назовем файл bmp280.py
- Запускаем скрипт и получаем параметры датчика
root@napi-armbian:~# python3 bmp280.py
all-values.py - Read temperature, pressure, and humidity
Press Ctrl+C to exit!
24.16°C 646.16hPa 96.28%
21.98°C 965.00hPa 24.86%
21.99°C 965.00hPa 24.80%
22.00°C 965.00hPa 24.76%
22.00°C 965.00hPa 24.64%
22.00°C 965.00hPa 24.58%
^CTraceback (most recent call last):
File "/root/bmp280.py", line 26, in <module>
time.sleep(1)
KeyboardInterrupt
root@napi-armbian:~#
Ура ! У нас работает i2c и датчик bmp280.
Видео иллюстрация: https://www.youtube.com/shorts/YHx2SOUr-2k