Hallo, ich habe ergooglelt, dass es für einen SHT21 Luftfeuchtigkeitssensor für Linux einen Kernel-Driver geben soll. Kann mir jemand erklären was das genau bedeutet und wie ich den Sensor dann auslesen kann? Wie kann ich erkennen, ob mein Linux den Treiber schon im Bauch hat? Ich möchte ihn an mein BeagleBoneBlack anklemmen und möglichst einfach auslesen. Maik
Hier findest Du den Treiber: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/hwmon/sht21.c Wenn er in Deinem Kernel einkompiliert ist, heißt er "sht21". Also einfach mal "modprobe sht21" probieren. Wenn er was von "Module sht21 not found" schreibt, dann ist der Treiber für Deinen Kernel noch nicht kompiliert. Dann schau bei der Anleitung Deiner Distribution wie man einen eigenen Kernel kompiliert.
Hallo Gerd, danke für Deine Antwort. Wenn ich "modprobe sht21" eingebe kommt nur das Prompt zurück. Ohne irgend eine Meldung. Ist das ein gutes Zeichen? Gruß Maik
Ich hab jetzt einen SHT21 am BBB angeschlossen. Wenn ich "i2cdetect -y 1" eingebe, bekomme ich aber den folgenden Fehler: Error: Can't use SMBus Quick Write command on this bus Wenn ich "i2cdetect -F 1" eingebe, kann ich sehen das "SMBus Quick Command " nicht implementiert ist. Kann ich das irgendwo einschalten? Wenn ja wo? Functionalities implemented by /dev/i2c-1: I2C yes SMBus Quick Command no SMBus Send Byte yes SMBus Receive Byte yes SMBus Write Byte yes SMBus Read Byte yes SMBus Write Word yes SMBus Read Word yes SMBus Process Call yes SMBus Block Write yes SMBus Block Read no SMBus Block Process Call no SMBus PEC yes I2C Block Write yes I2C Block Read yes Gruß Maik
1 | echo sht21 0x40 > /sys/class/i2c-adapter/i2c-1/new_device |
sollte den sht21 auf dem i2c-1 Bus scharf schalten. Falls das der korrekte Bus ist...
Ja, aber der echo Befehl kommt mit einem Fehler zurück. Es gibt im i2c-1 auch keinen Ordner new_device. Laut Pinbelegung des BBB ist es der I2C-1. Wobei der 1er Bus an 2 unterschiedlichen Portpins vorhanden ist. Hat jemand noch irgendwelche Tipps zum debugging?
sudo echo sht21 0x40 > /sys/class/i2c-adapter/i2c-1/new_device kommt mit "Permission denied" zurück. Es gibt den Ordner auch nicht unter: /sys/class/i2c-adapter/i2c-1/ Dort sind nur folgendes: 0-0024 0-0034 0-0050 0-0070 delete_device device i2c-dev name new_device power subsystem uevent
liegt möglicherweise daran das der Kernel neu kompiliert werden, muss. Schau mal ob du das in der Kernelkonfig konfigurieren kannst.
ansonst mit lsmod kannste gucken was für Treiber laufen, insmod dient zum hinzufügen.
"lsmod" zeigt den sht21 nach dem ich "modprobe sht21" eingegeben habe an. In einem anderen Forum habe ich noch herausgefunden, das man "i2cdetect -r 1" (1 für I2C-1) eingeben sollte. Dann kann ich den Bus auch scannen. Der Sensor wird aber nicht gefunden :-( Dann geht die Suche also weiter...
Maik schrieb: > In einem anderen Forum habe ich noch herausgefunden, das man "i2cdetect > -r 1" (1 für I2C-1) eingeben sollte. Dann kann ich den Bus auch scannen. > Der Sensor wird aber nicht gefunden :-( Pullups hast Du am Bus dran? Wieviel Ohm? 100nF direkt an der Versorgung des SHT21 vorhanden? Wenn es das nicht ist, dann schau Dir mal die Flanken am Bus mit dem Oszi an während Du das i2cdetect laufen lässt. Sind die sauber?
Pulups sind mit 2K2 vorhanden. 100nF Pufferkonni vorhanden. Flanken kann ich keine sehen! Es kommen keine Signale! Ich sehe im BBB nur i2c-0 und i2c-1. ich kann an keinem Pin der i2c Busse irgend etwas messen. Im Ruhezustand liegen 3,3V an. (wg. der Pulups)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.