Hallo zusammen.
ich bin ein absoluter Anfänger in der Welt des Raspberry Pis und bin auf ein Problem gestoßen und suche daher nach eurem Rat und Wissen.
In meinem Projekt habe ich eine Platine entworfen, auf der insgesamt 16 Magnetsensoren (MMC5633NJL) in einem Sensor Array zusammengefasst sind. Die Sensoren werden über I2C angesprochen, da aber jeder Sensor die gleiche I2C Adresse hat, müssen diese mit einem I2C Multiplexer (TCA9548) zwischengeschaltet werden. Dieser ist ein 1- 8 Kanal Multiplexer und hat pro Kanal 2 Anschlüsse für jeweils SDA und SCL.
Dazu habe ich jeweils PullUp Widerstände (2,7 kOhm oder 10 kOhm) zwischen Sensor und Multiplexer Kanal gesetzt. Da der Raspberry Pi 5 bereits integrierte PullUp Widerstände hat, habe ich keine zusätzlichen zwischen Multiplexer und Microcontroller platziert (beim RP2040 habe ich 10kOhm Widerstände auf einem Breadboard dazwischen platziert).
Letztendlich sind also die 2 Multiplexer mit den Adressen 0x70 und 0x71 direkt mit dem Raspberry Pi 5 verbunden, während die Sensoren mit den Multiplexern verbunden sind, um Adressenkonflikte zu vermeiden.
Mittlerweile habe ich es geschafft, die Sensoren über I2C mit dem Seeed RP2040 bzw. auch dem Arduino Mega 2560 zu erkennen und zu initialisieren. Diese geben auch Messwerte aus.
Der Code für den RP2040 sieht folgendermaßen aus:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
Kurzfassung des Codes:
Zuerst prüft es, ob die Multiplexer erkannt werden und initialisiert diese. Danach prüft es pro Kanal, ob ein Sensor erkannt wird und initialisiert diese. Im letzten Schritt holt er sich die Messwerte der Sensoren durch Eventabfragen.
Nun zu meinem Problem:
Der Arduino Mega 2560 erkennt und initialisiert alle I2C Teilnehmer (den Code kann ich bei Bedarf gerne hochladen). Der Seeed Rp2040 läuft mit CircuitPython und erkennt auch alle I2C Teilnehmer. Beide holen sich auch Messwerte ab. Nur der Raspberry Pi 5, der genau den gleichen Code wie der RP2040 verwendet, erkennt nur die Multiplexer, aber nicht die Sensoren. Das Board hat sich nicht geändert und wurde auf allen 3 Mikrocontrollern verwendet.
Ich möchte den Raspberry Pi 5 verwenden, da ich mit ihm das Sensorarray initialisieren, messen, visualisieren und in einem gemeinsamen, kompakten Programm auswerten möchte.
Habt ihr Ideen, weshalb der Pi im Vergleich zum RP2040 nicht die Sensoren erkennt?
Vielen Dank im Voraus und beste Grüße
Datley
[Mod: Code in code-Tags eingefasst]