วันพุธที่ 25 มกราคม พ.ศ. 2560

ควบคุมรถบังคับด้วย App Bluetooth RC Controller



ควบคุมรถบังคับด้วย App Bluetooth RC Controller








ตัวโปรเแกรม

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(9, 10); // RX | TX  // สำหรับรับค่าจาก bluetooth

// give it a name:
int Motor_Left_forward = 2; // pin สำหรับกำหนดทิศทางการหมุนมอเตอร์ด้านซ้าย
int Motor_Left_reward = 4;  // pin สำหรับกำหนดทิศทางการหมุนมอเตอร์ด้านซ้าย
int Speed_Motor_Left = 3;   // pin สำหรับควบคุมความเร็วมอเตอร์ซ้าย

int Motor_Right_forward = 7; // pin สำหรับกำหนดทิศทางการหมุนมอเตอร์ด้านขวา
int Motor_Right_reward = 6;  // pin สำหรับกำหนดทิศทางการหมุนมอเตอร์ด้านขวา
int Speed_Motor_Right = 5;   // pin สำหรับควบคุมความเร็วมอเตอร์ขวา

int Horn = 11;               // pin สำหรับแตร

int Speed = 0;               // ตัวแปรสำหรับเก็บค่าความเร็ว

void setup() {  

  Serial.begin(9600);    // ความเร็วในการสื่อสารสำหรับคอมฯ
  BTSerial.begin(9600);  // ความเร็วในการสื่อสารสำหรับ บลูทูธ
 
  pinMode(Motor_Left_forward, OUTPUT);    // กำหนด pin ให้ทำงานแบบ Output
  pinMode(Motor_Left_reward, OUTPUT);     // กำหนด pin ให้ทำงานแบบ Output  
  pinMode(Speed_Motor_Left, OUTPUT);      // กำหนด pin ให้ทำงานแบบ Output
  pinMode(Motor_Right_forward, OUTPUT);   // กำหนด pin ให้ทำงานแบบ Output
  pinMode(Motor_Right_reward, OUTPUT);    // กำหนด pin ให้ทำงานแบบ Output  
  pinMode(Speed_Motor_Right, OUTPUT);     // กำหนด pin ให้ทำงานแบบ Output  
  pinMode(Horn, OUTPUT);                  // กำหนด pin ให้ทำงานแบบ Output
}

