Internet of Things với Arduino – Các bước chuẩn bị

Cài đặt môi trường phát triển Arduino

Trong hướng dẫn đầu tiên của cuốn sách này, chúng ta sẽ tìm hiểu cách để hoàn thành việc cài đặt môi trường phát triển tích hợp IDE cho Arduino để bạn có thể dùng nó lập trình board Arduino của mình và thực hiện những dự án IoT.

Cách làm

Điều đầu tiên bạn cần phải làm đó là tải xuống phiên bản mới nhất của Arduino IDE từ địa chỉ sau:

https://www.arduino.cc/en/Main/Software

Dưới đây là hình ảnh có thể bạn sẽ thấy, các bạn có thể chọn phiên bản phù hợp với hệ điều hành mình đang sử dụng:

Bây giờ các bạn có thể cài đặt Arduino IDE, và mở nó trên máy tính của mình. Arduino IDE sẽ được sử dụng xuyên suốt toàn bộ cuốn sách cho vài tác vụ. Chúng ta sẽ sử dụng nó để viết mã lệnh (code), đồng thời để cấu hình board Arduino và đọc những thông tin debug ngược trở lại từ những board đó bằng màn hình giao tiếp nối tiếp (Serial monitor) có sẵn trong Arduino IDE.

Nội dung được trích từ sách: Internet of Things với Arduino

Thứ mà chúng ta cần phải cài đặt ngay bây giờ đó là định nghĩa cho board MKR1000, thứ được sử dụng trong cuốn sách này. Để làm điều đó, mở phần quản lý board Arduino bằng cách đi đến Tools | Boards | Boards Manager. Tại đó, hãy tìm kiếm SAMD boards:

Để cài đặt định nghĩa cho board, chỉ cần nhấp chuột vào nút Install gần định nghĩa board. Bây giờ các bạn có thể chọn Arduino/GenuinoMKR1000 trong Arduino IDE:

Lúc này các bạn hoàn tất việc cài đặt để có thể phát triển những dự án Arduino sử dụng Arduino IDE và board MKR1000. Ví dụ các bạn có thể thử mở một sketch mẫu sẵn có trong IDE:

Nó hoạt động như thế nào

Arduino IDE là công cụ tốt nhất để lập trình cho nhiều loại board, bao gồm board MKR1000 sẽ được sử dụng trong sách. Chúng ta cũng có thể thấy rằng đó là một công cụ tuyệt vời để phát triển các dự án IoT với Arduino. Như chúng ta đã thấy trong hướng dẫn này, phần quản lý board hỗ trợ làm việc đó dễ dàng để sử dụng một board mới trong Arduino IDE.

Xem thêm: Học IoT bài bản: Internet of Thing (IoT)

Tương tác với những cảm biến cơ bản

Trong công thức này, chúng ta sẽ được thấy cách làm thế nào để đo dữ liệu đến từ cảm biến kết nối tới mạch MKR1000. Nó sẽ dạy chúng ta những hiểu biết cơ bản về ngôn ngữ Arduino. Ví dụ, chúng ta sử dụng một quang trở thường để đo mức ánh sáng môi trường xung quanh dự án.

Sẵn sàng

Cho dự án này, các bạn cần một vài thành phần thêm cho board MKR1000 và breadboard và một vài dây nối.

  • Quang trở
  • Điện trở 10k Ohm

Chúng ta sẽ lắp ghép dự án. Đầu tiên, đặt điện trở nối tiếp với quang trở trên breadboard, cạnh board MKR1000.

Lúc này, nối đầu còn lại của điện trở với cực GND trên board MKR1000, và đầu còn lại của quang trở với cực VCC của board Arduino. Cuối cùng, nối chân chung giữa điện trở và quang trở tới chân analog A0 của board MKR1000.

Và sau đây là thành quả:

Cách làm

1. Chúng ta sẽ cấu hình board để đọc dữ liệu từ quang trở. Sketch cho dự án thực sự đơn giản, chúng ta sẽ xuất ra màn hình Serial tín hiệu đọc được từ chân A0. Đây là toàn bộ sketch cho phần này:

// Pins
int sensorPin = A0;

void setup() {

  // Serial
  Serial.begin(115200);
}

