Strana 1 z 1

Raspberry PI3 a DS18B20 1Wire

Napísané: 09 Aug 2022, 18:47
od používateľa mmarekk
Zdravim pani, mam postaveny teplomer na RPI3 a senzor DS18B20, soft je Buster s pythonovy script je pre verziu 3.
stava sa mi ale ze vypise IndexError: list index out of range.
Hladam som par dni na forach riesenie, ale zrejme nikomu to poriadne funguje. Postavil som to na druhom RPI s druhym senzorom a to iste. Vypise to nahodne - po 20minutach, hodine, max to funguje 2 dni.
Skusil som 3,3V aj 5V. Odpor mam 4k7. PIN4 defaulny som zmenil na iny.

Predym som mal soft Jessie a python 2 a islo mi to 2 roky v kuse OK.

Ma dakto skusenost?

Dakujem,

Re: Raspberry PI3 a DS18B20 1Wire

Napísané: 18 Aug 2022, 23:59
od používateľa zen
Python ti povie riadok, kde je problem. Vytiskni tu list nez ju zacnes zpracovavat.

Re: Raspberry PI3 a DS18B20 1Wire

Napísané: 19 Aug 2022, 17:41
od používateľa mmarekk
Traceback (most recent call last):
File "/home/pi/Desktop/matrixled.py", line 68, in <module>
loop(serialNum)
File "/home/pi/Desktop/matrixled.py", line 51, in loop
if read(ds18b20) != None:
File "/home/pi/Desktop/matrixled.py", line 39, in read
secondline = text1.split("\n")[1]
IndexError: list index out of range

Re: Raspberry PI3 a DS18B20 1Wire

Napísané: 23 Aug 2022, 14:53
od používateľa zen
text1.split() ti vrati type list

elementy list su cislovane od [0], cili secondline bude DRUHY element tej list

akoze splitujes "\n", obavam sa, ze dlzka tej list bude 1 a DRUHY element neexistuje

zkus:

Kód: Vybrať všetko

print(len(text1))
econdline = text1.split("\n")[1]
Som si celkom isty, ze ti natiskne 1.

Re: Raspberry PI3 a DS18B20 1Wire

Napísané: 23 Aug 2022, 18:57
od používateľa mmarekk
toto je program (z internetu) ktory sa mi obcas zasekava a spadne :

def sensor():
for i in os.listdir('/sys/bus/w1/devices'):
if i != 'w1_bus_master1':
ds18b20 = i
return ds18b20

def read(ds18b20):
location = '/sys/bus/w1/devices/' + ds18b20 + '/w1_slave'
tfile = open(location)
text1 = tfile.read()
#time.sleep(1)
tfile.close()
secondline = text1.split("\n")[1]
#time.sleep(1)
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
celsius = temperature / 1000
return celsius

def loop(ds18b20):

while True:
if read(ds18b20) != None:
s1 = str(read(ds18b20))
s2 = "{:.4}".format(s1)
with canvas(virtual) as draw:
text(draw, (0, 1), s2 , fill="white", font=proportional(TINY_FONT))
GPIO.output(18,True)
time.sleep(0.5)
GPIO.output(18,False)
time.sleep(10.0)
main()

def kill():
quit()

if __name__ == '__main__':

try:
serialNum = sensor()
loop(serialNum)
time.sleep(1)

except KeyboardInterrupt:
kill()



zrejme obcas cidlo posle nespravny udaj a preto to spadne, ale na pythone 2 a OS Jessie z 2017 mi to islo OK. aj ked program je podobny ale nie ten isty

Re: Raspberry PI3 a DS18B20 1Wire

Napísané: 23 Aug 2022, 20:35
od používateľa Atlan
Vzdialenost senzora od pocitaca? Aky kabel je pouzity? Senzor kupovany kde?

Re: Raspberry PI3 a DS18B20 1Wire

Napísané: 24 Aug 2022, 15:57
od používateľa romiadam
Len pre info, ja mam DS18B20 kupovany u oficialneho predajcu a mam ho zaveseny na kabli co sa pouzivaju pre snimace v priemysle s konektorom M8 (indukcnesnimace). Su tam tri vodice hnedy modry a cierny. Neviem ci je to skrutene. Ten kabel ma asi 6 metrov. Na dboch metroch to ide vedla kablov pre zasuvky a svetlav dome. DS napajam 5V cez Modry (gnd) a hnedy (+5V) Nepouzivam napajanie z datoveho vodica -"parazitne napajanie", ak sa to tak vola. Program som si pisal sam, casovanie 1-wire protokolu som dodrzal podla datasheetu. Uz mi to takto bezi asi 10 rokov. Mam to ako regulator kurenia v dome (termostat).

Re: Raspberry PI3 a DS18B20 1Wire

Napísané: 24 Aug 2022, 18:58
od používateľa mmarekk
Atlan napísal:
23 Aug 2022, 20:35
Vzdialenost senzora od pocitaca? Aky kabel je pouzity? Senzor kupovany kde?
asi 1m, oreginal DS18B20 s kablom, z Aliexpress, dal som tam aj v puzdre TO92, kratky kablik...

toto mam cele 2x, aj RPI aj senzory a na oboch to robi....,
ale vyriesil som to uz tak ze ked spadne tak sa restaruje program a bezi znova takze je to OK.

Re: Raspberry PI3 a DS18B20 1Wire

Napísané: 24 Aug 2022, 19:17
od používateľa pocitujlasku
tak bud neodladeny program, alebo cinske snimace.
Problem moze byt aj kratky cas medzi meranim a citanim udajov. pri max. rozliseni to je cca 750ms, ked vezmem do uvahy toleranciu cinskych, tak by to nemusel stihnut do sekundy.

Re: Raspberry PI3 a DS18B20 1Wire

Napísané: 24 Aug 2022, 19:19
od používateľa mmarekk
a ako a kde to spomalim?