Báo cáo Đồ án docx 1 MỤC LỤC I Đặt vấn đề 1 1 Tình trạng cháy nổ thực tế hiện nay 1 2 Mục tiêu 1 II Thiết kế 1 1 Sơ đồ nguyên lý 1 2 Thiết kế phần cứng 2 a) Tổng quan 2 b) Khối điều khiển 2 c) Khối cả.Ứng dựng giám sát, điều khiển nhiệt độ, độ ẩm và khí gas trong nhàỨng dựng giám sát, điều khiển nhiệt độ, độ ẩm và khí gas trong nhàỨng dựng giám sát, điều khiển nhiệt độ, độ ẩm và khí gas trong nhà
Trang 11
Trang 2MỤC LỤC
Trang 3I Đặt vấn đề
1 Tình trạng cháy nổ thực tế hiện nay
Hiện nay với sự phát triển của nước ta với những tiện ích công nghệ đã phần nào giúp cho nhu cầu của con người người được đáp ứng tốt hơn thì song song theo
đó thì chúng ta không tránh được những nguy cơ ngoài ý muốn, đặc biệt là vấn đề cháy nổ Có thể do chúng ta chưa có phòng sự phòng tránh kịp thời đúng lúc để có thể làm giảm phần nào về thiệt hại tài sản, điển hình như những sự việc cháy nổ đáng tiếc tại các quán karaoke năm 2022 Từ lý do đó nên nhóm đã chọn đề tài
“Ứng dựng giám sát, điều khiển nhiệt độ, độ ẩm và khí gas trong nhà”
2 Mục tiêu
• Giám sát nhiệt độ, độ ẩm và nồng độ khí có thể gây cháy nổ trong phòng
• Hiển thị các thông số lên trên App điện thoại
• Có thể điều khiển các thiết bị như quạt thông gió, điều hoà hoặc hệ thống chữa cháy từ ứng dụng điện thoại
• Tự động bật chế độ chữa cháy nếu nhiệt độ vượt ngưỡng cho phép
II Thiết kế
1 Sơ đồ nguyên lý
1
Trang 42 Thiết kế phần cứng
a) Tổng quan
Hệ thống gồm các cảm biến nhiệt độ, độ ẩm và cảm biến khí gas lắp đặt cho mỗi phòng
b) Khối điều khiển
Với chức năng nhận và xử thông tin thu được từ các cảm biến và chuyển dữ liệu vào cơ sở dữ liệu, cùng với đó là điều khiển các cơ cấu chấp hành thì Raspberry Pi rất phù hợp để có thể làm khối điều khiển
Hình 1 Raspberry Pi 3
Thông số kỹ thuật chi tiết:
● Vi xử lý: Broadcom BCM2837B0, quad-core A53 (ARMv8) 64-bit SoC @1.4GHz
● RAM: 1GB LPDDR2 SDRAM
● Kết nối: 2.4GHz and 5GHz IEEE 802.11 b/g/n/ac wireless LAN, Bluetooth 4.2, BLE, Gigabit Ethernet over USB 2.0 (Tối đa 300Mbps)
● Cổng USB: 4 x 2.0
● Mở rộng: 40-pin GPIO
● Video và âm thanh: 1 cổng full-sized HDMI, Cổng MIPI DSI Display, cổng MIPI CSI Camera, cổng stereo output và composite video 4 chân
● Multimedia: H.264, MPEG-4 decode (1080p30), H.264 encode (1080p30);
OpenGL ES 1.1, 2.0 graphics
● Lưu trữ: MicroSD
● Nguồn điện sử dụng: 5V/2.5A DC cổng microUSB, 5V DC trên chân GPIO, Power over Ethernet (PoE) (yêu cầu thêm PoE HAT)
Trang 5Sơ đồ các chân GPIO của Raspberry Pi
c) Khối cảm biến
Mục tiêu của cảm biến là xác định nhiệt độ, độ ẩm và nồng độ khí gas trong phòng nhằm gửi về cho khối điều khiển
Trong báo cáo này, ta sử dụng các cảm biến DHT-11 cho việc đo nhiệt độ và độ ẩm trong phòng và cảm biến khí gas MQ-2
Trang 6Hình 2 Cảm biến nhiệt độ, độ ẩm DHT-11
Cảm biến độ ẩm và nhiệt độ DHT11 Temperature Humidity Sensor là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất) Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạ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 So với cảm biến đời mới hơn là DHT22 thì DHT11 cho khoảng đo và độ chính xác kém hơn rất nhiều
Thông tin kỹ thuật:
● Nguồn: 3 -> 5 VDC
● Dòng sử dụng: 2.5mA max (khi truyền dữ liệu)
● Khoảng đo độ ẩm: 20%-90% RH (sai số 5%RH)
● Khoảng đo nhiệt độ: 0-50°C (sai số 2°C)
● Tần số lấy mẫu tối đa: 1Hz (1 giây / lần)
● Kích thước 15mm x 12mm x 5.5mm
● Tín hiệu đầu ra kỹ thuật số
● Phạm vi nhiệt độ từ 0ºC đến 50ºC
● Độ chính xác để đo nhiệt độ ở 25ºC, dao động khoảng 2ºC
● Độ phân giải để đo nhiệt độ là 8-bit, 1ºC
● Độ ẩm có thể đo từ 20% RH đến 90% RH
● Độ ẩm chính xác 5% RH cho nhiệt độ từ 0-50ºC
● Độ phân giải là 1% RH, nó không thể nhận các biến thể dưới mức đó
Trang 7Hình 3 Cảm biến Khí Gas MQ-2
Thông số kĩ thuật :
● Điện áp hoạt động: 3.3V-5V
● Kích thước PCB: 3cm * 1.6cm
● Led đỏ báo nguồn vào, Led xanh báo gas
● IC so sánh : LM393
● VCC: 3.3V-5V
● GND: 0V
● DO: Đầu ra tín hiệu số (0 và 1)
● AO: Đầu ra Analog (Tín hiệu tương tự)
● Cấu tạo từ chất bản dẫn Sno2
● Có 2 dạng tín hiệu: Analog( AO) và Digital (DO)
● Dạng tín hiệu : TTL đầu ra 100mA ( Có thể sử dụng trực tiếp Relay, Còi công suất nhỏ )
● Điều chỉnh độ nhạy bằng biến trở
● Sử dụng LM393 để chuyển AO > DO
d) Cơ cấu chấp hành
Sử dụng quạt và động cơ DC làm đại diện cho cơ cấu chấp hành như: quạt thông gió, hệ thống báo cháy,…
Từ đây ta có thể kiểm tra hoạt động điều khiển của hệ thống
Trang 8Hình 4 Quạt
Hình 5 Động cơ DC
Động Cơ Giảm Tốc Vàng 3V-9V là mẫu động cơ được sử dung nhiều nhất để thiết kế các loại robot mô hình Phục vụ cho sinh viên học tập và nghiên cứu chế tạo
Với giá thành rẻ, dễ sử dụng và mang tính ưu việt nên chiếc động cơ này được sử dụng rất nhiều với sinh viên các nghành kĩ thuật
Thông số kỹ thuật của động cơ giảm tốc Vàng:
● Điện áp hoạt động:3V~ 9V DC (Hoạt động tốt nhất từ 6 - 8V)
● Mômen xoắn cực đại: 800gf cm min 1:48 (3V)
Trang 9● Tốc độ không tải: 125 Vòng/ 1 Phút (3V)
● (Với bánh 66mm: 26m/1p)
● 208 Vòng/ 1 Phút (5V)
● (Với bánh 66mm: 44m/1p)
● Dòng không tải động cơ: 70mA (250mA MAX)
3 Thiết kế phần mềm ứng dụng Android
Giao diện chính của App là danh sách các phòng cần lấy các thông số nhiệt độ, độ ẩm
và nồng độ khí gas
Các chức năng chính:
● Hiển thị danh sách phòng
● Thêm phòng mới
● Xoá phòng: Bằng cách giữ vào tên phòng cần xoá, sẽ hiển thị hộp thoại xác nhận xoá hay không
Trang 10Hình 6 Giao diện chính
Khi muốn vào xem thông tin của từng phòng, kick vào tên phòng trên danh sách, màn hình sẽ chuyển đến giao diện hiển thị thông số của phòng:
Trang 11Hình 7 Giao diện hiển thị thông tin từng phòng
Trang 12Để có thể điều khiển các thiết bị trong phòng ứng với từng thông số, từ màn hình thông tin phòng, chọn vào các thông số, màn hình sẽ chuyển đến giao diện để điều khiển:
Hình 8 Giao diện điều khiển theo từng thông số của từng cảm biến
Trang 134 Cấu trúc dữ liệu trên Firebase
Hình 9 Cấu trúc database
Thông tin các phòng sẽ được lưu theo số thứ tự phòng tạo ra trên App, mỗi lầ tạo phòng trên App sẽ tạo ra một nhánh các Key và Value trên cơ sở dữ liệu Các phòng
sẽ có các tập hợp Key giống nhau, các Value sẽ tương ứng với mỗi Key của từng phòng sẽ cập nhật data nhận được từ cảm biến App sẽ đọc các thông tin từ cơ sở dữ liệu và hiển thị lên màn hình
Về phần điều khiển, từ App sẽ gửi 2 trạng thái ON hoặc OFF ghi vào cơ sở dữ liệu, Raspberry Pi sẽ đọc trạng thái đó để có thể khởi động hay dừng hoạt động của các cơ cấu chấp hành
III Một số đoạn code quan trọng
1 Lập trình App
● Hàm nhận data từ Firebase
public void ReceiveFirebase(String room, String key, GifTextView gtv) {
mData = FirebaseDatabase.getInstance().getReference();
Trang 14mData.child(String.valueOf(room)).child(key).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
gtv.setText(String.valueOf(snapshot.getValue()));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
● Hàm gửi data lên Firebase
public void PushFirebase(String room, String key, String value) {
mData = FirebaseDatabase.getInstance().getReference();
mData.child(room).child(key).setValue(value);
}
public void PushFirebase(String key, Object value) {
mData = FirebaseDatabase.getInstance().getReference();
mData.child(key).setValue(value);
}
● Hàm gửi trạng thái ON-OFF lên Firebase để điều khiển cơ cấu chấp hành
public void setBtnTurnOnFan(String roomNumber) {
btnTurnOnFan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pushOrReceiveFirebase.PushFirebase(roomNumber, "fan", "ON"); }
});
}
public void setBtnTurnOffFan(String roomNumber) {
Trang 15btnTurnOffFan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pushOrReceiveFirebase.PushFirebase(roomNumber,"fan", "OFF");
}
});
}
2 Lập trình trên Raspberry Pi
● Hàm set địa chỉ chân của Raspberry Pi
def init (self,Pin_dht,Pin_MQ2,kt,ENA,IN1,IN2,check):
self.PIN_DHT=Pin_dht
self.PIN_MQ2=Pin_MQ2
self.ENA=ENA
self.IN1=IN1
self.IN2=IN2
self.kt=kt
self.check=check
GPIO.setup(self.ENA,GPIO.OUT)
GPIO.setup(self.IN1,GPIO.OUT)
GPIO.setup(self.IN2,GPIO.OUT)
GPIO.output(self.IN1,GPIO.LOW)
GPIO.output(self.IN2,GPIO.LOW)
self.p=GPIO.PWM(self.ENA,1000)
self.p.start(25)
● Hàm đọc tín hiệu từ cảm biến rồi gửi data lên Firebase và điều khiển cơ cáua chấp hành
def READ(self):
GPIO.setup(self.PIN_MQ2,GPIO.IN)
instance = dht11.DHT11(pin=self.PIN_DHT)
Trang 16dht = instance.read()
if dht.is_valid():
print("Temp: %d C" % dht.temperature +' '+"Humid: %d %%" % dht.humidity) s=str(dht.temperature)+'°C'
s1=str(dht.humidity)+'%'
result = firebase.put(str(self.kt),'temperature',s)
result = firebase.put(str(self.kt),'humidity',s1)
if GPIO.input(self.PIN_MQ2)==0:
result = firebase.put(str(self.kt),'gas','HIGH')
else:
result = firebase.put(str(self.kt),'gas','LOW')
a = firebase.get(str(self.kt),'fan')
a=str(a)
print(a)
if dht.temperature>30:
if a=="OFF" and self.check=="ON" :
GPIO.output(self.IN1,GPIO.LOW)
GPIO.output(self.IN2,GPIO.LOW)
self.check="ON"
else:
GPIO.output(self.IN1,GPIO.HIGH)
GPIO.output(self.IN2,GPIO.LOW)
result = firebase.put(str(self.kt),'fan','ON')
self.check=a
if a=="ON":
GPIO.output(self.IN1,GPIO.HIGH)
GPIO.output(self.IN2,GPIO.LOW)
Trang 17if a=="OFF":
GPIO.output(self.IN1,GPIO.LOW) GPIO.output(self.IN2,GPIO.LOW)
● Kết nối Pi với database trên Firebase
firebase =
firebase.FirebaseApplication('https://monitor-temperature-gas-default-rtdb.firebaseio.com', None)
Hình 10 Sản phẩm thực
● 2 cặp cảm biến DHT11 – MQ2 đại diện cho 2 phòng
● 2 động cơ đại diện cho quạt tại mỗi phòng có thể điều khiển từ App
● Pin cấp nguồn cho động cơ thông qua module điều khiển
1 Kết quả đạt được
Sau thời gian học tập, tìm hiểu, đồ án học phần đã hoàn thành đúng thời hạn quy định, giải quyết các yêu cầu đặt ra ban đầu Hệ thống hoạt động ổn định, App nhận thông tin từ cảm biến gửi lên nhanh và có thể điều khiển cơ cấu chấp
Trang 18hành như ý muốn.
2 Hạn chế
● Bị giới hạn số phòng cái đặt do số chân của Raspberry Pi có hạn
● Mô hình rườm rà, đấu nối chưa đẹp
● Đôi lúc bị delay do tốc độ truyền mạng
3 Hướng phát triền
● Tích hợp thêm cảm biến, cơ cấu chấp hành để có thể giám sát nhiều thông tin của phòng hơn
● Thay vì nối trực tiếp cảm biến vào Raspberry Pi, có thể dùng Arduino để nối cảm biến rồi cho Arduino giao tiếp với Raspberry Pi qua các chuẩn truyền thông không dây, từ đó tiết kiện được nhiều chân trên Pi hơn và một Pi có thể làm việc với nhiều phòng hơn
Trang 19Danh mục hình ảnh
Hình 8 Giao diện điều khiển theo từng thông số của từng cảm biến 8
Tài liệu tham Khảo
[1] https://docs.python.org/3/tutorial/classes.html
[2] https://firebase.google.com/docs/auth/android/start?hl=be
[3] https://developer.android.com/guide/components/services
[4] https://www.mysensors.org/build/humidity
[5] https://www.mysensors.org/build/gas
[6] https://www.mysensors.org/build/raspberry