Suche Umgebungslichtsensor/Messer für i2c

AGB-Leser

Commodore
Registriert
Jan. 2021
Beiträge
5.009
Hallo Leute,
ich suche für ein Schulprojekt einen Lichtsensor, den man an einen Raspberry Pi PICO anschließen kann.
Dazu allerdings eine Bibliothek für C. Bis jetzt hab ich immer nur Arduino gefunden, aber der hat ja weder zwei i2c-Busse, noch kann die Arduino-IDE zwei i2c-Busse initialisieren. Die IDE unterstützt ja mittlerweile den Pico. Aber immernoch das Problem mit den zwei Bussen…
Oder gibt es eine Möglichkeit, die Arduino-Bibliotheken für C zu importieren?
 
das example hab ich mal bei Visual Studio Code reingeworfen, konfiguriert und…geht natürlich nicht.
Hab noch nicht mal meine ń GY-302 zum laufen gebracht. Da gibs leider nur Arduino-Bibliotheken. Was mich ja wundert, dass scheinbar keiner sowas in C schreibt.
 
Den heise Link kenne ich schon, trotzdem danke. Hatte den wegen den zwei Bussen gekauft und weil ich dachte, dass da viele Beispielprogramme existieren. Aber so kann man sich täuschen. Es gibt welche, aber leider alle in Python oder Arduino. Und das ist leider nicht wirklich kompatibel. Ich hatte sogar versucht, die Bibliotheken manuell hinzuzufügen. Auch die innerhalb der einzelnen Bibliotheken verlinkten Bibliotheken hab ich rausgesucht. Aber das funktioniert leider nicht. Warum auch immer
 
Im ganzen Linux Kernel gibt es Unmengen an I2C Treibercode in C für verschiedene I2C Sensoren (IIO subsystem für Lichtsensoren: /drivers/iio/light)

Das ist natürlich kein Microcontroller mehr - aber der Raspberry Pi Zero 1.3 ist auch nur 1,47€ teurer als der Pico Mikrocontroller und man ist in der Programmiersprache nicht so eingeschränkt oder auf Support angewiesen - zB warum Pico statt Calliope, der in DE gepusht wird oder "normalen" PC / SoC der auch die ganzen Sensoranschlüsse hat.


AGB-Leser schrieb:
dass scheinbar keiner sowas in C schreibt.
bestimmt gibt es das in C - aber die sind vielleicht "privat" / Herstellerspezifisch (ein fertiges Arduino/microcontroller Produkt mit Lichtsensor) oder "Umgebung" (Arduino vs. andere Mikrokontroller ESP ...), unterliegen bestimmten Lizenzen - die Sensorhersteller könnten ja den Code selbst veröffentlichen - aber das wird dann vielleicht schnell so kompliziert, weshalb es nicht gemacht wird bzw. auch Ressourcen/Geld bindet.

BoschSensortec bei github hat zB C Code aber kA ob es da Lichtsensoren gibt
 
Warum 2 i2c Busse?
Ich verwende z.b. einen bme280 und einen ads1115 an einem Bus (aber wie gesagt esp32 hat auch 2 mal i2c)

Wenn du den pico verwenden willst wirst du selbst mehr recherchieren müssen.
Hier noch ein C++ Beispiel
https://raspberrypi.github.io/pico-sdk-doxygen/group__hardware__i2c.html#i2c_example

Übrigens ist Arduino im Grunde auch nur C++ mit dem eingebauten Hack Funktion nicht vorher definieren zu müssen.

Esp32 ist auch eine MCU aber eben schon ein paar Jahre am Markt deswegen gibt es Unmengen von Beispielen.
Ich persönlich verwende meist platformio und das Arduino Framework in Vscode.
Nachteil gegenüber dem pico ist, dass du zum Debuggen jtag nutzten musst.

Was ist eigentlich das Ziel des Projektes. MCU Konzepte lernen oder C++ oder wirklich nur einen Lichtsensor irgendwie zum Laufen zu bekommen?

Hast du selbst schon mal mit einer MCU gearbeitet?
 
lokon schrieb:
, unterliegen bestimmten Lizenzen - die Sensorhersteller könnten ja den Code selbst veröffentlichen -
Die haben den Code ja veröffentlicht. Aber, wie die meisten, eben nur für Arduino.
Mikrocontroller deshalb, weil ich was kompaktes, zuverlässiges realisieren wollte

cloudman schrieb:
Warum 2 i2c Busse?
Ich verwende z.b. einen bme280 und einen ads1115 an einem Bus (aber wie gesagt esp32 hat auch 2 mal i2c)
Weil ich hier viermal den GY-302 zu liegen habe. Den kann man aber nur einmal die Adresse ändern. Macht also zweimal zwei Adressen

cloudman schrieb:
Wenn du den pico verwenden willst wirst du selbst mehr recherchieren müssen.
Hier noch ein C++ Beispiel
https://raspberrypi.github.io/pico-sdk-doxygen/group__hardware__i2c.html#i2c_example
Das Beispiel kenne ich, stammt von der Raspberry Fundation selber. Habe ich mit ach und krach zum laufen gebracht. Funktioniert zb auch nur so halb

cloudman schrieb:
Ich persönlich verwende meist platformio und das Arduino Framework in Vscode.
Das hab ich als erstes ausprobiert, aber irgendwie nicht so richtig warm geworden. PlatformIO kannte den Pico da noch garnicht, als ich angefangen haben. Visualstudio Code ist eigentlich garnicht so schlecht. Die Fehlermeldungen in der Arduino-IDE sind öfters mal nichts sagend, auch mit aktivierter erweiterter Protokollierung.
cloudman schrieb:
Was ist eigentlich das Ziel des Projektes. MCU Konzepte lernen oder C++ oder wirklich nur einen Lichtsensor irgendwie zum Laufen zu bekommen?

Hast du selbst schon mal mit einer MCU gearbeitet?
Wenn du mit MCU einen Mikrocontroller (µC) meinst, dann ja. In der Schule halt und ist durchaus schaffbar

Ansonsten aus allen drei Punkten etwas. Die Lichtstärke verschiedener Positionen aufm Bildschirm ausgeben. Mit der Arduino-IDE hab ich das jetze hinbekommen, dass ich beide Busse auswählen kann:

C:
void setup()
{
  Wire.setSDA(1);
  Wire.setSCL(2);
  Wire1.setSDA(3);
  Wire1.setSCL(4);
  Wire.begin();

}

steht übrigens im Beispiel Talktomyself.ino

Mal sehen wie weit ich damit komme, das ist ja schonmal ein Anfang. Ich hatte ja die Rasperry Pico-Erweiterung installiert, da ist das Beispiel drin
 
Ja, hab die Bibliothek hier. Probiere ich ma aus, da man über c beim Pico wohl nicht glücklich wird. Es sei denn, man will wirklich ALLES selber schreiben, dann ist vsc genau das richtige
 
Zurück
Oben