Trong báo cáo này, ta sẽ tìm hiểu về các thành phần cơ bản củamột hệ thống IoT từ khái quát đến chi tiết, sau đó sẽ thiết kế một hệthống IoT đơn giản với các chức năng: đọc giá trị nhiệt
TỔNG QUAN VỀ ỨNG DỤNG IOT
Khái niệm IoT
IoT, hay Internet Vạn Vật, là thuật ngữ chỉ sự kết nối giữa các thiết bị và internet, cho phép thu thập và chia sẻ dữ liệu trên quy mô toàn cầu Mạng lưới này bao gồm mọi thiết bị có khả năng kết nối internet và chia sẻ thông tin, tạo nên một hệ sinh thái thông minh và liên kết chặt chẽ.
Mạng IoT kết nối các thiết bị và đồ vật thông qua cảm biến và phần mềm, cho phép chúng thu thập và trao đổi dữ liệu một cách hiệu quả.
Internet vạn vật (IoT) mở rộng lợi ích của mạng internet tới mọi thiết bị được kết nối, không chỉ giới hạn ở máy tính Khi một thiết bị được kết nối với internet, nó trở nên thông minh hơn nhờ khả năng gửi và nhận thông tin, từ đó tự động hoạt động dựa trên dữ liệu thu thập được.
Các thiết bị IoT bao gồm những đồ vật được trang bị cảm biến để thu thập dữ liệu môi trường, giống như các giác quan Chúng có thể là máy tính hoặc bộ điều khiển nhận dữ liệu và điều khiển các thiết bị khác, hoặc là những đồ vật tích hợp cả hai chức năng này.
Tiềm năng ứng dụng của Internet vạn vật (IoT) rất đa dạng và hiện diện trong nhiều lĩnh vực khác nhau Một hệ thống IoT hoàn chỉnh bao gồm bốn bước chính: thu thập dữ liệu, chia sẻ dữ liệu, xử lý dữ liệu và đưa ra quyết định.
Hình 1 Nguyên lí hoạt động cơ bản của một hệ thống IoT
Sự ra đời của Internet vạn vật (IoT) được thúc đẩy bởi sự phát triển mạnh mẽ của Internet và công nghệ năng lượng, bán dẫn, đánh dấu cuộc cách mạng công nghệ số 4.0 IoT đã trở thành một xu hướng tất yếu, đồng thời bắt nhịp với những tiến bộ công nghệ hiện đại.
Tiềm năng phát triển của IoT đang ngày càng được khẳng định với những bước tiến mạnh mẽ trong những năm gần đây Sự xuất hiện của hệ thống nhà thông minh và các thiết bị gia dụng thông minh có điều khiển bằng giọng nói đã thu hút sự chú ý lớn Theo nghiên cứu của McKinsey, số lượng nhà thông minh tại Mỹ và các nước Tây Âu đang gia tăng mạnh mẽ, cho thấy xu hướng tích cực trong việc áp dụng công nghệ IoT vào đời sống hàng ngày.
Theo McKinsey, nhà thông minh chỉ là bước khởi đầu cho một thế giới Internet vạn vật (IoT) Ứng dụng chủ yếu của IoT là số hóa quy trình sản xuất trong các ngành kinh tế Điều này chứng tỏ rằng thị trường IoT đang rất tiềm năng và hứa hẹn nhiều cơ hội phát triển trong tương lai.
Các thành phần cơ bản của một hệ thống IoT
Hình 2 Các thành phần cơ bản của một hệ thống IoT
Hệ thống IoT bao gồm các thành phần cơ bản như thiết bị IoT (Things), trạm kết nối (Gateway), hạ tầng mạng (cơ sở dữ liệu) và ứng dụng điều khiển (Smartphone hoặc Laptop).
Thiết bị IoT rất đa dạng và thường được trang bị cảm biến để thu thập thông tin từ môi trường xung quanh Chúng ta có thể bắt gặp các thiết bị IoT như máy tính, điện thoại thông minh, máy tính bảng, máy tính nhúng, cùng với các thiết bị đo lường như cảm biến nhiệt độ, độ ẩm, ánh sáng, áp suất và độ rung.
Trạm kết nối (Gateway) là một bộ vi xử lý có nhiệm vụ kết nối Internet, thu thập thông tin từ cảm biến và gửi dữ liệu lên cơ sở dữ liệu Nó cũng đọc dữ liệu từ cơ sở dữ liệu để điều khiển các thiết bị đầu ra như đèn, quạt và bơm Trong báo cáo này, chúng tôi sẽ sử dụng Module ESP8266 Node MCU làm Gateway.
Hình 3 Module ESP8266 Node MCU C2102
ESP8266 Node MCU là một module tích hợp chip ESP8266, cho phép kết nối với cơ sở dữ liệu qua Wifi Nó dễ dàng lập trình và rất phổ biến trong việc học tập và phát triển các ứng dụng IoT.
Hạ tầng mạng, hay còn gọi là cơ sở dữ liệu, là nơi lưu trữ toàn bộ thông tin được gửi từ Gateway Trong báo cáo này, chúng tôi sẽ sử dụng Firebase của Google làm nền tảng cho cơ sở dữ liệu.
Hình 4 Firebase so với các cách truyền tải dữ liệu truyền thống
Firebase là nền tảng cơ sở dữ liệu miễn phí của Google, lý tưởng cho việc học tập Nó cung cấp nhiều tiện ích, cho phép tạo cơ sở dữ liệu nhanh chóng mà không cần kiến thức lập trình Backend, giúp tiết kiệm thời gian và công sức, đồng thời tối giản hóa quy trình thiết lập hệ thống IoT.
Ứng dụng điều khiển là phần mềm trên Android hoặc iOS được lập trình để kết nối với cơ sở dữ liệu, cho phép người dùng gián tiếp thay đổi thông tin trong cơ sở dữ liệu và điều khiển thiết bị IoT Tùy theo nhu cầu, người dùng có thể thiết kế ứng dụng riêng cho từng nền tảng, nhưng một giải pháp tối ưu hơn là sử dụng ngôn ngữ React Native để phát triển ứng dụng di động.
Hình 5 Ngôn ngữ React Native
React Native là một framework được phát triển bởi các chuyên gia của Facebook, nhằm đáp ứng nhu cầu xây dựng ứng dụng có khả năng hoạt động trên cả hai hệ điều hành Android và iOS Nhờ vào React Native, lập trình viên chỉ cần viết mã một lần để có thể sử dụng cho cả hai nền tảng, tiết kiệm thời gian và công sức trong quá trình phát triển.
Những ứng dụng phổ biến của IoT
Hiện nay, IoT được ứng dụng rộng rãi trong nhiều lĩnh vực của đời sống con người, đặc biệt là trong sản xuất Một số ví dụ điển hình về ứng dụng IoT trong sản xuất bao gồm việc tự động hóa quy trình, giám sát từ xa và tối ưu hóa chuỗi cung ứng.
1.3.1 Ứng dụng IoT trong lĩnh vực nông nghiệp:
Trong trang trại hiện đại, việc lắp đặt các cảm biến như cảm biến nhiệt độ, độ ẩm đất và cường độ ánh sáng giúp nông dân theo dõi chính xác trạng thái cây trồng Hệ thống điều khiển IoT cho phép tự động hóa các bước chăm sóc cây, từ đó giảm bớt sức lao động, nâng cao năng suất và giảm chi phí sản xuất.
Hình 6 Ứng dụng IoT trong nông nghiệp
1.3.2 Ứng dụng IoT trong lĩnh vực công nghiệp:
Internet vạn vật (IoT) có thể được áp dụng trong các nhà máy thông qua việc gắn cảm biến vào máy móc, giúp theo dõi hoạt động, cảnh báo sự cố hỏng hóc, và giám sát lượng năng lượng tiêu thụ Điều này cho phép kỹ sư phát hiện sự cố sớm và nhanh chóng đưa ra biện pháp khắc phục, đồng thời cải tiến và nâng cấp mô hình hệ thống để hoạt động hiệu quả hơn.
Hình 7 Ứng dụng IoT trong công nghiệp
THIẾT KẾ MÔ HÌNH HỆ THỐNG SMARTHOME
Chuẩn bị
- Danh sách linh kiện cần chuẩn bị bao gồm:
+ Bread board cùng dây cắm các loại,
- Phần mềm cần chuẩn bị:
+ Expo Go(trên thiết bị di động)
Sơ đồ tổng quan
Hình 8 Sơ đồ tổng quan hệ thống
- Dữ liệu đọc được từ DHT11 và nút bấm sẽ được gửi tới module ESP8266.
- Dữ liệu của DHT11 nhiệt độ, độ ẩm cập nhật theo giờ sẽ dùng để vẽ biểu đồ hiển thị lên app
- ESP8266 kết nối với Wifi để:
+ Gửi giá trị nhiệt độ, độ ẩm lên Firebase.
+ Đọc trạng thái đèn, trạng thái cửa, quạt từ Firebase
- App liên kết với Firebase để:
+ Đọc dữ liệu từ Firebase
+ Thay đổi trạng thái đèn, cửa, quạt bằng nút bấm
Khi người dùng nhấn nút trên ứng dụng, trạng thái của đèn và cửa sẽ được thay đổi ESP8266 sẽ nhận tín hiệu và thực hiện việc điều khiển bật/tắt đèn, cũng như đóng/mở cửa và bật/tắt quạt tương ứng.
Lập trình điều khiển
- Về tổng thể thì phần lập trình sẽ chia ra làm 2 giai đoạn chính:
Lập trình kết nối ESP8266 với Firebase để truyền/nhận dữ liệu, viết trên phần mềm Arduino IDE.
Lập trình kết nối App với Firebase để thay đổi dữ liệu cụ thể trên Firebase và gián tiếp điều khiển thiết bị, viết trên Visual Code Studio.
2.3.1 Lập trình kết nối ESP8266 với Firebase dùng Arduino IDE
- Trước hết ta cần tạo một cơ sở dữ liệu trên Firebase trước, ta sẽ tạo một Realtime database tên Study.
Hình 9 Giao diện Realtime Database
- Liên kết với Firebase, yêu cầu phải có:
+Database URL: https://doanapp-ca561-default-rtdb.asia- southeast1.firebasedatabase.app/
+ API_KEY : AIzaSyBdNaSamH8eESpjiv1NvZr775o5Uv7ojZQ
Sau khi thay thế các thành phần vào mã nguồn, chúng ta sẽ thiết lập kết nối với Firebase Phần truyền và nhận dữ liệu, cũng như điều khiển thiết bị, đã được chuẩn bị sẵn.
#define API_KEY "AIzaSyBdNaSamH8eESpjiv1NvZr775o5Uv7ojZQ"
#define DATABASE_URL "https://doanapp-ca561-default-rtdb.asia- southeast1.firebasedatabase.app/"
// unsigned long sendDataPrevMillis = 0; unsigned long previousMillis = 0; bool signupOK = false;
// const int Fan = 4; const int Light = 0; const int Lock = 2; const int Door = 14;
// const int Fan_switch = 12; const int Light_switch = 13; const int Lock_switch = 3;
// bool Fan_data; bool Light_data; bool Lock_data; bool Door_data;
// bool Light_states; bool Fan_states; bool Lock_states;
// pinMode(Fan, OUTPUT); pinMode(Light, OUTPUT); pinMode(Lock, OUTPUT); pinMode(Door, INPUT);
// pinMode(Fan_switch, INPUT_PULLUP); pinMode(Light_switch, INPUT_PULLUP); pinMode(Lock_switch, INPUT_PULLUP);
// bool res; res = wm.autoConnect("nkatdut","123456789"); if(!res)
Serial.println("Can't connect to wifi"); else
// config.api_key = API_KEY; config.database_url = DATABASE_URL;
// if (Firebase.signUp(&config, &auth, "", ""))
Serial.println("Fire Base connected"); signupOK = true;
Serial.printf("%s\n", config.signer.signupError.message.c_str());
// config.token_status_callback = tokenStatusCallback;
// float h = dht.readHumidity(); float t = dht.readTemperature();
// digitalWrite(Light, Light_data); digitalWrite(Fan, Fan_data); digitalWrite(Lock, Lock_data);
Sensor_data.set("Door", Door_data);
// if (digitalRead(Light_switch) == LOW && Button_trigger == false) {
Light_states = (Light_data = !Light_states);
Firebase.RTDB.setBool(&fbdo, "Floor2/Bedroomget/Light", Light_states);
// if (digitalRead(Fan_switch) == LOW && Button_trigger == false) {
Fan_states = (Fan_data = !Fan_states);
Firebase.RTDB.setBool(&fbdo, "Floor2/Bedroomget/Fan", Fan_states);
// if (digitalRead(Lock_switch) == LOW && Button_trigger == false) {
Lock_states = (Lock_data = !Lock_states);
Firebase.RTDB.setBool(&fbdo, "Floor2/Bedroomget/Lock", Lock_states);
// if (Firebase.ready() && signupOK && Button_trigger == false && (millis() - sendDataPrevMillis > 500 || sendDataPrevMillis == 0))
// if (Firebase.RTDB.setJSON(&fbdo, "Floor2/Bedroom", &Sensor_data)) {
Serial.println("REASON: " + fbdo.errorReason());
// if (Firebase.RTDB.getBool(&fbdo, "Floor2/Bedroomget/Light")) {
// if (Firebase.RTDB.getBool(&fbdo, "Floor2/Bedroomget/Fan"))
// if (Firebase.RTDB.getBool(&fbdo, "Floor2/Bedroomget/Lock")) {
String tempnode = "Floor2/Graph/tempdata/" + String(listsize); String humidnode = "Floor2/Graph/humiddata/" + String(listsize); // if (Firebase.RTDB.setFloat(&fbdo, tempnode.c_str(), t))
Serial.println("Graph data sent");
Serial.println("REASON: " + fbdo.errorReason());
Serial.println("REASON: " + fbdo.errorReason());
Hình 10 Source code kết nối ESP8266 đến Firebase
Hình 11 Dữ liệu sau khi được cập nhật lên Realtime Database
2.3.2 Lập trình kết nối App tới Firebase bằng VS Code
- Trước hết ta cần cài đặt đầy đủ các thư viện mà React Native yêu cầu để sẵn sàng viết code.
- Tiếp theo cần lên Firebase vào mục tạo Web app để lấy thông tin Config app.
- Mở Visual Code Studio để bắt đầu thiết lập giao diện và Config cho app, tạo 3 button và 1 Switch để thay đổi trạng thái đèn, cửa, quạt.
The article discusses the implementation of a code application using React Native and Firebase It begins by importing necessary components such as StyleSheet, Text, View, and Switch from 'react-native', along with React hooks like useState and useEffect The Firebase app is initialized with a configuration object, enabling access to the Firebase Realtime Database The code utilizes functions like getDatabase, ref, set, and onValue to interact with the database Additionally, it incorporates the LineChart component from "react-native-chart-kit" to visualize data effectively.
V apiKey: "AIzaSyBdNaSamH8eESpjiv1NvZr775o5Uv7ojZQ" ,
V authDomain: "doanapp-ca561.firebaseapp.com" ,
V databaseURL: "https://doanapp-ca561-default-rtdb.asia- southeast1.firebasedatabase.app",
V storageBucket: "doanapp-ca561.appspot.com" ,
}; const app = initializeApp( firebaseConfig ); const db = getDatabase(); export default function App() {
V const [ lighttext , setlighttext ] = useState('Light Control');
V const [ fantext , setfantext ] = useState('Fan Control');
V const [ locktext , setlocktext ] = useState('Lock Control');
V const [ doortext , setdoortext ] = useState('Door status');
V V const lightref = ref(db , 'Floor2/Bedroomget/Light');
V V V setlighttext(lightvalue ? 'Light On' : 'Light Off');
V V const fanref = ref(db , 'Floor2/Bedroomget/Fan');
V V V setfantext(fanvalue ? 'Fan On' : 'Fan Off');
V V const tempref = ref(db , 'Floor2/Bedroom/Temp');
V V const tempref2 = ref(db , 'Floor2/Graph/tempdata');
V V const humidref = ref(db , 'Floor2/Bedroom/Humid');
V V const humidref2 = ref(db , 'Floor2/Graph/humiddata');
V V const lockref = ref(db , 'Floor2/Bedroomget/Lock');
V V V setlocktext(lockvalue ? 'Door Locked' : 'Door Unlocked');
V V const doorref = ref(db , 'Floor2/Bedroom/Door');
V V V setdoortext(doorvalue ? 'Door Close' : 'Door Open');
V V const lightref = ref(db , 'Floor2/Bedroomget/Light');
V V const fanref = ref(db , 'Floor2/Bedroomget/Fan');
V V const lockref = ref(db , 'Floor2/Bedroomget/Lock');
V V V V Bedroom electric control
V V V V Room current temperature
V V V V temptext}°C
V V V V Room current
V V V V humidtext } %
V V V V lighttext }
V V V V fantext}
V V V V V V labels: tempdata map (( _ , index ) => `${index + 1}h`),
V V V V V V labels: humiddata.map((_ , index ) => `${index + 1}h`),
V V V V Door status
V V V V doortext }
V V V V { locktext }
Hình 12 Lập trình App kết nối tới Firebase
- Sau khi chạy lệnh yarn start ta quét mã trên ứng dụng Expo go trên điện thoại di động để kiểm tra.
Hình 13 Chạy ứng dụng di động trên Expo
Hình 14 Mạch thực tế sau khi hoàn thành
2.3.3 Giải thích nguyên lý hoạt động
Đọc giá trị độ ẩm và nhiệt độ từ cảm biến DHT11, sau đó gửi các giá trị này lên Firebase Cuối cùng, hiển thị nhiệt độ và độ ẩm nhận được trên màn hình ứng dụng.
- Giá trị nhiệt độ và độ ẩm cập nhật theo giờ sẽ dùng để vẽ biểu đồ lên app.
- Từ app, nhấn nút Open để mở cửa, Close để đóng cửa Nhấn nútOn/Off Lamp để bật tắt đèn Chạm On/Off Fan để bật tắt quạt.
TỔNG KẾT
Trong bài báo cáo này, chúng tôi đã khám phá bản chất của Internet vạn vật (IoT), phân tích các thành phần cơ bản của một hệ thống IoT, và thiết kế một mô hình nhà thông minh ứng dụng IoT đơn giản.
IoT đang phát triển mạnh mẽ trong bối cảnh cách mạng công nghiệp 4.0, và trong tương lai gần, nó có khả năng làm thay đổi đáng kể bức tranh kinh tế và xã hội của con người.
Sự ảnh hưởng của Internet vạn vật (IoT) ngày càng rõ rệt với giá trị thị trường khổng lồ và xu hướng tăng trưởng mạnh mẽ Quy mô và số lượng thiết bị IoT đang ngày càng lan tỏa trong cuộc sống hàng ngày của con người.
Chúng ta đang ở giai đoạn đầu của Internet vạn vật, và nếu tận dụng tốt những lợi thế này, chúng ta có thể tạo ra một bước đột phá để dẫn đầu trong lĩnh vực công nghệ.
Môn học này có ý nghĩa quan trọng đối với sinh viên khoa điện, giúp họ tiếp cận công nghệ IoT và tạo nền tảng cho các nghiên cứu và phát triển trong tương lai.