สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
เครื่องบันทึกข้อมูลอย่างง่ายนี้ใช้การวัดแสงเป็นประจำด้วย LDR แบบอะนาล็อก (Photoresistor) และจัดเก็บไว้ในไฟล์ข้อความบน Raspberry Pi ของคุณ เครื่องบันทึกข้อมูลนี้จะวัดและบันทึกระดับแสงทุกๆ 60 วินาที ทำให้คุณสามารถติดตามดูว่าความสว่างเปลี่ยนแปลงไปอย่างไรในช่วงระยะเวลาหนึ่ง
หากเราต้องการใช้เซ็นเซอร์อะนาล็อกกับ Raspberry Pi เราจะต้องสามารถวัดความต้านทานของเซ็นเซอร์ได้ พิน GPIO ของ Raspberry Pi ต่างจาก Arduino ตรงที่ไม่สามารถวัดความต้านทานได้และสามารถรับรู้ได้ก็ต่อเมื่อแรงดันไฟฟ้าที่จ่ายไปนั้นสูงกว่าแรงดันไฟฟ้าที่แน่นอน (ประมาณ 2 โวลต์) เพื่อแก้ปัญหานี้ คุณสามารถใช้ Analogue to Digital Converter (ADC) หรือคุณสามารถใช้ตัวเก็บประจุที่มีราคาถูกแทน
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
- RaspberryPi ที่มี Raspbian ติดตั้งไว้แล้ว คุณจะต้องสามารถเข้าถึง Pi ได้โดยใช้จอภาพ เมาส์ และคีย์บอร์ด หรือผ่านทางเดสก์ท็อประยะไกล คุณสามารถใช้ Raspberry Pi ได้ทุกรุ่น หากคุณมีรุ่น Pi Zero คุณอาจต้องการบัดกรีหมุดส่วนหัวบางตัวเข้ากับพอร์ต GPIO
- ตัวต้านทานแบบพึ่งพาแสง (หรือที่เรียกว่า LDR หรือ Photoresistor)
- ตัวเก็บประจุแบบเซรามิก 1 ยูเอฟ
- เขียงหั่นขนมต้นแบบ Solderless
- สายจัมเปอร์ชายกับหญิง
ขั้นตอนที่ 2: สร้างวงจรของคุณ
สร้างวงจรด้านบนบนเขียงหั่นขนมของคุณเพื่อให้แน่ใจว่าไม่มีส่วนประกอบใดที่นำไปสู่สัมผัส ตัวต้านทานแบบพึ่งพาแสงและตัวเก็บประจุแบบเซรามิกไม่มีขั้ว ซึ่งหมายความว่าสามารถเชื่อมต่อกระแสลบและกระแสบวกกับตะกั่วทั้งสองได้ ดังนั้นคุณจึงไม่ต้องกังวลว่าจะเชื่อมต่อส่วนประกอบเหล่านี้อย่างไรในวงจรของคุณ
เมื่อคุณตรวจสอบวงจรแล้ว ให้เชื่อมต่อสายจัมเปอร์กับพิน GPIO ของ Raspberry Pi อย่างระมัดระวังโดยทำตามแผนภาพด้านบน
ขั้นตอนที่ 3: สร้างสคริปต์ Python เพื่ออ่านและบันทึกข้อมูลของคุณ
เปิด IDLE บน Raspberry Pi ของคุณ (เมนู > การเขียนโปรแกรม > Python 2 (IDLE)) และเปิดโครงการใหม่ (ไฟล์ > ไฟล์ใหม่) จากนั้นพิมพ์ดังต่อไปนี้:
นำเข้า RPi. GPIO เป็น GPIO
เวลานำเข้า นำเข้าวันที่เวลา loginterval=60 #log ช่วงเวลาในไม่กี่วินาที savefilename="lightlevels.txt" SensorPin=17 TriggerPin=27
GPIO.setmode(GPIO. BCM)
cap=0.000001 #1uf adj=2.130620985
def การวัดความต้านทาน (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() while (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 while True: stime= time.time() สำหรับ a ในช่วง (1, 11): res=(measureresistance(SensorPin, TriggerPin)/cap)*adj i=i+1 t=t+res if a==10: t=t/i print(t) writeline(str(datetime.datetime.now())+", "+str(t), savefilename) i=0 t=0 while stime+loginterval>time.time(): #รอจนกว่าเวลาบันทึกจะมี ผ่าน time.sleep(0.0001)
บันทึกโครงการของคุณเป็น datalogger.py (ไฟล์ > บันทึกเป็น) ในโฟลเดอร์เอกสารของคุณ
ตอนนี้เปิด Terminal (เมนู > อุปกรณ์เสริม > Terminal) แล้วพิมพ์คำสั่งต่อไปนี้:
หลาม datalogger.py
สคริปต์จะสร้างไฟล์ข้อความชื่อ "lightlevels.txt" และอัปเดตทุกๆ 60 วินาที คุณสามารถเปลี่ยนชื่อไฟล์นี้ในบรรทัดที่ 6 คุณยังสามารถปรับความถี่ที่ datalogger อัปเดตโดยเปลี่ยนบรรทัดที่ 5