You are on page 1of 7

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: Trịnh Đình Thụy 20119293
Đăng Gia Huy 20119228
1. So sánh chuẩn truyền thông Wifi và chuẩn truyền thông Zigbee

Đặc điểm Zigbee Wifi


Giao thức IEE 802.15.4 +Zigbee Alliance 802.11b, a, g, n, ac
Mạng WPAN WLAN
Băng thông 868,915 và 2.4GHz 2.4Ghz và 5Ghz
Băng thông kênh 1Mhz 0.3-2Mhz
Kiểu mạng Mạng sao và Mesh Mạng Sao hoặc Sao mở rộng
Tốc độ truyền dữ liệu 250 kbps 1.3 mbps/s
Khoảng cách 10-30 mét 30-100 mét
Công suất tiêu thụ 0.39W 0.87W
Số kênh 16 kênh 2.4Ghz 14 kênh 2.4Ghz
2. So sánh ESP32 và ESP8266.

So sánh ESP32 ESP8226


Tần số đồng hồ 160 hoặc 240 Hz 80 Hz
Bluetooth BLE Không
Cảm biến Hall Có không
Giao diện camera Không Không
Cảm biến nhiệt độ Có Không
Cảm biến cảm ứng 10 Không
Bảo mật Mã hóa flash khởi động bảo mật. OTP 1024- Không
bit
Tiêu thụ công suất thấp Cảm biến sâu 10uA 20uA
Nhiệt độ Có Không
Đông xử lý ULP Không
Tổng GPIO 39 17
Mã hóa RSA, RNG, ECC, SHA-2, AES Không
SPI 4 2
USB OTG Không Không
Vi điều khiển LX6 Xtensa 32-bit lõi đơn hoặc loãi kép L106 Xtensa lõi đơn 32-bit
ROM 448KB Không
CAN 2 Không
Ethernet 10/100 Mbps Không
SPIRAM bên ngoài Lên tới 16MB Lên tới 16MB

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


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ân Chức năng


Chân Input GPIO34 GPIO từ 34 đến 39 là các chân chỉ đầu vào. Các
Only chân này không có điện trở kéo lên hoặc kéo
GPIO35 xuống bên trong. Chúng không thể được sử dụng
làm đầu ra, vì vậy chỉ sử dụng các chân này làm
GPIO36
đầu vào.
GPIO39

Chân tích hợp GPIO6 (SCK/CLK) GPIO 6 đến GPIO 11 dùng để kết nối Flash SPI
Flash trên GPIO7 (SDO/SD0) trên chip ESP-WROOM-32, không khuyến khích
ESP32 GPIO8 (SDI/SD1) sử dụng cho các mục đích sử dụng khác.
GPIO9 (SHD/SD2)
GPIO10(SWP/SD3)
GPIO11(CSC/CMD)
TOUCH0 (GPIO4)
Chân cảm biến TOUCH1 (GPIO0) ESP32 có 10 cảm biến điện dung bên trong. Các
điện dung TOUCH2 (GPIO2) cảm biến này có thể phát hiện được sự thay đổi về
TOUCH3 (GPIO15) điện áp cảm ứng trên các chân GPIO. Các chân

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


TOUCH4 (GPIO13) cảm ứng điện dung cũng có thể được sử dụng để
TOUCH5 (GPIO12) đánh thức ESP32 khỏi chế độ ngủ sâu (deep
TOUCH6 (GPIO14) sleep).
TOUCH7 (GPIO27)
TOUCH8 (GPIO33) Các chân ESP32 này có chức năng như 1 nút
TOUCH9 (GPIO32) nhấn cảm ứng, có thể phát hiện sự thay đổi về
điện áp cảm ứng trên chân.
Bộ chuyển đổi ADC1_CH0 (GPIO36) ESP32 có 18 kênh đầu vào ADC 12 bit (trong khi
tương tự sang ADC1_CH1 (GPIO37) ESP8266 chỉ có 1 kênh ADC 10 bit). Đây là các
số ADC ADC1_CH2 (GPIO38) GPIO có thể được sử dụng làm ADC và các kênh
(Analog to ADC1_CH3 (GPIO39) tương ứng:
Digital ADC1_CH4 (GPIO32)
Converter) ADC1_CH5 (GPIO33)
ADC1_CH6 (GPIO34)
ADC1_CH7 (GPIO35)
ADC2_CH0 (GPIO4)
ADC2_CH1 (GPIO0)
ADC2_CH2 (GPIO2)
ADC2_CH3 (GPIO15)
ADC2_CH4 (GPIO13)
ADC2_CH5 (GPIO12)
ADC2_CH6 (GPIO14)
ADC2_CH7 (GPIO27)
ADC2_CH8 (GPIO25)
ADC2_CH9 (GPIO26)
Bộ chuyển đổi DAC1 (GPIO25) Có 2 kênh DAC 8 bit trên ESP32 để chuyển đổi
số sang tương DAC2 (GPIO26) tín hiệu số sang tương tự. Các kênh này chỉ có độ
tự DAC (Digital phân giải 8 bit, nghĩa là có giá trị từ 0 ÷ 255
to Analog tương ứng với 0 ÷ 3.3V
Converter)
Các chân thời RTC_GPIO0 (GPIO36) Các chân này có tác dụng đánh thức ESP32 khi
gian thực RTC RTC_GPIO3 (GPIO39) trong chế độ ngủ sâu (Low Power Mode). Sử
RTC_GPIO4 (GPIO34) dụng như 1 chân ngắt ngoài.
RTC_GPIO5 (GPIO35)
RTC_GPIO6 (GPIO25)
RTC_GPIO7 (GPIO26)
RTC_GPIO8 (GPIO33)
RTC_GPIO9 (GPIO32)
RTC_GPIO10 (GPIO4)
RTC_GPIO11 (GPIO0)
RTC_GPIO12 (GPIO2)
RTC_GPIO13 (GPIO15)
RTC_GPIO14 (GPIO13)
RTC_GPIO15 (GPIO12)
RTC_GPIO16 (GPIO14)
RTC_GPIO17 (GPIO27)

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
Cài đặt ESP32 cho Arduino IDE:
B1: Mở Arduino IDE>File>Preferences

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


