Tải bản đầy đủ (.docx) (125 trang)

Tai Lieu Iot.docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (10.58 MB, 125 trang )

MỤC LỤC
CHƯƠNG 1: SỰ PHÁT TRIỂN NHANH CHĨNG CỦA CƠNG NGHỆ...............3
1.1

Cài đặt Arduino IDE..........................................................................................4

1.2 : Thêm thư viện cho Arduino IDE.........................................................................9
Cách 1: Thêm thư viện bằng File Zip....................................................................10
Cách 2: Thêm thư viện bằng công cụ quản lý thư viện.........................................11
1.3 Sử dụng Bộ công cụ phát triển............................................................................12
1.3.1 Kết nối với pyWiFi-ESP32..........................................................................12
CHƯƠNG 2: THÍ NGHIỆM CƠ BẢN.....................................................................13
2.1: Làm sáng đèn LED............................................................................................14
2.2 Nút bấm...............................................................................................................16
2.3 Ngắt ngoài...........................................................................................................20
2.4 Thời gian thực (RTC)..........................................................................................24
2.5: Giao thức I2C (màn hình OLED).......................................................................33
2.6: Đồng hồ thời gian thực (RTC)...........................................................................37
2.7: ADC...................................................................................................................41
2.8 PWM...................................................................................................................44
CHƯƠNG 3: THÍ NGHIỆM CẢM BIẾN.................................................................48
3.1 Cảm biến nhiệt độ DS18B20...............................................................................49
3.2: Cảm biến nhiệt độ và độ ẩm DHT11.................................................................53
3.3: Cảm biến hồng ngoại.........................................................................................58
3.4: Cảm biến cảm ánh sáng......................................................................................62
3.5: Cảm biến độ ẩm của đất.....................................................................................66
3.6: Cảm biến mực nước...........................................................................................71
3.7 Cảm biến áp suất khí quyển................................................................................75
3.8 Cảm biến siêu âm................................................................................................77

Page 1 of 125




CHƯƠNG 4 MỞ RỘNG THỬ NGHIỆM.................................................................83
4.1 Servo....................................................................................................................83
4.2: LED RGB...........................................................................................................88
CHƯƠNG 5: ỨNG DỤNG WIFI...............................................................................94
5.1 Kết nối với WiFi..................................................................................................94
5.2 Webserver chế độ Wifi Station bật tắt Led.........................................................98
5.3 WebSocket........................................................................................................107
5.4 Giao tiếp MQTT................................................................................................116

Page 2 of 125


TÀI LIỆU ESP32
ESP32 là chip được Shanghai Espressif sản xuất sau ESP8266. Có thể hiểu đây là phiên
bản siêu nâng cấp của ESP8266. So với ESP8266, chip ESP32 có tài nguyên rất phong phú,
tốc độ xử lý nhanh, độ chính xác cao,… ngồi ra ESP32 cịn có thể giao tiếp với rất nhiều
thiết bị ngoại vi, đồng thời cũng hỗ trợ các chức năng WIFI và Bluetooth.
Nếu bạn đã từng tìm hiểu về Arduino, ESP8266, thì xin chúc mừng bạn, điều này sẽ giúp việc
học về ESP32 sẽ trở nên dễ dàng hơn vì cách sử dụng và phương pháp lập trình của chúng rất
giống nhau. Tuy nhiên, ESP32 có nhiều tài nguyên phong phú và phù hợp để phát triển một
số dự án IoT nâng cao. Vậy nên chúng ta hãy cùng bắt đầu tìm hiểu về ESP32 nào!

Bộ phát triển pyWiFi-ESP32

Page 3 of 125


CHƯƠNG 1: SỰ PHÁT TRIỂN NHANH CHĨNG

