You are on page 1of 15

BỘ MÔN KỸ THUẬT MÁY TÍNH – VIỄN THÔNG

CƠ SỞ VÀ ỨNG DỤNG IOTS


MMH: ITFA436064
Thời gian thực hiện: 01 buổi
Nhóm: Đỗ Lê Việt Hoàng-20119314
Nguyễn Văn Hào-20119223
Trần Trung Hiếu-20119313
Mai Lê Thanh Hải-20119219
Nguyễn Việt Bình-20119202
1. So sánh chuẩn truyền thông Wifi và chuẩn truyền thông Zigbee
Wifi Zigbee
- Wifi là từ viết tắt của Wireless Fidelity, sử dụng - ZigBee về cơ bản là một tiêu chuẩn toàn cầu được
sóng vô tuyến để truyền tín hiệu. Loại sóng vô công bố rộng rãi để giải quyết các nhu cầu riêng biệt
tuyến này tương tự như sóng điện thoại, truyền của mạng không dây M2M (máy-với-máy) công suất
hình và radio. Và trên hầu hết các thiết bị điện tử thấp, chi phí thấp và cả Internet-of-Things (IoT) [3]
ngày nay như máy tính, laptop, điện thoại, máy
tính bảng…đều có thể kết nối Wifi. [1]
* Khác nhau: [2] * Khác nhau: [2]
- Giao thức: 802.11a, b, g, n và 1 số chuẩn khác. - Giao thức: IEEE 802.15.4, Zigbee Alliance
- Băng thông: 2.4Ghz và 5Ghz - Băng thông: 868MHz,915MHZ và 2.4Ghz
- Băng thông kênh: 0.3-2MHz - Băng thông kênh: 1MHz
- Kiểu mạng: Sao - Kiểu mạng: Start và Mesh
- Tốc độ truyền dữ liệu: 1.3 mbps/s - Tốc độ truyền dữ liệu: 250 kbps/s
- Khoảng cách: 30-100m - Khoảng cách: 10-30m
- Công suất tiêu thụ: 0.87W - Công suất tiêu thụ: 0.87W
- Số kênh: 14 kênh 2.4GHZ - Số kênh: 16 kênh 2.4MHz

2. So sánh ESP32 và ESP8266


* Giống nhau [4]
- ESP32 và ESP8266 là các mô-đun Wi-Fi giá rẻ hoàn toàn phù hợp cho các dự án DIY trong lĩnh vực Internet
of Things (IoT) và Tự động hóa gia đình. Cả 2 đều có bộ xử lý 32bit
- Nhiệt độ làm việc: -40ºC to 125ºC
ESP32 ESP8266
*Khác nhau: [4] [5] * Khác nhau: [4] [6]
- MCU: Xtensa Dual-Core 32-bit LX6 với 600 - MCU: Xtensa lõi đơn 32-bit L106. Typical
DMIPS. Typical Frequency: 160MHz đến 240MHz Frequency: 80MHz.
- Wi-Fi 802.11 b / g / n: HT40 - Wi-Fi 802.11 b / g / n: HT20
- Bluetooth: Bluetooth 4.2 và BLE - Không có bluetooth
- SRAM: Có - SRAM: Không
- Flash: Có - Flash: Không
- GPIO: 34 - GIPO: 17
- Hardware /Software PWM: None / 16 channels - Hardware /Software PWM: None / 8 channels
- SPI/I2C/I2S/UART: 4/2/2/2 - SPI/I2C/I2S/UART: 2/1/2/2
- ADC: 12-bit - ADC: 10-bit
- CAN: Có - CAN: Không
- Ethernet MAC Interface: Có - Ethernet MAC Interface: Không
- Sensor (Touch, Temperature, Hall effect): Có - Sensor (Touch, Temperature, Hall effect): Không

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Price: $$ ($6 - $12) - Price: $ (3$ - $6)

3. Sơ đồ chân kết nối ESP32 (hoặc ESP8266) (lập bảng chức năng các chân).

* Chức năng của SPIO: [7] 1 SIPO có thể có nhiều chức năng khác nhau.
SIPO Function Note
6 Các chân này được kết nối với bộ SCK/CLK
7 nhớ SPI flash tích hợp trên chip SDO/SD0
8 ESP-WROOM-32. SDI/SD1
9 SHD/SD2
10 SWP/SD3
11 CSC/CMD
4 10 GPIO cảm biến điện dung T0
0 T1
2 T2
15 T3
13 T4
12 T5
14 T6
27 T7
33 T8

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


