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