วันพฤหัสบดีที่ 7 กุมภาพันธ์ พ.ศ. 2562

ส่วนประกอบงานวิชา เขียนโปรแกรม ตัวอย่างงานที่ 5

ส่วนประกอบงานวิชา  เขียนโปรแกรม ตัวอย่างงานที่ 5

ใบรายงานผลการปฏิบัติงาน

Code โปรเจค 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. สาย 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

7. สกรูหัวกลม+น็อตตัวเมีย ขนาด 3มม ยาว 12มม


อุปกรณ์ไฟฟ้าอื่นๆ เช่น หลอดไฟ , ปลั๊กไฟ , ขั้วหลอดไฟ , สายไฟ หาซื้อได้ตามร้านขายอุปกรณ์ไฟฟ้าทั่วๆไป


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


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




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;
  }

ส่วนประกอบงานวิชา เขียนโปรแกรม ตัวอย่างงานที่ 4

ส่วนประกอบงานวิชา  เขียนโปรแกรม ตัวอย่างงานที่ 4

ใบรายงานผลการปฏิบัติงาน

สร้างนาฬิกาดิจิตอลด้วยบอร์ด Arduino


เป็นการประยุกต์ใช้โมดูลนับเวลา RTC และโมดูล Clock Display มาใช้ร่วมกัน ควบคุมด้วยบอร์ด Arduino หลักการทำงานเพียงแค่ใช้บอร์ด Arduino ในการเซ็ตค่าเวลาลงไปในโมดูล RTC จากนั้นโมดูล RTC จะนับเวลาไปเรื่อยๆ แล้วจึงให้ Arduino ดึงค่าเวลาออกมาจากโมดูล RTC แล้วนำไปแสดงผลที่โมดูล Clock Display
การตั้งเวลาจะทำผ่าน Serial Monitor เนื่องจากเป็นโค้ดง่ายๆ สำหรับเรียนรู้การใช้โมดูล RTC กับโมดูล Clock Display และเรียนรู้การอ่านข้อมูลที่ส่งผ่าน Serial

วงจร

 
ดูที่ต่อในวงจรอาจจะ งงๆ เพราะมันไม่เหมือนของจริงมากนัก แต่คล้ายๆ เอาเป็นว่าต่อตามนี้ได้เลยครับ
  • ต่อขา VCC ของ RTC เข้ากับ 5V ของ Arduino
  • ต่อขา GND ของ RTC เข้ากับ GND ของ Arduino
  • ต่อขา SCL ของ RTC เข้ากับ SCL หรือขา A5 ของ Arduino
  • ต่อขา SDA ของ RTC เข้ากับ SDA หรือขา A4 ของ Arduino
  • ต่อขา VCC ของโมดูล Clock Display เข้ากับ 5V ของ Arduino
  • ต่อขา GND ของโมดูล Clock Display เข้ากับ GND ของ Arduino
  • ต่อขา CLK ของโมดูล Clock Display เข้ากับ D2 ของ Arduino
  • ต่อขา DIO ของโมดูล Clock Display เข้ากับ D3 ของ Arduino

โค้ด

/* DigitalClockRTC1307 By IOXhop.com */

#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <TM1637Display.h>

// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
unsigned long previousMillis;
bool showdot = false;
String SerialGET = "";

TM1637Display display(CLK, DIO);

void setup() {
  Serial.begin(9600);
}

