python-3.x I2C(OLED SSD1306),橙子Pi R1 Plus LTS,带OpenWrt

ifmq2ha2  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(136)

我是OpenWrt的新手,但我有大约一年的在Raspberry Pi中使用Linux的自我项目(确切地说,是大学期末项目)经验。
这里有人在橙子Pi R1 Plus LTS上使用过I2C OLED SSD 1306吗?我现在陷入了启用它的问题。
我使用的是OpenWrt 21.02.2,r16495-bf 0 c965 af 0。
以下是我尝试过的方法:我使用了这个库:https://github.com/karabek/OrangePi-OLED,我尝试检测总线0和1上的i2c以获取设备地址,然后运行库中的演示文件。我期望该设备能够在检测到的端口和地址上正确运行i2c设备。
当我尝试检测总线0和1上的i2c时,输出如下:

root@OpenWrt:~# i2cdetect -y 0
Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory

个字符
然后我修改了库中的演示文件:

device = ssd1306(port=1, address=0x18)


我来管理。这是我得到的

root@OpenWrt:/mnt/OrangePi-OLED/examples# python3 demo.py
Traceback (most recent call last):
  File "/mnt/OrangePi-OLED/examples/demo.py", line 11, in <module>
    device = ssd1306(port=1, address=0x18)
  File "/usr/lib/python3.9/site-packages/oled/device.py", line 163, in __init__
    self.command(
  File "/usr/lib/python3.9/site-packages/oled/device.py", line 73, in command
    self.bus.write_i2c_block_data(self.addr, self.cmd_mode, list(cmd))
OSError: [Errno 16] Resource busy


我怀疑这是因为总线0还没有启用,因为下面是Orange Pi R1 Plus LTS Documentation文档中的内容
但是我使用的OpenWrt版本没有 Boot 文件夹。
解决的办法是什么?
另外,如果我不能使用I2C,我应该使用什么显示器?我可以使用SPI TFT IPS或UART显示器吗?

lnvxswe2

lnvxswe21#

我在配置i2c地址时在Raspberry Pi 4 b上遇到了同样的问题。它很忙碌,因为内核控制了设备。我的解决方案是从配置文件中删除地址。“i2cdetect -y 1”命令确认i2c设备接线正确。从库文件中删除添加的信息并重新启动后,重新运行“i2cdetect -y 1”,并查看“UU”是否替换为正确的地址。如果是这样,可以使用Python程序来初始化它。如果没有,使用内核是我无法理解的。

相关问题