Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Denna enkla datalogger tar regelbundna ljusmätningar med en analog LDR (fotoresistor) och lagrar dem i en textfil på din Raspberry Pi. Denna datalogger mäter och registrerar ljusnivån var 60: e sekund, så att du kan övervaka hur ljusstyrkan ändras under en längre tid.
Om vi vill använda analoga sensorer med Raspberry Pi, skulle vi behöva kunna mäta sensorns motstånd. Till skillnad från Arduino kan Raspberry Pi: s GPIO -stift inte mäta motstånd och kan bara känna om spänningen som levereras till dem är över en viss spänning (cirka 2 volt). För att lösa detta problem kan du använda en analog till digital omvandlare (ADC), eller så kan du använda en relativt billig kondensator istället.
Steg 1: Vad du behöver
- En RaspberryPi med Raspbian redan installerad. Du måste också kunna komma åt Pi med en bildskärm, mus och tangentbord eller via fjärrskrivbord. Du kan använda vilken modell som helst av Raspberry Pi. Om du har en av Pi Zero -modellerna kanske du vill löda några rubrikstift till GPIO -porten.
- En ljusberoende motstånd (även känd som en LDR eller fotoresistor)
- En 1 uF keramisk kondensator
- En lödlös prototypbrödbräda
- Några tröjor från man till kvinna
Steg 2: Bygg din krets
Bygg ovanstående krets på din brödbräda och se till att ingen av komponentledningarna rör vid varandra. Den ljusberoende motståndet och den keramiska kondensatorn har ingen polaritet, vilket innebär att en negativ och positiv ström kan anslutas till någon av ledningarna. Därför behöver du inte oroa dig för hur dessa komponenter har anslutits i din krets.
När du har kontrollerat din krets, anslut försiktigt bygelkablarna till din Raspberry Pi: s GPIO -stift genom att följa diagrammet ovan.
Steg 3: Skapa ett Python -skript för att läsa och logga dina data
Öppna IDLE på din Raspberry Pi (Meny> Programmering> Python 2 (IDLE)) och öppna ett nytt projekt (Arkiv> Ny fil). Skriv sedan följande:
importera RPi. GPIO som GPIO
importtid import datetime loginterval = 60 #loggintervall i sekunder savefilename = "lightlevels.txt" SensorPin = 17 TriggerPin = 27
GPIO.setmode (GPIO. BCM)
cap = 0.000001 #1uf adj = 2.130620985
def mätmotstånd (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) starttid = time.time () endtime = time.time () medan (GPIO.input (mpin) == GPIO. LOW): endtime = time.time () returnera sluttid-starttid def-skrivlinje (txt, fn): f = öppen (fn, 'a') f.write (txt+'\ n') f.close () i = 0 t = 0 medan True: stime = time.time () för ett intervall (1, 11): res = (mätmotstånd (SensorPin, TriggerPin)/cap)*adj i = i+1 t = t+res om a == 10: t = t/i print (t) skrivlinje (str (datetime.datetime.now ())+","+str (t), spara filnamn) i = 0 t = 0 medan stime+loginterval> time.time (): #vänta tills logtime har gått tid. sover (0,0001)
Spara ditt projekt som datalogger.py (Arkiv> Spara som) i mappen Dokument.
Öppna nu Terminal (Meny> Tillbehör> Terminal) och skriv följande kommando:
python datalogger.py
Skriptet skapar en textfil med namnet "lightlevels.txt" och uppdaterar den var 60: e sekund. Du kan ändra detta filnamn på rad 6. Du kan också justera hur ofta datalogger uppdateras genom att ändra rad 5.