CỦA CƠNG NGHỆ
Vì ESP32 có thể được coi là phiên bản siêu nâng cấp của ESP8266, nên cách sử dụng và
lập trình của chúng khá giống nhau. Đầu tiên, để có thể sử dụng được, bạn cần có một module
phát triển ESP32 và phần mềm lập trình Arduino IDE, Python, Visual Studio,…. Nhưng trong
mơn học này, mình sẽ đề cử Arduino IDE, vì đây là một phần mền đơn giản, dễ tiếp cận đối
với những bạn mới lập trình.
1.1 Cài đặt Arduino IDE
Bước 1: Truy cập địa chỉ  cài đặt Arduino IDE.
Đây là nơi lưu trữ cũng như cập nhật các bản IDE của Arduino. Bấm vào
mục Windows ZIP file  như hình minh họa.

Bạn sẽ được chuyển đến một trang mời quyền góp tiền để phát triển phần mềm cho Arduino,
tiếp tục bấm JUST DOWNLOAD để bắt đầu tải.

Page 4 of 125


Bước 2: Sau khi download xong, các bạn bấm chuột phải vào file vừa download arduino1.6.4-windows.zip và chọn “Extract here” để giải nén.

Bước 3: Copy thư mục arduino-1.6.4 vừa giải nén đến nơi lưu trữ.
Bước 4: Chạy file cài đặt trong thư mục arduino để cài đặt Arduino IDE và khởi động nó lên.

Page 5 of 125


Như vậy chúng ta đã cài đặt Arduino IDE xong.
Bước 5: Sau khi đã cài đặt xong phần mềm lập trình, các bạn chọn File, sau đó chọn
Preferences

Page 6 of 125



Bước 6: Trong bảng Preferences, các bạn dán 2 đường dẫn :
/> />Vào trong ô Additional Boards Manager URLs.

Page 7 of 125


Bước 7: Tiếp theo, các bạn chọn Tools, chọn Board và chọn Boards Manager…

Bước 8: Trong Boards Manager, các bạn viết “esp32”, và nhấn Install, ở đây mình đã cài rồi
nên giao diện sẽ hơi khác một xíu. Sau khi cài đặt xong, các bạn đã có thể lập trình ESP32
được rồi đó.

Page 8 of 125


Bước 9: Sau đó, các bạn vào Board, chọn ESP32 Arduino và chọn ĐOIT ESP32 DEVKIT
V1. Về lý thuyết thì các bạn có thể chọn bất kỳ bo ESP32 nào cũng được, nhưng để tối ưu thì
nên chọn board này.

______________________________***************______________________________
1.2 : Thêm thư viện cho Arduino IDE

Page 9 of 125


Mình sẽ hướng dẫn các bạn chi tiết 2 cách làm sao để có thể thêm một thư viện mới
vào Arduino IDE nhé.
Ví dụ chúng ta muốn thêm thư viện nào đó vào Arduino, ở đây mình sẽ thêm thư viện thời

gian thực RTC DS3231.
Cách 1: Thêm thư viện bằng File Zip
Bước 1: Serach từ khoá “DS3231.h library arduino” như dưới đây

Bước 2: Vào GitHub ( hoặc các trang khác để tải thư viện )->Code->Dowload Zip

Page 10 of 125


Bước 3: Vào Sketch->Include Library( thư viện bao gồm )->Add ZIP library ( thêm thư viện
bằng tập tin ZIP)

Sau đó chúng ta chọn file zip DS3231 vừa tải về->Open.

Như vậy chúng ta đã thêm thành công thư viện DS3232 cho Arduino, tiếp theo chúng ta chỉ
cần #include <DS3231.h> và sử dụng nó.
Cách 2: Thêm thư viện bằng cơng cụ quản lý thư viện
Bước 1: Vào Sketch->Include Library( thư viện bao gồm )->Manage libraries (quản lí thư
viện)

Page 11 of 125


Bước 2: Tại Manage libraries (quản lí thư viện) -> Gõ DS3231.h->Install (Cài đặt) ( Ở đây
mình đã cài thư viện này rồi ).

