การต่อสัญญาณของโมดูล 433Mhz Wireless RF Transmitter and Receiver Module เราสามารถเชื่อมต่อให้บอร์ดสมองกลฝังตัวสื่อสารกันแบบไร้สายได้ ด้วยความถี่ของคลื่นวิทยุที่ 433 ดังภาพข้างล่าง
สำหรับการติดต่อสื่อสารจะแยกออกเป็น 2 ส่วนคือ
1. ภาคส่งข้อมูล กรณีนี้ผมจะเชื่อมต่อกับบอร์ด Lotus Mega Bot ซึ่งใช้บอร์ด Mega Mini Pro โดยใช้ขาสัญญาณดิจิตอลที่ 32 เป็นตัวส่งข้อมูล ดังภาพข้างล่าง
ซึ่งผมได้เขียนโค้ด Arduino IDE ตัวอย่างในภาคส่งข้อมูลในบอร์ด Lotus Mega Bot ดังนี้
โค้ดสำหรับภาคส่งสัญญาณ
#include <RCSwitch.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 OLED(-1);
RCSwitch mySwitch = RCSwitch();
int snd = 52;
void setup() {
mySwitch.enableTransmit(32); // Using Pin #10
OLED.begin(SSD1306_SWITCHCAPVCC,0x3C);
}
void loop() {
OLED.clearDisplay();
OLED.setTextColor(WHITE,BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(0,0); // เซตตำแหน่ง 10,0
OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 2
OLED.println("Sent Data"); // พิมพ์คำว่า Received
OLED.println("----------");
OLED.print(" ");
OLED.println("555");
OLED.display();
tone(snd,800,100);
mySwitch.send(555, 24);
delay(1000);
OLED.clearDisplay();
OLED.setTextColor(WHITE,BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(0,0); // เซตตำแหน่ง 10,0
OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 2
OLED.println("Sent Data"); // พิมพ์คำว่า Received
OLED.println("----------");
OLED.print(" ");
OLED.println("111");
OLED.display();
tone(snd,800,100);
mySwitch.send(111, 24);
delay(1000);
OLED.clearDisplay();
OLED.setTextColor(WHITE,BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(0,0); // เซตตำแหน่ง 10,0
OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 2
OLED.println("Sent Data"); // พิมพ์คำว่า Received
OLED.println("----------");
OLED.print(" ");
OLED.println("139");
OLED.display();
OLED.display();
tone(snd,800,100);
mySwitch.send(139, 24);
delay(1000);
}
2. ภาครับข้อมูล กรณีนี้ผมจะเชื่อมต่อกับบอร์ด Lotus Nano Bot โดยใช้ขาสัญญาณ Interrupt 0 ในบอร์ด Lotus Nano Bot จะอยู่ที่ขาดิจิตอลที่ 2 ดังภาพข้างล่าง
ผมได้เขียนโค้ด Arduino IDE ตัวอย่างในภาคร้บข้อมูลในบอร์ดได้ดังนี้
โค้ดภาครับสัญญาณ
#include <RCSwitch.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 OLED(-1);
int snd = 3;
RCSwitch mySwitch = RCSwitch();
void setup() {
tone(snd,900,50);delay(100);tone(snd,900,50);
Serial.begin(9600);
OLED.begin(SSD1306_SWITCHCAPVCC,0x3C);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
OLED.clearDisplay();
OLED.setTextColor(WHITE,BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(0,0); // เซตตำแหน่ง 10,0
OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 2
OLED.println("Connecting"); // พิมพ์คำว่า Received
OLED.display();
}
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding");
}
else {
Serial.print( mySwitch.getReceivedValue() );
tone(snd,1000,100);
OLED.clearDisplay();
OLED.setTextColor(WHITE,BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(0,0); // เซตตำแหน่ง 10,0
OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 2
OLED.println(" Received"); // พิมพ์คำว่า Received
OLED.print(" "); //
OLED.println(mySwitch.getReceivedValue());
OLED.print("Status = ");
OLED.println(mySwitch.getReceivedProtocol()); // พิมพ์บรรทัดใหม่หลังคำว่า 2018
OLED.display();
delay(1000);
}
mySwitch.resetAvailable();
OLED.clearDisplay();
OLED.setCursor(0,0); // เซตตำแหน่ง 10,0
OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 2
OLED.println(" No DATA"); // พิมพ์คำว่า Received
OLED.println("----------"); //
OLED.println("----------"); //
OLED.println("----------"); //
OLED.display();
}
}
สำหรับการใช้งานเบื้องต้นสามารถดูได้จากวีดีโอสาธิตการทำงานดังตัวอย่างข้างล่าง
ตัวอย่างวีดีโอการทำงาน