void loop() {
  tmElements_t tm;
  if (!RTC.read(tm)) {
    tm.Hour = 0;
    tm.Minute = 0;
    tm.Second = 0;
    RTC.write(tm);
  }

  display.write(tm.Hour/10, 0);
  display.write(tm.Hour%10, 1);
  display.write(tm.Minute/10, 2);
  display.write(tm.Minute%10, 3);

  // Dot blink
  unsigned long currentMillis = millis();
  if (currentMillis-previousMillis>500){
    previousMillis = currentMillis;
    display.dotShow(showdot=!showdot);
  }

  while (Serial.available()) {
    char c = Serial.read();
    if (c == '\n') {
      int Hour, Min, Sec;
      if (sscanf(SerialGET.c_str(), "%d:%d:%d", &Hour, &Min, &Sec) == 3) {
        tm.Hour = Hour;
        tm.Minute = Min;
        tm.Second = Sec;
        RTC.write(tm);
        Serial.print("Set to ");
        Serial.print(Hour);
        Serial.print(":");
        Serial.print(Min);
        Serial.print(":");
        Serial.print(Sec);
        Serial.println();
      }else{
        Serial.println("Invalid format, Please enter Hour:Min:Sec");
      }
      SerialGET = "";
    }
    else
      SerialGET += c;
  }

ส่วนประกอบงานวิชา เขียนโปรแกรม ตัวอย่างงานที่ 3

ส่วนประกอบงานวิชา  เขียนโปรแกรม ตัวอย่างงานที่ 3

ใบรายงานผลการปฏิบัติงาน

PROJECT ARDUINO ตรวจจับควันและแก๊ส Gas & Smoke Sensor MQ-2

PROJECT ARDUINO ตรวจจับควันและแก๊ส Gas & Smoke Sensor MQ-2 มีคนสอบถามเกี่ยวกับไฟล์เยอะมากผมไม่มีแล้วนะครับ แต่ไห้คำปรึกษาได้ครับ







อุปกรณ์ก็ตามรูปวงจรเลยครับ

สำหรับไม่ไช้ relay 




สำหลับไช้กับ relay

โค้ชโปแกรม



โค้ชโปรแกรมดึงค่าขึ้นจอ






ส่วนประกอบงานวิชา เขียนโปรแกรม ตัวอย่างงานที่ 2

ส่วนประกอบงานวิชา  เขียนโปรแกรม ตัวอย่างงานที่ 2

ใบรายงานผลการปฏิบัติงาน
วัดไฟด้วย Arduino

Arduino Digital Voltmeter

อุปกรณ์

  • Arduino UNO
  • 16 x 2 LCD Display
  • 10KΩ POT
  • 100KΩ
  • 10KΩ
  • Connecting Wires

Circuit Diagram


Code 1

#include "LiquidCrystal.h"

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

float voltage = 0.0;
float temp=0.0;
int analog_value;

void setup()
{
   lcd.begin(16, 2); 
   lcd.setCursor (0,0);
   lcd.print(" Arduino based ");
   lcd.setCursor(0,1); 
   lcd.print("Digital Voltmeter");
delay(2000);
}
void loop() 
{

   
   analog_value = analogRead(A0);
   temp = (analog_value * 5.0) / 1024.0; 

   voltage = temp/(0.0909);
   if (voltage < 0.1) 
   {
     voltage=0.0;
   } 
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Voltage= ");
    lcd.print(voltage);
    lcd.setCursor(13,1);
    lcd.print("V");
    delay(30);

}

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

ส่วนประกอบงานวิชา เขียนโปรแกรม ตัวอย่างงานที่ 1

ส่วนประกอบงานวิชา  เขียนโปรแกรม ตัวอย่างงานที่ 1

ใบรายงานผลการปฏิบัติงาน

   การเขียนโปรแกรมเบื้องต้นกับ Arduino C++ (ไฟวิ่ง)


     บทความตอนนี้จะเป็นการทดลองเขียนไฟวิ่ง 4 ดวงกันครับ โดยจะกำหนดขาใช้งาน ที่จะต่อกับ LED ดังนี้ คือ 
ขา Digital pin 2 จะต่อกับ LED 1 
ขา Digital pin 3 จะต่อกับ LED 2 
ขา Digital pin 4 จะต่อกับ LED 3 
ขา Digital pin 5 จะต่อกับ LED 4 
โดยการทำงานในตอนนี้จะไห้วิ่งแบบเรียงลำดับกันไป จาก LED 1 ไปถึง LED 4 ครับ 
คำสั่งกำหนดสถานะของpin HIGH หรือ LOW
digitalWrite(pinของ Arduino,สถานะมี HIGH และ LOW); 

สำหรับการเขียน code คงจะไม่ใช้เรื่องยากอะไร คงจะใช้คำสั่งเดิมๆจากบทความตอนที่แล้วๆมาใช้กันครับ 

int led1 = 2; // กำหนดขาใช้งาน 
int led2 = 3; 
int led3 = 4; 
int led4 = 5; 
void setup() 

pinMode(led1, OUTPUT); // กำหนดขาทำหน้าที่ OUTPUT 
pinMode(led2, OUTPUT); 
pinMode(led3, OUTPUT); 
pinMode(led4, OUTPUT); 

void loop() 

digitalWrite(led1,HIGH); // ไฟ LED 1 ติด 500 ms 
delay(500); 
digitalWrite(led1,LOW); // ไฟ LED 1 ดับ500 ms 
delay(500); 
digitalWrite(led2,HIGH); 
delay(500); 
digitalWrite(led2,LOW); 
delay(500); 
digitalWrite(led3,HIGH); 
delay(500); 
digitalWrite(led3,LOW); 
delay(500); 
digitalWrite(led4,HIGH); 
delay(500); 
digitalWrite(led4,LOW); 
delay(500); 

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

ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 5

ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 5

ใบรายงานผลการปฏิบัติงาน

    1. Code Program ที่เขียนขึ้น ด้วยโปรแกรม Arduino  พร้อมอธิบายโปรแกรม

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {

pinMode(0,INPUT);
pinMode(1,INPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
lcd.begin(16,6);

}
void loop() {
  int x= digitalRead(0);
  int y= digitalRead(1);
if  (x==0){ 
    a();
    b();
    c();
    d();
    e();
    f();
    g();
    h();
    i();
    j();
    }
    if  (y==0){
    j();
    i();
    h();
    g();
    f();
    e();
    d();
    c();
    b();
    a();
    }
   
}
  void a(){
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  lcd.setCursor(6, 0);
  lcd.print("0");
  delay(500);
  }
   void b(){
  digitalWrite(6,HIGH);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  lcd.setCursor(3, 0);
  lcd.print("1");
  delay(500);
  }
  void c(){
  digitalWrite(6,LOW);
  digitalWrite(7,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  lcd.setCursor(3, 0);
  lcd.print("2");
  delay(500);
  }
  void d(){
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  lcd.setCursor(3, 0);
  lcd.print("3");
  delay(500);
  }
  void e(){
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(9,LOW);
  lcd.setCursor(3, 0);
  lcd.print("4");
  delay(500);
  } 
  void f(){
  digitalWrite(6,HIGH);
  digitalWrite(7,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(9,LOW);
  lcd.setCursor(3, 0);
  lcd.print("5");
  delay(500);
  } 
  void g(){
  digitalWrite(6,LOW);
  digitalWrite(7,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(9,LOW);
  lcd.setCursor(3, 0);
  lcd.print("6");
  delay(500);
  } 
  void h(){
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(9,LOW);
  lcd.setCursor(3, 0);
  lcd.print("7");
  delay(500);
  } 
  void i(){
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,HIGH);
  lcd.setCursor(3, 0);
  lcd.print("8");
  delay(500);
  }
  void j(){
  digitalWrite(6,HIGH);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,HIGH);
  lcd.setCursor(3, 0);
  lcd.print("9");
  delay(500);
 }

 2. ภาพจำลองการทำงานด้วยโปรแกรม Proteus




3.อธิบายการทำงานของโปรแกรม
กด  SW บน นับจาก 1-9
กด  SW ล่าง นับจาก 9-0


ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 4

ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 4

ใบรายงานผลการปฏิบัติงาน

    1. Code Program ที่เขียนขึ้น ด้วยโปรแกรม Arduino  พร้อมอธิบายโปรแกรม

      void setup()   
{   {
     pinMode(0, OUTPUT);
     pinMode(1, OUTPUT);
      
      }
}
     void loop() 

     {  
{
      digitalWrite(0, HIGH); 
      digitalWrite(1, LOW);
      delay(1000);    
      digitalWrite(1, HIGH); 
      digitalWrite(0, LOW);
      delay(1000);  
      }
}
    




    2. ภาพจำลองการทำงานด้วยโปรแกรม Proteus



      3. อธิบายการทำงานของโปรแกรม
      LED  ทั้ง 2 ตัว จะติดสลับกัน