Taisomas DS18b20

Jump to navigation Jump to search

Dėmesio: Jūs nesate prisijungęs. Jūsų IP adresas bus viešai matomas, jei atliksite kokius nors keitimus. Jeigu prisijungsite arba sukursite paskyrą, jūsų keitimai bus priskirti jūsų naudotojo vardui; drauge įgysite naujų galimybių.

Keitimas gali būti atšauktas. Prašome patikrinti palyginimą, esantį žemiau, kad patvirtintumėte, kad jūs tai ir norite padaryti, ir tada išsaugokite pakeitimus, esančius žemiau, kad užbaigtumėte keitimo atšaukimą.

Dabartinė versija Jūsų tekstas
112 eilutė: 112 eilutė:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Dingusių iš sistemos sensorių sutvarkymas ==
+
== Software tipo apejimas ==
 
 
Galbūt paskutinis workaroundas kurį galima būtų vadinti tikru problemos sprendimo būdu bet labai gerai, kai nėra jokios kitos alternatyvos. Dažnai nusipirkus nelegaliai pagamintų "piratinių" '''ds18b20''' sensorių, jie turi tokią problemą po kiek laiko tiesiog dingsta iš sistemos apie tai iš anksto nepranešę. :)
 
 
 
Norint juos matyti kaip ankščiau nepakanka "reboot", reikia išjungti maitinimą ir vėl jį ijungti, po kelių sekundžių bet automatizuotose sistemose, kai norime padaryti autonominį valdyma, toks variantas tikrai netinka ir reikia ieškoti kitų sprendimų. Vienas iš tokių sprendimų sensorių maitinimo laidą jungti tiesiogiai prie [[GPIO]] porto ir paduoti jam 3.3V maitinimą, sensoriams dingus tą maitinimą išjungti po to vėl įjungti. Taip galima bent preliminariai automatizuoti ir išspresti esamą problemą kai kito pasirinkimo nėra, kadangi daugelis [[GPIO]] portų gali atiduoti 3.3V maitinimą kurio pakanka šio tipo sensoriams... Taigi prieš automatizuojant šios problemos sprendimą įsitikiname, kad sensorius (ar keli sujungti į grandinę) yra sujungti į šiuos fizinius [[RaspberriPI]] pin'us (atkreipkite dėmesį į tai, kad fizinių ir GPIO tipo portų numeravimas yra skirtingas).
 
* pin13 vcc (raudonas laidas, įtampa) # GPIO PORT 27
 
* pin6 gnd (melynas laidas, groundas)
 
* pin11 data (geltonas laidas, duomenų perdavimas) # GPIO PORT 17
 
 
 
Pastarąjį pin13 mes ir naudosime elektrai paduoti ir išjungti, panaudojant žemiau esantį python scriptą, bet prieš tai įsitikinkite, kad jūsų '''/boot/config.txt''' sukonfigūruotas taip:
 
dtoverlay w1-gpio gpiopin=17 pullup=on
 
Ir '''/etc/modules''' turi šią eilutę:
 
w1-therm strong_pullup=2
 
<syntaxhighlight lang="python">
 
#!/usr/bin/python2.7
 
import RPi.GPIO as GPIO
 
import time
 
import os
 
 
 
pin = 27
 
 
 
 
 
if (os.path.isdir("/sys/bus/w1/devices/28-03049779621c") == False):
 
      GPIO.setwarnings(False)
 
      GPIO.setmode(GPIO.BCM)
 
      print "Recovering 1-Wire ..."
 
      GPIO.setup(pin, GPIO.OUT)
 
      print("Isjungiam srove i pin: "+str(pin))
 
      GPIO.output(pin, GPIO.LOW)
 
      time.sleep(15)
 
      print("Duodam srove i pin: "+str(pin))
 
      GPIO.output(pin, GPIO.HIGH)
 
</syntaxhighlight>
 
Turime tik pakeisti sensoriaus pavadinimą '''28-03049779621c''' į jūsų naudojamą (jeigu sensoriai yra keli, tuomet pasirinkite vieną iš jų pavadinimų, nes dažniausiai kai dingsta tai dingsta jie visi).  Įdėkite scriptą į '''/usr/local/bin/1wire_fix'''. Tuomet į '''/etc/crontab''' įdėkite šią eilutę, kad sensorių nebuvimo tikrinimas įvyktų kas minutę:
 
* * * * * root /usr/local/bin/1wire_fix > /dev/null 2>&1
 
Jeigu norime, kad informacija kada ir kaip buvo sutrikęs veikimas, rašytūsi į log, tuomet darome taip:
 
* * * * * root /usr/local/bin/1wire_fix >> /root/1wire_fix.log 2>&1
 
 
 
 
 
== Software tipo apejimas (userspace driver) ==
 
  
 
  cd
 
  cd

Primename, kad viskas, kas patenka į Žinynas, yra skelbiama pagal GNU Free Documentation License 1.2 (plačiau – Žinynas:Autorinės teisės). Jei nenorite, kad jūsų indėlis būtų be gailesčio kaitaliojamas ir platinamas, nerašykite čia.
Jūs taip pat pasižadate, kad tai jūsų pačių rašytas turinys arba kopijuotas iš viešų ar panašių nemokamų šaltinių. Nekopijuokite autorinėmis teisėmis apsaugotų darbų be leidimo!

Kad apsaugotume vikį nuo automatinio keitimų šlamšto, prašome išspręsti šį CAPTCHA:

Atšaukti Kaip redaguoti (atsidaro naujame lange)