1.3 Sử dụng Bộ công cụ phát triển
1.3.1 Kết nối với pyWiFi-ESP32
Bộ kit phát triển pyWiFi-ESP32 được cấp nguồn tạm thời và nạp dữ liệu thông qua dây dữ
liệu MicroUSB để kết nối với máy tính:


Page 12 of 125


Hình 1-3: Kết nối ESP32 với máy tính thơng qua cáp MicroUSB
Nếu hệ điều hành của bạn là Win10 hay các phần mềm cao cấp hơn, máy tính sẽ tự động
nhận biết thiết bị ngoại vi đang kết nối với nó qua cổng ảo (Port) nào. Bạn có thể kiểm tra
bằng cách chọn Start  Setting  Divices và kiểm tra thiết bị ngoại vi.

CHƯƠNG 2: THÍ NGHIỆM CƠ BẢN
MicroPython là bộ kit phát triển, định hướng cho các bạn những ứng dụng cơ bản nhất về
IoT. Với tài liệu phong phú, hệ thống thư viện mạnh mẽ sẽ giúp các bạn trong việc thực hiện
chương trình, chỉ cần các bạn gọi đúng hàm, dúng biến trong thư viện của Arduino IDE. Vậy
nên các bạn không hiểu sâu về phần cứng của linh kiện, vẫn có thể lập trình và chạy được các
chương trình cơ bản cũng như một số chương trình nâng cao trên pyWiFi-ESP32.
Các thí nghiệm cơ bản dưới đây là những chương trình cơ bản và có phần giải thích thực
nghiệm đơn giản, có thể giúp các bạn dễ tiếp nhận và có cách nhìn trực quan hơn về mơn học
này. Xét về tính ứng dụng, mơn học IoT này sẽ đặt nền móng vững chắc cho quá trình học tập
và phát triển đồ án cũng như phát triển việc làm trong tương lai của các bạn.
Với mỗi bài thí nghiệm, mình sẽ chia thành 6 mục nhỏ như sau:
(1) Lời nói đầu: Giới thiệu ngắn gọn về thí nghiệm này.
(2) Nền tảng thí nghiệm: Bảng phát triển, phụ kiện và hướng dẫn đi dây được sử dụng trong
thí nghiệm.
(3) Mục đích của thí nghiệm: Chức năng được thực hiện trong thí nghiệm này.
(4) Giải thích thí nghiệm: Giải thích chi tiết về chức năng, code, phương pháp lập trình và
thử nghiệm.
(5) Kết quả thực nghiệm: Một số hình ảnh được của bộ kit phát triển sau khi đã nạp chương
trình.
(6) Tóm tắt: Tóm tắt thí nghiệm.
Với cơ sở như vậy, các bạn hãy cùng mình bắt đầu thì nghiệm ln cho nóng nào!

___________________________*********************___________________________

Page 13 of 125


2.1: Làm sáng đèn LED
⚫ Lời nói đầu:
Mình tin rằng đa số những người mới bắt đầu học lập trình một vi điều khiển nào đó, họ sẽ
bắt đầu từ những chương trình đơn giản nhất, đó là thắp sáng đèn LED. Và học môn IoT này
cũng không ngoại lệ. Bằng cách làm sáng đèn LED, bạn sẽ có một cách nhìn khái quát về giao
diện cơ bản của bộ kit pyWiFi-ESP32 và phầm mềm Arduino IDE. Có góc nhìn tổng thể của
một chương cơ bản và có các nền tảng để ứng dụng vào các chương trình sau này.
⚫ Nền tảng thử nghiệm:
Bộ kit phát triển pyWiFi-ESP32.

Hình 2.1-1: pyWiFi-ESP32
⚫ Mục đích của thí nghiệm:
Bật đèn LED (ánh sáng xanh lam).
⚫ Giải thích thực nghiệm:
LED (viết tắt của Light Emitting Diode hay điốt phát quang) là các điốt có khả năng phát
ra ánh sáng hay tia hồng ngoại, tử ngoại. Cũng giống như điốt, LED được cấu tạo từ một khối
bán dẫn loại p ghép với một khối bán dẫn loại n. Trên bộ kit phát triển pyWiFi-ESP32 có 1
đèn LED (màu xanh lam), để điều khiển đèn LED bạn cần chú ý đến chân của LED. Với bộ
kit phát triển này, chân Anode của đèn led được nối với chân 2(), chân Kathode dược nối đất.

Page 14 of 125


Các bạn có thể quan sát sơ đồ nguyên lý bên dưới. Để đè LED sáng, bạn cần xuất tín hiệu
mức cao ra chân số 2.


Hình 2.1-2: Sơ đồ đấu dây LED
Code minh hoạ:
__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__
int led = 2; //dinh nghia chan den led
void setup() {
/* - De led sang thi vi dieu khien phai xuat tin hieu ra nen che do la out put
- Doi voi cam bien, nut nhan thi gui tin hieu ve vi dieu khien thi che do la in put */
pinMode (led, OUTPUT);
}
void loop() {
digitalWrite (led, HIGH); // xuat tin hieu muc cao ra chan 2, tuong ung voi den led
}
__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__

Trước khi nạp chương trình, bạn nên nhấn vào Ckeck để kiếm tra, nếu khơng có lỗi, chúng ta
sẽ tiến hành nạp code vào pyWiFi-ESP32 để kiếm tra kết quả.
⚫ Kết quả thực nghiệm:
Sau khi nạp chương trình, bạn có thể thấy đèn LED (đèn xanh) sáng lên là thành công.

Page 15 of 125


Hình 2.1-3: đèn LED sáng

⚫ Tóm tắt:
Từ thử nghiệm đầu tiên, các bạn có thể thấy rằng chỉ mất vài dịng lệnh đơn giản đã có
thể điều khiển bật đèn LED. Tuy rằng đây là một chương trình đơn giản, nhưng nó sẽ giúp
bạn có cái nhìn tổng thể về cách sử dụng của py WiFi-ESP32, từ đó có thể ứng dụng vào các
chương trình cao cấp hơn.

___________________________*********************___________________________

2.2 Nút bấm
⚫ Lời nói đầu:
Nút bấm là thiết bị đầu vào đơn giản nhất và phổ biến nhất. Nhiều sản phẩm không thể
tách rời với nút bấm, từ những sản phầm đơn giản như cơng tắc bóng đèn, quạt điện, cho tới
những sản phẩm cơng nghệ cao như bàn phím máy tính, bảng điều khiển xưởng sản xuất,…
đều không thể thiếu cá nút bấm được. Vậy nên hôm nay chúng ta sẽ học cách sử dụng ESP32
để viết chương trình cho nút bấm đơn giản. Tin mình đi, nó sẽ rất thú vị đó.
⚫ Nền tảng thử nghiệm:
pyWiFi-ESP32

Page 16 of 125


Hình 2.2-1 pyWiFi-ESP32
⚫ Mục đích của thí nghiệm:
Sử dụng nút bấm để thay đổi trạng thái bật và tắt của đèn LED (đèn xanh lam) bằng cách
phát hiện nút được nhấn.
⚫ Giải thích thực nghiệm:
Có 2 nút trên bảng phát triển pyWiFi-ESP32, đó là nút RST và KEY. Nút RST được sử
dụng để làm mới lại chương trình được nạp trong pyWiFi-ESP32 (Reset). Mình có một lưu ý
rất quan trọng đó là khi các bạn đang nạp chương trình thì không được bấm nút RST, điều này
sẽ khiến cho chip xử lý bị hỏng.
Vì vậy, chỉ có một nút KEY có thể được sử dụng. Đầu tiên chúng ta hãy cùng xem phương
thức để pyWiFi-ESP32 phát hiện được nút được bấm như thế nào.
Bạn có thể thấy rằng nó giống với đèn LED trong phần trước, ngoại trừ sự thay đổi về trạng
thái đầu vào / đầu ra. Bạn có thể xem được cách nút bấm được kết nối với bộ kit phát triển
pyWiFi-ESP32 thông qua chân số 0, chân cịn lại nối đất như trong hình minh hoạ bên dưới.
Khi bấm nút KEY, chân 0 của ESP32 sẽ nhận mức thấp "0".