// the loop routine runs over and over again forever:
void loop()
{
    // รับค่าจาก bluetooth
  if (BTSerial.available()>0) // ตรวจสอบว่า bluetooth มีการส่งค่ามาหรือไม่
  {
    char Control = BTSerial.read();    // อ่านค่าจาก bluetooth มาเก็บไว้ที่ ตัวแปร Control
   // Serial.println(Control);           // แสดงค่า จาก bluetooth (ตัวแปร Control) ทาง Serial Monitor
   
    if(Control == 'F')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'F'
       Forward();                      // หุ่นยนต์เดินหน้า
   
    if(Control == 'B')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'B'
       Reward();                       // หุ่นยนต์ถอยหลัง
     
    if(Control == 'I')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'I'
       Turn_right();                   // หุ่นยนต์เลี้ยวขวา
     
    if(Control == 'G')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'G'
       Turn_left();                    // หุ่นยนต์เลี้ยวซ้าย
     
    if(Control == 'R')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'R'
       Spin_right();                   // หุนยนต์หมุนขวา
     
    if(Control == 'L')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'L'
       Spin_left();                    // หุ่นยนต์หมุนซ้าย
     
    if(Control == 'H')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'H'
       Reward_turn_left();             // หุ่นยนต์ถอยหลังและเลี้ยวซ้าย
     
    if(Control == 'J')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'J'
       Reward_turn_right();            // หุ่นยนต์ถอยหลังและเลี้ยวขวา
     
    if(Control == 'S')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'S'
       Stop();                         // หุ่นยนต์หยุดเดิน
     
    if(Control == 'V')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'V'
        digitalWrite(Horn, HIGH);      // แตรดัง
       
    if(Control == 'v')                 // เมื่อค่าที่ bluetooth ส่งมาเป็น 'v'
        digitalWrite(Horn, LOW);       // แตรหยุดดัง
     
    if(Control == '1' || Control == '2' || Control == '3'|| Control == '4'|| Control == '5'|| Control == '6'|| Control == '7'|| Control == '8'|| Control == '9'|| Control == 'q')  // เมื่อ bluetooth ส่งค่า 1-9 และ q มาก
    {    
     if(Control == 'q')        // เมื่อค่าที่ bluetooth ส่งมาเป็น 'q'
      {
        Speed = 220;           // กำหนดความเร็ว = 220
      }
      else if(Control == '9')  // เมื่อค่าที่ bluetooth ส่งมาเป็น '9'
      {
        Speed = 200;           // กำหนดความเร็ว = 200
      }
      else if(Control == '8')  // เมื่อค่าที่ bluetooth ส่งมาเป็น '8'
      {
        Speed = 180;           // กำหนดความเร็ว = 180
      }      
      else if(Control == '7')  // เมื่อค่าที่ bluetooth ส่งมาเป็น '7'
      {
        Speed = 160;           // กำหนดความเร็ว = 160
      }      
      else if(Control == '6')  // เมื่อค่าที่ bluetooth ส่งมาเป็น '6'
      {
        Speed = 140;           // กำหนดความเร็ว = 140
      }      
      else if(Control == '5')  // เมื่อค่าที่ bluetooth ส่งมาเป็น '5'
      {
        Speed = 120;           // กำหนดความเร็ว = 120
      }      
      else if(Control == '4')  // เมื่อค่าที่ bluetooth ส่งมาเป็น '4'
      {
        Speed = 100;           // กำหนดความเร็ว = 100
      }      
      else if(Control == '3')  // เมื่อค่าที่ bluetooth ส่งมาเป็น '3'
      {
        Speed = 80;            // กำหนดความเร็ว = 80
      }      
      else if(Control == '2')  // เมื่อค่าที่ bluetooth ส่งมาเป็น '2'
      {
        Speed = 60;            // กำหนดความเร็ว = 60
      }      
      else if(Control == '1')  // เมื่อค่าที่ bluetooth ส่งมาเป็น '1'
      {
        Speed = 40;            // กำหนดความเร็ว = 40
      }
    }    
  }
}

void Forward() // ฟังก์ชันสั่งให้หนุ่นยนต์เดินหน้า
{
  // สั่งให้มอเตอร์ซ้ายหมุนไปหน้า
  analogWrite(Speed_Motor_Left,Speed);    // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Left_forward, HIGH); // สั่งให้มอเตอร์ซ้ายหมุนไปหน้า
  digitalWrite(Motor_Left_reward, LOW);
 
  // สั่งให้มอเตอร์ขวาหมุนไปหน้า
  analogWrite(Speed_Motor_Right,Speed);    // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Right_forward, HIGH); // สั่งให้มอเตอร์ขวาหมุนไปหน้า
  digitalWrite(Motor_Right_reward, LOW);
  Serial.println("Forward");               // แสดงค่าที่ serial monitor ว่าหุ่นยนต์กำลังเดินหน้า

}