B2: Tại“Additional Board Manager URLs” nhập 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 “,“.
B3: Chọn Tool > Board > Boards Manager…
B4: 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
B5: Xong! Add-on sẽ tự động được cài đặt

Kiểm tra cài đặt


B1: Chọn Board trong danh sách Tools > Board (ví dụ: DOIT ESP32 DEVKIT V1).
B2: Chọn Port (nếu không có danh sách COM Port, cần cài đặt driver CP210x USB to UART Bridge
VCP Drivers).
B3: Mở một dự án mẫu File > Examples > WiFi (ESP32) > WiFiScan
B4: Một Sketch được mở
B5: Nhấn nút Upload trên thah công cụ Arduino IDE để biên dịch và nạp vào Board DOIT ESP32
DEVKIT V1. Bạn cần chờ một lúc

1. Nếu thành công bạn sẽ nhận được “Done Uploading.“


2. Mở Arduino IDE Serial Mornitor trên thanh công cụ hoặc Ctrl + Shift +M, chọn baud rate
115200.Mở Serial Monitor

3. Xem kết quả.

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ó)

Truy cập trang wed wokwi sau đó chọn nội dung ESP32
Lấy thêm led, điện trở, nút nhấn và kết nối lại như hình

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


Nhập code bên dưới vào phần bên trái như hình

Lập trình
Bây giờ, bạn có thể xem code hoàn chỉnh.

/* Interrupt Example

This example code is in the Public Domain (or CC0 licensed, at your
option.)

Unless required by applicable law or agreed to in writing, this


software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#define LED_RED GPIO_NUM_2 đặt chân 2 là LED_RED
#define BTN_RED GPIO_NUM_13 đặt chân 13 là BTN_RED
#define DELAY_TIME 500 đặt delay 500

volatile bool button_pressed = false;


static void gpio_isr_handler(void* arg)
{
button_pressed = true;
}

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


void button_config()
{
gpio_install_isr_service(0);
gpio_reset_pin(BTN_RED);
gpio_set_direction(BTN_RED, GPIO_MODE_INPUT);
gpio_pullup_en(BTN_RED);
gpio_set_intr_type(BTN_RED, GPIO_INTR_POSEDGE);
gpio_isr_handler_add(BTN_RED, gpio_isr_handler, NULL);

void led_config()
{
gpio_reset_pin(LED_RED);
gpio_set_direction(LED_RED, GPIO_MODE_OUTPUT);
}

extern "C" void app_main()


{
uint8_t led_value = 0;

button_config();
led_config();

while (1) {
if (button_pressed) {
led_value = !led_value;
gpio_set_level(LED_RED, led_value);
}
vTaskDelay(DELAY_TIME / portTICK_PERIOD_MS);
}
}

Link mô phỏng: https://youtu.be/J7x9tSEBv-4


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.
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
Tài liệu tham khảo (liệt kê theo IEEE)
https://dientutuonglai.com/esp32-va-esp8266.html

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


https://tech.rasstek.com/so-sanh-zigbee-va-wifi/
https://dientuviet.com/gioi-thieu-esp32/
https://espitek.com/arduino/cai-dat-esp32-cho-arduino-ide/
https://esp32.vn/idf/blink-idf.html
Hình ảnh làm việc nhóm.

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

You might also like