i2c0 an pi zero will nicht

  • und genau hier hänge ich jetzt fest. In Normalfall spreche ich Sensoren, die direkt am I2C an mit den pins. Hier ein hc-sr04 direkt an gpio pin 2 und 3.


    Code
    1. import RPi.GPIO as GPIO
    2. GPIO.setmode(GPIO.BCM)
    3. TRIG = 3
    4. ECHO = 2
    5. GPIO.setup(TRIG,GPIO.OUT)
    6. GPIO.setup(ECHO,GPIO.IN)

    An gpio pin2 und 3 hängt jetzt der MCP23017 und antwortet auf 0x20. An gpioa0 und gpiob0 hängt jetzt der hc-sr04. Das muss ich jetzt irgendwie konvertieren so das ich den python skripten sagen kann benutze statt gpio pin2 und 3 die adresse 0x20 pin gpioa0 und gpiob0. Da hörts bei mir grad auf mit python.

    2 Mal editiert, zuletzt von wernerwe ()

  • Eine Fehlerquelle konnte ich ausfindig machen mit dem Multimeter. Das letzte Breadboard taugt nix. Jetzt hab ich alles auf Lochraster verlötet und angeschlossen. Jetzt klappts auch mit beiden I2C's.


    I2C0 wird sauber erkannt, konfiguriert und die angeschlossene HW funktioniert mit SDA0 SCL0. Momentan testweise ein BMP180 von Bosch.

    Dafür muss folgendes gemacht werden:

    - in die /boot/commandline.txt am Ende

    Code
    1. bcm2708.vc_i2c_override=1

    anhängen. In der Datei /boot/config.txt beide Zeilen hinzufügen(!)

    Code
    1. dtparam=i2c_arm=on
    2. dtparam=i2c_vc=on

    Einmal rebooten und dann erscheint der auch in der i2cdetect -l Liste.


    Gleichzeitig hab ich mit dem MCP auf I2C1 gekämpft und aufgrund des feherhaften Breadboards kein Ergebnis erreicht. Der Fred ist aber vom Thema her gelöst.


    I2C1 erkennt den MCP auf Adresse 0x20 stabil. Aus lauter Verzweiflung hab ich einen weiteren MCP23017 verbastelt und mit der typischen LED Schaltung versehen um zu sehen ob ich die Ausgänge schalten kann. Geht alles. Die LEDs blinken hier binär vor sich hin.


    Auf der Basis der SMBUS lib werde ich mal versuchen ob ich da was hingebastelt bekomme für die HC-SR04. Der MCP ist jedenfalls bis zu den Ausgängen her sauber verdrahtet was mir die LEDs bestätigen. Also kann ich erstmal alles andere ausschließen.