void Reward() // ฟังก์ชันสั่งให้หุ่นยนต์ถอยหลัง
{
  // สั่งให้มอเตอร์ซ้ายหมุนไปกลับหลัง
  analogWrite(Speed_Motor_Left,Speed);     // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Left_forward, LOW);  
  digitalWrite(Motor_Left_reward, HIGH);   // สั่งให้มอเตอร์ซ้ายหมุนกลับหลัง
 
  // สั่งให้มอเตอร์ขวาหมุนกลับหลัง
  analogWrite(Speed_Motor_Right,Speed);    // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Right_forward, LOW);  
  digitalWrite(Motor_Right_reward, HIGH);  // สั่งให้มอเตอร์ขวาหมุนกลับหลัง
  Serial.println("Reward");                // แสดงค่าที่ serial monitor ว่าหุ่นยนต์กำลังถอยหลัง

}
void Turn_left() // ฟังก์ชันสั่งให้หุนยนต์เลี้ยวซ้าย
{
  // สำหรับคำนวณความเร็วในการเลี้ยวซ้าย
  int Speed_right = Speed + (Speed/2);
  if(Speed_right > 255)
    Speed_right = 250;
 
   
  analogWrite(Speed_Motor_Left,Speed-60);     // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Left_forward, HIGH);     // สั่งให้มอเตอร์ซ้ายหมุนไปหน้า
  digitalWrite(Motor_Left_reward, LOW);
 
  analogWrite(Speed_Motor_Right,Speed_right); // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed_right
  digitalWrite(Motor_Right_forward, HIGH);    // สั่งให้มอเตอร์ขวาหมุนไปหน้า
  digitalWrite(Motor_Right_reward, LOW);
  Serial.println("Turn_left");                // แสดงค่าที่ serial monitor ว่าหุ่นยนต์กำลังเลี้ยวซ้าย
}
void Turn_right() // ฟังก์ชันสั่งให้หุนยนต์เลี้ยวขวา
{
  // สำหรับคำนวณความเร็วในการเลี้ยวขวา
  int Speed_left = Speed + (Speed/2);
  if(Speed_left > 255)
    Speed_left = 250;
     
  analogWrite(Speed_Motor_Left,Speed_left);  // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed_left
  digitalWrite(Motor_Left_forward, HIGH);    // สั่งให้มอเตอร์ซ้ายหมุนไปหน้า
  digitalWrite(Motor_Left_reward, LOW);
 
  analogWrite(Speed_Motor_Right,Speed-30);   // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Right_forward, HIGH);   // สั่งให้มอเตอร์ขวาหมุนไปหน้า
  digitalWrite(Motor_Right_reward, LOW);
  Serial.println("Turn_right");              // แสดงค่าที่ serial monitor ว่าหุ่นยนต์กำลังเลี้ยวขวา
}
void Reward_turn_left() // ฟังก์ชันสั่งให้หุ่นยนต์ถอยหลัง
{
    int Speed_trun_left = Speed + (Speed/2);
  if(Speed_trun_left > 255)
    Speed_trun_left = 250;
   
  // สั่งให้มอเตอร์ซ้ายหมุนไปกลับหลัง
  analogWrite(Speed_Motor_Left,Speed-30);     // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Left_forward, LOW);  
  digitalWrite(Motor_Left_reward, HIGH);   // สั่งให้มอเตอร์ซ้ายหมุนกลับหลัง
 
  // สั่งให้มอเตอร์ขวาหมุนกลับหลัง
  analogWrite(Speed_Motor_Right,Speed_trun_left);    // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed_trun_left
  digitalWrite(Motor_Right_forward, LOW);  
  digitalWrite(Motor_Right_reward, HIGH);  // สั่งให้มอเตอร์ขวาหมุนกลับหลัง
  Serial.println("Reward_turn_left");                // แสดงค่าที่ serial monitor ว่าหุ่นยนต์กำลังถอยหลัง

}
void Reward_turn_right() // ฟังก์ชันสั่งให้หุ่นยนต์ถอยหลัง
{
    int Speed_trun_right = Speed + (Speed/2);
  if(Speed_trun_right > 255)
    Speed_trun_right = 250;
   
  // สั่งให้มอเตอร์ซ้ายหมุนไปกลับหลัง
  analogWrite(Speed_Motor_Left,Speed_trun_right);     // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed_trun_right
  digitalWrite(Motor_Left_forward, LOW);  
  digitalWrite(Motor_Left_reward, HIGH);   // สั่งให้มอเตอร์ซ้ายหมุนกลับหลัง
 
  // สั่งให้มอเตอร์ขวาหมุนกลับหลัง
  analogWrite(Speed_Motor_Right,Speed - 30);    // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Right_forward, LOW);  
  digitalWrite(Motor_Right_reward, HIGH);  // สั่งให้มอเตอร์ขวาหมุนกลับหลัง
  Serial.println("Reward_turn_right");                // แสดงค่าที่ serial monitor ว่าหุ่นยนต์กำลังถอยหลัง

}

