Nếu bạn chưa nghe về phong trào Internet of Things (IoT), có lẽ bạn đang sống dưới một tảng đá. Hầu hết các thiết bị nhúng hiện nay đều kết nối với internet theo một cách nào đó để thu thập hoặc gửi dữ liệu lên đám mây. Dữ liệu đó sau đó có thể được phân tích và/hoặc hành động dựa trên các điều kiện khác nhau được thiết lập bởi máy chủ xử lý dữ liệu. Để đưa dữ liệu lên đám mây, chúng ta cần các thiết bị thông minh, đáng tin cậy và giá rẻ có kết nối internet để hỗ trợ chúng ta trong quá trình này. Mặc dù hầu hết các thiết bị IoT có thể được phát triển sử dụng các thiết bị máy tính nhúng mạnh mẽ như Raspberry Pi 4, hầu hết các ứng dụng của chúng ta có thể được thực hiện thông qua các thiết bị rẻ, công suất thấp.
Hầu hết mọi người đều đồng ý rằng Arduino là nền tảng vi điều khiển đơn giản và rẻ nhất. Sự phát triển mạnh mẽ của nó trong cộng đồng Maker chính là minh chứng cho điều đó. Khi công ty và cộng đồng người dùng phát triển, các Shields Arduino và các thiết bị của nó cũng phát triển. Các Shields (và một số thiết bị Arduino mới) đã thêm vào hỗ trợ kết nối internet rất cần thiết để biến Arduino trở thành các thiết bị IoT thực thụ.
Đây là ESP8266 MCU. Thiết bị này có một vi điều khiển và Wi-Fi tích hợp. Kết hợp với Arduino IDE (thông qua việc sử dụng gói thư viện ngoài) và bạn đã có một thiết bị siêu rẻ, giống như Arduino, với Wi-Fi tích hợp. Một bo mạch như bo mạch NodeMCU của HiLetgo hoàn toàn tự chứa và có thể hoạt động như một phiên bản nhỏ của Arduino. Trong bài viết này, chúng ta sẽ học cách bắt đầu với bo mạch NodeMCU của HiLetgo và thực hiện một số ví dụ có thể hoạt động trên bất kỳ bo mạch đánh giá nào sử dụng ESP8266 (hỗ trợ bởi thư viện Arduino IDE).
Hướng dẫn này giả sử bạn đã cài đặt và chạy phần mềm Arduino IDE. Các bước dưới đây sẽ hướng dẫn bạn cách cấu hình bo mạch ESP8266 trong môi trường Arduino IDE.
Đi tới File > Preferences và dán URL sau vào trường “Additional Boards Manager URLs”:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Đi tới Tools > Board > Boards Manager…
Tìm kiếm “esp8266” và nhấn Enter. Khi thư viện “esp8266” xuất hiện, nhấn Install.
Giờ cắm cáp Micro-USB vào bo mạch của bạn và cấu hình nó theo loại bo mạch của bạn. Trong ví dụ này, chúng ta sử dụng bo mạch NodeMCU của HiLetgo, vì vậy chúng ta sẽ cần cấu hình một số cài đặt riêng cho bo mạch:
Trong phần mềm, bài kiểm tra cơ bản mà mọi người thường thực hiện với một ngôn ngữ hoặc thiết lập mới là kiểm tra “Hello World”. Khái niệm rất đơn giản: in ra “Hello World” lên màn hình. Đối với các hệ thống nhúng, một LED nhấp nháy giống như ý tưởng trên. Một LED nhấp nháy là cách tuyệt vời để kiểm tra xem vi điều khiển của bạn có hoạt động hay không, vì nó cho chúng ta biết rằng mạch điện của bạn hoạt động tốt như nguồn điện, mạch và các linh kiện điện tử khác. Nó cũng cho chúng ta biết rằng mã đã được biên dịch và tải lên thiết bị mà không gặp vấn đề gì.
Để bắt đầu với một sketch LED nhấp nháy có sẵn, đi tới File > Examples > ESP8266 và nhấp vào “Blink.” Sketch ví dụ này sẽ làm LED nhấp nháy lên và xuống. Ở góc trên bên trái, nhấn vào nút “Upload”:
Sau khi thiết bị được lập trình, bạn sẽ thấy LED trên bo mạch NodeMCU nhấp nháy lên xuống mỗi giây.
Như đã đề cập trong phần giới thiệu, ý tưởng chính khi sử dụng ESP8266 trong môi trường Arduino là có một thiết bị rẻ tiền, giống như Arduino, với Wi-Fi tích hợp. Để tận dụng điều này, chúng ta sẽ muốn khám phá một số ví dụ sketch Wi-Fi có sẵn trong thư viện ESP8266 mà chúng ta đã cài đặt trước đó.
Hãy đi tới File > Examples > ESP8266HTTPClient và nhấp vào “BasicHttpClient.” Điều này sẽ trình bày khả năng của thiết bị kết nối với mạng Wi-Fi và lấy nội dung từ một trang web. Vào khoảng dòng 35, bạn sẽ thấy mã sau:
WiFiMulti.addAP("SSID", "PASSWORD");
Thay thế “SSID” bằng SSID của router và “PASSWORD” bằng mật khẩu Wi-Fi của bạn. Một điều cần lưu ý nếu bạn gặp phải sự cố là xử lý các ký tự không phải chữ và số. Ví dụ, nếu SSID của router của bạn là “I’m a Router” thì có thể dấu nháy đơn sẽ không được nhận đúng. Để có kết quả tốt nhất, hãy đảm bảo sử dụng SSID chỉ chứa các chữ cái và số.
Sau khi thay thế SSID và MẬT KHẨU, hãy tiếp tục và tải lên sketch. Sau khi sketch đã được tải lên thiết bị, điều hướng đến Tools và nhấp vào “Serial Monitor.” Kết quả trên màn hình serial sẽ trông giống như sau:
[SETUP] CHỜ 3...
[SETUP] CHỜ 2...
[SETUP] CHỜ 1...
[HTTP] bắt đầu...
[HTTP] GET...
[HTTP] GET... mã: 200
<HTML>
<HEAD>
<!-- Tạo bởi AOLpress/2.0 -->
<TITLE>Tiêu đề kết nối</TITLE>
</HEAD>
<BODY>
<P>
<IMG ALT="Jigsaw" BORDER="0" WIDTH="212" HEIGHT="49" SRC="/icons/jigsaw">
<H1>
Tiêu đề <I>Connection</I>
</H1>
<P>
Trang này sẽ được phục vụ cho bạn với các tiêu đề sau:
<P>
<CODE>ExtensionHeader: ExtensionValue<BR>
Connection: ExtensionHeader</CODE>
<P>
Nếu bạn nhận được trang này qua proxy, bạn <I>không</I> nên thấy
<I>ExtensionHeader</I> !
<P>
<HR>
<BR>
<A HREF="mailto:jigsaw@w3.org">jigsaw@w3.org</A>
</BODY></HTML>
Chúc mừng! Bạn đã kết nối thành công thiết bị ESP8266 của mình với internet.
Trong Khởi đầu với MQTT, chúng tôi đã xem xét khái niệm MQTT và cách thiết lập Arduino Uno với Adafruit IO sử dụng Ethernet Shield. Đây là nơi thiết bị như NodeMCU thực sự tỏa sáng. Với chi phí thấp hơn giá của chính Arduino Uno, chúng ta có thể tạo ra một thiết bị hoàn chỉnh hỗ trợ MQTT mà không cần bất kỳ Shield ngoại vi nào (vì chúng ta đã có Wi-Fi tích hợp). Để bắt đầu, chúng ta sẽ sử dụng cùng một ví dụ được trình bày trong Khởi đầu với MQTT, ngoại trừ việc chúng ta sẽ sử dụng sketch đặc biệt cho module ESP8266. Điều hướng đến File > Examples > Adafruit MQTT Library và nhấp vào “mqtt_esp8266.” Giống như trong ví dụ HttpClient ở trên, chúng ta cần cung cấp SSID Wi-Fi và Mật khẩu ở khoảng dòng 24. Chúng ta cũng cần điền tên người dùng và khóa Adafruit IO của mình (một vài dòng dưới đó). Để biết hướng dẫn về cách thiết lập tài khoản Adafruit IO hoặc cách lấy khóa của bạn, hãy xem Khởi đầu với MQTT. Sau khi điền tất cả chi tiết kết nối và tải lên sketch, bạn sẽ thấy kết quả giống như sau trên màn hình serial (Tools > Serial Monitor):
.......
WiFi đã kết nối
Địa chỉ IP:
192.168.68.136
Đang kết nối với MQTT... Đã kết nối MQTT!
Đang gửi giá trị photocell 0...OK!
Đang gửi giá trị photocell 1...OK!
Đang gửi giá trị photocell 2...OK!
Đang gửi giá trị photocell 3...OK!
Bây giờ bạn có thể điều hướng đến nguồn cấp photocell trên Adafruit IO để quan sát dữ liệu được gửi từ module ESP8266 của bạn đến máy chủ MQTT Adafruit IO của bạn. Đây là hình ảnh nguồn cấp của tôi sau một thời gian:
Trong bài viết này, chúng tôi đã xem xét các lợi ích của việc sử dụng một thiết bị như bo mạch NodeMCU từ HiLetgo và cách bắt đầu với một vài ví dụ. Trong các ví dụ này, chúng tôi đã trình bày cách nhấp nháy LED, yêu cầu HTTP cơ bản và sử dụng dịch vụ Adafruit IO để xuất bản dữ liệu từ thiết bị lên máy chủ MQTT. Bây giờ bạn đã quen thuộc với thiết bị, hãy thử sử dụng Wi-Fi nhà bạn và dịch vụ máy chủ Adafruit IO để thiết lập một dự án giám sát cảm biến của riêng bạn. Chúc bạn thành công trong việc chế tạo mô hình!