32 T9
36 18 kênh (channel) ADC input 12 ADC1_CH0
37 bit ADC1_CH1
38 ADC1_CH2
39 ADC1_CH3
32 ADC1_CH4
33 ADC1_CH5
34 ADC1_CH6
35 ADC1_CH7
4 ADC1_CH8
0 ADC1_CH9
2 ADC1_CH10
15 ADC1_CH11
13 ADC1_CH12
12 ADC1_CH13
14 ADC1_CH14
27 ADC1_CH15
25 ADC1_CH16
26 ADC1_CH17
25 2 kênh DAC 8bit DAC1
26 DAC2
36 Các GPIO được chuyển đến hệ RTC_GPIO0
39 thống con công suất thấp RTC RTC_GPIO3
34 được sử dụng khi ESP32 đang ở RTC_GPIO4
35 chế độ ngủ sâu. Các GPIO RTC RTC_GPIO5
25 này có thể được sử dụng để đánh RTC_GPIO6
26 thức ESP32 khỏi chế độ ngủ sâu RTC_GPIO7
33 khi bộ đồng xử lý công suất cực RTC_GPIO8
32 thấp đang chạy. RTC_GPIO9
4 RTC_GPIO10
0 RTC_GPIO11
2 RTC_GPIO12
15 RTC_GPIO13
13 RTC_GPIO14
12 RTC_GPIO15
14 RTC_GPIO16
27 RTC_GPIO17
21 2 kênh I2C SDA
22 SCL

4. Các bước cài đặt và giao tiếp ESP32 (hoặc ESP 8266) với phần mềm Arduino IDE
 Bước 1: Cài đặt phần mềm Arduino IDE
- Tải Arduino IDE trên trang arduino.cc Link
- Arduino hiện tại đã có trên đa nền tảng, nên các bạn cần phải chọn đúng hệ điều hành mà mình đang
sử dụng để tải về phiên bản phù hợp.

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Sau khi hoàn tất quá trình tải về, các bạn mở file vừa tải lên và setup như mặc định.

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Đây là các điều khoản của nhà sản xuất các bạn chọn I Agree.

- Tích chọn các thư viện và công cụ cần thiết cho IDE. Sau đó chọn thư mục để lưu trữ phần mềm và
tiến hành cài đặt.

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Sau khi cài đặt thành công bạn sẽ thấy biểu tượng của Arduino IDE như hình.
 Bước 2: Giao diện của Arduino IDE và tiến hành cài đặt thư viện cho ESP32

- Đây là giao diện chính của Arduino IDE


- Để cài đặt thư viện cho ESP32 các bạn vào File > Prefencenes.

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Một cửa sổ khác sẽ hiện ra. Tại “Additional Board Manager URLs” nhập đường link sau:
https://dl.espressif.com/dl/package_esp32_index.json
- Chú ý: nếu đã tồn tại một URL hãy phân cách bằng dấu “,”.

- Link thư viện ESP đã được nhúng vào IDE. Tiếp theo chúng ta sẽ tiến hành tải và cài đặt thư viện cho
ESP32
- Các bạn vào Tools > Board > Boards Manager…

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Trong cửa sổ cài đặt các Board. Các bạn gõ vào thanh tìm kiếm với từ khóa “esp32”, trong danh sách
kết quả chọn “ESP32 by Espressif Systems” và nhấn Install.

- Xong! Add-on sẽ tự động được cài đặt.


 Bước 3: Kiểm tra cài đặt. Ví dụ chớp tắt LED
- Đầu tiên kết nối ESP32 với máy tính của bạn.

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Tiếp theo chúng ta cần thiết lập Board mà IDE sẽ nạp code vào. Tools > Boards > ESP > DOIT ESP32
DEVKIT V1

- Chọn port đầu ra để nhận kết nối. Tools > Port > Port các bạn đã kết nối với ESP

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Chúng ta sẽ sử dụng mẫu có sẵn trên IDE nhấp nháy LED để test thử board ESP đã hoạt động chưa.
File > Examples > Basic > Blink

- Xem lại sơ đồ chân của ESP32 thì chân LED là GPIO2. Ở code Blink LED chúng ta điều chỉnh lại
output thành 2 vì đó là GIPO của LED trên board ESP32.

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Sau đó tiến hành nạp code bằng cách nhấn vào biểu tượng . Một số board ESP phải giữ nút
BOOT trong quá trình nạp code.
- Nhấn nút reset để hoàn tất. Và đây là kết quả: Link
5. Các bước thực hiện và giải thích code chương trình chớp tắt LED kết hợp giao tiếp nút nhấn trên
ESP32 (hoặc ESP8266) và hình ảnh chụp các kết quả (link đến video clip upload youtube nếu có)

#include <Arduino.h> - Thêm thư viện Arduino

const int BUTTON =15; - Gán BUTTON cho GIPO 15


const int LED = 2; - Gán LED cho GIPO 2
int state = 0; - Gán trạng thái ban đầu bằng 0

void setup() {
pinMode(LED, OUTPUT); Cấu hình chân GIPO BUTTON và LED bằng
pinMode(BUTTON, INPUT_PULLUP); hàm pinMode();
}

