วันเสาร์ที่ 23 กุมภาพันธ์ พ.ศ. 2562

มินิโปรเจค


โปรเจค Arduino เปิด ปิดไฟ AC 220V ด้วยเสียง




เปิดปิดไฟ AC 220V ด้วยเสียง

         เรียนรู้วิธีควบคุม  Arduino  ด้วยเซ็นเซอร์เสียง Voice Sound Detection Sensor Module เราจะควบคุม การ เปิด ปิดไฟ AC 220V ด้วยเสียงตบมือ โดยเราจะใช้เซ็นเซอร์ตรวจจับเสียง +  รีเลย์ และแสดงผลด้วยไฟ หลอดไฟบ้าน 

  อุปกรณ์ที่ใช้
  • 1. Arduino UNO R3 - Made in italy
  • 2. Sensor Shield V 5.0
  • 3. สาย Jum per Female to Male ยาว 20cm.
  • 4. สาย Jumper Female to Female ยาว 20cm. 
  • 5. Relay 1 Channel 5V DC Solid State High Level Trigger
  • 6. Voice Sound Detection Sensor Module
  • 7. สกรูหัวกลม+น็อตตัวเมีย ขนาด 3มม ยาว 12มม
                       


Shield <-> เซ็นเซอร์เสียง

  • G     <-> GND
  • V     <-> VCC
  • S(4) <-> OUT


การต่อวงจร ระหว่าง  Sensor Shield กับ รีเลย์


 


Shield <-> 
รีเลย์

  • G     <-> DC-
  • V     <-> DC+
  • S(5) <-> CH1


การต่อวงจร ระหว่าง  Sensor Shield + เซ็นเซอร์เสียง + 
รีเลย์


ใช้สาย USB เชื่อมต่อระหว่าง คอมพิวเตอร์ กับ Arduino UNO R3


 


เปิดโปรแกรม Arduino (IDE) และ Upload โค้ดนี้ ไปยัง บอร์ด Arduino UNO R3



Code
int sound_sensor = 4;
int relay = 5;

int clap = 0;long detection_range_start = 0;
long detection_range = 0;
boolean status_lights = false;

void setup() {
  pinMode(sound_sensor, INPUT);
  pinMode(relay, OUTPUT);
}

void loop() {
 int status_sensor = digitalRead(sound_sensor);
 if (status_sensor == 0)
  {
    if (clap == 0)
   {
      detection_range_start = detection_range = millis();
      clap++;
   }
    else if (clap > 0 && millis()-detection_range >= 50)
   {
      detection_range = millis();
      clap++;
   }
   }
   if (millis()-detection_range_start >= 400)
   {
    if(clap == 2)
   {
     if (!status_lights)
   {
      status_lights = true;
      digitalWrite(relay, HIGH);
    }
      else if (status_lights)
    {
      status_lights = false;
      digitalWrite(relay, LOW);
     }
    }
clap = 0;
}

}




ไปที่ Tools > Board เลือกเป็น Arduino/Genuino UNO



ไปที่ Tools > Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port มากกว่าหนึ่ง  ให้เลือกตัวอื่นที่ไม่ใช่ COM1)

ในตัวอย่างเลือกเป็น "COM3"

(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)






กดปุ่ม 
 เพื่ออัพโหลด


หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง


 
ให้เอาไขควงหมุน ปรับค่าการรับสัญญาณเสียง โดยให้หมุนตัว R ปรับค่าได้ แบบ trimpot สีฟ้า



  ให้ไฟ LED สีเขียว ด้านซ้ายมือติดดวงเดียว เมื่อตบมือให้  LED สีเขียวด้านขวามือ กระพริบตามการตบมือของเรา




   และ เมื่อตบมือ 2 ครั้ง ให้ ไฟ LED สีแดง ที่ รีเลย์ ติด และ เมื่อ ตบมืออีก 2 ครั้ง ให้ ไฟ LED สีแดง ที่ รีเลย์ ดับ


 

การต่อวงจร ระหว่าง  หลอดไฟ กับ รีเลย์


 
ภาพรวมการต่อวงจร




อ้างอิง

ทฤษฎี สป.18

วัดอุณหภูมิ ภายในของ Arduino Chip บอร์ด Arduino





ทฤษฎี สป.18


อ้างอิง


ทฤษฎี สป.17

 Arduino ผ่าน Bluetooth


ทฤษฎี สป.17

char BYTE;
int  LED = 13; // LED on pin 13

void setup() {
  Serial.begin(9600); 
  pinMode(LED, OUTPUT);
}

