Cấu hình board cho dự án IoT
Trong hướng dẫn lần này, chúng ta sẽ học cách để sử dụng chip Wi-Fi có sẵn trên board MKR1000, và kết nối board với Wi-Fi cục bộ. Đây thực sự là một hướng dẫn quan trọng, và gần như sẽ được sử dụng trong hầu hết hướng dẫn của cuốn sách này để tạo nên các dự án IoT.
Sẵn sàng
Trước khi chúng ta có thể sử dụng chip Wi-Fi trên board, các bạn cần một thư viện Arduino để có thể điều khiển nó. Thư viện dành cho chip này là WiFi101 và có thể thấy trong phần quản lý thư viện của Arduino.
Để truy cập phần quản lý thư viện, chỉ cần đơn giản đến theo đường dẫn Sketch | Include Library | Manage Libraries trong Arduino IDE. Tiếp đến gõ WiFi101 để tìm kiếm thư viện:
Để cài đặt thư viện, nhấp chuột vào nút Install nằm cạnh phiên bản thư viện.
Cách làm
Nào chúng ta cùng kết nối board tới mạng Wi-Fi nào. Sketch của phần này khá dài, do đó tôi đã chia thành 3 phần.
Đây là phần chính của sketch, để kết nối chip vào mạng Wi-Fi cục bộ:
// Libraries
#include <SPI.h>
#include <WiFi101.h>
// Credentials
char ssid[] = “wifi-name”; // your network SSID (name)
char pass[] = “wifi-pass”; // your network password
int status = WL_IDLE_STATUS; // the Wifi radio’s status
void setup() {
// Serial
Serial.begin(115200);
// Attempt to connect to Wifi network:
while ( status != WL_CONNECTED) {
Serial.print(“Attempting to connect to WPA SSID: “);
Serial.println(ssid);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
// Wait 10 seconds for connection:
delay(10000);
}
// you’re connected now, so print out the data:
Serial.print(“You’re connected to the network”);
printCurrentNet();
printWifiData();
}
void loop() {
// Check the network connection once every 10 seconds:
delay(10000);
printCurrentNet();
}
Cái mà các bạn cần sửa ở đây đó là những dòng sau:
char ssid[] = “wifi-name”; // your network SSID (name)
char pass[] = “wifi-pass”; // your network password
Bạn cần thay đổi thông tin trong những dòng trên bằng với tên và mật khẩu mạng Wi-Fi của bạn. Đây là điều mà bạn sẽ làm trong toàn bộ mọi chương trình trong phần còn lại của cuốn sách, khi mà chúng ta luôn luôn sẽ kết nối board Arduino đến mạng Wi-Fi cục bộ.
Tiếp đó, những hàm bên dưới sẽ in ra dữ liệu về địa chỉ IP:
void printWifiData() {
// print your WiFi shield’s IP address:
IPAddress ip = WiFi.localIP();
Serial.print(“IP Address: “);
Serial.println(ip);
Serial.println(ip);
// print your MAC address:
byte mac[6];
WiFi.macAddress(mac);
Serial.print(“MAC address: “);
Serial.print(mac[5], HEX);
Serial.print(“:”);
Serial.print(mac[4], HEX);
Serial.print(“:”);
Serial.print(mac[3], HEX);
Serial.print(“:”);
Serial.print(mac[2], HEX);
Serial.print(“:”);
Serial.print(mac[1], HEX);
Serial.print(“:”);
Serial.println(mac[0], HEX);
}
Và hàm này in ra dữ liệu về mạng Wi-Fi mà board Arduino đang kết nối tới:
void printCurrentNet() {
// print the SSID of the network you’re attached to:
Serial.print(“SSID: “);
Serial.println(WiFi.SSID());
// print the MAC address of the router you’re attached to:
byte bssid[6];
WiFi.BSSID(bssid);
Serial.print(“BSSID: “);
Serial.print(bssid[5], HEX);
Serial.print(“:”);
Serial.print(bssid[4], HEX);
Serial.print(“:”);
Serial.print(bssid[3], HEX);
Serial.print(“:”);
Serial.print(bssid[2], HEX);
Serial.print(“:”);
Serial.print(bssid[1], HEX);
Serial.print(“:”);
Serial.println(bssid[0], HEX);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print(“signal strength (RSSI):”);
Serial.println(rssi);
// print the encryption type:
byte encryption = WiFi.encryptionType();
Serial.print(“Encryption Type:”);
Serial.println(encryption, HEX);
Serial.println();
}
Và giờ là lúc để kiểm tra chương trình và kết nối board của chúng ta vào Internet! Các bạn có thể tải về toàn bộ sketch từ kho Github của cuốn sách:
https://github.com/marcoschwartz/iot-arduino-cookbook
Giờ thì hãy đảm bảo thay đổi tên và mật khẩu điểm truy cập Wi-Fi bên trong chương trình, và sau đó nạp chương trình vào board. Ngay sau đó mở màn hình Serial lên. Đây là thứ mà các bạn sẽ được thấy:
Nếu bạn nhìn thấy điều tương tự, chúc mừng các bạn, board của chúng ta đã kết nối tới mạng Wi-Fi và vào Internet (giả dụ bộ định tuyến Wi-Fi được kết nối Internet).
Nó hoạt động như thế nào
Thư viện WiFi101 giúp việc sử dụng chip Wi-Fi onboard của board MKR1000 trở nên dễ dàng, và dễ kết nối board vào Internet. Đây thực sự là chức năng hữu ích chúng ta sẽ sử dụng trong toàn bộ sách.
Những nền tảng IoT dành cho Arduino
Trong hướng dẫn đầu tiên của chương này, chúng ta sẽ xem đến những nền tảng khác nhau có sẵn cho chúng ta, nếu chúng ta muốn lưu dữ liệu online từ board Arduino của mình. Chúng ta sẽ biết điểm mạnh và yếu của mỗi nền tảng, do đó chúng ta có thể lựa chọn cho phần sau của chương.
Những nền tảng sẵn có
Nền tảng đầu tiên tối muốn đề cập đến là Dweet.io. Các bạn có thể tìm hiểu thêm nó tại đây:
https://dweet.io/
Dweet.io cơ bản là một API đơn giản mà có thể được gọi từ bất kì trình duyệt Web hoặc ứng dụng nào, và nó rất dễ sử dụng mà không có vấn đề gì! Nó thật sự dễ dàng để lưu dữ liệu từ dự án Arduino và lấy lại dữ liệu đó từ ứng dụng khác.
Nền tảng kế tiếp tôi muốn nói đến ở đây là Xively, có địa chỉ trang chủ là:
https://xively.com/
Xively là một nền tảng IoT hoàn chỉnh, nó cung cấp nhiều hơn cho giới kinh doanh hơn Dweet.io. Nó bao gồm nhiều tính năng hơn chỉ là chỉ lưu trữ dữ liệu đơn thuần, chẳng hạn, các bạn có thể vẽ đồ thị ngay trên nền tảng đó.
Nền tảng kế tiếp là Adafruit IO. Các bạn có thể truy cập nền tảng này bằng cách đi đến URL dưới đây:
https://io.adafruit.com/
Được tạo ra bởi nhà sản xuất các sản phẩm phần cứng nguồn mở Adafruit, nó được tạo ra để đảm bảo dễ sử dụng với các thư viện và sản phẩm của Adafruit, ví dụ board breakout ESP8266 của họ và dòng sản phẩm FONA kết nối với Internet thông qua GPRS hoặc 3G. Tại thời điểm viết sách này, dịch vụ này vẫn đang trong giai đoạn thử nghiệm (open beta).
Dịch vụ cloud cuối cùng tôi muốn đề cập trong hướng dẫn này là dịch vụ dữ liệu SparkFun, có thể truy cập từ:
https://data.sparkfun.com/
Dịch vụ này tương đối giống với Dweet.io, và cho phép người dùng dễ dàng lưu dữ liệu online. Bạn cũng có thể tìm thấy rất nhiều bài hướng dẫn về cách sử dụng dịch vụ này với những sản phẩm của SparkFun. Cho chương này và phần lớn nội dung quyển sách, tôi quyết định sử dụng Dweet.io để lưu trữ dữ liệu online như một giải pháp dễ dàng nhất khi sử dụng board Arduino.
Nó hoạt động như thế nào…
Toàn bộ những dịch vụ trên làm việc theo một mô hình tương tự – các bạn cần phải gọi API của dịch vụ đó, với dữ liệu bạn muốn lưu online. Điều này sẽ dược thực hiện với board Arduino theo các hướng dẫn trong chương này, tại đó chúng ta sẽ gửi dữ liệu cảm biến tới những dịch vụ ở trên.
Tiếp đến chúng ta có thể sử dụng những dữ liệu đó từ các dịch vụ khác ví dụ để vẽ sơ đồ dữ liệu một cách trực quan bên trong bảng điều khiển online.
Để có kiến thức đầy đủ và hệ thống về dự án IoT trên nền tảng Arduino, bạn nên mua sách “INTERNET OF THINGS VỚI ARDUINO“.
Mua ngay tại link: https://cachdung.com/internet-of-things-voi-arduino.html