HTPro.vn 27/4 Đình Phong Phú, Tăng Nhơn Phú B, Thủ Đức, Tp. Hồ Chí Minh

Hướng dấn sử dụng module KQ-130F với arduino

Thứ tư - 04/12/2019 07:00
Code mẫu cho module truyền tín hiệu qua mạng điện lưới KQ-130F. Sử dụng trình biên dịch Arduino IDE và board Arduino Nano.
Hướng dấn sử dụng module KQ-130F với arduino
1. Sơ đồ kết nối:
 Arduino Nano <-----> KQ-130F
 PIN D2  <-----> TX
 PIN D3   <-----> RX
 -            | 1 -AC: Nối vào lưới điện 220V AC
 -            | 2 -AC: Nối vào lưới điện 220V AC
 5V         <-----> 3 + 5V
 GND       <----->4 GND 
 5V          <-----> 5 + 5V
 D3          <-----> 6 RX
 D2          <-----> 7 TX
 GND       <-----> 8 MODE
 -            | 9 NC ( Không kết nối) 
2. Code mẫu: 
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
char data_in[100]; //bộ đệm nhận dữ liệu
int index = 0; // chỉ số cho bộ đệm
void setup()
{
  Serial.begin(9600);
  while (!Serial) {;}
 Serial.println("Goodnight moon!");
  // Cài đặt cổng nối tiếp chạy bằng phần mềm
  mySerial.begin(9600);
}
void loop() // run over and over
{
  if (mySerial.available())
  {
     char c = mySerial.read();
     if(c == 0x0D){
      if(data_in[2] == 0x01)  Serial.println("LED ON");
      else  Serial.println("LED OFF");
      index = 0;
      }
      else {
        index++;
        data_in[index] = c;
      }    
    }
  if (Serial.available())
    mySerial.write(Serial.read());
}
3. Cách thức hoạt động:
- Kết nối như phần cứng như hướng dẫn phần 1.
- Biên dịch, upload chương trình vào hai board aruino và kết nối board arduino với máy tính
- Mở terminal như phần mềm Hercules để gửi số hex vào 1 trong 2 board
- Formart lệnh: 02 XX 0D . Bấm gửi trên 1 board . Board nhận còn lại sẽ giải mã lệnh này, nếu XX= 01 thì in ra Serial là LED ON, nếu khác thì là LED OFF. Từ đây, có thế so sánh hoặc lấy giá trị XX để làm nhiều việc khác: bật tắt relay, độ sáng đèn,....
*) Các bạn có thắc mắc gì thì post bên dưới để kỹ thuật bên mình giải đáp nhé.

Tổng số điểm của bài viết là: 10 trong 2 đánh giá

Xếp hạng: 5 - 2 phiếu bầu
Click để đánh giá bài viết

  Ý kiến bạn đọc

  • Trần Công Bảo
    Bạn cho tôi hỏi 1 chút. Nếu như tôi không dùng terminal mà dùng 1 board để phát liên tục chuỗi lệnh "02 01 0D" như khi dùng terminal thì phần {mySerial.write(Serial.read());} phải thay đổi như thế nào cho phù hợp ? Tôi chưa nghĩ ra phương án nào cả. Cám ơn bạn hỗ trợ.
      Trần Công Bảo   06/04/2021 13:28
Mã bảo mật   

Những tin mới hơn

Những tin cũ hơn

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây