- วัสดุที่จำเป็น
- รู้เบื้องต้นเกี่ยวกับเซ็นเซอร์อุณหภูมิ DS18B20
- ข้อกำหนดเบื้องต้น
- แผนภูมิวงจรรวม
- การติดตั้งไลบรารี Adafruit LCD บน Raspberry P.
- การเปิดใช้งาน One-Wire Interface ใน Pi
- เอาต์พุต / การทำงาน
Raspberry Pi เป็นที่รู้จักในด้านพลังการคำนวณและการใช้งานที่กว้างขวางในด้าน IoT, Home Automation เป็นต้นอย่างไรก็ตามสำหรับระบบอิเล็กทรอนิกส์ใด ๆ ที่จะโต้ตอบกับโลกแห่งความเป็นจริงและรับข้อมูลเกี่ยวกับเรื่องนี้ระบบจะต้องใช้เซ็นเซอร์ มีเซ็นเซอร์หลายประเภทที่ใช้สำหรับกระบวนการนี้และเซ็นเซอร์ที่ต้องการจะถูกเลือกตามพารามิเตอร์ที่จะวัดและการใช้งาน ในการกวดวิชานี้เราเรียนรู้ที่จะอินเตอร์เฟซ DS18B20 เซ็นเซอร์อุณหภูมิกับราสเบอร์รี่ Pi
DS18B20ใช้กันอย่างแพร่หลายเซ็นเซอร์อุณหภูมิส่วนใหญ่ที่สถานที่ที่สภาพแวดล้อมการทำงานที่รุนแรงมีส่วนร่วมเช่นอุตสาหกรรมเคมีพืชเหมือง ฯลฯ บทความนี้จะบอกเกี่ยวกับการเซ็นเซอร์และวิธีที่จะ outstands เซ็นเซอร์อุณหภูมิอื่น ๆ และในที่สุดก็ติดต่อกับราสเบอร์รี่ Pi และดูอุณหภูมิ ค่าบนจอ LCD 16x2
วัสดุที่จำเป็น
- DS18B20 เซ็นเซอร์อุณหภูมิ
- ราสเบอร์รี่ Pi
- จอ LCD 16 * 2
- หม้อตัด 10k
- 10k ดึงตัวต้านทาน
- เขียงหั่นขนม
- การเชื่อมต่อสายไฟ
รู้เบื้องต้นเกี่ยวกับเซ็นเซอร์อุณหภูมิ DS18B20
DS18B20 เป็นเซ็นเซอร์อุณหภูมิเทอร์มินัลสามตัวที่มีอยู่ในแพ็คเกจ TO-92 (ประเภททรานซิสเตอร์) ใช้งานง่ายมากและต้องใช้ส่วนประกอบภายนอกเพียงชิ้นเดียวเพื่อเริ่มทำงาน นอกจากนี้ยังต้องใช้พิน GPIO เดียวจาก MCU / MPU ในการสื่อสารด้วย เซ็นเซอร์อุณหภูมิ DS18B20 ทั่วไปที่มีชื่อพินแสดงอยู่ด้านล่าง
เซ็นเซอร์นี้ยังมีจำหน่ายในรูปแบบกันน้ำซึ่งเซ็นเซอร์ถูกหุ้มด้วยท่อโลหะทรงกระบอก ในบทช่วยสอนนี้เราจะใช้เซ็นเซอร์ประเภททรานซิสเตอร์ปกติที่แสดงด้านบน DS18B20 เป็น 1 สายเซ็นเซอร์อุณหภูมิโปรแกรมได้หมายความว่ามันต้องมีเพียงขาข้อมูลที่จะส่งข้อมูลไปยังไมโครคอนโทรลเลอร์หรือไมโครโปรเซสเซอร์บอร์ดเช่นราสเบอร์รี่ Pi เซ็นเซอร์แต่ละตัวมีที่อยู่ 64 บิตที่ไม่ซ้ำกันดังนั้นจึงเป็นไปได้ที่จะมีเซ็นเซอร์หลายตัวเชื่อมต่อกับ MCU / MPU เดียวกันเนื่องจากเซ็นเซอร์แต่ละตัวสามารถระบุทีละรายการบนบัสข้อมูลเดียวกันได้ ข้อมูลจำเพาะของเซ็นเซอร์แสดงอยู่ด้านล่าง
- แรงดันไฟฟ้า: 3-5V
- ช่วงการวัด: -55 ° C ถึง + 125 ° C
- ความถูกต้อง: ± 0.5 ° C
- ความละเอียด: 9 บิตถึง 12 บิต
ตอนนี้เรารู้เซ็นเซอร์เพียงพอแล้วให้เราแสดงสถิติที่เชื่อมต่อกับ Raspberry Pi
ข้อกำหนดเบื้องต้น
สันนิษฐานว่า Raspberry Pi ของคุณมีแฟลชระบบปฏิบัติการอยู่แล้วและสามารถเชื่อมต่ออินเทอร์เน็ตได้ หากไม่เป็นเช่นนั้นให้ทำตามบทแนะนำการเริ่มต้นใช้งาน Raspberry Pi ก่อนดำเนินการต่อ ที่นี่เราจะใช้ Rasbian เจสซีติดตั้ง Raspberry Pi 3
นอกจากนี้ยังสันนิษฐานว่าคุณสามารถเข้าถึง pi ของคุณผ่านทางหน้าต่างเทอร์มินัลหรือผ่านแอพพลิเคชั่นอื่น ๆ ซึ่งคุณสามารถเขียนและรันโปรแกรม python และใช้หน้าต่างเทอร์มินัลได้
แผนภูมิวงจรรวม
ดังที่เราได้บอกไว้ก่อนหน้านี้ในบทช่วยสอนนี้เราจะเชื่อมต่อเซ็นเซอร์ DS18B20 กับ Piและแสดงค่าของอุณหภูมิบนหน้าจอ LCD ขนาด 16 * 2 ดังนั้นเซ็นเซอร์และ LCD ควรเชื่อมต่อกับ Raspberry Pi ตามที่แสดงด้านล่าง
ทำตามแผนภาพวงจรและทำการเชื่อมต่อตามนั้น ทั้ง LCD และเซ็นเซอร์DS18B20ทำงานด้วยความช่วยเหลือของ + 5V ซึ่งมาจากขา 5V บน Raspberry pi จอแอลซีดีที่จะทำให้การทำงานในโหมด 4 บิตกับราสเบอร์รี่ปี่หมุด GPIO 18,23,24 และ 25 จะใช้สำหรับสายข้อมูลและหมุด GPIO 7 และ 8 จะใช้สำหรับสายควบคุม มิเตอร์ยังถูกนำมาใช้ในการควบคุมระดับความคมชัดของจอแอลซีดี สายข้อมูลของ DS18B20 เชื่อมต่อกับขา GPIO 4 และโปรดทราบว่าต้องใช้ตัวต้านทาน 10K จึงดึงข้อมูลให้สูงที่สุดตามที่แสดงในแผนภาพวงจร
คุณสามารถทำตามแผนภาพวงจรด้านบนและทำการเชื่อมต่อหรือใช้ตารางพินเพื่อติดตามหมายเลขพิน GPIO
ฉันได้สร้างวงจรบนเขียงหั่นขนมโดยใช้สายเกลียวเดี่ยวและสายชายกับหญิงเพื่อทำการเชื่อมต่อ อย่างที่คุณเห็นเซ็นเซอร์ต้องใช้สายไฟเพียงเส้นเดียวในการเชื่อมต่อจึงใช้พื้นที่และหมุดน้อยลง ฮาร์ดแวร์ของฉันมีลักษณะดังนี้ด้านล่างเมื่อทำการเชื่อมต่อทั้งหมด ตอนนี้ถึงเวลาเปิดเครื่อง pi และเริ่มการเขียนโปรแกรม
การติดตั้งไลบรารี Adafruit LCD บน Raspberry P.
ค่าของอุณหภูมิจะแสดงบนจอ LCD 16 * 2 Adafruit มีไลบรารีให้เราใช้งาน LCD นี้ในโหมด 4 บิตได้อย่างง่ายดายดังนั้นให้เราเพิ่มลงใน Raspberry Pi ของเราโดยเปิดหน้าต่างเทอร์มินัล Pi และทำตามขั้นตอนด้านล่าง
ขั้นตอนที่ 1: ติดตั้งคอมไพล์บน Raspberry Pi ของคุณโดยใช้บรรทัดด้านล่าง Git ช่วยให้คุณสามารถโคลนไฟล์โครงการใด ๆ บน Github และใช้กับ Raspberry pi ของคุณ ห้องสมุดของเราอยู่ใน Github ดังนั้นเราจึงต้องติดตั้ง git เพื่อดาวน์โหลดไลบรารีนั้นลงใน pi
apt-get install git
ขั้นตอนที่ 2: บรรทัดต่อไปนี้เชื่อมโยงไปยังเพจ GitHub ที่มีไลบรารีอยู่เพียงแค่รันบรรทัดเพื่อโคลนไฟล์โปรเจ็กต์บนโฮมไดเร็กทอรี Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
ขั้นตอนที่ 3: ใช้คำสั่งด้านล่างเพื่อเปลี่ยนไดเร็กทอรีบรรทัดเพื่อเข้าสู่ไฟล์โปรเจ็กต์ที่เราเพิ่งดาวน์โหลด บรรทัดคำสั่งได้รับด้านล่าง
ซีดี Adafruit_Python_CharLCD
ขั้นตอนที่ 4: ภายในไดเร็กทอรีจะมีไฟล์ชื่อ setup.py เราต้องติดตั้งเพื่อติดตั้งไลบรารี ใช้รหัสต่อไปนี้เพื่อติดตั้งไลบรารี
sudo python setup.py ติดตั้ง
นั่นคือ ไลบรารีควรได้รับการติดตั้งสำเร็จแล้ว ในทำนองเดียวกันให้ดำเนินการติดตั้งไลบรารี DHT ซึ่งมาจาก Adafruit
การเปิดใช้งาน One-Wire Interface ใน Pi
เนื่องจากเซ็นเซอร์ DS18B20 สื่อสารผ่านวิธี One-Wire เราจึงต้องเปิดใช้งานการสื่อสารด้วยสายเดียวบน Pi โดยทำตามขั้นตอนด้านล่าง
ขั้นตอนที่ 1: -เปิดพรอมต์คำสั่งและใช้คำสั่งด้านล่างเพื่อเปิดไฟล์กำหนดค่า
sudo nano /boot/config.txt
ขั้นตอนที่ 2: -ภายในไฟล์ config ให้ เพิ่มบรรทัด“ dtoverlay = w1-gpio ” (ล้อมรอบในภาพด้านล่าง) และบันทึกไฟล์ดังที่แสดงด้านล่าง
ขั้นตอนที่ 3: -ใช้ Ctrl + X เพื่อออกจากไฟล์และบันทึกโดยกด“ Y” แล้วกดปุ่ม Enter ในที่สุดรีสตาร์ท Piโดยใช้คำสั่ง
sudoรีบูต
ขั้นตอนที่ 4: -เมื่อรีบูตแล้วให้เปิดเทอร์มินัลอีกครั้งและป้อนคำสั่งต่อไปนี้
sudo modprobe w1– gpio sudo modprobe w1-therm cd / sys / บัส / w1 / อุปกรณ์ls
หน้าต่างเทอร์มินัลของคุณจะแสดงสิ่งนี้
ขั้นตอนที่ 5: -ในตอนท้ายของขั้นตอนที่ 4 เมื่อคุณป้อน ls ค่า pi ของคุณจะแสดงหมายเลขเฉพาะหมายเลขนี้จะแตกต่างกันไปสำหรับผู้ใช้แต่ละคนโดยขึ้นอยู่กับเซ็นเซอร์ แต่จะเริ่มต้นด้วย 28- เสมอ ในกรณีของฉันจำนวน28-03172337caff
ขั้นตอนที่ 6: -ตอนนี้เราสามารถตรวจสอบว่าเซ็นเซอร์ทำงานหรือไม่โดยป้อนคำสั่งต่อไปนี้
cd 28-XXXXXXXXXXXX.find ('t =') # ค้นหา "t =" ในบรรทัด ถ้า trimmed_data! = -1: temp_string = lines #trim strig เฉพาะค่าtemp_c = float (temp_string) / 1000.0 # หารค่า 1000 เพื่อรับค่าที่แท้จริงกลับ temp_c # คืนค่าเพื่อพิมพ์บน LCD
เส้น ตัวแปรใช้เพื่ออ่านบรรทัดภายในไฟล์ แล้วเส้นเหล่านี้จะถูกเปรียบเทียบค้นหาตัวอักษร“t =” และความคุ้มค่าหลังจากที่ตัวอักษรที่ถูกบันทึกไว้ในตัวแปรtemp_string ในที่สุดเพื่อให้ได้ค่าของอุณหภูมิเราใช้ตัวแปร temp_c ซึ่งเราหารค่าสตริงด้วย 1,000 ในท้ายที่สุดจะส่งคืนตัวแปร temp_c อันเป็นผลลัพธ์ของฟังก์ชัน
ภายในอนันต์ ขณะที่ ห่วงเรามีเพียงการเรียกฟังก์ชั่นข้างต้นกำหนดให้ได้รับค่าของอุณหภูมิและแสดงในหน้าจอ LCD นอกจากนี้เรายังล้าง LCD ทุกๆ 1 วินาทีเพื่อแสดงค่าที่อัปเดต
ในขณะที่ 1: #Infinite Loop lcd.clear () # ล้างหน้าจอ LCD LCD .message ('Temp =%.1f C'% get_temp ()) # แสดงค่าของอุณหภูมิเวลานอนหลับ (1) # รอ 1 วินาที จากนั้นอัปเดตค่า
เอาต์พุต / การทำงาน
เช่นเคยรหัส python ที่สมบูรณ์จะได้รับที่ท้ายหน้าให้ใช้รหัสและรวบรวมไว้ใน Raspberry Pi ของคุณ ทำการเชื่อมต่อดังที่แสดงในแผนภาพวงจรและก่อนดำเนินการโปรแกรมตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนข้างต้นเพื่อติดตั้งไฟล์ส่วนหัวของ LCD และเปิดใช้งานการสื่อสารแบบสายเดียวบน pi เมื่อเสร็จแล้วให้รันโปรแกรมหากทุกอย่างทำงานตามที่คาดไว้คุณจะสังเกตเห็นข้อความแนะนำได้ หากไม่ปรับโพเทนชิออมิเตอร์ความคมชัดจนกว่าคุณจะเห็นบางสิ่ง ผลลัพธ์สุดท้ายจะมีลักษณะดังนี้ด้านล่าง
หวังว่าคุณจะเข้าใจโครงการและไม่มีปัญหาในการสร้าง หากระบุปัญหาของคุณเป็นอย่างอื่นในส่วนความคิดเห็นหรือใช้ฟอรัมเพื่อขอความช่วยเหลือด้านเทคนิคเพิ่มเติม นี่เป็นเพียงโครงการเชื่อมต่อ แต่เมื่อเสร็จแล้วคุณสามารถคิดล่วงหน้าได้ด้วยการทำงานกับสถานีตรวจอากาศ Raspberry Pi ตัวแจ้งอุณหภูมิอีเมลและอื่น ๆ อีกมากมาย
การทำงานที่สมบูรณ์ของโครงการยังแสดงอยู่ในวิดีโอด้านล่างซึ่งคุณสามารถดูค่าของอุณหภูมิที่อัปเดตแบบเรียลไทม์