void Spin_left() // ฟังก์ชันสั่งให้หุนยนต์หมุนซ้าย
{
  analogWrite(Speed_Motor_Left,Speed);       // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Left_forward, LOW);  
  digitalWrite(Motor_Left_reward, HIGH);     // สั่งให้มอเตอร์ซ้ายหมุนกลับหลัง
 
  analogWrite(Speed_Motor_Right,Speed);      // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Right_forward, HIGH);   // สั่งให้มอเตอร์ขวาหมุนไปหน้า
  digitalWrite(Motor_Right_reward, LOW);
  Serial.println("Spin_left");               // แสดงค่าที่ serial monitor ว่าหุ่นยนต์กำลังหมุนซ้าย
}
void Spin_right()  // ฟังก์ชันสั่งให้หุนยนต์หมุนขวา
{
  analogWrite(Speed_Motor_Left,Speed);       // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Left_forward, HIGH);    // สั่งให้มอเตอร์ซ้ายหมุนไปหน้า
  digitalWrite(Motor_Left_reward, LOW);
 
  analogWrite(Speed_Motor_Right,Speed);      // กำหนดความเร็วมอเตอร์ ด้วยตัวแปร Speed
  digitalWrite(Motor_Right_forward, LOW);  
  digitalWrite(Motor_Right_reward, HIGH);    // สั่งให้มอเตอร์ขวาหมุนกลับหลัง
  Serial.println("Spin_right");              // แสดงค่าที่ serial monitor ว่าหุ่นยนต์กำลังหมุนขวา
}

void Stop()  // ฟังก์ชันสั่งให้หุนยนต์หยุดเดิน
{
  analogWrite(Speed_Motor_Left,0);           // กำหนดความเร็วมอเตอร์ = 0
  digitalWrite(Motor_Left_forward, LOW);     // มอเตอร์หยุดหมุน
  digitalWrite(Motor_Left_reward, LOW);      // มอเตอร์หยุดหมุน
 
  analogWrite(Speed_Motor_Right,0);          // กำหนดความเร็วมอเตอร์ = 0
  digitalWrite(Motor_Right_forward, LOW);    // มอเตอร์หยุดหมุน
  digitalWrite(Motor_Right_reward, LOW);     // มอเตอร์หยุดหมุน
}

App สำหรับมือถือ (Bluetooth RC Controller)
 https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller



อ้างอิง

   https://www.arduinothai.com/article/23/ควบคุมรถบังคับด้วย-app-bluetooth-rc-controller





วันพฤหัสบดีที่ 12 มกราคม พ.ศ. 2560

การใช้งาน Arduino + Relay Module ควบคุมการปิดเปิดเครื่องใช้ไฟฟ้า

ตัวอย่างการใช้งาน Arduino + Relay Module
ควบคุมการปิดเปิดเครื่องใช้ไฟฟ้า





    รีเลย์ (Relay) เป็นอุปกรณ์ไฟฟ้าชนิดหนึ่ง ซึ่งทำหน้าที่ตัดต่อวงจรแบบเดียวกับสวิตช์ โดยควบคุมการทำงานด้วยไฟฟ้า Relay มีหลายประเภท ตั้งแต่ Relay ขนาดเล็กที่ใช้ในงานอิเล็กทรอนิกส์ทั่วไป จนถึง Relay ขนาดใหญ่ที่ใช้ในงานไฟฟ้าแรงสูง โดยมีรูปร่างหน้าตาแตกต่างกันออกไป แต่มีหลักการทำงานที่คล้ายคลึงกัน สำหรับการนำ Relay ไปใช้งาน จะใช้ในการตัดต่อวงจร ทั้งนี้ Relay ยังสามารถเลือกใช้งานได้หลากหลายรูปแบบ


ภายใน Relay จะประกอบไปด้วยขดลวดและหน้าสัมผัส 

         หน้าสัมผัส NC (Normally Close) เป็นหน้าสัมผัสปกติปิด โดยในสภาวะปกติหน้าสัมผัสนี้จะต่อเข้ากับขา COM (Common) และจะลอยหรือไม่สัมผัสกันเมื่อมีกระแสไฟฟ้าไหลผ่านขดลวด
         หน้าสัมผัส NO (Normally Open) เป็นหน้าสัมผัสปกติเปิด โดยในสภาวะปกติจะลอยอยู่ ไม่ถูกต่อกับขา COM (Common) แต่จะเชื่อมต่อกันเมื่อมีกระแสไฟไหลผ่านขดลวด
         ขา COM (Common) เป็นขาที่ถูกใช้งานร่วมกันระหว่าง NC และ NO ขึ้นอยู่กับว่า ขณะนั้นมีกระแสไฟฟ้าไหลผ่านขดลวดหรือไม่ หน้าสัมผัสใน Relay 1 ตัวอาจมีมากกว่า 1 ชุด ขึ้นอยู่กับผู้ผลิตและลักษณะของงานที่ถูกนำไปใช้ จำนวนหน้าสัมผัสถูกแบ่งออกดังนี้
         สวิตช์จะถูกแยกประเภทตามจำนวน Pole และจำนวน Throw ซึ่งจำนวน Pole (SP-Single Pole, DP-Double Pole, 3P-Triple Pole, etc.) จะบอกถึงจำนวนวงจรที่ทำการเปิด-ปิด หรือ จำนวนของขา COM นั่นเอง และจำนวน Throw (ST, DT) จะบอกถึงจำนวนของตัวเลือกของ Pole ตัวอย่างเช่น SPST- Single Pole Single Throw สวิตช์จะสามารถเลือกได้เพียงอย่างเดียวโดยจะเป็นปกติเปิด (NO-Normally Open) หรือปกติปิด (NC-Normally Close) แต่ถ้าเป็น SPDT- Single Pole Double Throw สวิตช์จะมีหนึ่งคู่เป็นปกติเปิด (NO) และอีกหนึ่งคู่เป็นปกติปิดเสมอ (NC) 

