Professional Documents
Culture Documents
การศึกษา
การใช้งานเซนเซอร์ (Sensor)
ดร.วิวฒั น์ ทวีทรัพย์
การใช้งานเซนเซอร์ (Sensor)
• Outline
• ความรู้เบือ้ งต้นเกี่ยวกับเซนเซอร์
• โมดูลเซนเซอร์ตัวต้านทานเปลี่ยนค่าตามสภาพแวดล้อม
– แสง >> LDR
– อุณหภูม+ิ ความชื้น อากาศ >> DHT
– ความชื้น ดิน >> Soil moisture
– ระยะห่าง >> Ultrasonic
– ความเคลื่อนไหว >> PIR
ความรู้เบื้องต้นเกี่ยวกับเซนเซอร์
• เซนเซอร์ ทำหน้าที่เปรียบเสมือนประสาทรับสัมผัสแบ่งตามกลุ่ม
ของเอาต์พุต 4 แบบดังนี้
1. เซนเซอร์ประเภทแอนาล็อก จะให้เอาต์พุตออกมาเป็นแรงดัน
(Voltage) จะเปลี่ยนแปลงตามสภาพแวดล้อมที่ตรวจจับ เช่น LDR
, PIR, MQ2, Ultrasonic เป็นต้น
ความรู้เบื้องต้นเกี่ยวกับเซนเซอร์
2. เซนเซอร์เอาต์พุตแบบดิจิทัลไบนารีแ่ บบใช้หน้าสัมผัสเป็นกลไก
ในการตรวจจับ ในลักษณะวงจร Close คือ เมื่อหน้าสัมผัส
แตะกัน และ Open คือ หน้าสัมผัสไม่แตะกัน ดังนั้น การต่อวงจรเข้ากับ
ขาอินพุตดิจิทัล จะต้องต่อแบบใช้ Pull up Resistor หรือใช้คำสั่ง
INPUT_PULLUP (รายละเอียดในบทที่ 2) เช่น สวิตช์กด สวิตช์แม่เหล็ก
ลูกลอยวัดระดับของเหลว หรือเซนเซอร์อื่น ๆ ที่ใช้หน้าสัมผัสเป็นกลไก
ความรู้เบื้องต้นเกี่ยวกับเซนเซอร์
3. เซนเซอร์เอาต์พุตแบบดิจิตอลไบนารีด่ ้วยโมดูลอิเล็กทรอนิกส์
จำให้ค่า 0 หรือ 1 เท่านั้น เช่น เซนเซอร์อินฟราเรดตรวจการเข้าใกล้
วัตถุ เซนเซอร์วัดความชื้นในดิน เซนเซอร์วัดการสั่น เป็นต้น
เซนเซอร์ประเภทนี้ ไม่จำเป็นต้องใช้ Pull up resistor เนื่องจากมี
ส่วนควบคุมที่เป็นอิเล็กทรอนิกส์แล้ว
ความรู้เบื้องต้นเกี่ยวกับเซนเซอร์
3. เซนเซอร์ดิจิทัลที่มีค่าเอาต์พุตมากกว่าไบนารี่
เซนเซอร์ประเภทนี้จะให้ค่าเอาต์พุตที่เป็นชุดค่าดิจิตอล สามารถนำ
ชุดข้อมูลที่ได้มา ไปประมวลผลได้ เช่น เซนเซอร์วัดอุณหภูมิ DHT
โมดูลเซนเซอร์ตัวต้านทานเปลี่ยนค่าตาม
สภาพแวดล้อม
• การทำงานของเซนเซอร์ประเภทนี้ส่วนมากจะถูกผลิตมาพร้อมกับ
วงจรแบ่งแรงดันและเปรียบเทียบแรงดันไฟฟ้ามาด้วย เพื่อสะดวกใน
การใช้งาน
วงจรแบ่ง
แรงดัน เซนเซอร์
โมดูลเซนเซอร์ตัวต้านทานเปลี่ยนค่าตาม
สภาพแวดล้อม
• ตัวโมดูล (วงจรแบ่งแรงดัน) มี 2 แบบคือ
– โมดูลแบบเอาต์พุตดิจิทัล ประกอบด้วยวงจรแบ่งแรงดัน มีขาต่อ
3 ขา คือ ไฟเลี้ยง (VCC) กราวด์ (GND) และ เอาต์พุต D0
(Digital Out) ให้ค่าเอาต์พุตเป็นดิจิทัล เป็นค่า HI และ LOW
หรือ 1 และ 0 มีตัวต้านทานปรับค่าได้เพื่อปรับค่าความไว
(Sensitivity)
ค่าแรงดันระหว่างขาที่เปลี่ยนไป
เนื่องมาจากความชื้นในดิน
กล่าวคือ สถานะการนำไฟฟ้าเปลี่ยนไป
เมื่อมีความชื้น
VCC
GND
D0
โมดูลเซนเซอร์ตัวต้านทานเปลี่ยนค่าตาม
สภาพแวดล้อม
– โมดูลแบบเอาต์พุตดิจิทัล + แอนาล็อก จะคล้ายกับแบบแรกมีขา
เสียบที่เซนเซอร์ 2 ขาเช่นกัน แต่อีกฝั่งจะมีขาต่อ 4 ขา คือ VCC,
GND, D0 เหมือนกัน แต่เพิ่ม เอาต์พุตแอนาล็อก A0 (Analog
output) กล่าวคือสามารถให้สัญญาณเอาต์พุตได้ทั้ง ดิจิทัล และ
แอนาล็อก นั่นเอง
2 ขานี้รับค่าความ
ต้านทานที่เปลี่ยนไปในดิน
เนื่องมาจากความชื้น
VCC
GND
A0
D0
DHT11 : วัดค่าความชื้นและอุณหภูมิใน
อากาศ
เซนเซอร์ในตระกูลในขณะนี้มี 2 รุ่น ได้แก่ DHT11 และDHT22 ทั้ง
สองรุ่นเป็นเซนเซอร์แบบดิจิทัล ที่วัดได้ทั้ง อุณหภูมิ และความชึ้นใน
อากาศ แตกต่างกันที่ความแม่ยำ คือ
• DHT11 มีความแม่นยำของการวัดอุณหภูมิ + - 2 ℃
• DHT22 มีความแม่นยำของการวัดอุณหภูมิ + - 0.5 ℃
• ต้องการแหล่งจ่ายไฟ 3 – 5 Volt เหมือนกัน
DHT11 : วัดค่าความชื้นและอุณหภูมิใน
อากาศ
การติดตั้ง Library ของ DHT11
1. เมนู Sketch >> Include Library >> Manage Libraries
2. ค้นหาคำว่า dht และติดตั้งดังภาพ
DHT11 : วัดค่าความชื้นและอุณหภูมิใน
อากาศ
การติดตั้ง Library ของ Adafruit Sensor
1. ดาวน์โหลดจาก https://github.com/adafruit/Adafruit_Sensor
2. หลังจากเข้าเว็บไซต์แล้วเลือกดาวน์โหลดดังภาพ
DHT11 : วัดค่าความชื้นและอุณหภูมิใน
อากาศ
การติดตั้ง Library ของ Adafruit Sensor
3. หลังจากดาวน์โหลดไฟล์แล้วติดตั้งใน Arduino IDE โดยไปที่ เมนู
Sketch >> Include Library >> Add .ZIP Library เลือกไฟล์
และติดตั้งดังภาพ
Workshop 10 DHT11 : วัดค่าความชื้น
และอุณหภูมิในอากาศ
void setup() {
Serial.begin(115200); //กําหนดการเชื5อมต่อแบบซีเรี ยล
Serial.println("DHTxx test!");
dht.begin();
}
Workshop 10 DHT11
void loop() {
A0
GND
Vcc
Workshop 11 วัดความชื้นในดิน
const int lightPin = D1;//พินD0เป็ นเอาต์พตุ
const int inputPin = A0;//พินA0เป็ นอินพุต
int inputValue;
void setup() {
Serial.begin(115200);//เริ5 มซีเรี ยล
pinMode (lightPin, OUTPUT);//กําหนดเอาต์พตุ
}
void loop() {
inputValue = analogRead(inputPin);//อ่านค่าจากเซนเซอร์
Serial.println(inputValue);//แสดงผลค่าที5อ่าน
//เปรี ยบเทียบค่าเพื5อสัง5 พินเอาต์พตุ
if(inputValue > 800 ){
digitalWrite(lightPin, LOW);
}
else{digitalWrite(lightPin, HIGH);}
delay(200);
}
การวัดระยะด้วยเซ็นเซอร์ Ultrasonic
เซ็นเซอร์ Ultrasonic มีหลักการทำงาน คือ ส่งคลื่นความถี่สูง
(Ultrasonic) ที่หูมนุษย์ไม่สามารถได้ยิน กระทบกับวัตถุแล้วสะท้อน
กลับมายังเซ็นเซอร์เพื่อคำนวณระยะห่างจากเวลาในการเดินทางของ
คลื่นเสียงไป - กลับ
การวัดระยะด้วยเซ็นเซอร์ Ultrasonic
เซ็นเซอร์ Ultrasonic ที่จะใช้ในการทดลองคือรุ่น HC-SR04 วัด
ระยะได้ระหว่าง 4 – 400 cm
ประกอบด้วยขา 4 ขา คือ
• Vcc คือ ขาขั้วไฟเลี้ยง 3-5 volt
• Gnd คือ ขาขั้วลบ
• Trig คือ ขาส่งสัญญาณ
• Echo คือ ขารับสัญญาณสะท้อนกลับ
การวัดระยะด้วยเซ็นเซอร์ Ultrasonic
การติดตั้งไลบรารีส่ ำหรับ HC-SR04
1. เมนู Sketch >> Include Library >> Manage Libraries…
2. ค้นหา hcsr04 แล้วติดตั้งดังภาพ (เลือกของ Martin Sosic)
Workshop 12 การวัดระยะด้วยเซ็นเซอร์
Ultrasonic
Workshop 12 การวัดระยะด้วยเซ็นเซอร์
Ultrasonic
#include <HCSR04.h> //เรี ยกไลบรารี5
void setup () {
Serial.begin(115200);//เป็ ดการเชื5อมต่อ serial
}
void loop () {
double distance =
distanceSensor.measureDistanceCm(); //อ่านค่า
Serial.println(distance); //แสดงผล serial
delay(500); //หน่วงเวลา 0.5 วินาที
}
Workshop 12 การวัดระยะด้วยเซ็นเซอร์
Ultrasonic
การแสดงผลออกทางหน้าจอ LCD 16x2 โดยติดตั้งไลบรารี่ (หากยัง
ไม่ได้ติดตั้ง)ต่อวงจรเพิ่มดังภาพ
Gnd = Gnd
Vcc = Vcc
SCL = D1
SDA = D2
Workshop 12 การวัดระยะด้วยเซ็นเซอร์
Ultrasonic
เพิ่มโค้ดแต่ละส่วนดังนี้
ส่วนบนสุด
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
D7
D5
Workshop 13 PIR Sensor
const int ledPin = D5; void loop() {
const int pirPin = D7; //อ่านค่าจากเซนเซอร์
int pirState; pirState = digitalRead(pirPin);
void setup() { //แสดงผลทางSerial
pinMode(ledPin,OUTPUT); Serial.print("PIR State :");
pinMode(builinLed,OUTPUT); Serial.println(pirPin);
pinMode(pirPin,INPUT); //เช็คเงื5อนไข
Serial.begin(9600); if(pirState == HIGH){
} digitalWrite(ledPin,HIGH);
delay(200);
digitalWrite(ledPin,LOW);
Serial.println("Motion
Detected!!");
}
else{
digitalWrite(ledPin,LOW);
}
}
ติดตามดาวน์โหลดอัพเดทสไลด์ได้ที่
https://sites.google.com/view/wiwat-olr