Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Tämä yksinkertainen dataloggeri ottaa säännöllisiä valomittauksia analogisella LDR: llä (Photoresistor) ja tallentaa ne Raspberry Pi -laitteesi tekstitiedostoon. Tämä dataloggeri mittaa ja tallentaa valon tason 60 sekunnin välein, jolloin voit seurata, kuinka kirkkaus muuttuu pitkän ajan kuluessa.
Jos haluamme käyttää analogisia antureita Raspberry Pi: n kanssa, meidän on kyettävä mittaamaan anturin vastus. Toisin kuin Arduino, Raspberry Pi: n GPIO -nastat eivät pysty mittaamaan vastusta ja voivat havaita vain, jos niille syötetty jännite on tietyn jännitteen yläpuolella (noin 2 volttia). Voit ratkaista tämän ongelman käyttämällä analogista digitaalimuunninta (ADC) tai sen sijaan suhteellisen halpaa kondensaattoria.
Vaihe 1: Mitä tarvitset
- RaspberryPi, johon on jo asennettu Raspbian. Sinun on myös voitava käyttää Pi: tä näytön, hiiren ja näppäimistön avulla tai etätyöpöydän kautta. Voit käyttää mitä tahansa Raspberry Pi -mallia. Jos sinulla on jokin Pi Zero -malleista, saatat haluta juottaa joitakin otsikkotappeja GPIO -porttiin.
- Valosta riippuvainen vastus (tunnetaan myös nimellä LDR tai valoresistori)
- 1 uF keraaminen kondensaattori
- Solderless Prototyping Breadboard
- Jotkut uros -naarasliitännät
Vaihe 2: Rakenna piiri
Rakenna yllä oleva piiri leipälevyllesi varmistaen, että mikään komponenttijohdoista ei kosketa. Valosta riippuvalla vastuksella ja keraamisella kondensaattorilla ei ole napaisuutta, mikä tarkoittaa, että negatiivinen ja positiivinen virta voidaan kytkeä kumpaankin johtimeen. Siksi sinun ei tarvitse huolehtia siitä, millä tavalla nämä komponentit on kytketty piiriin.
Kun olet tarkistanut piirisi, liitä hyppyjohdot varovasti Raspberry Pi: n GPIO -nastoihin yllä olevan kaavion mukaisesti.
Vaihe 3: Luo Python -skripti tietojen lukemiseen ja kirjaamiseen
Avaa IDLE Raspberry Pi -laitteessa (Valikko> Ohjelmointi> Python 2 (IDLE)) ja avaa uusi projekti (Tiedosto> Uusi tiedosto). Kirjoita sitten seuraava:
tuoda RPi. GPIO GPIO: ksi
tuonti aika tuonti päivämäärä loginterval = 60 #login aikaväli sekunneissa savefilename = "lightlevels.txt" SensorPin = 17 TriggerPin = 27
GPIO.setmode (GPIO. BCM)
cap = 0.000001 #1uf adj = 2.130620985
def mittaresistanssi (mpin, tpin):
GPIO.setup (mpin, GPIO. OUT) GPIO.setup (tpin, GPIO. OUT) GPIO.output (mpin, False) GPIO.output (tpin, False) time.sleep (0.2) GPIO.setup (mpin, GPIO). IN) time.sleep (0.2) GPIO. output (tpin, True) starttime = time.time () endtime = time.time () kun (GPIO.input (mpin) == GPIO. LOW): endtime = time.time () return endtime-starttime def writeline (txt, fn): f = open (fn, 'a') f.write (txt+'\ n') f.close () i = 0 t = 0 kun True: stime = time.time () a: lle alueella (1, 11): res = (mittaresistanssi (SensorPin, TriggerPin)/cap)*adj i = i+1 t = t+res, jos a == 10: t = t/i print (t) writeline (str (datetime.datetime.now ())+","+str (t), savefilename) i = 0 t = 0 kun stime+loginterval> time.time (): #odota, kunnes logtime on kulunut aika. uni (0,0001)
Tallenna projekti tiedostona kansioon datalogger.py (Tiedosto> Tallenna nimellä).
Avaa nyt Pääte (Valikko> Lisävarusteet> Pääte) ja kirjoita seuraava komento:
python datalogger.py
Skripti luo tekstitiedoston nimeltä "lightlevels.txt" ja päivittää sen 60 sekunnin välein. Voit muuttaa tämän tiedostonimen rivillä 6. Voit myös säätää dataloggerin päivitysten tiheyttä vaihtamalla riviä 5.