I2C连接BPi和Arduino

2024-05-20 18:00:02 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我有一个正在进行的物联网项目,涉及Arduino设备与一个名为“香蕉皮”的浆果板之间的通信。我注意到有很多类似的主题,但没有一个专门讨论如何在Banana Pi中设置i2c驱动程序和引脚,因为安装库并开始编码不是一个简单的过程

以下是我的设置:

  • 香蕉皮

    1. 我在Pi本身上安装了Linux bananapi 3.4.104-bananian #1 SMP PREEMPT Mon Apr 6 18:25:40 UTC 2015 armv7l GNU/Linux
    2. 我安装了所需的库和包apt-get install python-smbus python-dev i2c-tools
    3. 我遵循了其他设置要求(将i2c-dev添加到/etc/modules,将一些dtparams添加到/boot/config,尽管LinuxBananapi最初没有类似于覆盆子的文件)
    4. 与Raspbian版本不同,LinuxBananapi没有从sudo raspi-config接口选项激活I2C设备的选项。因此,我跳过这一步
    5. 我编写了一个简单的实现来显示我从Arduino收到的消息
import smbus
from time import sleep

def main():
    SLAVE_ADDRESS = 0x04
    DATA_LENGTH = 4

    I2CBus = smbus.SMBus(1)
    print('initiated i2c connection as master')

    while True:
        try:
            message = I2CBus.read_i2c_block_data(SLAVE_ADDRESS, 0x00, DATA_LENGTH)
            print(message)
            sleep(1)
        except KeyboardInterrupt:
            break

if __name__ == '__main__':
    main()

**问题:每次运行上述代码时,它都会返回:**

Traceback (most recent call last):
  File "index.py", line 20, in <module>
    main()
  File "index.py", line 13, in main
    message = I2CBus.read_i2c_block_data(SLAVE_ADDRESS, 0x00, DATA_LENGTH)
IOError: [Errno 70] Communication error on send

这让我觉得上面第2步和第3步有些不对劲。有些人要求修改内核,如这里所述http://forum.banana-pi.org/t/has-anyone-added-an-rtc/5004/5。然而,这些步骤和他们的信心还不清楚,因为有些人说GPIO引脚在修改内核时会变得不可用,我不会冒险浪费时间将内存重新刷新回其原始操作系统,等等,以重新获得GPIO功能

  • 阿杜伊诺

    在I2C通信中,我使用Arduino Due作为香蕉Pi的从设备。布线只是简单地将Arduino SDA连接到Pi的SDA,将Arduino SCL连接到Pi的SCL(两个设备均在3.3V下工作),并将接地相互连接。 在https://radiostud.io/howto-i2c-communication-rpi/之后,在Arduino端再次进行了一些编码,只做了一个简单的修改,将它从串行监视器接收到的所有信息发送到BPi。但是由于上面显示的错误,我认为这在这个问题上并不重要

由于缺乏适当的资源,非常感谢您的帮助


Tags: devconfigmessage编码datamainaddresslinux