ตัวอย่างที่1 ควบคุมมอเตอร์ให้หมุนได้ทั้งซ้าย-ขวา โดยไม่ต้องการคุมความเร็วรอบ

มอเตอร์หมุนขวา     

        มอเตอร์หมุนซ้าย 


    จากวงจรนี้ เราจะเห็นได้ว่าในการจะควบคุมให้มอเตอร์หมุนไปกลับ หรือ ซ้าย-ขวา นั้นจะต้องใช้ Relay 2 ตัวในการควบคุม วิธีการต่อวงจรเป็นดังนี้ 
• นำขั้ว + ของมอเตอร์ต่อเข้ากับขา COM ของรีเลย์ตัวที่ 1
• นำขั้ว – ของมอเตอร์ต่อเข้ากับขา COM ของรีเลย์ตัวที่ 2
• นำขา NC ของรีเลย์ทั้ง 2 ตัว ต่อเข้ากับไฟลบ (GND)
• นำขา NO ของรีเลย์ทั้ง 2 ตัว ต่อเข้ากับไฟบวก (+5VDC)
วิธีต่อใช้งานจริงตามภาพด้านล่างนี้ โดยมีอุปกรณ์ดังนี้ Arduino + Relay Module + DC Motor




ภาพแสดงการต่อใช้งาน Arduino + Relay Module + Motor



หลักการการทำงานคือ มีบอร์ด Arduino UNO R3 ในการรับข้อมูลจากคอมพิวเตอร์สื่อสารผ่านพอร์ต Serial แล้วนำค่าที่ได้ไปตรวจสอบว่าตรงกับค่าที่กำหนดไว้หรือไม่ ถ้าตรงกันก็สั่งให้ Relay ทำงานตามที่เราต้องการ 
ตัวอย่างโค้ดโปรแกรม

#define R 13 //กำหนดขาที่นำไปต่อกับรีเลย์

