Raspberry Pi 3 + Troyka Cap + Arduino Leonardo via i2c

Тема в разделе "Raspberry Pi", создана пользователем ostin654, 9 фев 2019.

  1. ostin654

    ostin654 Нуб

    Добрый день!
    Есть малина, на ней сверху Troyka Cap. Пытаюсь соединить их с arduino leonardo через i2c.
    Малина не видио ардуинку. Думал, что проблема в Cap или в чем-то еще, пробовал подключать датчик BMP280 (просто как тестовое устройство i2c), итог:
    0) малина видит Cap по i2c
    1) малина видит BMP280 по i2c
    2) ардуино видит BMP280 по i2c
    3) 2 ардуины видят друг друга по i2c
    4) малина НЕ видио ардуину по i2c
    5) малина БЕЗ Cap тоже НЕ видит ардуину

    Для проверки использовал эти скетчи:
    https://www.arduino.cc/en/Tutorial/MasterReader
    https://playground.arduino.cc/Main/I2cScanner
    На малине смотрю через i2cdetect

    Также пробовал питон-скрипты и программы на c++ - все они выдают ошибку при чтении данных. А вот например с BMP280 что-то читается!

    В интернете полно статей, как соединять, и там все работает. Достаточно просто залить скетч "slave" на ардуину и она сразу станет видна. По сути это делает строка Wire.begin(SLAVE_ADDRESS);

    Для соединения использую просто 2 провода SDA и SCL. По идее этого должно хватать? Например, для двух ардуин хватает.

    Пробовал выставлять
    dtparam=i2c_baudrate=10000
    в /boot/config.txt, но это не помогло, ничего не изменилось.
     
  2. BAR__MEN

    BAR__MEN Вселенский Няш Команда форума

    А в дуину нужный скетч залит?
    По стандарту она не определится как устройство i²c
     
  3. ostin654

    ostin654 Нуб

    Скетч залит. Ну другая ардуина то видио его через сканнер. И число считывается. И в интернете примеры приводят, что ардуина видна через i2cdetect. Неужели просто из-за того, что ардуины неоригинальные?
     
  4. parovoZZ

    parovoZZ Гуру

    Не понял - вопрос в чем? I2C - это интерфейс с определенными правилами пересылки пакетов. Что там будет пересылаться - это прерогатива прогоаммиста. Поэтому разрабатываете простейший протокол и наслаждаетесь результатом. Благо что все железо поддерживает данный интерфейс на аппаратном уровне.
     
  5. ostin654

    ostin654 Нуб

    Вопрос в том, что не могу ни одного байта переслать. Протокол будет, как только будут пересылаться байты.
     
  6. ostin654

    ostin654 Нуб

    Нужно обязательно подключать GND малины к GND ардуины. Пока не понял, почему так. Но все работает.
     
  7. BAR__MEN

    BAR__MEN Вселенский Няш Команда форума

    Гмм...
    А Вы этого раньше не сделали? О_о
     
  8. ostin654

    ostin654 Нуб

  9. Потому что нужно знать школьную физику, прежде чем провода подключать к чему-нибудь. Ток течет по петле. Нет пути возврата - нет тока.
     
  10. parovoZZ

    parovoZZ Гуру

    I2C не является балансной линией передачи, поэтому нулевые потенциалы устройств необходимо между собой уровнять.
     
  11. ostin654

    ostin654 Нуб

    Ну ок, с голой малиной разобрался. Теперь надел Troyka Cap, присоединил GND. Опять не работает.
     
  12. BAR__MEN

    BAR__MEN Вселенский Няш Команда форума

    Адреса I2C разные?
     
  13. ostin654

    ostin654 Нуб

    Адрес ардуины 18, был виден, пока не было Troyka Cap. Теперь видно только адрес самой Cap - 2a.
     
  14. parovoZZ

    parovoZZ Гуру

    Изучи внимательно I2C и делай всё ручками. Кто-то держит линию SCL дольше, чем надо, вот и результат. А вообще ЛА или осцилл в помощь. Так можно до седины гадать.