void loop() {
  // Reading 
  int sensorValue = analogRead(sensorPin);
  // Display
  Serial.print("Sensor reading: ");
  Serial.println(sensorValue);
  // Wait
  delay(500);
}

Các bạn có thể sao chép sketch phía trên và dán vào trong Arduino IDE của các bạn. Hãy chắc rằng bạn kết nối board tới máy tính qua cổng USB, và chọn đúng board và cổng Serial (nối tiếp) trong Arduino IDE. Tiếp đến, nạp sketch vào board.

2. Một khi các bạn hoàn thành nạp chương trình, mở màn hình Serial lên. Bạn sẽ lập tức thấy dữ liệu đọc từ cảm biến:

3. Bây giờ, hãy thử đặt tay của mình lên trên quang trở. Bạn sẽ lập tức thấy giá trị đo được bởi cảm biến giảm xuống, điều đó đồng nghĩa cảm biến làm việc đúng mong muốn.

Nó hoạt động như thế nào

Dự án này thật sự đơn giản, và đã minh họa làm thế nào để đọc dữ liệu từ chân analog trên board MKR1000. Trong dự án này, chúng ta chỉ đơn giản đọc dữ liệu từ chân analog A0, và xuất giá trị đọc được lên màn hình Serial. Do quang trở hoạt động như một biến trở (phụ thuộc vào cường độ ánh sáng môi trường xung quanh), chúng ta trực tiếp đọc tín hiệu thay đổi phụ thuộc vào cường độ ánh sáng môi trường.

Tương tác với những bộ chấp hành cơ bản

Trong hướng dẫn này, chúng ta sẽ học cách điều khiển output của board Arduino. Đó thực sự rất hữu ích trong phần còn lại của cuốn sách, như khi chúng ta điều khiển output của vài thiết bị, như đèn chẳng hạn.

Sẵn sàng

Để thực hiện hướng dẫn này, các bạn cần có vài thứ để điều khiển. Dưới đây, tôi sẽ sử dụng một rơ-le đơn giản, nhưng các bạn cũng có thể sử dụng các thành phần như LED.

Đây là rơ-le loại tôi dùng trong hướng dẫn này:

  • 5V rơ-le

Chúng ta sẽ lắp mạch dự án cho hướng dẫn này. Đầu tiên, cắm board MKR1000 vào breadboard. Sau đó, nối chân VCC của rơ-le với chân VCC của board Arduino, và chân GND tới chân GND của MKR1000. Cuối cùng, nối chân SIG của rơ-le tới chân số 5 của board Arduino. Đây là kết quả cuối cùng:

Cách làm

1. Chúng ta sẽ cấu hình board để biết cách điều khiển output, giống như rơ-le. Để minh họa chúng ta sẽ bật/tắt rơ-le trong mỗi giây. Và đây là sketch hoàn chỉnh:

// Pins
int relayPin = 5;
void setup() {

  // Set pin as output
  pinMode(relayPin, OUTPUT);
}
void loop() {

  // Set relay ON
  digitalWrite(relayPin, HIGH);

  // Wait
  delay(1000);

  // Set relay OFF
  digitalWrite(relayPin, LOW);

  // Wait
  delay(1000);
}

2. Bây giờ, sao chép sketch vào trong Arduino IDE và nạp chương trình cho board Arduino của các bạn. Khi công việc hoàn thành, các bạn sẽ thấy lập tức (hoặc nghe) rơ-le bật/tắt mỗi giây.

Nó hoạt động như thế nào

Sketch đơn giản chỉ sử dụng hàm digitalWrite() của ngôn ngữ Arduino để điều khiển trạng thái của chân kết nối với rơ-le, cùng với đó là hàm delay(), do đó bật tắt rơ-le liên tục.

Còn nữa

Dĩ nhiên các bạn có thể sử dụng điều đã học được trong dự án này để điều khiển những thiết bị khác như LED. Chúng ta sẽ thấy trong hướng dẫn khác, ở phần sau cuốn sách, cách điều khiển thiết bị có output lớn hơn ví dụ đèn và các thiết bị gia dụng khác.

Cấu hình board Arduino 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 mạch 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.