#define L 12
char test ; //สร้างตัวแปรไว้สำหรับรอรับข้อมูล
void setup() 
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
pinMode(R, OUTPUT); // กำหนดโหมดให้เป็น Output
pinMode(L, OUTPUT);
}
void loop() // run over and over
{
if (Serial.available()) // ตรวจสอบว่ามีข้อมูลเข้ามาหรือไม่
test = Serial.read();
else if (test == '1') // ถ้าข้อมูลที่เข้ามาคือ 1, 2, 3 ให้ทำงานตามที่กำหนด
{
digitalWrite(R, HIGH);
digitalWrite(L, LOW);
else if (test == '2')
{
digitalWrite(L, HIGH);
digitalWrite(R, LOW);
}
else if (test == '3')
{
digitalWrite(L, LOW);
digitalWrite(R, LOW);
}
}

ขั้นตอนการทดสอบ
1. ดาวน์โหลดโปรแกรมสำหรับส่งข้อมูลผ่าน Serial (ในบทความนี้ใช้โปรแกรม Terminal.exe) 
2. เปิดโปรแกรม Arduino นำโค้ดตัวอย่างด้านบน ไปรันและอัพโหลดไปยัง Arduino UNO R3
3. เปิดโปรแกรม Terminal.exe เลือก Com Port และกำหนดความเร็วในการรับส่งข้อมูล จากนั้นกดปุ่ม Connect 


4. ทำการส่งข้อมูลให้ Arduino โดยพิมพ์ข้อความลงในช่องด้านล่างของโปรแกรม
a. ข้อมูลที่กำหนดไว้คือ 1 = หมุนขวา, 2 = หมุนซ้าย, 3 = หยุดหมุน




อ้างอิง
www.thaieasyelec.com/article-wiki/review-product-article/ตัวอย่างการใช้งาน-arduino-relay-module-ควบคุมการปิดเปิดเครื่องใช้ไฟฟ้า.html




วันอังคารที่ 3 มกราคม พ.ศ. 2560

Arduino ควบคุมการปิด-เปิดเครื่องใช้ไฟฟ้ากระแสสลับ 220 VAC


ควบคุมการปิด-เปิดเครื่องใช้ไฟฟ้ากระแสสลับ


วิธีการเชื่อมต่อ

สำหรับอุปกรณ์ที่ใช้ไฟฟ้ากระแสสลับ (AC)
• ต่อไฟเส้นที่ 1 จากแหล่งจ่ายไฟไปยังอุปกรณ์ที่ขั้วลบ (ถ้ามีแจ้งไว้ ถ้าไม่มีก็ใช้ขั้วใดก็ได้)
• ต่อไฟเส้นที่ 2 จากแหล่งจ่ายไฟเข้าขา NO ของรีเลย์
• ต่อสายจากขา COM ของรีเลย์ไปยังอุปกรณ์ไฟฟ้าขั้วที่เหลือ
สำหรับอุปกรณ์ที่ใช้ไฟฟ้ากระแสตรง (DC)
• ต่อไฟลบหรือ GND ไปยังอุปกณ์ไฟฟ้าเข้าที่ขั้วลบหรือ GND
• ต่อไฟบวกหรือ VCC ไปยังขา NO ของรีเลย์
• ต่อสายจากขา COM ของรีเลย์ไฟยังอุปกรณ์ไฟฟ้าที่ขั้วบวก









   ในการทดสอบนี้ เราจะใช้บอร์ดคอนโทรลเลอร์ Arduino UNO R3 หลักการการทำงานมีดังนี้ รับข้อมูลจากคอมพิวเตอร์สื่อสารผ่านพอร์ต Serial แล้วนำข้อมูลที่ได้ไปตรวจสอบว่าตรงกับค่าที่กำหนดไว้หรือไม่ ถ้าตรงก็สั่งให้รีเลย์ทำงานตามที่เราต้องการ

ตัวอย่างโค้ดโปรแกรม 

#define Lamp1 12 //กำหนดขาที่นำไปต่อกับรีเลย์
char test ; //สร้างตัวแปรไว้สำหรับรอรับข้อมูล
void setup() 
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
pinMode(Lamp1, OUTPUT); //กำหนดโหมดให้เป็น Output
}
void loop() // run over and over
{
if (Serial.available()) // ตรวจสอบว่ามีข้อมูลเข้ามาหรือไม่
test = Serial.read();
else if (test == '1') //ถ้าข้อมูลที่เข้ามาคือ 1 , 3 ให้ทำงานตามที่กำหนด
{
digitalWrite(Lamp1, HIGH);
}
else if (test == '3')
{
digitalWrite(Lamp1, LOW);
}
}

ขั้นตอนการทดสอบ

1. ดาวน์โหลดโปรแกรมสำหรับส่งข้อมูลผ่าน Serial (ในบทความนี้ใช้โปรแกรม Terminal.exe) 

2. เปิดโปรแกรม Arduino นำโค้ดตัวอย่างด้านบนไปรันและอัพโหลดไปยัง Arduino UNO R3
3. เปิดโปรแกรม Terminal.exe เลือก Com Port และกำหนดความเร็วในการรับส่งข้อมูล จากนั้นกดปุ่ม Connect




4. ทำการส่งข้อมูลให้ Arduino โดยพิมพ์ข้อความลงในช่องด้านล่างของโปรแกรม
a. ข้อมูลที่กำหนดไว้คือ 1 = เปิดไฟ, 3 = ปิดไฟ

เเหล่งอ้างอิง

http://electronics.se-ed.com/contents/035s095/035s095_p02.asp
http://www.baantech.com/product.php?catid=16