Raspberry Pi 3 [Temperature & Humidity Sensor]

สวัสดีและขออภัยที่ห่างหายไป เนื่องจากติดภารกิจทั้งงานราษฏร์และงานหลวงครับ

 

ครั้งนี้จะเป็นการเริ่มต่อเซนเซอร์ภายนอก เซนเซอร์พื้นฐานที่มีในปัจจุบันก็จะเป็นเซนเซอร์เกี่ยวกับสภาพแวดล้อม ไม่ว่าจะเป็น เซนเซอร์อุณหภูมิ, เซนเซอร์ความชื้นในอากาศ, เซนเซอร์ความชื้นในดิน, เซนเซอร์น้ำ (ทำงานเมื่อมีน้ำมาสัมผัสเซนเซอร์ – ใช้ตรวจเช็คฝนตก), เซนเซอร์แสง (สวิตซ์), เซนเซอร์ความเข้มแสง, เซนเซอร์วัด pH, เซนเซอร์ UV, เซนเซอร์วัดฝุ่นละอองในอากาศ, เซนเซอร์วัดความชื้นในดิน, เซนเซอร์วัดแรงสั่นสะเทือน และเซนเซอร์อื่นๆ อีกมากมาย ซึ่งหลักการทำงานนั้นส่วนใหญ่จะเหมือนกันหมด คือการอ่านค่ามาจากเซนเซอร์ และนำค่านั้นมาแปรผลที่เราสามารถอ่านได้ง่าย

 

บทความนี้จะเริ่มด้วยเซนเซอร์ที่ Basic ที่สุด เพื่อให้ทุกท่านพอจะได้เห็นหลักการทำงานและเป็นแนวทางในการเชื่อมต่อเซนเซอร์อ่นๆ ต่อไปครับ นั่นคือ เซนเซอร์วัดอุณหภูมิและความชื้น AM2302 (DHT22) นั่นเอง

โดยจะมี Pinout ดังนี้ (จากซ้ายบน คือขาที่ 1)
ขาที่ 1 คือ VCC รองรับ 3.6-6V
ขาที่ 2 คือ Data
ขาที่ 3 คือ NC (Normal Close)
ขาที่ 4 คือ GND

เราจะต้องทำการต่อ R (Resistor) ด้วย 4.7KOhm ระหว่างขา Data และ VCC ไว้เพื่อป้องกันการรับ/ส่ง ข้อมูลผิดพลาด

ดังรูปนี้

ซึ่งถ้าเกิดเราเอามาต่อกันภายนอก จะทำให้เกิดความไม่สวยงามแยะยุ่งยาก จึงขอแนะนำเป็นอุปกรณ์ที่ Built-In R ลงในบอร์ดเลย ดังตามที่กำลังจะนำเสนอให้ดูนี้

จากนั้นเราทำการต่อสาย ซึ่งผมใช้ Jump Wire ตัวเมียทั้งสองฝั่ง เพื่อสะดวกในการต่อเข้ากับ GPIO ของ Raspberry Pi และเพื่ออนาคตสามารถปรับเปลี่ยนได้ง่าย

** เนื่องจากมีแค่ 3 เส้น จึงไม่ได้เน้นว่ามีแดงต้องเป็น +5V, สีดำต้องเป็น GND แค่เสียบให้ถูกทั้งต้นและปลาย ก็พอแล้วครับ **

 

จากนั้นทำการเสียบเข้าบอร์ด โดยดูจาก Diagram และผมเลือกต่อเข้าช่อง GPIO 4 (ขาที่ 7 – สายสีแดง ในรูป)

ทำการประกอบลง Enclosure (ไม่จำเป็น) เพื่อความเป็นระเบียบเรียบร้อยเท่าที่จะทำได้ จากนั้นทำการต่อสายและ Boot เครื่องครับ

 

จากนั้นมาในส่วนของโปรแกรมกันครับ

เริ่มทำการเขียน Python อย่างง่าย เพื่อที่จะดึงค่าอุณหภูมิและความชื้นมาแสดงบนหน้าจอ ดังนี้ครับ

 

ทำการอัพเดทระบบด้วยคำสั่ง sudo apt-get update -y

 

จากนั้นติดตั้ง dependency ที่ต้องใช้ด้วยคำสั่ง sudo aptget install y buildessential pythondev git

(ถ้าใครติดตั้งมาก่อนในบทความก่อนหน้านี้ ก็ผ่านไปได้เลยครับ)

จากนั้นทำการติดตั้ง Library จาก Adafruit (เพื่อที่เราจะได้ไม่ต้องเขียน GPIO Connection เอง ซึ่งยุ่งยาก) ด้วยคำสั่งต่อไปนี้ครับ

mkdir p /home/pi/sources
cd /home/pi/sources
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install

      

รอจนเสร็จเรียบร้อย

 

จากนั้นทดลองเรียกค่าจากเซนเซอร์ด้วยคำสั่ง

sudo /home/pi/sources/Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 4

โดย 2302 คือ ชนิดของเซนเซอร์และ 4 คือ GPIO ID (ดูจาก Pinout ของ Raspberry Pi และไม่ใช่เลขขานะครับ)
ก็จะได้ค่ามาดังรูป

ตามตัวอย่างด้านบนนี้ เป็นการใช้ Python Example ที่มีมากับ Library ที่เรา Clone มา
อันที่จริงแล้วเราสามารถเขียน Python ให้สามารถเรียกค่าได้โดยง่ายเพียงไม่กี่บันทัด โดยผ่าน Python ดังนี้

  1. เข้า python interactive mode ด้วยคำสั่ง sudo python
  2. พิมพ์คำสั่งข้างล่างนี้ (ขึ้นบันทัดใหม่ด้วย Enter)

import Adafruit_DHT
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.AM2302, 4)

3. จากนั้นลองพิมพ์ temperature จะได้ค่าอุณหภูมิออกมา

4. ลองพิมพ์ humidity จะได้ค่าความชื้นออกมา

5. ออจาก python interactive mode ด้วยการกด Ctrl+D

 

จะเป็นว่าการดึงค่ามาจากเซนเซอร์นั้น ไม่ได้ยากแต่อย่างใดเลย ครั้งหน้า จะเป็นการเก็บค่าอุณหภูมิและความชื้น นำไปแสดงบน Web Interface เป็นกราฟ เพื่อให้สามารถดูค่าและนำไปวิเคราะห์ได้ง่ายขึ้น ได้โปรดรอติดตามครับ

 

ผิดพลาดประการใด ขออภัยมา ณ โอกาสนี้ครับ