โปรเจค ARDUINO พัดลมเปิดปิดอัตโนมัติควบคุมความเร็วตามอุณหภูมิ 4ระดับ
โปรเจค Arduino พัดลมเปิดปิดอัตโนมัติควบคุมความเร็วตามอุณหภูมิ 4ระดับชุดโปรเจคนี้ จะทำพัดลมอัตโนมัติควบคุมความเร็วตามอุณหภูมิ 4 ระดับ ถ้าอุณหภูมิสูงขึ้นพัดลมจะหมุนเร็วขึ้นตามไปด้วย มีจอแสดงผล ค่าอุณหภูมิห้อง ความชื้นในอากาศ และ ไฟสถานะแสดงระดับความเร็วของพัดลม ใช้ Arduino UNO R3 เป็นบอร์ดประมวลผล ในการอ่านค่าและสั่งงานอุปกรณ์ต่างๆ และใช้ เซ็นเซอร์วัดอุณหภูมิและความชื้น DHT22 วัดค่าอุณหภูมิห้อง
อุปกรณ์ในชุด โปรเจค Arduino พัดลมเปิดปิดอัตโนมัติควบคุมความเร็วตามอุณหภูมิ 4ระดับ
- Arduino UNO R3 แถมฟรี สายUSB 1 ชิ้น
- บอร์ดทดลอง Breadboard 830 Point 1ชิ้น
- สายไฟจัมเปอร์ ผู้-ผู้ ยาว 20cm. จำนวน 40 เส้น 1 แพร
- สายไฟจัมเปอร์ ผู้-เมีย ยาว 20cm. จำนวน 40 เส้น 1 แพร
- สายไฟจัมเปอร์ เมีย-เมีย ยาว 20cm. จำนวน 40 เส้น 1 แพร
- Electronics box กล่องอิเล็กทรอนิกส์ ขนาด 200mmx300mmx63mm (กxยxส) 1 ใบ
- DC male Adapter Jack plug สำหรับ Arduino 2.1 x 5.5 mm 1 ชิ้น
- สายไฟพร้อมหัวปลั๊ก ขนาด2*0.75 ยาว2m 1 เส้น
- DHT22 / AM2302 Module โมดูลวัดอุณหภูมและความชื้น Temperature and Humidity Sensor Module พร้อมสายไฟ 1ชิ้น
- L298N Motor Drive Module 1 ชิ้น
- 1602 LCD (Blue Screen) 16x2 โมดูลจอ LCD พร้อม I2C Interface 1 ชิ้น
- พัดลมเป่าเทอร์โบ 12v ขนาด 74*74mm 1 ชิ้น
- Switching Power supply แหล่งจ่ายไฟ 12V 3A 1 ชิ้น
- บอร์ดทดลอง LED 8 ดวง สีแดง
วิธีการต่อ โปรเจค Arduino ควบคุมพัดลมตามอุณหภูมิ
เซ็นเซอร์วัดอุณหภูมิและความชื้น -> Arduino uno r3
Vcc -> 5V
GND -> GND
Out -> Pin 2
แหลงจ่ายไฟ 12v5a -> Arduino uno r3
ต่อช่องแจ็ค Arduino uno r3
จอ LCD 1602 -> Arduino uno r3
Vcc -> 5V
GND -> GND
SCL -> A5
SDA -> A4
โมดูล LCD 8 ดวง -> Arduino uno r3
Vcc -> 5V
GND -> GND
D1,D2 -> pin8
D3,D4 -> pin9
D5,D6 -> pin10
D7,D8 -> pin11
โมดูลขับมอเตอร์ L298N -> Arduino uno r3
Vcc -> 12V
GND -> GND
in3-> pin3
in4-> pin4
Code โปรเจค Arduino พัดลมเปิดปิดอัตโนมัติควบคุมความเร็วตามอุณหภูมิ 4ระดับ
1
#include "DHT.h"
2
#include <Wire.h>
3
#include <LiquidCrystal_I2C.h>
4
int Number = 0;
5
const int in3Pin = 3;
6
const int in4Pin = 4;
7
int p8_Lv1 = 8;
8
int p8_Lv2 = 9;
9
int p8_Lv3 = 10;
10
int p8_Lv4 = 11;
11
LiquidCrystal_I2C lcd(0x27, 16, 2);
12
#define DHTPIN 2 // what digital pin we're connected to
13
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
14
DHT dht(DHTPIN, DHTTYPE);
15
void setup() {
16
Serial.begin(9600);
17
Serial.println("DHTxx test!");
18
dht.begin();
19
lcd.begin();
20
lcd.backlight();
21
pinMode(in3Pin, OUTPUT);
22
pinMode(in4Pin, OUTPUT);
23
analogWrite (in3Pin , 0);
24
digitalWrite(in4Pin, LOW);
25
pinMode(p8_Lv1, OUTPUT);
26
pinMode(p8_Lv2, OUTPUT);
27
pinMode(p8_Lv3, OUTPUT);
28
pinMode(p8_Lv4, OUTPUT);
29
digitalWrite(p8_Lv1, LOW);
30
digitalWrite(p8_Lv2, LOW);
31
digitalWrite(p8_Lv3, LOW);
32
digitalWrite(p8_Lv4, LOW);
33
}
34
void loop() {
35
delay(2000);
36
float h = dht.readHumidity();
37
// Read temperature as Celsius (the default)
38
float t = dht.readTemperature();
39
// Read temperature as Fahrenheit (isFahrenheit = true)
40
float f = dht.readTemperature(true);
41
// Check if any reads failed and exit early (to try again).
42
if (isnan(h) || isnan(t) || isnan(f)) {
43
Serial.println("Failed to read from DHT sensor!");
44
return;
45
}
46
// Compute heat index in Fahrenheit (the default)
47
float hif = dht.computeHeatIndex(f, h);
48
// Compute heat index in Celsius (isFahreheit = false)
49
float hic = dht.computeHeatIndex(t, h, false);
50
Serial.print("Humidity: ");
51
Serial.print(h);
52
Serial.print(" %\t");
53
Serial.print("Temperature: ");
54
Serial.print(t);
55
Serial.print(" *C ");
56
Serial.print(f);
57
Serial.print(" *F\t");
58
Serial.print("Heat index: ");
59
Serial.print(hic);
60
Serial.print(" *C ");
61
Serial.print(hif);
62
Serial.println(" *F");
63
if ( t < 30 ) {
64
Number = 0;
65
analogWrite (in3Pin , 0);
66
digitalWrite(p8_Lv1, LOW);
67
digitalWrite(p8_Lv2, HIGH);
68
digitalWrite(p8_Lv3, HIGH);
69
digitalWrite(p8_Lv4, HIGH);
70
}
71
if ( t > 30 && t <= 35 ) {
72
Number = 1;
73
analogWrite (in3Pin , 255);
74
digitalWrite(p8_Lv1, LOW);
75
digitalWrite(p8_Lv2, LOW);
76
digitalWrite(p8_Lv3, HIGH);
77
digitalWrite(p8_Lv4, HIGH);
78
}
79
if ( t > 35 && t <= 40 ) {
80
Number = 2;
81
analogWrite (in3Pin , 127);
82
digitalWrite(p8_Lv1, LOW);
83
digitalWrite(p8_Lv2, LOW);
84
digitalWrite(p8_Lv3, LOW);
85
digitalWrite(p8_Lv4, HIGH);
86
}
87
if ( t > 40 ) {
88
Number = 3;
89
analogWrite (in3Pin , 255);
90
digitalWrite(p8_Lv1, LOW);
91
digitalWrite(p8_Lv2, LOW);
92
digitalWrite(p8_Lv3, LOW);
93
digitalWrite(p8_Lv4, LOW);
94
}
95
lcd.setCursor(0, 0);
96
lcd.print("Tem:");
97
lcd.print(t);
98
lcd.print("*C");
99
lcd.setCursor(0, 1);
100
lcd.print("Hum:");
101
lcd.print(h);
102
lcd.print("% ");
103
lcd.print("Num:");
104
lcd.print(Number);
105
}
ความคิดเห็น
แสดงความคิดเห็น