วันอาทิตย์ที่ 7 ตุลาคม พ.ศ. 2561

มินิโปรเจ้คการเปิด-ปิดไฟ AC220Vด้วยเสียง ( แก้ไขงาน การอธิบายหลักการทำงานของโค้ด )

มินิโปรเจ้คการเปิด-ปิดไฟ AC220Vด้วยเสียง

                                 
อุปกรณ์ที่ใช้
1. Arduino UNO R3 - Made in italy
2. Sensor Shield V 5.0
3. สาย Jumper 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
รูปผลงาน
1.



2.




3.
                               
                          บล็อกไดอะแกรม

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

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

G     <-> GND
V     <-> VCC
S(4) <-> OUT
การต่อวงจร ระหว่าง  Sensor Shield กับ รีเลย์

Shield <-> รีเลย์
G     <-> DC-
V     <-> DC+
S(5) <-> CH1
การต่อวงจร ระหว่าง  หลอดไฟ กับ รีเลย์


            การอธิบายหลักการทำงานของโค้ด
                ตัวแปรมีอยู่6ตัว  มีอยู่3ชนิด // ชนิดที่1.int  ชนิดที่2.long ชนิดที่3.boolean      
                      
        ตัวแปร6ตัวได้แก่ 
1.sound_sensor 
2. relay
3.clap
4. detection_range_start 
5. detection_range
6.status_lights
                          
int sound_sensor = 4;   //  กำหนดให้ sound sensorให้เป้น ขา 4.
int relay = 5;   //  กำหนดให้ relay ให้เป้น ขา 5

int clap = 0;    //  กำหนดให้ clap มีค่าเป็น 0
long detection_range_start = 0; //  กำหนดให้ detection_range_start มีค่าเป็น 0
long detection_range = 0;  //  กำหนดให้ detection_range  มีค่าเป็น 0
boolean status_lights = false;     //   boolean status_lights  มี ค่าเป็น false หรือเท่ากับ 0
void setup() {   // ฟังชั่นนี้คือการเซ็ตค่าเริ่มต้นเมื่อ Aduino เริ่มการทำงาน
  pinMode(sound_sensor, INPUT);  //  คือการกำหนด sound_sensor ให้เป็น อินพุต
  pinMode(relay, OUTPUT);   //   คือการกำหนด  relay  ให้เป็น เอาพุต
}

void loop() {  // ฟังชั่นนี้คือการทำงานวน ซ้ำๆ
  int status_sensor = digitalRead(sound_sensor);
  if (status_sensor == 0)   // คือการอ่านค่าจากซาวเซ็นเซอร์แล้วเอามาเก็บไว้ที่สเตตัส จากนั้นส่งมาที่ ฟังชั่นอีฟเพื่อตรวจสอบสถานะของข้อมูลว่าเป็นจริงหรือไม่
  {
    if (clap == 0)    // ถ้าตรวจสอบเจอจะทำงานในตีกาเปิดในช่องนี้แต่ถ้าไม่จะกระโดดข้ามไปทำอีกช่องนึง
    {
      detection_range_start = detection_range = millis();  // ค่าของ  detection_range เท่ากับ detection_range  เท่ากับ millis()
      clap++;   // clap เพิ่มขึ้น 1 
    }
    else if (clap > 0 && millis()-detection_range >= 50)  // ถ้าค่าของ clap มีค่ามากกว่า 0 เเละเปรียบเทียบ millis()-detection_range มากกว่าหรือเท่ากับ 50
    {
      
    }etection_range = millis();// เก็บค่าเวลา ใน  millis() เก็บไว้ในตัวแปร detection_range 
      clap++; //  clap เพิ่มขึ้น1
  }
  if (millis()-detection_range_start >= 400)  //    ถ้าค่าของ millis() ลบด้วยค่าของ detection_range_start  มากกว่าหรือเท่ากับ400ให้ทำงานปีกกาล่าง
  {
    if (clap == 2) //ลงมาทำงานที่บรรทัดนี้
    {
      if (!status_lights)    // ถ้า ผลลัพท์status_lights เป็นเท็จ ให้ทำในปีกกาล่าง
        {
          status_lights = true; //  ให้ค่า   status_lights มีค่าเท่า true หรือ1
          digitalWrite(relay, HIGH); // ส่งค่า ไปยังขาดิจิตอลให้ relay มีค่าเป็น high หรือ1
        }
        else if (status_lights)  //  ถ้าไม่ตรงตามเงื่อนไข 
        {
          status_lights = false; //   ให้ค่า  status_lights  มีค่าเป็น  false หรือ 0 
          digitalWrite(relay, LOW); // ส่งค่า ไปยังขาดิจิตอลให้ relay มีค่าเป็น low หรือ0
        }
    }
    clap = 0; //   ค่าของ clap มีค่าเท่ากับ 0
  }

}


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

     ลิ้งดูวีดีโอผลการทดลองมินิโปรเจ้คเปิด-ปิดไฟ220Vด้วยเสียง


วันอาทิตย์ที่ 30 กันยายน พ.ศ. 2561

