Giới thiệu về hệ thống nhà thông minh
Nhà thông minh, hay còn gọi là hệ thống nhà thông minh, là ngôi nhà được trang bị công nghệ tự động tiên tiến để điều khiển các yếu tố như ánh sáng, nhiệt độ, truyền thông đa phương tiện, an ninh và cửa tự động Mục tiêu của hệ thống này là nâng cao sự tiện nghi, an toàn trong cuộc sống và tối ưu hóa việc sử dụng các nguồn tài nguyên.
Theo wiseGeek, một ngôi nhà thông minh là nơi mà hệ thống máy tính hoặc điện thoại có khả năng giám sát và điều khiển nhiều khía cạnh trong cuộc sống hàng ngày Ví dụ điển hình là hệ thống chiếu sáng tự động, giúp tiết kiệm điện và tạo không gian phù hợp cho các sự kiện như tiệc tối Ngoài ra, nhà thông minh còn có thể điều chỉnh rèm cửa, kiểm soát nhiệt độ, phát hiện sự cố khí gas, tự động mở đóng cửa và ngăn chặn trộm Các ứng dụng sáng tạo khác bao gồm hệ thống giải trí âm thanh và hệ thống tưới cây tự động.
Các chức năng này được thực hiện bằng cách kết nối các thiết bị điện trong nhà với bộ điều khiển trung tâm thông qua hệ thống máy tính hoặc điện thoại, cho phép theo dõi trạng thái và đưa ra quyết định điều khiển hợp lý.
Nhà thông minh, từng là chủ đề trong các tác phẩm khoa học viễn tưởng, đã trở thành hiện thực từ thế kỷ 20 nhờ sự phát triển của ngành điện - điện tử và công nghệ thông tin Công nghệ này ngày càng tinh vi, với các tín hiệu điều khiển được mã hóa và truyền qua hệ thống dây dẫn hoặc mạng không dây đến các bộ chuyển mạch và ổ điện được lập trình sẵn Sự tự động hóa trong nhà không chỉ mang lại tiện ích cho cuộc sống hàng ngày mà còn đặc biệt hữu ích cho người lớn tuổi và người tàn tật, giúp họ sống tự lập hơn.
Lắp đặt sản phẩm thông minh mang lại nhiều lợi ích cho ngôi nhà và chủ nhân, tương tự như những gì công nghệ và máy tính cá nhân đã mang lại trong 30 năm qua Những lợi ích này bao gồm sự tiện nghi, tiết kiệm thời gian, tiền bạc và năng lượng.
Hệ thống nhà thông minh bao gồm các thành phần chính như cảm biến (nhiệt độ, chuyển động, ánh sáng, âm thanh, khí gas), bộ điều khiển (PLC, vi điều khiển), máy tính, khối thu phát tín hiệu (wifi, Bluetooth) và thiết bị chấp hành (Rơ le trung gian) Nhờ vào các cảm biến và bộ điều khiển, người dùng có thể theo dõi tình trạng ngôi nhà từ xa, từ đó đưa ra quyết định điều khiển thiết bị chấp hành phù hợp, đảm bảo an toàn và tạo ra môi trường sống tối ưu.
Hình1.1 Mô hình hệ thống nhà thông minh
Trên toàn cầu, nhiều kiến trúc sư đang tích cực xem xét việc tích hợp công nghệ nhà thông minh vào quy trình thiết kế và xây dựng Việc này không chỉ giúp giảm chi phí lắp đặt và bảo trì mà còn tạo ra một hệ thống điện đồng bộ và linh hoạt hơn cho toàn bộ tòa nhà Đặc biệt, những ngôi nhà và căn hộ đã được xây dựng trước đó cũng có thể được cải tạo để tích hợp hệ thống thông minh, mang đến trải nghiệm mới mẻ cho không gian sống.
Hiện nay, trong lĩnh vực nhà thông minh, các kỹ sư không ngừng sáng tạo để phát triển nhiều tiện ích mới và tối ưu hóa quy trình lắp đặt Trong tương lai gần, ngôi nhà thông minh sẽ có khả năng mang lại nhiều tiện ích vượt trội hơn nữa cho người sử dụng.
Tư duy tự điều chỉnh các thiết bị để giao tiếp với con người, giống như trong các bộ phim viễn tưởng, đang dần trở thành hiện thực.
Cuối những năm 1990, nhà thông minh được coi là xa xỉ, chủ yếu dành cho người giàu Tuy nhiên, sự phát triển của công nghệ vi điện tử và giảm chi phí đã giúp các giải pháp điều khiển thông minh trở nên phổ biến hơn, cho phép người dân có mức sống trung bình dễ dàng tiếp cận và làm chủ ngôi nhà thông minh.
Với sự phát triển nhanh chóng của công nghệ thông tin và internet, chi phí cho hệ thống nhà thông minh đã giảm đáng kể, dẫn đến nhu cầu sử dụng tăng cao Theo ABI Research, năm 2012 đã có hơn 1,5 triệu hệ thống nhà thông minh được lắp đặt tại Mỹ, và dự kiến con số này sẽ đạt 8 triệu vào năm 2017 Trong tương lai gần, nhà thông minh hứa hẹn sẽ trở thành xu hướng mới trong cuộc sống hiện đại.
Đặt bài toán
Xuất phát từ nhu cầu mở rộng quy mô ứng dụng hệ thống nhà thông minh, không chỉ dành cho các biệt thự hay khách sạn của giới thượng lưu, mà còn mang lại cơ hội cho những người có thu nhập trung bình sở hữu ngôi nhà thông minh với các tính năng tự động nhất định Đề tài này nhằm xây dựng mô hình nhà ở dân dụng thông minh, đảm bảo ngôi nhà có được những tính năng tự động phù hợp với khả năng kinh tế của nhiều gia đình.
Đóng mở cửa và bật tắt hệ thống chiếu sáng từ xa thông qua điện thoại/máy tính, modul Bluetooth HC06 kết nối với vi điều khiển trung tâm.
Bật tắt các thiết bị bằng giọng nói thông qua điện thoại gửi đến modul Bluetooth HC06 kết nối với vi điểu khiển trung tâm
Đóng mở cửa và bật tắt hệ thống chiếu sáng từ xa bằng việc giải mã tín hiệu DTMF của điện thoại.
Hiển thị nhiệt độ phòng, nồng độ khí gas trên LCD hoặc máy tính/điện thoại giám sát.
Hệ thống tự động phát hiện sự cố khí gas khi nồng độ vượt mức cho phép và cảnh báo bằng còi báo động Đồng thời, nó sẽ ngắt Rơ le trung gian cấp điện xoay chiều cho toàn bộ hệ thống điện trong ngôi nhà Khi sự cố được khắc phục, Rơ le trung gian sẽ tự động đóng lại, giúp cung cấp điện cho ngôi nhà hoạt động bình thường.
Ý tưởng xây dựng thuật toán điều khiển nhà thông minh
Mô hình nhà thông minh trong đề tài cho phép người dùng điều khiển thiết bị điện chiếu sáng và cửa ra vào từ xa thông qua một bộ điều khiển trung tâm Điều này mang lại sự tiện lợi, giúp người sử dụng có thể vận hành các thiết bị từ bất kỳ vị trí nào bằng ba phương thức khác nhau.
Cách 1 để điều khiển thiết bị từ xa là sử dụng modul Bluetooth HC06 Người dùng có thể gửi lệnh đóng cắt thông qua bàn phím máy tính hoặc điện thoại, với tín hiệu được mã hóa bởi ứng dụng trên hệ điều hành Android Tín hiệu này được truyền qua kênh Bluetooth đến vi điều khiển, nơi nó được xử lý theo chương trình đã lập trình sẵn Cuối cùng, vi điều khiển phát tín hiệu đến Rơ le trung gian để cung cấp điện cho động cơ cửa tự động hoặc thiết bị chiếu sáng.
Cách 2: Điều khiển ở khoảng cách gần bằng giọng nói thông qua modul blutooth
HC06 cho phép người dùng điều khiển thiết bị bằng khẩu lệnh giọng nói, được mã hóa thành tín hiệu qua ứng dụng trên hệ điều hành Android Tín hiệu này được gửi đến vi điều khiển qua kênh Bluetooth của module HC06, sau đó được xử lý theo mã chương trình đã lập trình sẵn Cuối cùng, vi điều khiển phát tín hiệu điều khiển đến rơ le trung gian để cấp điện cho các thiết bị.
Cách 3: Điều khiển ở khoảng cách xa bằng việc giải mã âm bàn phím nhờ modul
DTMF chuyển đổi tín hiệu âm thanh thành tín hiệu số, sau đó gửi đến bộ xử lý trung tâm qua modul DTMF để thực hiện lệnh điều khiển thiết bị Trong mô hình nhà thông minh, mỗi phòng còn được trang bị công tắc để người dùng có thể bật tắt thiết bị chiếu sáng một cách thủ công.
Hệ thống giám sát an toàn trong ngôi nhà được trang bị cảm biến nhiệt độ và cảm biến khí gas MQ2, kết hợp với vi điều khiển và module Bluetooth, cho phép hiển thị thông số nhiệt độ và nồng độ khí gas trên LCD, máy tính và điện thoại Đặc biệt, chế độ cảnh báo rò rỉ khí gas tự động kích hoạt còi báo động khi nồng độ khí gas vượt ngưỡng cho phép, đồng thời ngắt điện toàn bộ hệ thống để ngăn ngừa nguy cơ cháy nổ Khi sự cố được khắc phục, hệ thống sẽ tự động khôi phục điện cho toàn bộ ngôi nhà.
Hệ điều hành Android
Android là hệ điều hành mã nguồn mở dành cho thiết bị di động như smartphone, tablet và netbook, được phát triển bởi Google dựa trên nền tảng Linux kernel phiên bản 2.6 Các nhà sản xuất phần cứng có thể tự do sử dụng Android cho thiết bị của mình nếu đáp ứng các tiêu chuẩn cơ bản từ Google như cảm ứng đa điểm, GPS và 3G Nhờ tính mở và miễn phí, Android ngày càng trở nên phổ biến, với hầu hết các thiết bị đều tích hợp công nghệ Bluetooth, giúp người dùng dễ dàng kết nối và điều khiển Tính mở của hệ điều hành cũng cho phép phát triển ứng dụng tối ưu cho bộ điều khiển, mang lại sự thuận tiện và tiết kiệm chi phí cho người dùng.
Với những lợi thế hiện có, việc phát triển một ứng dụng trên nền tảng Android trở nên đơn giản hơn bao giờ hết Ứng dụng này sẽ chủ yếu thực hiện chức năng truyền và nhận dữ liệu qua Bluetooth để điều khiển bảng thiết bị Điều này có thể được thực hiện trên các smartphone Android mà người dùng sử dụng hàng ngày.
2.1.2 Cấu trúc hệ điều hành Android
Kiến trúc của hệ điều hành Android được chia thành 4 tầng: tầng hạt nhân Linux (v2.6) ở dưới cùng, tiếp theo là tầng Libraries & Android Runtime, sau đó là tầng Application Framework, và cuối cùng là tầng Application ở trên cùng Mô hình tổng thể này thể hiện các thành phần bên trong hệ thống Android.
Hình 2.1 Minh Kiến trúc của hệ điều hành Android
Android là một hệ điều hành mở, cho phép các ứng dụng bên thứ ba chạy nền với giới hạn sử dụng CPU từ 5-10% để tránh độc quyền Điều này khác biệt so với nhiều hệ điều hành di động khác, vì ứng dụng trên Android không có điểm vào cố định hay phương thức main để khởi động.
Vi điều khiển PIC 16F877A
Vi điều khiển PIC 16F877A là một vi điều khiển 8 bit tầm trung của hãng Microchip, nổi bật với kiến trúc Harvard Nó sử dụng tập lệnh RISC (Reduced Instruction Set Computer) với 35 lệnh cơ bản, cho phép thực hiện tất cả các lệnh trong một chu kỳ lệnh, ngoại trừ các lệnh rẽ nhánh.
2.2.1 Sơ đồ chân vật lý của PIC 16F877A
Vi điều khiển PIC 16F877 A bao gồm 40 chân vật lý được bố trí như Hình 2.2 dưới đây Bao gồm:
+ Các chân nguồn: Chân 11, 32 là các chân VDD (+5v)
Chân 12, là các chân VSS (0v)
+ Chân reset : chân số 1 MCLR là chân reset của pic chân này có nhiệm vụ khởi động lại VĐK PIC
+ 4 cổng xuất nhập tín hiệu:
PORT A và thanh ghi TRIS A; PORT B và thanh ghi TRIS B
PORT C và thanh ghi TRIS C; PORT D và thanh ghi TRIS D
+ Bộ đếm và định thời
TIMER 0 là bộ đinh thời 8bit timer hoạt động ở 2 chế độ: chế độ định thời và chế độ đếm.
TIMER 1 là bộ định thời 16 bit được tạo thành từ 2 thanh ghi 8bit TMR1L và TMR1H.
TIMER 2 là bộ định thời 8 bit được ứng dụng để điều chế độ rộng xung (PWM). + Các ngắt thông dụng:
Ngắt tràn timer 0; Ngắt RB RB4-RB7; Ngắt EXT RB0; Ngắt truyền thông
PIC 16F877A được trang bị 2 chân băm xung PWM CCP1 và CCP2, với chu kỳ xung được xác định bởi khoảng thời gian mà thanh ghi TMR2 tăng đến giá trị của thanh ghi PR2.
Hình 2.2 Sơ đồ chân vật lý của PIC 16F877A
2.2.2 Sơ đồ tối thiểu để PIC 16F877A có thể hoạt động được Để họ vi điều khiển PIC nói chung và PIC16F877A nói riêng hoạt động được phải đảm bảo các chân vật lý của vi điều khiển tối thiểu phải được đấu như Hình 2.3
Hình 2.3 Sơ đồ tối thiểu đảm bảo sự hoạt động của PIC 16F877A
Các thiết bị ngoại vi sử dụng trong đề tài
2.3.1 Cảm biến khí gas Để đo nồng độ khí gas (trường hợp rò rỉ khí gas trong ngôi nhà) và hiển thị lên LCD hay máy tính/điện thoại, trong đề tài sử dụng cảm biến khí gas MQ2 với các thông số vật lý như sau:
- Aout: điện áp ra tương tự Nó có giá trị từ 0.3V đến 4.5V, phụ thuộc vào nồng độ khí xung quang MQ2
- Dout: điện áp ra số, giá trị 0,1 phụ thuộc vào điện áp tham chiếu và nồng độ khí mà MQ2 đo được Các loại khí:
+LPG (Khí hóa lỏng) +i-butane
Chân ra số Dout rất hữu ích cho việc kết nối các ứng dụng đơn giản mà không cần vi điều khiển Chỉ cần điều chỉnh giá trị biến trở đến nồng độ mong muốn để nhận cảnh báo Khi nồng độ khí MQ2 đo được thấp hơn mức cho phép, Dout sẽ là 1 và đèn LED sẽ tắt Ngược lại, khi nồng độ khí vượt quá giới hạn cho phép, Dout sẽ là 0 và đèn LED sẽ sáng.
Hình 2.4 Hình ảnh cảm biến khí gas MQ2
2.3.2 Cảm biến nhiệt độ Để đo nhiệt độ trong ngôi nhà và hiển thị lên LCD hay máy tính/điện thoại, trong đề tài sử dụng cảm biến nhiệt độ DS18B20 với các thông số vật lý như sau:
Cảm biến nhiệt độ DS18B20 sử dụng giao tiếp ONE WIRE, cho phép tín hiệu và nguồn điện chung trên một dây dẫn Điều này cho phép nhiều cảm biến hoạt động đồng thời trên cùng một đường dẫn, rất phù hợp cho các ứng dụng đo lường đa điểm.
Các đặc điểm kỹ thuật của cảm biến DS1820 có thể kể ra một cách tóm tắt như sau:
Độ phân giải đo nhiệt độ đạt 9 bit, với dải đo từ -55°C đến 125°C và từng bước 0,5°C Độ chính xác có thể lên đến 0,1°C nhờ vào hiệu chỉnh phần mềm, và có khả năng đạt các độ phân giải cao hơn như 10 bit, 11 bit, và 12 bit.
- Điện áp nguồn nuôi có thể thay đổi trong khoảng rộng (từ 3,0 V đến 5,5 V).
- Dòng tiêu thụ tại chế độ nghỉ cực nhỏ -Thời gian lấy mẫu và biến đổi thành số tương đối nhanh, không quá 200 ms
- Mỗi cảm biến có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trên chip (on chip).
Hình 2.5 Hình ảnh cảm biến nhiệt độ DS18B20
2.3.3 Thiết bị hiển thị LCD
Mạch này dùng để hiện thị trạng thái làm việc của hệ thống Sử dụng LCD 16x2 (2 dòng 16 cột), được nối vào PIC16F877A.
- Các chân Vcc, Vss và Vee:
Chân Vcc cấp dương nguồn 5V, chân Vss nối đất, chân Vee được dùng để điều khiển độ tương phản của màn hình LCD.
Khi ở mức thấp, chỉ thị được truyền đến LCD như xoá màn hình , vị trí con trỏ
….Khi ở mức cao, kí tự được truyền đến LCD.
Chân này được sử dụng để xác định hướng truyền dữ liệu giữa LCD và vi điều khiển; ở mức thấp, dữ liệu sẽ được ghi vào LCD, trong khi ở mức cao, dữ liệu sẽ được đọc từ LCD Nếu chỉ cần ghi dữ liệu lên LCD, có thể nối chân này xuống GND để tiết kiệm chân.
LCD cho phép truy cập và xuất dữ liệu thông qua chân RS và R/W Khi chân E ở mức cao (1), LCD sẽ kiểm tra trạng thái của hai chân này và phản ứng tương ứng Để chốt dữ liệu trên các chân dữ liệu, cần phải áp dụng một xung mức cao xuống thấp với độ rộng tối thiểu là 450ns Ngược lại, khi chân E ở mức thấp (0), LCD sẽ bị vô hiệu hóa hoặc bỏ qua tín hiệu từ hai chân RS và R/W.
Các chân D0 - D7 là 8 chân dữ liệu 8 bít, có chức năng gửi thông tin lên màn hình LCD hoặc đọc nội dung từ các thanh ghi của nó Các ký tự được truyền theo mã ASCII tương ứng, bên cạnh đó, còn có các mã lệnh cho phép xoá màn hình, đưa con trỏ về đầu dòng, hoặc làm nhấp nháy con trỏ.
- LCD có 2 chế độ giao tiếp:
Chế độ 4 bit sử dụng 4 chân D4 đến D7 để truyền dữ liệu, trong khi chế độ 8 bit sử dụng cả 8 chân từ D0 đến D7 Khi truyền 1 byte ở chế độ 4 bit, nửa cao của byte sẽ được truyền trước, sau đó là nửa thấp.
Trước khi truyền kí tự lên màn hình LCD, cần thiết lập chế độ hoạt động như 4 bit hay 8 bit, số dòng hiển thị, và trạng thái của con trỏ Để đọc thanh ghi lệnh, cần đặt RS=0 và R/W=1, sau đó tạo xung cao xuống thấp cho bít E Nếu bit D7 (cờ bận) ở mức cao, LCD đang bận và không thể nhận lệnh hay dữ liệu Chỉ khi D7=0, ta mới có thể gửi thông tin đến LCD, vì vậy việc kiểm tra bit cờ bận trước khi ghi thông tin là rất quan trọng.
2.3.4 Module Bluetooth HC06 a Giao tiếp không dây Bluetooth
Bluetooth là công nghệ không dây cho phép thiết bị điện tử giao tiếp trong khoảng cách ngắn qua sóng vô tuyến Nó hoạt động trên băng tần ISM từ 2.40 đến 2.48 GHz, một dải tần không cần đăng ký, được sử dụng cho các thiết bị không dây trong các lĩnh vực công nghiệp, khoa học và y tế.
Bluetooth được phát triển để thay thế dây cáp giữa máy tính và các thiết bị truyền thông cá nhân, cho phép kết nối vô tuyến giữa các thiết bị điện tử một cách dễ dàng và tiết kiệm chi phí Khi được kích hoạt, Bluetooth tự động tìm kiếm và kết nối với các thiết bị khác có cùng công nghệ trong khu vực xung quanh Công nghệ này chủ yếu được sử dụng để truyền tải dữ liệu và âm thanh.
Bluetooth được thiết kế để hoạt động ở mức năng lượng rất thấp Đặc tả đưa ra 3 mức năng lượng từ 1mW tới 100 mW
- Mức năng lượng 1 (100mW): Được thiết kế cho những thiết bị có phạm vi hoạt động rộng (~100m).
- Mức năng lượng 2 (2.5mW): Cho những thiết bị có phạm vi hoạt động thông thường (~10m)
- Mức năng lượng 3 (1mW): Cho những thiết bị có phạm vi hoạt động ngắn (~10cm).
Các đặc điểm của Bluetooth Ưu điểm:
- Tiêu thụ năng lượng thấp, cho phép ứng dụng được trong nhiều loại thiết bị, bao gồm cả các thiết bị cầm tay và điện thoại di động.
- Giá thành hạ (Giá một chip Bluetooth đang giảm dần, và có thể xuống dưới mức 5$ một đơn vị).
- Khoảng cách giao tiếp cho phép :
+ Khoảng cách giữa hai thiết bị đầu cuối có thể lên đến 10m ngoài trời, và 5m trong tòa nhà.
+ Khoảng cách thiết bị đầu cuối và Access point có thể lên tới 100m ngoài trời và 30m trong tòa nhà.
Bluetooth hoạt động trên băng tần không đăng ký 2.4GHz thuộc dãy băng tần ISM, cho phép tốc độ truyền dữ liệu tối đa lên đến 1Mbps Điều đặc biệt là các thiết bị sử dụng Bluetooth không cần phải nhìn thấy nhau trực tiếp để kết nối.
Bluetooth giúp phát triển ứng dụng dễ dàng bằng cách kết nối các ứng dụng với nhau thông qua các chuẩn "Bluetooth profiles", cho phép chúng hoạt động độc lập với phần cứng và hệ điều hành khác nhau.
- Bluetooth được dùng trong giao tiếp dữ liệu tiếng nói: có 3 kênh để truyền tiếng nói, và 7 kênh để truyền dữ liệu trong một mạng cá nhân.
- An toàn và bảo mật: được tích hợp với sự xác nhận và mã hóa ( Build in authentication and encryption)
- Tính tương thích cao, được nhiều nhà sản xuất phần cứng cũng như phần mềm hỗ trợ.
- Sử dụng “Frequency Hopping” giúp chống nhiễu giảm va chạm sóng tối đa.
- Có khả năng bảo mật từ 8->128bit.
- Do sử dụng mô hình adhoc nên không thể thiết lập các ứng dụng thời gian thực.
- Khoảng cách kết nối còn ngắn so với các công nghệ mạng không dây khác.
- Số thiết bị active, pack cùng lúc trong một piconect còn hạn chế.
- Tốc độ truyền của Bluetooth không cao.
- Bị nhiễu bởi một số thiết bị sử dụng sóng radio khác, các trang thiết bị khác.
- Bảo mật còn thấp. b Module Bluetooth HC06
Module Bluetooth cho phép truyền nhận dữ liệu giữa vi điều khiển và Smartphone Android Vi điều khiển thực hiện hai nhiệm vụ chính: xử lý dữ liệu và điều khiển đóng ngắt các rơle, qua đó kiểm soát dòng điện 220VAC cung cấp cho các thiết bị điện.
Giới thiệu phần mềm App Inventor
Phương pháp lập trình mới mẻ này cho phép người dùng thiết kế ứng dụng bằng cách kéo thả đồ họa trực quan mà không cần biết viết code, nhờ sự hỗ trợ từ Google và đại học MIT App Inventor nổi bật với khả năng cho phép người dùng thiết kế và thử nghiệm ứng dụng trực tiếp trên điện thoại Android kết nối với máy tính Tất cả các bước lập trình diễn ra qua giao diện WYSIWYG, giúp người dùng dễ dàng viết phần mềm mà không cần tham khảo hướng dẫn phức tạp.
App Inventor, với cách sử dụng đơn giản, cung cấp nhiều tính năng hữu ích cho người dùng, bao gồm khả năng tự động nhắn tin, xác định vị trí qua GPS và giao tiếp với các ứng dụng web phổ biến như Amazon, Facebook và Twitter.
CÁCH TẠO GIAO DIỆN TRÊN APP INVENTOR
To get started with MIT App Inventor, visit the "APP INVENTOR" website and select "Create apps!" The site will automatically log in using your current Gmail account After granting permission, navigate to the projects tab and click on "Start new project." Name your project "NHATHONGMINHK49." You will then see the "Screen1" interface, where you can begin adding buttons and other components.
Hình 2.14 Bước đầu thiết lập tạo ứng dụng
In the left "User Interface" panel, select "List Picker." Then, in the Properties section on the right side of the screen, assign a name to the button in the "Text" field, such as "FIND DEVICE." This step is essential for creating a button that allows the phone to connect to the actual device via Bluetooth module.
Tiếp theo, trong phần "User interface" ở cửa sổ bên trái, chọn "Label" Sau đó, ở mục Properties bên phải, tìm đến "Text" và gán tên cho nhãn, ví dụ: "HỆ THỐNG NHÀ THÔNG MINH K50", nhằm tạo tên cho mô hình điều khiển.
Tiếp tục trong phần "User interface" bên trái, chọn "Label" Trong mục Properties bên phải, xóa nội dung trong ô "Text" để chỉ hiển thị thông tin khi nhận dữ liệu từ vi điều khiển, như nhiệt độ hoặc nồng độ khí gas.
+ Để chọn ảnh nền cho giao diện: Trên mục “Properties” bên phải cửa sổ màn hình vào “ Back ground image”, sau đó chọn ảnh nền và OK.
Hình 2.15 Xây dựng giao diện cho ứng dụng
+ Để tạo khung chứa các nút ấn điều khiển: Bên cửa sổ trái “ User interface” chọn
“ Lay out” Chọn “ Table Arrangement” , sau đó sửa số hàng, số cột cho phù hợp với khung để tạo giao diện {Thông thường cột: 3, hàng: 8}.
Để thêm các nút bấm, bạn hãy vào phần "Giao diện người dùng" và chọn "NÚT" Thay đổi thuộc tính của các nút theo nhu cầu điều khiển thiết bị, sau đó bố trí số lượng nút cần thiết một cách hợp lý trong khung đã chọn ở bước trước.
Để liên tục cập nhật thông tin giữa vi điều khiển và điện thoại, hãy chọn “SENSOR” rồi nhấn vào Clock Lưu ý rằng sau khi gắp, cần thả vào khung Creen và chú ý đến khu vực ngoài khung.
Creen phía dưới sẽ xuất hiện giao diện của Clock1.
Để kết nối qua Bluetooth, hãy chọn “Connectivity” và sau đó chọn “Bluetooth Client” Lưu ý rằng sau khi gắp thiết bị vào khung Screen, giao diện Bluetooth Client sẽ xuất hiện phía dưới khung Screen.
Hình 2.16 Giao diện hoàn chỉnh của ứng dụng
Để viết Code cho các nút ấn… ta thực hiện:
+ Vào “Blocks” trên thanh Tabar phía bên phải:
Bước 1: Tại cửa sổ “Blocks” “List Picker1, kéo ra cửa sổ Viewer lấy “ When
List Picker1 Before picking do” màu vàng (1) lấy “SET LIT PICKER 1.ELEMENTS To” màu xanh (2) và đặt (2) vào lòng của (1).
Bước 2: Vào “Bluetooth Client 1” lấy “Bluetooth Client 1.Addresses And Names” màu xanh(3), sau đó lấy (3) đặt vào (2).
{Việc kết nối (1), (2), (3) nhằm mục đích để hiển thị các thiết bị kết nôi với giao diện trên điện thoại qua Bluetooth}
Bước 3: vào tiếp “LIST PICKER1” lấy “When LIST PICKER1 After picking do” màu vàng(1), tiếp tục lấy “set Listpicker1.selection to”màu xanh (2) và đưa (2) vào (1).
Tiếp tục vào “Bluetooth Client1” lấy “Call Bluetooth Client 1.Connect address” màu tím(3), đưa (3) vào (2).
Tiếp tục vào “LIST PICKER1” lấy “Listpicker1.selection” màu xanh(4), đưa (4) vào (3).
{Việc kết nối (1), (2), (3),(4) nhằm mục đích cho phép kết nối với thiết bị nào qua
Bước 4: vào “Clock” lấy “When.clock1.timer do” màu vàng(1)
Tiếp tục vào “Built in” “Control” lấy “if.then” màu vàng(2), thả (2) vào lòng (1).
Tiếp theo vào “Bluetooth Client 1” lấy “Bluetooth Client 1.isconnected” màu xanh
(3), sau đó đặt (3) vào “if” của (2)
Vào “Set Lable 2” lấy “Set Lable 2.text to” màu xanh (4) sau đó đặt (4 )vào
To retrieve data from "Bluetooth Client 1," first take the "Call.Bluetooth Client 1.Receivetext number of bytes" (purple 5) and place it into the variable (4) Next, obtain the "Call.Bluetooth Client 1.Bytes Available to Receive" (purple 6) and assign it to the variable (5).
Bước 4 nhằm tạo ra một bộ đếm ngược, trong đó mỗi lần tràn timer sẽ hiển thị các thông số như nhiệt độ và khí gas, được thu thập từ cảm biến và truyền tải lên giao diện thông qua vi điều khiển.
Bước 5: Viết Code cho các nút ấn
+ Tạo Button 1: “ON PLV” ta thực hiện như sau:
Vào “Button 1” lấy “When Button1 Click do” màu vàng(1),
Vào “Bluetooth Client 1” lấy“Call Bluetooth Client 1 Sent Text text” màu tím (2), đặt (2) vào (1).
Để tạo code cho các nút trong cửa sổ Block, bạn vào mục “Built in” và chọn “Text”, sau đó lấy cái đầu tiên màu hồng (3) Tiếp theo, điền ký tự để truyền thông ví dụ như: 1, 2, 3… và sử dụng chuột phải vào code để sao chép cho các nút còn lại.
”Button 1” chọn “Duplicate” và sửa các thuộc tính cho các nút tiếp theo.
Chú ý: Để căn chỉnh các khung chữ ra giữa màn hình ta kích chuột trái vào màn hình “Creen1” sau đó đến mục “AlignHorizontal” chọn “center
Hình 2.17 Viết code cho ứng dụng
Để down chương trình giao diện về điện thoại ta thực hiện:
To create an APK file, navigate to the "Build" section on the Tabar and select "App" to save the APK to your computer The website will automatically download and generate the apk file Once this is complete, simply copy the apk file to your phone to finish the process.
Hình 2.18 Build ứng dụng trên các môi trường giả lập
Thiết kế phần cứng
Mục đích của đề tài là xây dựng hệ thống điều khiển thiết bị từ xa qua Bluetooth, wifi và tín hiệu DTMF Hệ thống này cho phép kết nối và trao đổi dữ liệu giữa máy tính hoặc điện thoại Android với Module Bluetooth HC-06 và Module giải mã âm thanh DTMF Người dùng có thể điều khiển các thiết bị điện ON/OFF thông qua Smartphone Android nhờ vào mạch Rơle được điều khiển bởi Vi điều khiển Pic 16F877A.
3.1.1 Thiết kế mạch điều khiển
Sơ đồ khối của mạch điều khiển sử dụng vi điều khiển pic 16F877A Được mô tả:
Hình 3.1 Sơ đồ khối mạch điều khiển
Hình 3.2 Sơ đồ nguyên lý khối nguồn
Khối nguồn cung cấp dòng điện ổn định cho toàn mạch, hoạt động với nguồn từ 6V đến 24VDC IC7805 được sử dụng để ổn định dòng 5V cho vi điều khiển và các khối khác Diode bảo vệ mạch khỏi việc cắm ngược âm dương, trong khi các tụ C6, C7 và C4 đóng vai trò là tụ liên lạc và tụ bù điện áp.
Hình 3.3 Sơ đồ nguyên lý mạch Reset
Khối RESET có chức năng đưa vi điều khiển về trạng thái ban đầu Khi nút Reset được nhấn, điện áp +5V từ nguồn sẽ được kết nối vào chân Reset của vi điều khiển, khiến điện áp tại chân này giảm đột ngột về 0 Sự thay đổi này được vi điều khiển nhận biết và khởi động lại hệ thống về trạng thái ban đầu.
Hình 3.4 Sơ đồ nguyên lý mạch dao động
Là khối tạo dạo động cho vi điều khiển hoạt động Trong mạch trên sử dụng thạch anh 20Mhz.
Hình 3.5 Sơ đồ nguyên lý điều khiển Rơ le
Vi điều khiển PIC 16F877A nhận tín hiệu điều khiển và truyền vào IC cách ly quang, giúp mở dòng cho Transistor NPN Q4 Qua đó, Q4 điều khiển việc đóng và tắt Rơle, cung cấp điện 220VAC cho thiết bị điện hoạt động.
RC1/T1OSI/CCP2 RC3/SCK/SCL RC2/CCP1 16 17 18
RB7/PGD 40 RB6/PGC 39 RB5 38 RB4 37 RB3/PGM 36 RB2 35 RB1 34 RB0/INT 33
RD7/PSP7 30 RD6/PSP6 29 RD5/PSP5 28 RD4/PSP4 27 RD3/PSP3 22 RD2/PSP2 21
RC7/RX/DT 26 RC6/TX/CK 25 RC5/SDO 24 RC4/SDI/SDA 23
Hình 3.6 Sơ đồ nguyên lý khối vi điều khiển trung tâm
3.1.2 Hướng dẫn các bước thiết kế trên phần mềm Proteous và Altium a Hướng dẫn mô phỏng trên Proteous
- Cài đặt Proteus xong, vào Start menu, khởi động ISIS 7 profesionnal.
Giao diện chính như sau:
Cụm 1: Tạo nhanh một trang thiết kế, mở trang thiết kế đã tạo, lưu trang thiết kế Cụm 2: In cả trang, chọn vùng in tùy ý
Cụm 3: Chia lưới điểm trang thiết kế
Cụm 4: Zoom linh kiện về giữa trang, phóng to trang, thu nhỏ trang, fix trang, zoom vùng tùy chọn
Cụm 5: Cắt, copy, paste trang
Cụm 6: Copy, move, quay, xóa linh kiện trên trang
Cụm 7: Chỉ dùng biểu tượng đầu, chọn linh kiện
1 Component, cho phép chọn linh kiện sau khi nhấp nút P ở hộp thoại DEVICES 2.Chấm điểm trên trang
3.Tạo nhãn: nhấp trái chuột lên dây dẫn và đặt tên
4.Text:nhấp trái chuột và viết
5.Tạo bus:nhấp trái kéo đến điểm khác, lại nhấp trái rồi nhấp phải.Phải đặt label cho cùng tên cho các dây dẫn sử dụng chung bus
7.Nhấp trái lên linh kiện để xem edit component
13.Voltage Probe, giống vôn kế thường nhưng chỉ có 1 đầu dây, hiện số trực tiếp14.Current Probe, như trên nhưng cho giá trị dòng
15.Dụng cụ ảo: oscilloscope, vôn kế AC,DC, ampe kế AC,DC,…
21.Text 2D, nhấp trái vào trang và type
Quay trái, phải, đối xứng chân ngang dọc linh kiện trên hộp hiển thị hình linh kiện
Thanh số 4 Điều khiển start, step by step, pause, stop quá trình mô phỏng
+ Thiết kế mạch mô phỏng Đầu tiên chúng ta sẽ lấy tất cả các linh kiện cần dùng ra hộp thoại DEVICES, có 2 cách:
- Nhấp vào biểu tượng đầu tiên ở cụm 7 trên thanh số 1
- Nhấp vào biểu tượng số 1 trên thanh số 2, rồi nhấp vào chữ P ở hộp thoại DEVICES
Ta sẽ có hộp thoại như sau
Gõ tên linh kiện cần lấy vào ô Keywords (Ví dụ Pic16F877 hay 16f đều được,miễn sao có từ trong tên linh kiện và thây nó xuất hiện là được)
Khi bạn nhấp vào tên linh kiện, hình ảnh và sơ đồ chân mạch in sẽ xuất hiện bên cạnh Để chọn linh kiện, bạn chỉ cần nhấp OK hoặc nhấp đúp vào tên linh kiện, và tên linh kiện đã chọn sẽ hiển thị trong hộp thoại DEVICES.
Để chọn linh kiện cho mạch, bạn gõ "7SEG" để lấy LED 7 thanh và "minres10k – 100R" để chọn điện trở Hãy chọn các LED với màu sắc như xanh, đỏ và vàng Để đưa linh kiện vào trang thiết kế, bạn chỉ cần nhấp vào tên linh kiện trong hộp thoại.
Để thay đổi thiết kế trên DEVICES, hãy sử dụng thanh công cụ và nhấp trái vào trang để đặt linh kiện, chẳng hạn như con Pic Để di chuyển linh kiện đến vị trí mong muốn, bạn có thể sử dụng hai phương pháp khác nhau.
Để di chuyển linh kiện, bạn nhấp chuột phải vào nó (khi đó nó sẽ chuyển sang màu đỏ), sau đó chọn biểu tượng "move" trong cụm số 6 trên thanh công cụ (nút thứ 2 từ trái sang) Khi linh kiện đã được chọn, nó sẽ dính theo chuột Bạn chỉ cần di chuyển đến vị trí mong muốn và nhấp chuột trái để hoàn tất.
Để thực hiện thao tác, bạn chỉ cần nhấp chuột phải vào đối tượng (khi đó nó sẽ chuyển sang màu đỏ), sau đó nhấn và giữ chuột trái, kéo đến vị trí bạn muốn và thả ra Vậy là xong!
Để thiết kế mạch điện, bạn cần đưa tất cả linh kiện ra trang thiết kế Để lấy nguồn và đất, hãy nhấp vào biểu tượng trên thanh công cụ số 2, khi đó hộp thoại DEVICES sẽ hiển thị danh sách linh kiện, bao gồm cả nguồn và đất Sau khi lấy xong, bạn có thể trở về danh sách linh kiện ban đầu bằng cách nhấp lại vào biểu tượng trên thanh công cụ số 2 Cuối cùng, di chuyển các linh kiện đến vị trí thích hợp để chuẩn bị cho việc đi dây.
Tương tự với các linh kiện còn lại ta lấy lần lượt a rồi sắp xếp sao cho hợp lí và đẹp mắt
Tiến hành nối dây cho đúng sơ đồ nguyên lí, có 2 cách đi dây:
- Cách 1: bám chuột trái vào đầu dây cần nối sau đó di chuột đến đích cần nối
- Cách 2: sử dụng công cụ wire label mode để nối Để thực hiện cách 2 ta phải nối nhỏ 1 đoạn dây vào đầu linh kiện cần nối như hình sau
Tiếp theo t bấm công cụ sau đó kích chuột trái vào các đầu nối với nhau ghi tên giống nhau là được
Nối chân x1 và x2 với chân 13,14 của vi điều khiển thì ra làm như trong hình.
Sau khi hoàn thành việc kết nối từng linh kiện theo đúng nguyên lý, ta sẽ có được mạch mô phỏng Để nạp file hex cho PIC nhằm thực hiện mô phỏng, hãy nhấp chuột phải và sau đó nhấp chuột trái vào con PIC để mở hộp thoại Edit Component.
Program file: bấm vào hình tệp tin rồi chọn file hex
Processor clock frequency: chọn theo đúng tần số của thạch anh đã chọn
Khâu thiết kế mạch đã hoàn tất và bây giờ cần mô phỏng để kiểm tra xem vi điều khiển PIC có thực hiện được các chức năng mong muốn hay không Sử dụng thanh điều khiển để bắt đầu quá trình này Dưới đây là hướng dẫn chi tiết về cách thiết kế trên phần mềm Altium.
Với sự phát triển nhanh chóng của công nghệ máy tính, CAD (Thiết kế hỗ trợ bằng máy tính) ngày càng hoàn thiện và được ứng dụng rộng rãi trong nhiều lĩnh vực khoa học kỹ thuật Trong ngành Điện tử, nhiều phần mềm CAD như OrCAD/PSPICE, EAGLE, Multisim Workbench, MicroSim và Altium Designer cho phép người dùng vẽ mạch, mô phỏng mạch điện và chuyển đổi sang mạch in một cách nhanh chóng và hiệu quả.
Altium Designer, trước đây được biết đến với tên gọi Protel DXP, là một trong những phần mềm thiết kế mạch điện tử hàng đầu hiện nay Được phát triển bởi Altium Limited, Altium Designer cung cấp cho người dùng một môi trường làm việc chuyên nghiệp và hiệu quả.
+ Vẽ sơ đồ nguyên lí
Khởi động chương trình từ shortcut trên destop màn hình nền hoặc từ Menu Start
Để bắt đầu với Altium Designer 6, trước tiên bạn cần tạo một dự án mới để thiết lập sơ đồ nguyên lý Cửa sổ làm việc của Altium Designer sẽ hiển thị như sau khi bạn mở chương trình.
Xây dựng phần mềm
3.2.1 Lưu đồ thuật toán chương trình điều khiển nhà thông minh
Lưu đồ thuật toán chương trình điều khiển nhà thông minh theo yêu cầu của bài toán đã đề xuất trên vi điều khiển PIC16F877A như sau:
Hình 3.12 Lưu đồ thuật toán viết cho vi điều khiển
3.2.2 Code chương trình điều khiển nhà thông minh
Chương trình điều khiển nhà thông minh được xây dựng cho vi điều khiển PIC 16F877A, sử dụng ngôn ngữ lập trình C và được biên dịch trên trình biên dịch PIC C Compiler.
Chương trình điều khiển mô hình nhà thông minh
#fuses nowdt, hs, noput, noprotect, nodebug, nobrownout, nolvp, nocpd, nowrt
#use rs232(baud00,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#define Q1 PIN_D4 float nhietdo; float khiga;
//Ngat Timer0 de uu tien cu 200 ms thi doc tin hieu tu mot lan
#int_RDA void RDA_isr(void)
{ char cmd = getc(); switch (cmd)
Trong đoạn mã trên, các trường hợp được xử lý theo từng mã số để điều khiển trạng thái của các phòng và cửa Cụ thể, mã '1' và '2' điều chỉnh trạng thái của phòng tắm, mã '3' và '4' cho phòng ngủ, mã '5' và '6' cho phòng khách, mã '7' và '8' cho phòng bếp Mã 'a' và 'b' điều khiển trạng thái của cửa DC1 và DC2, trong khi mã '0' và '9' xử lý cửa DC3 và DC4 Cuối cùng, mã 'c' bật tất cả các phòng, còn mã 'd' tắt tất cả các phòng.
//*** CHUONG TRINH CHINH *** void init(void)
The article outlines a series of commands for configuring various components in a microcontroller system It includes functions to output low signals to specific rooms such as the bathroom, bedroom, living room, and kitchen, while also managing overall settings Key operations involve setting PWM duty cycles, configuring I/O ports, initializing the LCD, and enabling global and interrupt-driven functionalities Additionally, it sets up timers for precise control and establishes external interrupt edges for responsive operations.
// chuong trinh con doc nhiet do khi gas void nhiet_do_khi_ga()
{ setup_adc(adc_clock_internal); set_adc_channel( 0 ); setup_adc_ports(AN0); khiga=read_adc(); khiga=-(khiga*0.48-7.8); khiga=-khiga; nhietdo=ds18b20_read(); lcd_putcmd(line_1);
Printf(lcd_putChar,"NHIET DO: %3.1f ",nhietdo); lcd_putChar(223); lcd_putcmd(line_2);
Printf(lcd_putChar,"KHI GA: %3.1f ",khiga); lcd_putchar(" %");
Printf(" ^_^ khi ga : %3.1f nhiet do : %3.1f ^_^ \r",khiga,nhietdo, ); if (khiga> 0)
{ output_high(coi); delay_ms(200);} else{ output_low(coi); delay_ms(5000);
{output_low(AT_tong);}} if (khiga>20)
{output_high(AT_tong); delay_ms(100); }
// CHUONG TRINH GIAO TIEP VOI MODULE DTMF8870 if((input(Q4)==1) && (input(Q3)==0) && (input(Q2)==0) && (input(Q1)==0))
{ output_high(phong_khach);//1 break; } if((input(Q4)==0) && (input(Q3)==1) && (input(Q2)==0) && (input(Q1)==0))
{ output_low(phong_khach);//2 break; } if((input(Q4)==1) && (input(Q3)==1) && (input(Q2)==0) && (input(Q1)==0))
{ output_high(phong_ngu);//3 break; } if((input(Q4)==0) && (input(Q3)==0) && (input(Q2)==1) && (input(Q1)==0))
{ output_low(phong_ngu);//4 break; } if((input(Q4)==1) && (input(Q3)==0) && (input(Q2)==1) && (input(Q1)==0))
{ output_high(phong_bep); // 5 break; } if((input(Q4)==0) && (input(Q3)==1) && (input(Q2)==1) && (input(Q1)==0))
{ output_low(phong_bep);//6 break;
} if((input(Q4)==1) && (input(Q3)==1) && (input(Q2)==1) && (input(Q1)==0))
{ output_high(phong_tam); //7 break;
} if((input(Q4)==0) && (input(Q3)==0) && (input(Q2)==0) && (input(Q1)==1))
{ output_low(phong_tam);//8 break;
} if((input(Q4)==1) && (input(Q3)==0) && (input(Q2)==0) && (input(Q1)==1))
{ output_low(DC1); // mo cua output_high(DC2); // 9 break;
} if((input(Q4)==0) && (input(Q3)==1) && (input(Q2)==0) && (input(Q1)==1))
{ output_low(DC2); // 0 output_high(DC1); // dong cua break;
{ output_low(pin_E1); setup_adc(ADC_CLOCK_DIV_2); init(); while(true)
} b Code chương trình điều khiển nhà thông minh bằng giọng nói.
Chương trình điều khiển mô hình nhà thông minh
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use rs232(baud00,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#define TB4 PIN_C0 float nhietdo; int1 a=0,b=0,c=0,d=0;
#int_RDA void RDA_isr(void)
{ char cmd = getc(); switch (cmd)
In the provided code, various cases dictate the output states of different variables For instance, case '1' and case '2' control the output of TB1, with case '1' setting it to high and case '2' to low Similarly, TB2's output is managed by case '3' for high and case '4' for low The pattern continues with TB3 and TB4, where case '5' and case '6' adjust TB3's output, while case '7' and case '8' do the same for TB4 This structured approach allows for clear management of multiple outputs based on specific cases.
{ output_high(TB1); output_high(TB2); output_high(TB3); output_high(TB4);
{ output_low(TB1); output_low(TB2); output_low(TB3); output_low(TB4);
// output_high(TB4); set_tris_a(0x01); lcd_init();
// set_tris_c(0x80); set_tris_e(0x00); enable_interrupts(GLOBAL); //Cho phep ngat enable_interrupts(INT_RDA);//Cho phep ngat nhan du lieu noi tiep } void nhiet_do()
{ nhietdo=ds18b20_read(); lcd_putcmd(line_2);
Printf(lcd_putChar,"NHIET DO: %3.1f ",nhietdo); lcd_putChar(223);
Printf(lcd_putChar,"DK QUA GIONG NOI "); while(true)
Kết luận và định hướng phát triển
Kết quả từ mô hình nhà thông minh cho thấy thuật toán xây dựng đáp ứng đầy đủ yêu cầu về điều khiển không dây qua điện thoại hoặc máy tính, tự động báo và giải trừ sự cố khi nồng độ khí gas vượt mức cho phép, từ đó đảm bảo an toàn cho ngôi nhà Mô hình sử dụng công nghệ Bluetooth, giải mã giọng nói, tín hiệu DTMF cùng các linh kiện điện tử giá rẻ, cho phép lắp đặt dễ dàng tại bất kỳ ngôi nhà dân dụng nào Tính năng tự động của thiết bị và khả năng đầu tư của từng gia đình sẽ quyết định mức độ phát triển của các mô hình phù hợp.
- Mô hình trên có thể phát triển với việc mở rộng các ứng dụng khác trong ngôi nhà
Phát triển thiết bị điều khiển cho phép nhiều điện thoại hoặc máy tính cùng lúc điều khiển các thiết bị, mang lại sự tiện lợi và linh hoạt cho người dùng.
- Phát triển điều khiển thiết bị điện qua các mạng 3G