Page 17 of 125


Hình 2.2-2 Sơ đồ nút bấm
Khi nhấn nút, nút bấm có thể xảy ra hiện tượng jitter. Đó là những sai lệch rất ngắn về mặt
thời gian giữa hai khoảng lấy mẫu khác nhau. Hiện tượng jitter được thể hiện trong hình bên
dưới, nó có thể gây sai số trong q trình lập trình. Do đó, bạn nên sử dụng hàm trễ (delay)
trong một khoảng ngắn, bạn có thể tuỳ chọn, nhưng mình xin đề cử là trễ 10ms.

Hình 2.2-3 Quy trình nhấn phím
Ban dầu, vi điều khiển phát hiện giá trị của chân số 0 là 0, sau khoảng thời gian 10ms,
giá trị chân của phím vẫn là 0, có nghĩa là nút đã được nhấn. Bạn có thể theo dõi phần ví dụ
của mình dưới đây.
Code minh hoạ:
__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__
int button = 0;
int led = 2;
void setup() {
/* - De led sang thi vi dieu khien phai xuat tin hieu ra nen che do la out put
- Doi voi cam bien, nut nhan thi gui tin hieu ve vi dieu khien thi che do la in put */
pinMode(button, INPUT);
pinMode(led,OUTPUT);

Page 18 of 125


}
void loop() {
/* - doc trang thai cua nut

- Neu nut bam duoc nhan thi led sang, khong nhan thi led tat*/
int buttonStatus = digitalRead(button);
if (buttonStatus == LOW) {
delay (10);
digitalWrite(led,HIGH);
} else {
digitalWrite(led,LOW);
}
}
__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__*__
Như bạn có thể thấy từ đoạn code trên, sau khi khởi tạo chân 0 là “input”, thì sẽ đi vào
vòng lặp. Khi giá trị của KEY được phát hiện là 0 (nút được nhấn), độ trễ 10ms được thực
hiện trước, sau đó đánh giá lại. Trạng thái của nút được thể hiện thông qua trạng thái của đèn
LED
⚫ Kết quả thực nghiệm:
Bạn có thể thấy rằng mỗi khi nhấn nút KEY, đèn LED sẽ thay đổi trạng thái bật/ tắt như
hình bên dưới:

Page 19 of 125


Hình 2.2-4 Đèn LED sáng khi nút được bấm
⚫ Tóm tắt:
Nút là thiết bị đầu phổ biến nhất hiện nay, chúng có thể tương tác với các phần cứng, phần
mềm khi đã được lập trình. Chỉ cần một chút kiến thức cơ bản và vài câu lệnh ngắn, với một
chiếc nút bấm tí hon, bạn có thể điều khiến động cơ to như một con voi.
___________________________*********************___________________________
2.3 Ngắt ngồi
⚫ Lời nói đầu:
Ngắt là khi một tín hiệu khẩn cấp được gửi tới bộ xử lý, yêu cầu bộ xử lý tạm dừng tức

khắc các hoạt động hiện tại để nhảy đến một nơi khác thực hiện một nhiệm vụ khẩn cấp nào
đó, nhiệm vụ này được gọi là trình phục vụ ngắt – ISR (Interrupt Service Routine). Sau khi
kết thúc trình phục vụ ngắt – ISR, bộ đếm chương trình sẽ trả về giá trị trước đó để bộ xử lý
quay về thực hiện chương trình đang dang dở.
⚫ Nền tảng thử nghiệm:
Bảng phát triển pyWiFi-ESP32.

Page 20 of 125



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×