แก้งานการอธิบายโปรแกรม ที่อาจารสั่ง เกี่ยวกับ 1.แยกส่วนฮาร์ตแวร์/2.อธิบายซอฟแวร์ทั้งหมด/3.เขียนโฟชาจงาน ( ห้ามก้อปปี้กันเดะติด 0 )

                                                 

      การอธิบายส่วนต่างๆของโปรแกรม 

How To Make Arduino Based Home Automation Project via Bluetooth?


Circuit Diagram

Arduino Based Home Automation Circuit Diagram

Components

The list of components mentioned here are specifically for controlling 4 different loads.
  • Arduino UNO                                                    =บอร์ดอาดูโน่
  • HC – 05 Bluetooth Module                                 =บลูทูธ-โมดูล
  • 10 KΩ Resistor                                                 =รีซิสเตอร์ ค่า10k โอม
  • 20 KΩ Resistor                                                 =รีซิสเตอร์ ค่า20k โอม
  • 1 KΩ Resistor X 4                                             =รีซิสเตอร์ ค่า1k โอม 4ตัว
  • 2N2222 NPN Transistor X 4                               =ทรานซิสเตอร์ 2n2222 4 ตัว
  • 1N4007 Diode X 4                                            =ไดโอด 1n4007 4ตัว 
  • 12 V Relay X 4                                                 = รีเลย์12v 4ตัว
  • Prototyping board (Bread board)                        = บอร์ดต้นแบบ
  • Connecting wires                                              = สายเชื่อมต่อ
  • 12 V Power supply                                            = พาเวอร์ซัพพลาย 12v 
  • Smartphone or tablet (Bluetooth enabled)           =สมาร์ทโฟน หรือ แทปเล็ต ที่มีการเปิด                                                                           ใช้งานบลูทูธได้                                                                                                                                                         1.Hardware                                                                                                            1.1Arduino                                                                                                           1.2บลูทูธ-โมดูล                                                                                                     1.3สมาร์ทโฟน หรือ แทปเล็ต ที่มีการเปิด                                                                         ใช้งานบลูทูธได้                                                                                                                                                                                                                              Input                                                                                                    
  • บลูทูธ-โมดูล                                                                                                                                                                                                                                          output       
  • Load หรือ หลอดไฟ                                                                                                                                                                                                                            2.Software อธิบายส่วนต่างๆ                                                                                                                                                                                                     #include <SoftwareSerial.h>                                   = ซอฟแวร์
       
    const int rxPin = 4;                                                 = กำหนดค่าที่ขา4
    const int txPin = 2;                                                 = กำหนดค่าที่ขา2
    
    SoftwareSerial mySerial(rxPin, txPin);                        = ฟังก์ชั่นพิเศษ
    
    const int Loads[] = {9, 10, 11, 12};                           = กำหนดค่าที่ขา                                                                                                        9/10/11/12
    
    int state = 0;                                                           = ข้อมูลตัวแปร
    int flag = 0;                                                             = ข้อมูลตัวแปร 
    void setup()                                                             = เป็นฟังก์แรกที่เมื่อ                                                                                                      Arduino ทำงานแล้วจะ                                                                                                เรียกเพื่อทำการ Setup                                                                                                ค่าตามจุดประสงค์ของ                                                                                                  ฟังก์ชั่น
    {
       for (int i=0;i<4;i++)                                               = คำสั่งกำหนดตาม                                                                                                     เงื่อนไขที่เรากำหนกไว้
        {
          pinMode(Loads[i], OUTPUT);                                 = สั่งใหดLodeเป็นเอาพุต
        }   
       mySerial.begin(9600);                                             = ความเร็วในการส่งข้อมูล                                                                                             ให้ทำการๆปเรื่อยๆ
       for (int i=0;i<4;i++)
        {
          digitalWrite(Loads[i], LOW);                                  =  สั่งให้ Loads โลว์
        }
       
    }
    
    void loop()                                                                  = คำว่าลูปคือการทำงาน                                                                                              ซ้ำนั่นเอง
    {
        
        if(mySerial.available() > 0)                                        = (mySerial.available()                                                                                           > 0) ทำให้มีค่ามากกว่า 0     {
          state = mySerial.read();                                          = การอ่านข้อมูล
          flag=0;                                                                  = ให้ฟังก์ชั่น flag=0; =0  
    
        }
        
        switch(state)                                                            =  คือการกำหนด                                                                                                       เงื่อนไข
        {
          case '0':digitalWrite(Loads[0], HIGH);                       =  สั่งLoads 0 ให้                                                                                                       เป็นHIGH                flag=1;                                                                       = ฟังก์ชั่นตัวแปรงค่า      break;                                                                         = คำสั่งให้หยุด
          case '1':digitalWrite(Loads[0], LOW);                        = สั่งLoads 0 ให้                                                                                                        เป็นLow                flag=1;                                                                       = ฟังก์ชั่นตัวแปรงค่า                break;                                                                         = คำสั่งให้หยุด                case '2':digitalWrite(Loads[1], HIGH);                             = สั่งLoads 1 ให้                                                                                                        เป็นHIGH                flag=1;                                                                        =  ฟังก์ชั่นตัวแปรงค่า                break;                                                                         = คำสั่งให้หยุด                case '3':digitalWrite(Loads[1], LOW);                             = สั่งLoads 1 ให้                                                                                                       เป็นLow                   flag=1;                                                                       =  ฟังก์ชั่นตัวแปรงค่า                break;                                                                         = คำสั่งให้หยุด               case '4':digitalWrite(Loads[2], HIGH);                             = สั่งLoads 2 ให้                                                                                                         เป็นHIGH                flag=1;                                                                      = ฟังก์ชั่นตัวแปรงค่า                break;                                                                       = คำสั่งให้หยุด                      case '5':digitalWrite(Loads[2], LOW);                            = สั่งLoads 2 ให้                                                                                                       เป็นLow                    flag=1;                                                                     =  ฟังก์ชั่นตัวแปรงค่า                break;                                                                       =  คำสั่งให้หยุด                case '6':digitalWrite(Loads[3], HIGH);                          = สั่งLoads 3 ให้                                                                                                       เป็นHIGH                    flag=1;                                                                    = ฟังก์ชั่นตัวแปรงค่า                break;                                                                      = คำสั่งให้หยุด                     case '7':digitalWrite(Loads[3], LOW);                          = สั่งLoads 3 ให้                                                                                                        เป็นLow                    flag=1;                                                                   = ฟังก์ชั่นตัวแปรงค่า                break;                                                                     = คำสั่งให้หยุด                digitalWrite(Loads[1], LOW);                                     =  สั่งLoads 1 ให้                                                                                                       เป็นLow                digitalWrite(Loads[2], LOW);                                     = สั่งLoads 2 ให้                                                                                                       เป็นLow                digitalWrite(Loads[3], LOW);                                     = สั่งLoads 3 ให้                                                                                                       เป็นLow                     flag=1;                                                                   = ฟังก์ชั่นตัวแปรงค่า                break;                                                                     = คำสั่งให้หยุด                             } 
      }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            3.การเขียนโฟชาจผังการเริ่มต้นทำงานจจนจบการทำงาน                                                                                                                                                                                                                                                                                                                                                                                                                                      
  •                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

