I2 C Соединение BPi и Arduino - PullRequest
       55

I2 C Соединение BPi и Arduino

1 голос
/ 26 февраля 2020

Недавно у меня есть постоянный проект по IoT, включающий связь между Arduino Devices и ягодной доской под названием Banana Pi. Я заметил, что существует множество подобных тем, но ни одна из них не обсуждает, в частности, как настроить драйвер i2 c и контакты в Banana Pi, поскольку не просто установить библиотеку и начать кодирование.

Вот мои настройки:

  • Banana Pi

    1. Я установил Linux bananapi 3.4.104-bananian #1 SMP PREEMPT Mon Apr 6 18:25:40 UTC 2015 armv7l GNU/Linux на самом Pi
    2. Я установил необходимые библиотеки и пакеты apt-get install python-smbus python-dev i2c-tools
    3. Я следовал другим требованиям настройки (добавив i2c-dev к /etc/modules, некоторые dtparams к /boot/config хотя Linux bananapi изначально не имеют этот файл, как аналог малины) от https://radiostud.io/howto-i2c-communication-rpi/
    4. В отличие от своего аналога Raspbian, Linux BananaPi не имеет возможности активировать устройство I2 C из опции sudo raspi-config сопряжения. Поэтому я пропускаю этот шаг.
    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 станет непригодным после модификации ядра, и я не рискну тратить время на перепрошивку памяти обратно в исходную ОС, например, c. чтобы восстановить функциональность GPIO.

  • Arduino

    Я использую Arduino Due в качестве подчиненного устройства для Banana Pi в этой связи I2 C. Кабели просто соединяют Arduino SDA с SDA от Pi и Arduino SCL с SCL от PI (оба устройства работают при напряжении 3,3 В), а заземления также связаны друг с другом. Сделал некоторое кодирование на стороне Arduino снова после https://radiostud.io/howto-i2c-communication-rpi/ с простой модификацией для отправки всего, что он получает от последовательного монитора, в BPi. Но так как ошибка показанная выше, я не думаю, что в этом вопросе имеет значение

Ваша помощь очень ценится из-за нехватки подходящего ресурса

...