Đọc toàn bộ giá trị của iNut - Cảm biến / Kiểm thử iNut - cảm biến - Xem thử iNut cảm biến có hoạt động không?

Mô tả dự án: 

Dù có làm gì đi chăng nữa, sau khi lập trình xong, ta phải kiểm thử! Không kiểm thử thì không nghiệm thu, mà không nghiệm thu thì dự án của bạn chưa hoàn thành. Hôm nay, mình sẽ hướng dẫn các bạn kiểm thử iNut - Cảm biến từ webapp. Rất dễ dàng và tinh gọn thông qua máy tính luôn.

Chúng ta sẽ làm gì

Làm gì cũng vậy, phần mềm mà chưa qua giai đoạn kiểm thử thì không được gọi là phần mềm. Vậy kiểm thử phần cứng iNut - cảm biến khắc khe như thế nào? Chúng ta cùng xem qua trong bài viết này.

Bạn cần chuẩn bị những gì

Phần mềm

  • Trên điện thoại di động:
    • iNut - Công tắc wifi (các bạn search trong apple store hoặc google play từ khóa inut là ra). Tải về trên Apple Store, tải về ở Google Play.
  • Trên máy tính:

Phần cứng

Nào ta cùng kết nối các thiết bị iNut vào mạng Wifi

Đối với iNut - Cảm biến

Bạn sử dụng dây sạch Micro USB của Android hoặc xuống bước dưới nối dây như hình rồi thực hiện kết nối như video sau:

Cài đặt cho mạng (iNut_<con số>) (Password: inut12345)

Lắp mạch kiểm thử

#include <Wire.h>
#define N_SENSOR  8
float sensors[N_SENSOR];



//Cài đặt chương trình
void setup() {
  Serial.begin(9600);
  Wire.begin(10);

  //Đăng ký lệnh lắng nghe lệnh từ iNut - Cảm biến. iNut Cảm biến => Arduino
  Wire.onReceive(receiveEvent); 

  //Đăng ký lệnh khi iNut - Cảm biến yêu cầu gửi dữ liệu lại cho nó. Arduino => iNut Cảm biến
  Wire.onRequest(i2cRequestEvent);
  Serial.println("Hello world");
}


//Các biến lưu trữ lệnh khi nhận được lệnh từ iNut - Cảm biến
volatile char buffer[33];
volatile boolean receiveFlag = false;

//Khi nhận được lệnh từ iNut cảm biến thì lắng nghe
void receiveEvent(int howMany)
{
  Wire.readBytes((byte *)buffer, howMany);
  buffer[howMany] = 0;
  receiveFlag = true;
}

void i2cRequestEvent()
{
  //Buộc phải có nếu bạn muốn gửi dữ liệu
  char *data = (byte*)&sensors;
  Wire.write(data, sizeof(sensors));
  Serial.println(F("gui den inut - cam bien"));
}


void loop() {

  //rain sensor
  sensors[0] = millis() % 10000;
  sensors[1] = rand() % 10000;
  sensors[2] = rand() % 10000;
  sensors[3] = rand() % 10000;
  sensors[4] = rand() % 10000;
  sensors[5] = rand() % 10000;
  sensors[6] = rand() % 10000;
  sensors[7] = rand() % 10000;

  if (receiveFlag) { //khi có tín hiệu là đã nhận được lệnh
    
    String command = buffer; //chép lệnh vào biến String cho dễ xử lý
    
    
    Serial.print(command);// in ra lệnh
    Serial.print(' ');
    Serial.println(millis());//in ra thời gian theo millis tính từ lúc arduino chạy để debug
    

    receiveFlag = false; //đánh dấu đã xử lý xong lệnh, không cần đọc nữa
  }
}

Nếu bạn không biết nạp code cho Arduino, xin hãy xem hướng dẫn ở đây.

 

Kết quả của chúng ta khi test trên phần mềm iNut

Cài đặt chương trình kiểm thử iNut Cảm biến

Để cài đặt chương trình kiểm thử iNut các bạn làm theo các hướng dẫn sau đây:

Các bạn mở Windows command line lên bằng cách nhấn tổ hợp phím Windows + R (phím Windows là phím giữa Alt và Ctrl á). Sau đó gõ lệnh cmd và nhấn OK.

Trong bản lệnh hiện ra, bạn lần lượt chạy các lệnh sau (chép và dán vào từng lệnh một cho chắc nhé)

Clone code về

git clone https://github.com/ngohuynhngockhanh/iNut-Node-RED-Kickstarter

cd iNut-Node-RED-Kickstarter

git checkout sensor-serial-monitor

Cài đặt

npm install

Chạy chương trình

npm start

Sau khi cài đặt xong, bạn sẽ có một thông báo như thế này:

Và các bạn truy cập vào http://127.0.0.1:1880/... nhé! Đây là giao diện của chúng ta.

Các bạn truy cập vào địa chỉ http://localhost:1880/ui/... để xem giao diện đồ họa nhé.

Okay, cài đặt xong rồi, bước tiếp theo là cập nhập các mã thông tin trong ví dụ mẫu cho phù hợp với các thiết bị iNut của bạn. 

Cách chép mã Node-Red topic từ phần mềm iNut

Cách chép mã REST API từ phần mềm iNut

Chúc các bạn thành công!

lên
6 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Vấn đề của số chấm động và số nguyên trong ngôn ngữ lập trình C++ trên board mạch Arduino

Có bao giờ bạn tự hỏi: "Dự án của mình làm tốt thế này, chạy ngon lành rành rành thế này, chắc không có bugs đâu?". Thực sự, nếu dự án của bạn không có phần xử lý số thực chấm động trong đó thì mình nghĩ phần code của bạn sẽ hoạt động ngon lành theo thời gian. Nhưng mà có số thực thì từ từ, chúng ta cần xét lại code. Trước đây, có một số bạn nhắn tin riêng hỏi mình về code với điểm chung là "code mình chạy ngon lành lúc đầu, sau đó bị lỗi, không rõ nguyên nhân". Loại trừ các phần code logic sai ra, thì hầu hết đều là do lỗi khi xử lý số chấm động mà không quan tâm đến nền tảng lập trình bên dưới! Mà cũng đúng, chúng ta rất dễ bị đánh lừa bởi chính đoạn code chúng ta viết. Vì nó có báo lỗi biên dịch đâu mà, kaka. Qua bài viết này, mình muốn phân tích và cùng các bạn rút kinh nghiệm về số chấm động float, cách hạn chế lỗi sai với số chấm động.

lên
22 thành viên đã đánh giá bài viết này hữu ích.

Bài 6: Đọc hiệu điện thế của một nguồn điện qua cổng Analog.

Đã bao giờ, bạn từng hỏi bản thân mình làm sao cái đồng hồ điện nó đọc được hiệu điện thế của một nguồn hay chưa? Bạn vẫn thắc mắc nguyên lý và vẫn chưa tìm ra lời giải? Vậy hãy đọc bài này. Chúng ta sẽ tìm cách để đọc tín hiệu từ analog từ đó suy ra giá trị hiệu điện thế của một vị trí xác định. Hiệu điện thế này tối đa chỉ 5V thôi bạn nhé. Nếu muốn đo cao hơn, bạn phải nghiên cứu nhiều hơn nữa!

lên
8 thành viên đã đánh giá bài viết này hữu ích.