Bài trước: Điều khiển động cơ Dc bằng hai nút nhấn
1. Giới thiệu về cảm biến mưa:
Cảm biến nước mưa (Rain Water Sensor ) được sử dụng để phát hiện mưa, nước hoặc các dung dịch dẫn điện tiếp xúc với bề mặt cảm biến sẽ phát ra tín hiệu để làm các ứng dụng tự động: phát hiện mưa, báo mực nước tự động,...
2. Thông số ký thuật:
- Điện áp: 3V - 5V
- Ngõ ra:
- DO: dạng digital - TTL có khả năng điều khiển trực tiếp Relay, Buzzer, …
- AO: dạng analog: tín hiệu analog để nhận biết có mưa nhiều hay ít
- Độ nhạy có thể được điều chỉnh thông qua chiết áp
- Kích thước module chuyển đổi: 3.2cm x 1.4cm
- Lá chắn sử dụng vật liệu chất lượng cao FR-04 hai mặt, bề mặt mạ niken, chống oxy hóa
- Kích thước là chắn: 5.0cm x 4.0cm
3. Sơ đồ kết nối với Arduino
Trong sơ đồ trên chân VCC của cảm biến mưa nối với chân 5V của Arduino, GND nối GND, chân D0 nối chân 6, chân A0 không nối. Nếu nối chân A0 ta có thể đọc được các giá trị analog vì thế có thể xác định mưa lớn hay nhỏ, còn với chân D0 ta chí có thể xác định có mưa hay không mà thôi.
4. Code:
int cbmua=7;
void setup() {
// put your setup code here, to run once:
pinMode(cbmua,INPUT);
Serial.begin(9600);
}
void loop() {
int thchandigital=digitalRead(cbmua); //Đọc tín hiệu chân digital
int thchananalog=analogRead(A0); //Đọc tín hiệu chân analog
Serial.print(thchandigital);
Serial.println(thchananalog);
delay(500);
// put your main code here, to run repeatedly:
}
Giải thích code: Trong đoạn code trên rất đơn giản là đọc tín hiệu từ chân digital và chân analog sau đó xuất lên Serial để xem kết quả. Dựa vào lết quả này các bạn có thể chọn cho mình các giá trị thích hợp để viết chương trình xử lý kết quả theo ý muốn.
5. Ứng dụng cảm biến mưa vào việc tự động kéo mở hoặc đóng màn cửa khi có mưa.
Trong bài trước tôi đã giới thiệu với các bạn việc sử dụng nút nhấn để mở hoặc đóng màn cửa. Tuy nhiên nếu vào một ngày đẹp trời các bạn ra ngoài mà quên đóng màn cửa hoặc không muốn đóng vì các bạn đang phơi đồ ở đó. Nữa giờ sau khi các bạn đang nhâm nhi ly cà phê với bạn cách nhà 5km, lúc này trời bắt đầu chuyển mưa thế là bạn lên xe phi một mạch về nhà. Nhưng mà ôi thôi tất cả đã muộn đống đồ các bạn phơi còn ướt hơn lúc các bạn mới giặt, tệ hơn nữa là trong đống đồ đó có cái áo mà chiều nay các bạn đi đám sanh thần của đứa bạn thân, thế là chiều đi tiệc lại mặc đồ cũ.
Có bap giờ bạn ngồi chống càm và ước gì khi trời mưa cái mái che của mình nó tự đóng lại thì hay biết mấy. Các bạn đang đọc tới đây thì các bạn đã tìm đúng BỤT rồi đấy.
Sau đây tôi sẽ hướng dẫn các bạn dùng cảm biến mưa kết hợp với driver L298N để điều khiển màn cửa khi có mưa nhé:
a. Chuẩn bị phần cứng:
- Mạch Arduino hoặc Nano
- Driver L298N
- Cảm biến mưa
- Dây cắm Board.
- Giải thích sơ đồ: Trong sơ đồ trên ta thấy
- Phần cửa cuốn có 2 công tắc hành trình công tắc trên nối với chân số 2, công tắc dưới nối với chân số 3 của Arduino.
- Hai nút nhấn nối với chân 5 và 6 của Arduino (để mở bằng tay).
- Động cơ nối với L298N và L298N nối với Arduino thông qua In3 In4 và chân 9,10.
- Nguyên lý hoạt động như sau:
- Nếu có mưa màn cửa sẽ tự động đóng lại.
- Nếu không có mưa:
- Nếu nút nhấn lên được nhấn màn cửa sẽ mở đến hết hành trình hoặc đến khi nào nhả nút nhấn ra.
- Nếu nút xuống được nhấn màn cửa đóng lại đến hết hành trinh hoặc đến khi nhả nút nhấn ra.
int in3=9; //Khai báo IN3 trên L298N
int in4=10;//Khai báo IN4 trên L298N
int ctht1=2; //Khai báo Công tắc hành trình 1
int ctht2=3; //Khai báo công tắc hành trình 2
int cbmua=7;
void setup() {
Serial.begin(9600);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(ctht1,INPUT);
pinMode(ctht2,INPUT);
pinMode(cbmua,INPUT);
}
void loop() {
int trangthaict1=digitalRead(ctht1); //Đọc trạng thái CTHT1
int trangthaict2=digitalRead(ctht2); // Đọc trạng thái CTHT2
int thcbmua=digitalRead(cbmua); //Đọc trạng thái CB mưa
Serial.print(trangthaict1);
Serial.print(trangthaict2);
Serial.print(trangthainutlen);
Serial.println(trangthainutxuong);
if(thcbmua==1) //Dang khong mua
{
if(trangthainutxuong==0 && trangthainutlen!=0 && trangthaict2!=1)
{
xuong();
}
else if(trangthainutxuong!=0 && trangthainutlen==0 && trangthaict1!=1)
{
len();
}
else {dung();}
}
else //Co Mua
{
if(trangthaict2!=1)//co mua va cua dang mo
{
xuong();
}
else {dung();}
}
}
void len(){
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
}
void xuong(){
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
}
void dung(){
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
}
Giải thích code:
- Đầu tiên chương trình sẽ đọc trạng thái của công tắc hành trình và cảm biến mưa.
- Nếu Giá trị cảm biến mưa bằng 1 (Đang không mưa). Lúc này chương trình sẽ kiểm tra xem có nút nhấn nào được nhấn không, nếu có nút lên hoặc xuống được nhấn thì cho đông cơ quay lên hoặc xuống bằng cách gọi hàm len(), xuong() hoặc dung() để điều khiển động cơ. Trong quá trình màn cửa chạy lên hoặc xuống chương trình cũng kiểm tra xem công tắc hành trên trên (Nếu chạy lên) có bằng 1 hay không nếu bằng 1 tức đã chạm đến giời hạn thì cho động cơ dừng. Tương tự với di chuyển theo chiều ngược lại.
- Nếu giá trị cảm biến mưa bằng 0 (Đang mưa) thì cho màn cửa chạy xuống bằng hàm xuong() đồng thơi kiểm tra công tắc hành trình dưới để dừng động cơ.
- Trên đây là một mô phỏng khá thú vị về việc điều khiển chiếc màn cửa tự động. Các bạn thân mến do đây chỉ là mô hình nên khi áp dụng ngoài thực tế các bạn phải chú ý về các biện pháp an toàn như: sử dụng công tắc hành trình loại nào, nguồn điện bao nhiêu V và động cơ loại gì, ngoài ra phần ý tưởng cũng cực kỳ quan trọng, trong code tôi viết trên đây là ý tưởng cá nhân, nó có thể không thỏa mãn với yêu cầu của một số bạn. Hy vọng đây là cơ sở để các bạn tham khảo cho dự án của mình.
Các bạn có thể xem video minh họa và cách làm chi tiết bên dưới.
Video cách sử dụng cảm biến mưa:
Video cách làm màn cửa sử dụng cảm biến mưa và nút nhấn.
Bài tiếp theo: Cảm biến thu hồng ngoại IR1838 và ứng dụng điều khiển led bằng remote.
Đăng nhận xét