void loop() {
- Trong vòng lặp loop
- Kiểm tra trạng thái BUTTON
if (digitalRead(BUTTON) == 1)
- Nếu BUTTON bằng 1:
{
 Thực hiện đảo trạng thái hiện tại của
state = ~state;
biến state
digitalWrite(LED, state);
 Gán giá trị của state lên LED
delay(200);
 Tạo độ trễ 200 ms
}
}

- Hình ảnh kết quả:

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


- Video kết quả: Link
6. Thực hiện giao tiếp ESP32 và 2 Led đơn điều khiển chớp tắt 2 Led (có sử dụng FreeRTOS). Giải thích
code và chụp hình ảnh (kèm clip nếu có) kết quả thực hiện.
 Bước 1: Tải thư viện FreeRTOS
- Vào Tools > Manage Libraries…

- Trong cửa sổ cài đặt các Board. Các bạn gõ vào thanh tìm kiếm với từ khóa “FreeRTOS”, trong danh sách
kết quả chọn “FreeRTOS by Richard Barry” và nhấn Install. Done!

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


 Bước 2: Tiến hành Code

TaskHandle_t Task1; - Tạo Task1 để thực thi sáng led_1


TaskHandle_t Task2; - Tạo Task2 để thực thi sáng led_2

const int led_1 = 19; - Gán led_1 cho GIPO 19


const int led_2 = 5; - Gán led_2 cho GIPO 5

void setup(){
Serial.begin(115200); - Giao tiếp với tốc độ truyền là 11520
pinMode(led_1, OUTPUT); - Cấu hình chân GIPO led_1 và led_2 bằng
pinMode(led_2, OUTPUT); hàm pinMode();

xTaskCreatePinnedToCore(Task1code,"Task1",10000,
- Khởi tạo Task1, cấp phát bộ nhớ là 10000,
mức độ ưu tiên là 1, chạy ở Core 0.
NULL,1,&Task1,0);
- Tạo độ trễ 500ms.
delay(500);

- Khởi tạo Task2, cấp phát bộ nhớ là 10000,


xTaskCreatePinnedToCore(Task2code,"Task2",10000,
mức độ ưu tiên là 1, chạy ở Core 1.
NULL,1,&Task2,1);
- Tạo độ trễ 500ms
delay(500);
}
- Lập trình Task1
void Task1code( void * paramete){
Serial.print("Task1 is running on core ");
Serial.println(xPortGetCoreID());

for(;;){ - Vòng lặp for:


digitalWrite(led_1, HIGH);  Thiết lập led_1 mức cao ( led sáng)
delay(500);  Tạo độ trễ 500ms
digitalWrite(led_1, LOW);  Thiết lập led_1 mức thấp (led tắt)
delay(500);  Tạo độ trễ 500ms
}

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


}

void Task2code( void * paramete){ - Lập trình Task2


Serial.print("Task2 is running on core ");
Serial.println(xPortGetCoreID());

for(;;){ - Vòng lặp for:


digitalWrite(led_2, HIGH);  Thiết lập led_2 mức cao ( led sáng)
delay(500);  Tạo độ trễ 500ms
digitalWrite(led_2, LOW);  Thiết lập led_2 mức thấp (led tắt)
delay(500);  Tạo độ trễ 500ms
}
}

void loop(){
- Tại vì chúng ta đã thiết lập vòng lặp for ở
từng Core nên ở đây để trống.
}

Hình ảnh trình bày kết quả


- Video kết quả: Link

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064


Tài liệu tham khảo (liệt kê theo IEEE)

Bibliography

[1] "VNPRO," [Online]. Available: https://vnpro.vn/tin-tuc/wifi-la-gi-wifi-hoat-dong-nhu-the-nao-1392.html.

[2] "So sánh chi tiết công nghệ Zigbee Và Wifi," RASS TEK TECH BLOG, [Online]. Available:
https://tech.rasstek.com/so-sanh-zigbee-va-wifi/.

[3] "What is ZigBee Protocol?," SMARTIFI, [Online]. Available: https://smartify.in/knowledgebase/zigbee-protocol-


explained/.

[4] S.Santos, "MAKER ADVISOR," MAKER ADVISOR, 6 9 2021. [Online]. Available:


https://makeradvisor.com/esp32-vs-esp8266/. [Accessed 2022].

[5] "ESPRESSIF," ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD., 2021. [Online]. Available:
https://www.espressif.com/en/products/devkits/esp32-devkitc.

[6] "ESPRESSIF," ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD., 2021. [Online]. Available:
https://www.espressif.com/en/products/socs/esp8266.

[7] "Tham khảo Chân Ra của ESP32: Chân GPIO nào nên dùng?," [Online]. Available:
https://talucgiahoang.com/blog/esp32-pinout-reference-gpios/.

Hình ảnh làm việc nhóm.

CƠ SỞ VÀ ỨNG DỤNG IOTS - ITFA436064

You might also like