void loop() {
  Serial.println("Press 1 to turn Arduino pin 13 LED ON or 0 to turn it OFF:");
  while (!Serial.available());   
  BYTE = Serial.read();        
  Serial.print(BYTE);
  if( BYTE == '0' ) digitalWrite(LED, LOW);  
  if( BYTE == '1' ) digitalWrite(LED, HIGH);
  delay(50);
}

อ้างอิง

ทฤษฎี สป.16

ตัวอย่างงานที่ใช้โปรแกรม Arduino
Arduino การใช้DS3231 โมดูลนาฬิกา ตั้งเวลา 




ทฤษฎี สป.16

#include <Wire.h>
#include <SPI.h>  
#include <RTClib.h>
RTC_DS3231 RTC;
void setup () {
    Serial.begin(9600);
    Wire.begin();
    RTC.begin();    
  RTC.adjust(DateTime(__DATE__, __TIME__));   //จุดนี้เป็นการตั้งเวลา ตั้งครั้งแรกเสร็จแล้วให้ // ไว้ด้วย
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  DateTime now = RTC.now();
  RTC.setAlarm1Simple(2158);  //เป็นการตั้งเวลาปลุก เวลา 22.58 น.
  RTC.turnOnAlarm(1);  //ปลุกช่วงเวลาที่ 1
  if (RTC.checkAlarmEnabled(1)) {
    Serial.println("Alarm Enabled");
  }
}
void loop () {
    DateTime now = RTC.now();
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    if (RTC.checkIfAlarm(1)) {   // เมื่อถึงเวลาให้ทำการปลุกโดยการทำตามเงือนไขใน if
      Serial.println("Alarm Triggered");
    }
    Serial.println();
    delay(3000);
}

อ้างอิง

ทฤษฎี สป.15


ตัวอย่างงานที่ใช้โปรแกรม Arduino

LDR Photoresistor Sensor Module โมดูลวัดแสง




ทฤษฎี สป.15

int value = 0;
void setup() {
  Serial.begin(9600);
}
void loop() {
  value = analogRead(A0);
  Serial.print("Raw value: ");Serial.println(value);
  delay(100);
}

อ้างอิง


ทฤษฎี สป.14


แปลง push switch ให้เป็น trigger สวิตซ์ 

ด้วย Arduino UNO




ทฤษฎี สป.14

อุปกรณ์ที่ใช้ต่อวงจร



ส่วน output จาก pin 13 ไปยังหลอด LED
  1. ไฟจากขา 13 ไปยัง ตัวต้านทาน 220 โอห์ม เพื่อลดแรงดัน 5v จาก บอร์ดป้องกัน LED เสียหาย
  2. ไฟที่เหลือจาก ตัวต้านทาน 220 โอห์ม ไปยังขาบวก ของ LED
  3. จากขาลบ ของ LED เพื่อลง ground
จะเห็นได้ว่าเมื่อใดที่เราสั่ง HIGH ที่ขา 13 ไฟ led จะไหลครบวงจรและทำให้หลอดสว่าง

ส่วน input จาก pin 8 เพื่ออ่านค่าไฟเข้ามายัง board

  1. กระแส 5v ต่อออกจากบอร์ดไปยัง push switch
  2. จาก push switch เข้าไปยัง pin 8
  3. จาก push switch ไปยังตัวต้านทาน 10K โอห์ม
  4. จาก ตัวต้านทาน 10k โอห์มไปยัง Ground
จะเห็นได้ว่าเมื่อเรากด push switch ไฟฟ้าจะไหลครบวงจรและส่งค่า HIGH เข้าไปยัง pin 8 ซึ่งเราสามารถนำไปอ่านค่าได้ต่อไป
Concept การทำงานของโปรแกรม
 switch กดติดกดดับด้วย State Change
  1. ยังไม่กด – สถานะครั้งก่อนเป็น LOW สถานะปัจจุบันเป็น LOW
  2. ตอนกำลังกดลง – สถานะครั้งก่อนเป็น LOW สถานะปัจจุบันเป็น HIGH
  3. ตอนกดแช่ไว้ – สถานะครั้งก่อนเป็น HIGH สถานะปัจจุบันเป็น HIGH
  4. ตอนกำลังปล่อย – สถานะครั้งก่อนเป็น HIGH สถานะปัจจุบันเป็น LOW
  5. ตอนปล่อยแล้ว – สถานะครั้งก่อนเป็น LOW สถานะปัจจุบันเป็น LOW

การเขียนโปรแกรมเพื่อรับค่า 

push switchมาปิด/เปิด led



อ้างอิง

มินิโปรเจค

โปรเจค Arduino เปิด ปิดไฟ AC 220V ด้วยเสียง เปิดปิดไฟ AC 220V ด้วยเสียง          เรียนรู้วิธีควบคุม  Arduino  ด้วยเซ็นเซอร์เส...