วันศุกร์ที่ 28 กันยายน พ.ศ. 2561

Arduino 20 Arduino - LCD 1602A Keypad LCD Shield Relay Control

Arduino - LCD 1602A Keypad LCD Shield Relay Control

Things used in this project

Hardware components

Arduino Mega 2560 & Genuino Mega 2560
×1
ControlEverything.com 4-CHANNEL RELAY CONTROLLER FOR I2C
×1
LCD shield with keypad
×1
Jumper wires (generic)
×1
Power cables + lamp sockets
×1



                      Code

 


/*
Author:Danny van den Brande, Arduinosensors.nl. BlueCore Tech.
Hello world! Today i made a small example on how to use a LCD keypad.
You can add anything to it. In this example we switch on and off relays.
Good luck!
 */
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int relay1 = 30;
int relay2 = 31;
int relay3 = 32;
int relay4 = 33;

int lcdkeys;
void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("BlueCore Tech");
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
}
void loop() {
  Serial.println(lcdkeys);// look in the serial monitor and press buttons to see values.
  lcdkeys=analogRead(0);
  if (lcdkeys<50) {  //if value less then 50 
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("DEVICE 1");
  lcd.setCursor(0, 1);
  lcd.print("IS ON");
    digitalWrite(relay1, LOW);
    digitalWrite(relay2, LOW);
    digitalWrite(relay3, LOW);
    digitalWrite(relay4, HIGH);
  }
  else if(lcdkeys<195) { //if value less then 195 and so on. 
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("DEVICE 2");
    lcd.setCursor(0, 1);
    lcd.print("IS ON");
    digitalWrite(relay1, HIGH);
    digitalWrite(relay2, LOW);       digitalWrite(relay3, LOW);
    digitalWrite(relay4, LOW); }
  else if(lcdkeys<380) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("DEVICE 3");
    lcd.setCursor(0, 1);
    lcd.print("IS ON");
    digitalWrite(relay1, LOW);
    digitalWrite(relay2, HIGH);
    digitalWrite(relay3, LOW);
    digitalWrite(relay4, LOW);
  }
  else if(lcdkeys<650) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("DEVICE 4");
    lcd.setCursor(0, 1);
    lcd.print("IS ON");
    digitalWrite(relay1, LOW);
    digitalWrite(relay2, LOW);
    digitalWrite(relay3, HIGH);
    digitalWrite(relay4, LOW);
  }
  else if(lcdkeys<1023) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("BLUECORE TECH");
    lcd.setCursor(0, 1);
    lcd.print("OFF");
    digitalWrite(relay1, LOW);
    digitalWrite(relay2, LOW);
    digitalWrite(relay3, LOW);
    digitalWrite(relay4, LOW);  
  }
}