Hallo zusammen,
leider schaffe ich es nicht, die Daten von 2 Temperatur-Sensoren mit dem
Raspberrry Pico W per micropython auszulesen.
Beide Sensoren haben unterschiedliche Adressen (0x48 und 0x4f), siehe
beigefügtes Bild des Scan-Programms.
Die Sensoren sollen mit folgendem Programm ausgelesen werden:
1 | # wlan_lcd_1lm75a.py auf Basis ChatGPT
|
2 | # i2c und SoftI2C
|
3 | #
|
4 | import myWLAN
|
5 | import time
|
6 | from machine import SoftI2C, I2C, Pin
|
7 | from machine_i2c_lcd import I2cLcd
|
8 |
|
9 | # define WLAN
|
10 | wlan = myWLAN.myWLAN()
|
11 | wlan.wlanConnect()
|
12 | ip = wlan.get_ip()
|
13 |
|
14 | #define I2C1 bus
|
15 | ROWS = 2
|
16 | COLS = 16
|
17 | lcd_address = 0x27
|
18 | i2c1 = I2C(1, sda=Pin(2), scl=Pin(3), freq=100000) # lcd
|
19 | lcd = I2cLcd(i2c1, lcd_address, ROWS, COLS)
|
20 |
|
21 | # Define I2C0 bus using SoftI2C
|
22 | i2c0 = SoftI2C(sda=Pin(0), scl=Pin(1), freq=100000)
|
23 |
|
24 | # Define sensor addresses
|
25 | sensor_v_address = 0x48
|
26 | sensor_r_address = 0x4f
|
27 |
|
28 | #Blank screen
|
29 | lcd.clear()
|
30 |
|
31 | def read_temp(sensor_address):
|
32 | time.sleep_ms(500)
|
33 | data = i2c0.readfrom(sensor_address, 2)
|
34 | t = (data[0] << 3 | data[1] >> 5) * 0.125
|
35 | return t
|
36 |
|
37 | while True:
|
38 | try:
|
39 | lcd.clear()
|
40 | lcd.move_to(0,0)
|
41 | string_out = "RPi Pico W"
|
42 | lcd.putstr(string_out)
|
43 | lcd.move_to(0,1)
|
44 | t_v = read_temp(sensor_v_address)
|
45 | t_r = read_temp(sensor_r_address)
|
46 | tempc = "V: {0:3.1f} / R: {0:3.1f}".format(t_v,t_r)
|
47 | # tempc = "V: {0:3.1f} ".format(t_v)
|
48 | print(tempc)
|
49 | lcd.putstr(tempc)
|
50 | time.sleep(5)
|
51 |
|
52 | except KeyboardInterrupt:
|
53 | lcd.clear()
|
54 | machine.reset()
|
Das Programm läuft und offenbar werden beide Sensoren auch einmal
abgefragt, obwohl es eigentlich nicht sein kann, dass beide Sensoren
einen identischen Wert anzeigen. Einer ist am Heizungsvorlauf, der
andere ist am Heizungsrücklauf.
Jeder Sensor für sich alleine läuft super stundenlang ohne Probleme,
beide zusammen führen zum Fehler: OSError: [errno 19] ENODEV
Wieso erkennt das Problem den 2. Sensor nicht?
Hat irgend jemand eine Idee?
Vielen Dank für die Unterstützung.
Viele Grüße,
Rainer