BUI 2: THỰC HÀNH GIAO TIẾP CẢM BIẾN-VI ĐIỀU KHIỂN-CHP
HÀNH
I. (DHT) Cảm biến nhi , đ m t đ
1.1 Đnh Nghĩa
- Cảm biến đ m và nhit đ DHT11 là
cm biến rt thông dng và chi phí r và rt
d ly d liu thông qua giao tiếp 1 wire (dùng
1 chân digital đ truyn d u. Bộ n x lý li ti
tín hiu tích hợp trong cm biến có được d
liu chính xác mà không phi qua bt k tính
- Cảm biến DHT11 được tích hp trong
mt mch duy nht. Chỉ cn ni dây ngun
(VCC), dây đt (GND) và dây tín hiu (Data,
Signal) là xong.
1.2 Thông s kĩ thut ca DHT11:
- Đin áp ho ng: 3-5.5V DCt đ
- Ngưỡng đ 20 - 90%m:
- Sai s đ m: ± 5% RH
-
Ngưỡng nhit đ 0 - : 55
o
C
-
Sai s nhit đ: ± 2
o
C
Ngoài ra còn có cm biến nhi , âm dòng DHT21, DHT 22 giúp cho vit đ c sai
s khi đo đáng k hơn, phm vi đo cũng mrng thêm
1.3 t đ, đ m (DHT11) hin th lên màn hình LCD 16x2Thc Hành: Đo nhi
Chun b ph ng:n c
- Cảm biến nhi , đ m DHT11t đ
- Board Arduino Uno
- Bread Board
- Màn hình LCD 16x2 giao tiếp I2C
Sơ đ đu ni:
Arduino
LCD
5V
VCC
GND
GND
A4
SDA
A5
SCL
1.4 Code:
- Thư vin DHT11: DHT sensor library ca Adafruit, link tham kho code
hoc có th ti qua: https://github.com/adafruit/DHT-sensor-library
#include <LiquidCrystal_I2C.h> // Thư vin LCD
LiquidCrystal_I2C lcd(0x , , ;27 16 2) // Đt đa ch LCD mc đnh 0x27 có 16
ct 2 hàng
// Gi thư vin DHT11
#include "DHT.h"
const int DHTPIN = ;2 //Đc d liu t DHT11 chân 2 trên mch
Arduino
const int DHTTYPE = DHT11; //Khai báo loi cm biến, có 2 loi là
DHT11 và DHT22
DHT dht(DHTPIN, DHTTYPE ; )
Arduino
DHT11
5V
VCC
GND
GND
D2
Signal (Data)
void setup() {
. ; Serial begin(9600)
. ; dht begin() // Khởi đng cm biến
. ; lcd begin() // Khởi to LCD
. ; lcd backlight() // Bật đèn LCD
}
void loop() {
h = . ; float dht readHumidity() //Đc đ m
t = . ; float dht readTemperature() //Đc nhit đ
. , ; lcd setCursor(0 0) // Đt con tr hàng 1 ct 1
. ; lcd print("Do Am:") // In ra ch Đ m
. ; lcd print(h) // In ra giá tr Đ m
. , ; lcd setCursor(0 1) // Đt con tr hàng 2 ct 1
. ; lcd print("Nhiet Do:") // In ra ch Nhit đ
. t ; lcd print( ) // In ra giá tr Nhi đ
; delay(1000) //Đợi 1 giây
}
II. Cảm biến ánh Sáng
1.1 Đnh nghĩa:
- Cảm biến ánh sáng quang trthay đ n tr d ờng đ ánh sáng chiếu i đi a vào cư
vào, cm biến s dng Photoresistor (Quang đin trở) nên cho đ nhy cao, tín
hiu n đnh.
1.2 Nguyên lý hot đng
- Cảm biến ánh sáng quang trho ng theo nguyên lý: đin tr thay đt đ i khi có
ánh sáng chiếu vào (0 1023 tương t t 0 5V) quang trcó đin trđến vài
MΩ, khi có ánh sáng chiếu vào đin tr m xung mc mgi t vài trăm Ω.
1.3 Thc hành: Dùng cm biến ánh sáng b t đèn ledt t
Chun b ph ng:n c
- Cảm biến quang tr
- Board Arduino Uno
- Bread Board
- 1 Đèn led và 1 đin tr
1.4 Code:
int cambien = ;10 // khai báo chân digital 10 cho cm biến
int d = Le 8;//kháo báo chân digital 8 cho đèn LED
void setup (){
Led,OUTPUT ; pinMode( ) //pinMode xut tín hiu đu ra cho led
cambien,INPUT ; pinMode( ) //pinMode nhn tín hiu đu vào cho cm biê
}
void loop (){
value = cambien int digitalRead( );//lưu giá tr cm biến vào biến value
Led,value ; digitalWrite( ) //xut giá tr ra đèn LED
}
III. Cảm biến khí gas
1.1 Đnh nghĩa:
- Cảm biến khí Gas MQ2 là mt trong nhng cm biến
đưc s dng rng rãi nh m biến t trong các dòng c
MQ. Nó là m ến MOS (Metal Oxide t c m bi
Semiconductor). Cm biến oxit kim loi hay còn đưc
gi là vì cm biến da trên s thay đi đin trca c (Đin trhóa tr) m
biến khi tiếp xúc với khí.
- Cảm biến khí gas arduino ho ng trên 5V DC và tiêu th khong t đ
800mW. Nó có th phát hin nng
đ , , , , LPG Khói Rượu Propane Hydrogen Methane, và Carbon
Monoxide t 200 đế 10000 ppmn
- Lưu ý: phát hin nhiu loi khí, nhưng không th xác đnh Cảm biến MQ2
chúng đó là loi khí nào! hu hết các cm biến khí trên th ờng hin nay đu trư
hot đng theo cách này. ợp đ đo hoc phát hin nng đ khí. Do đó, nó phù h
1.2 ng: Nguyên lý hot đ
- Cảm biến khí Gas MQ2 ho ng d n ng hóa ht đ a trên nguyên lý ph c khi
tiếp xúc các khí trong môi trường. Nguyên t ng ca nó là khi các khí c hot đ
trong môi trưng như khí CO, khí LPG, khí methane, khí Hydro, khói ếp ti
xúc với phn t bên trong cm biến, làm cho các electron đưc gii phóng vào
Thiếc Dioxide cho phép dòng đin chy qua cm biến m do.t cách t
- Khi được làm nóng, phn t cm biến s to ra phn ng hóa h i các khí c v
tiếp xúc và làm thay đ n trc n t cm biến. Cả ến MQ2 đo i đi a ph m bi
lường các biến đ n trnày và chuyn đi chúng thành tín hiu đin i đi
analog hoc Digital.
1.3 Thc hành: S dng cm biến khí gas đ báo cháy:
Phn cng chun b:
- 1 Cảm biến khí gas MQ02
- 1 Còi báo nếu không có thì có th thay bng đèn led đ báo hiu
- Arduino Uno
Chú ý: Không cn phi thêm trcho cm biến Gas
1.4 Code:
#define led 6
void setup() {
. ; Serial begin(9600) Serial//Mcng Serial đ giap tiếp | tham kho
led,OUTPUT ; pinMode( )
}
void loop() {
value = ;int analogRead(A0) - //đc giá tr đin áp chân A0 chân cm biến
value luôn nm trong khong 0-1023
. value ; Serial println( ) //xut ra giá tr va đc
thershold = int 500 // Set mt ngưỡng nào cho khí gas
value > thershold if( ) // nếu vượt quá ngưỡng
led,HIGH ; digitalWrite( ) // bt đèn cnh báo
Arduino
MQ02 (Gas)
5V
VCC
GND
GND
A0
A0
else // nếu vn đang bình thưng
led,LOW digitalWrite( ); //Đèn tt
}
- Vi còi thì cũng y ht như đèn led, nó cũng có hai chân âm dương và code
ging ht led.
IV. (Rơ- Relay le)
1.1 Đnh nghĩa:
- Relay là mt thiết b đin t dùng đ điu khin mch đin bng cách s dng
mt tín hiu điu khin nh. Nó hot đng da trên nguyên lý ca cun dây
đin dn đin và cơ cu chuyn mch.
- Relay có hai trng thái chính: trng thái thưng đóng (NC) và trng thái thường
m(NO). Khi mt tín hiu điu khin đưc đưa vào cun dây đin, relay s
chuyn t trng thái thường m(NO) sang trng thái thường đóng (NC) giúp
cho thiết b đưc hot đng.
1.2 Nguyên lý hot đng
- Khi mt tín hiu điu khin đư p vào cun dây đin, dòng đin c c chy qua
cun dây s to ra mt trường t xung quanh cun dây. Trường t này s tác
đng lên cơ cu chuyn mch trong relay, làm cho nó chuyn t ng thái tr
thường m(NO) sang trng ờng đóng (NC).thái thư
- Khi rơ le trng thái thường m(NO) thì các tiếp đim trong mch relay
không đư ới nhau. Khi tín hiu điu khin đư p, relay c kết ni v c c
chuyn sang trng thái thường đóng (NC)
1.3 Thc hành: Bt tt bóng đèn đin áp cao bng relay
Chun b:
- 1 Relay
- 1 ngun ngoài 12V
- Bóng đèn 12V
- Arduino Uno
1.4 Code:
int ; Relay = 8
void setup() {
Relay, OUTPUT ; pinMode( )
Relay, HIGH ; digitalWrite( )
}
void loop() {
Relay, LOW ; digitalWrite( )
; delay(1000)
Relay, HIGH ; digitalWrite( )
; delay(1000)
}
V. Đng cơ bư Step Motor)c (
1.1 Đnh nghĩa:
- Đng cơ bước là mt lo ng cơ mà đó bn s quy đnh chính i đ có th
xác s góc quay và đng cơ bư ph y. Đng cơ bư quay c s i qua c có th
bao nhiêu đ tùy ý và m n quay nó s quay đư đây là i l c 1 step, 1 step
bao nhiêu còn ph ng cơ bưthuc vào đ c c a b n.
1.2 28BYJ-48 Đng cơ bưc
- Đng cơ bư dng trong bài toán là đng cơ bước 4 pha (thc ra là 2 c s
pha đư làm 2 mi pha ngay ti v trí gi m 5 dây), 4 trong c chia ra a) (g
5 dây này đư i v n dây trong đng cơ và 1 dây là dây ngun c kết n i 2 cu
chung cho c 2 cun dây. M ng cơ quét 1 góc 5.625 đ, vi bưc ca đ y
đ quay 1 vòng đng cơ ph n 64 bưi thc hi c.
1.3 Thông s k thut
- Đin thế hot đng:5V
- S pha :4
- T l bánh răng: *64
- Mt bước tương đương: 5.625° (64 bưc)
- Tn s : 100Hz
- Đin trtrong: 50Ω±7%(25)
1.4 Thc hành
Chun b
- Arduino Uno
- Đng cơ bưc 28BYJ-48
Code:
- Thư vin cho đng cơ bư ca chính hãng Arduino thông tin c: Stepper
thư vin chi tiế i link: t t
https://www.arduino.cc/reference/en/libraries/stepper/
- Đng cơ BYJ48 Stepper ch có sn b hp s và nó cho ta đến *64 (t l
bánh nó 64 * 64 = 4096 c răng) => có đến bư
#include <Stepper.h>
const int stepsPerRevolution = 4096;
Stepper myStepper(stepsPerRevolution, ; 8, , , 9 10 11)
void setup() {
myStepper.setSpeed(50); // Thiết lp tc đ quay
Serial.begin( )9600 ;
}
void loop() {
Serial.println("clockwise");
myStepper. stepsPerRevolution ;step( ) // Motor bt đu quay theo tc đ
đã thiết lâp
delay( )500 ;// Quay tm 0.5s
Serial.println("counterclockwise");
myStepper. -stepsPerRevolution ;step( ) // Motor quay ngưc li theo tc
đ đã thiết lâp
; delay( )500
}
VI. Bài tp
- Luyn tp th T m biến và thiết b c hành: các c chp hành hãy áp dng
liên k t lế i chúng với nhau

Preview text:

BUỔI 2: THỰC HÀNH GIAO TIẾP CẢM BIẾN-VI ĐIỀU KHIỂN-CHẤP HÀNH I. Cảm biến nhiệt ộ đ , độ ẩm (DHT) 1.1 Định Nghĩa -
Cảm biến độ ẩm và nhiệt độ DHT11 là
cảm biến rất thông dụng và chi phí rẻ và rất
dễ lấy dữ liệu thông qua giao tiếp 1 wire (dùng
1 chân digital để truyền dữ liệu. Bộ tiền xử lý
tín hiệu tích hợp trong cảm biến có được dữ
liệu chính xác mà không phải qua bất kỳ tính toán nào. -
Cảm biến DHT11 được tích hợp trong
một mạch duy nhất. Chỉ cần nối dây nguồn
(VCC), dây đất (GND) và dây tín hiệu (Data, Signal) là xong.
1.2 Thông số kĩ thuật của DHT11: - Điện áp hoạt ộ đ ng: 3-5.5V DC - Ngưỡng độ ẩm: 2 0 - 90%
- Sai số độ ẩm: ± 5% RH - Ngưỡng nhiệt độ: 0 - 55oC
- Sai số nhiệt độ: ± 2oC
Ngoài ra còn có cảm biến nhiệt ộ
đ , âm dòng DHT21, DHT 22 giúp cho việc sai
số khi đo đáng kể hơn, phạm vi đo cũng mở rộng thêm
1.3 Thực Hành: Đo nhiệt độ, độ ẩm (DHT11) hiển thị lên màn hình LCD 16x2 Chuẩn bị phần cứng: - Cảm biến nhiệt ộ đ , độ ẩm DHT11 - Board Arduino Uno - Bread Board
- Màn hình LCD 16x2 giao tiếp I2C Sơ đồ đấu nối: Arduino LCD Arduino DHT11 5V VCC 5V VCC GND GND GND GND A4 SDA D2 Signal (Data) A5 SCL 1.4 Code:
- Thư viện DHT11: “DHT sensor library” của Adafruit, link tham khảo code
hoặc có thể tải qua: https://github.com/adafruit/DHT-sensor-library #include // Thư viện LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);// Đặt địa chỉ LCD mặc định 0x27 có 16 cột 2 hàng // Gọi thư viện DHT11 #include "DHT.h"
const int DHTPIN = 2; //Đọc dữ liệu từ DHT11 ở chân 2 trên mạch Arduino
const int DHTTYPE = DHT11; //Khai báo loại cảm biến, có 2 loại là DHT11 và DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600);
dht.begin(); // Khởi động cảm biến lc .
d begin(); // Khởi tạo LCD lc .
d backlight(); // Bật đèn LCD } void loop() {
float h = dht.readHumidity(); //Đọc độ ẩm
float t = dht.readTemperature(); //Đọc nhiệt độ lc .
d setCursor(0,0); // Đặt con trỏ hàng 1 cột 1 lc .
d print("Do Am:"); // In ra chữ Độ ẩm lc .
d print(h); // In ra giá trị Độ ẩm lc .
d setCursor(0,1); // Đặt con trỏ hàng 2 cột 1 lc .
d print("Nhiet Do:"); // In ra chữ Nhiệt độ lc .
d print(t); // In ra giá trị Nhiệ độ
delay(1000); //Đợi 1 giây } II. Cảm biến ánh Sáng 1.1 Định nghĩa:
- Cảm biến ánh sáng quang trở thay đổi đ ệ
i n trở dựa vào cường độ ánh sáng chiếu
vào, cảm biến sử dụng Photoresistor (Quang điện trở) nên cho độ nhạy cao, tín hiệu ổn định.
1.2 Nguyên lý hoạt động
- Cảm biến ánh sáng quang trở hoạt ộ
đ ng theo nguyên lý: điện trở thay đổi khi có
ánh sáng chiếu vào (0 – 1023 tương tự từ 0 – 5V) quang trở có điện trở đến vài
MΩ, khi có ánh sáng chiếu vào điện trở giảm xuống mức một vài trăm Ω.
1.3 Thực hành: Dùng cảm biến ánh sáng bật ắ t t đèn led Chuẩn bị phần cứng: - Cảm biến quang trở - Board Arduino Uno - Bread Board
- 1 Đèn led và 1 điện trở 1.4 Code:
int cambien = 10;// khai báo chân digital 10 cho cảm biến
int Led = 8;//kháo báo chân digital 8 cho đèn LED void setup (){
pinMode(Led,OUTPUT);//pinMode xuất tín hiệu đầu ra cho led
pinMode(cambien,INPUT);//pinMode nhận tín hiệu đầu vào cho cảm biê } void loo p (){
in tvalue = digitalRead(cambien);//lưu giá trị cảm biến vào biến value
digitalWrite(Led,value);//xuất giá trị ra đèn LED } III. Cảm biến khí gas 1.1 Định nghĩa:
- Cảm biến khí Gas MQ2 là một trong những cảm biến
được sử dụng rộng rãi nhất trong các dòng ả c m biến
MQ. Nó là một cảm biến MOS (Metal Oxide
Semiconductor). Cảm biến oxit kim loại hay còn được
gọi là (Điện trở hóa trị) vì cảm biến dựa trên sự thay đổi điện trở của cảm
biến khi tiếp xúc với khí.
- Cảm biến khí gas arduino hoạt ộ
đ ng trên 5V DC và tiêu thụ khoảng
800mW. Nó có thể phát hiện nồng
độ LPG, Khói, Rượu, Propane, Hydrogen, Methane và Carbon
Monoxide từ 200 đến 10000 ppm
- Lưu ý: Cảm biến MQ2 phát hiện nhiều loại khí, nhưng không thể xác định
chúng đó là loại khí nào! hầu hết các cảm biến khí trên thị tr ờng ư hiện nay đều
hoạt động theo cách này. Do đó, nó phù hợp để đo hoặc phát hiện nồng độ khí.
1.2 Nguyên lý hoạt ộđng:
- Cảm biến khí Gas MQ2 hoạt ộ
đ ng dựa trên nguyên lý phản ứng hóa học khi
tiếp xúc các khí trong môi trường. Nguyên tắc hoạt ộ
đ ng của nó là khi các khí
trong môi trường như khí CO, khí LPG, khí methane, khí Hydro, khói… tiếp
xúc với phần tử bên trong cảm biến, làm cho các electron được giải phóng vào
Thiếc Dioxide cho phép dòng điện chạy qua cảm biến một cách tự do.
- Khi được làm nóng, phần tử cảm biến sẽ tạo ra phản ứng hóa học với các khí
tiếp xúc và làm thay đổi đ ệ
i n trở của phần tử cảm biến. Cảm b ế i n MQ2 đo
lường các biến đổi đ ệ
i n trở này và chuyển đổi chúng thành tín hiệu điện analog hoặc Digital.
1.3 Thực hành: Sử dụng cảm biến khí gas để báo cháy: Phần cứng chuẩn bị:
- 1 Cảm biến khí gas MQ02
- 1 Còi báo nếu không có thì có thể thay bằng đèn led để báo hiệu - Arduino Uno
Chú ý: Không cần phải thêm trở cho cảm biến Gas Arduino MQ02 (Gas) 5V VCC GND GND A0 A0 1.4 Code: #define led 6 void setup() {
Serial.begin(9600); //Mở cổng Serial để giap tiếp | tham khảo Serial pinMode(led,OUTPUT); } void loop() {
in tvalue = analogRead(A0); //đọc giá trị điện áp ở chân A0 - chân cảm biến
value luôn nằm trong khoảng 0-1023
Serial.println(value); //xuất ra giá trị vừa đọc
in tthershold = 500 // Set một ngưỡng nào cho khí gas
if(value > thershold) // nếu vượt quá ngưỡng
digitalWrite(led,HIGH); // bật đèn cảnh báo
else // nếu vẫn đang bình thườn g
digitalWrite(led,LOW); //Đèn tắt }
- Với còi thì cũng y hệt như đèn led, nó cũng có hai chân âm dương và code giống hệt led. IV. Relay (Rơ-le) 1.1 Định nghĩa:
- Relay là một thiết bị điện tử dùng để điều khiển mạch điện bằng cách sử dụng
một tín hiệu điều khiển nhỏ. Nó hoạt động dựa trên nguyên lý của cuộn dây
điện dẫn điện và cơ cấu chuyển mạch.
- Relay có hai trạng thái chính: trạng thái thường đóng (NC) và trạng thái thường
mở (NO). Khi một tín hiệu điều khiển được đưa vào cuộn dây điện, relay sẽ
chuyển từ trạng thái thường mở (NO) sang trạng thái thường đóng (NC) giúp
cho thiết bị được hoạt động.
1.2 Nguyên lý hoạt động
- Khi một tín hiệu điều khiển được cấp vào cuộn dây điện, dòng điện chạy qua
cuộn dây sẽ tạo ra một trường từ xung quanh cuộn dây. Trường từ này sẽ tác
động lên cơ cấu chuyển mạch trong relay, làm cho nó chuyển từ trạng thái
thường mở (NO) sang trạng thái thường đóng (NC).
- Khi rơ le ở trạng thái thường mở (NO) thì các tiếp điểm trong mạch relay
không được kết nối với nhau. Khi tín hiệu điều khiển được cấp, relay
chuyển sang trạng thái thường đóng (NC)
1.3 Thực hành: Bật tắt bóng đèn điện áp cao bằng relay Chuẩn bị: - 1 Relay - 1 nguồn ngoài 12V - Bóng đèn 12V - Arduino Uno 1.4 Code: int Relay = 8; void setup() { pinMode(Relay, OUTPUT); digitalWrite(Relay, HIGH); } void loop() { digitalWrite(Relay, LOW); delay(1000); digitalWrite(Relay, HIGH); delay(1000); } V.
Động cơ bước (Step Motor) 1.1 Định nghĩa:
- Động cơ bước là một loại ộ
đ ng cơ mà ở đó bạn sẽ có thể quy định chính
xác số góc quay và động cơ bước sẽ phải quay. Động cơ bước có thể quay
bao nhiêu độ tùy ý và mỗi ầ
l n quay nó sẽ quay được 1 step, 1 step ở đây là
bao nhiêu còn phụ thuộc vào động cơ bước của bạn.
1.2 Động cơ bước 28BYJ-48
- Động cơ bước sử dụng trong bài toán là động cơ bước 4 pha (thực ra là 2
pha được chia ra làm 2 ở mỗi pha ngay tại vị trí giữa) (gồm 5 dây), 4 trong 5 dây này được kết ố n i với 2 c ộ
u n dây trong động cơ và 1 dây là dây nguồn
chung cho cả 2 cuộn dây. Mỗi bước của động cơ quét 1 góc 5.625 độ, vậy
để quay 1 vòng động cơ phải thực hiện 64 bước. 1.3 Thông số kỹ thuật
- Điện thế hoạt động:5V - Số pha :4 - Tỉ lệ bánh răng: *64
- Một bước tương đương: 5.625° (64 bước) - Tần số : 100Hz
- Điện trở trong: 50Ω±7%(25℃) 1.4 Thực hành Chuẩn bị - Arduino Uno
- Động cơ bước 28BYJ-48 Code:
- Thư viện cho động cơ bước: “Stepper” của chính hãng Arduino thông tin thư viện chi tiết ạ t i link:
https://www.arduino.cc/reference/en/libraries/stepper/
- Động cơ BYJ48 Stepper chỉ có sẵn bộ hộp số và nó cho ta đến *64 (tỉ lệ
bánh răng) => nó có đến 64 * 64 = 4096 bước #include
const int stepsPerRevolution = 4096;
Stepper myStepper(stepsPerRevolution, 8, 9, 1 , 0 11); void setup() {
myStepper.setSpeed(50); // Thiết lập tốc độ quay Serial.begin(960 ) 0 ; } void loop() { Serial.println("clockwise");
myStepper.step(stepsPerRevolution); // Motor bắt đầu quay theo tốc độ đã thiết lâp delay(50 ) 0 ;// Quay tầm 0.5 s
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution); // Motor quay ngược lại theo tốc độ đã thiết lâp delay(50 ) 0 ; } VI. Bài tập
- Luyện tập thực hành: Từ các cảm biến và thiết bị chấp hành hãy áp dụng
liên kết lại chúng với nhau