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

งานปฏิบัติ 18



Code
#include <SoftwareSerial.h>
#include <DHT11.h>
//=============================================
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd(0x3F, 16, 2);
SoftwareSerial ArduinoSerial(3, 2); // RX, TX
//=============================================
int SW_ON = 4,SW_OFF = 5,pin=6;//กำหนดขา INPUT
int Sun = 9,CSun = 0,Relay1 = 12, Relay2 = 11; //กำหนดขา OUTPUT  
int ATL = A0,ATH = A1;//กำหนดขา Analog
int VTL1 = 0,VTH1 = 0,TL = 0,TH =0,VRHL = 50,VRHH = 80;
DHT11 dht11(pin);
//=============================================
void setup()
{
  lcd.begin();
  Serial.begin(115200);
  ArduinoSerial.begin(4800);
  while (!Serial){
    ;
    }
  //=====================================================
  lcd.setCursor(0, 0);lcd.print("Elec Pattayatech");
  lcd.setCursor(0, 1);lcd.print("Smart Farm 2016 ");
  delay(5000);
  //====================================================
  pinMode(Relay1, OUTPUT);pinMode(Relay2, OUTPUT);  
  pinMode(SW_ON, INPUT); pinMode(SW_OFF, INPUT); pinMode(Sun, INPUT);
  digitalWrite(Relay1, HIGH);digitalWrite(Relay2, HIGH);
  lcd.setCursor(0, 0);lcd.print("                ");
  lcd.setCursor(0, 1);lcd.print("                ");
}
//=============================================================
void loop()
{
  while (ArduinoSerial.available() > 0) {
  float val = ArduinoSerial.parseFloat();
  if (ArduinoSerial.read() == '\n') {
  if (val == 10) {
  digitalWrite(13, 1);
  } else if (val == 11) {
  digitalWrite(13, 0);
  }
  Serial.println(val);
  }
  }
  delay(100);
  //========ปรับค่าอุณหภูมิอ้งอิง====================================
  CSun = digitalRead(Sun);
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
  VTL1 = analogRead(ATL);
  VTH1 = analogRead(ATH);
  TL = map(VTL1,0,1023,10,30);
  TH = map(VTH1,0,1023,25,45);
  Serial.print("TL :");Serial.print(TL);Serial.println("*C");
  Serial.print("TH :");Serial.print(TH);Serial.println("*C");
  //===========================================================
    int Stemp =(int)(temp);int Shumi=(int)(humi);//ตัดทศนิยม
    Serial.print("temp :");Serial.print(Stemp);Serial.println("*C");
    Serial.print("humidity :");Serial.print(Shumi);Serial.println("%");
    Serial.print("SUN :");Serial.println(CSun);//Serial.println();
    //===================================================
    lcd.setCursor(0, 0);lcd.print("TL:");lcd.print(TL);
    lcd.setCursor(6, 0);lcd.print("TH:");lcd.print(TH);
    lcd.setCursor(12, 0);lcd.print("S1:");lcd.print(!CSun);
    lcd.setCursor(0, 1);lcd.print("TN:");lcd.print(Stemp);
    lcd.setCursor(6, 1);lcd.print("RH:");lcd.print(Shumi);
    lcd.setCursor(12, 1);lcd.print("P1:0");lcd.print(Shumi);
    delay(1000);
    //===================================================
   //=======ควบคุมอุณหภูมิ===========================
   if(temp < TL && temp < TH ){
        digitalWrite(Relay1, HIGH);//ปั๊มน้ำหยุดทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:0");
        delay(100);
        digitalWrite(Relay2, LOW);//หลอดไฟทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(temp > TL && temp > TH){
        digitalWrite(Relay2, HIGH);//หลอดไฟไม่ทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:0");
        delay(100);
        digitalWrite(Relay1, LOW);//ปั๊มน้ำทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(temp > TL && temp < TH){
       //=======ควบคุมความชื้น===========================
      if(humi < VRHL && humi < VRHH){
        digitalWrite(Relay2, HIGH);//หลอดไฟไม่ทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:0");
        delay(100);
        digitalWrite(Relay1, LOW);//ปั๊มน้ำทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(humi > VRHL && humi > VRHH){
        digitalWrite(Relay1, HIGH);//ปั๊มน้ำหยุดทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:0");
        delay(100);
        digitalWrite(Relay2, LOW);//หลอดไฟทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(humi > VRHL && humi < VRHH){
        //delay(1000);
        digitalWrite(Relay1, HIGH);//ปั๊มน้ำหยุดทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:0");
        digitalWrite(Relay2, HIGH);//หลอดไฟไม่ทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:0");
        //หน่วงเวลา 1 นาที      
        }
     //=======ENDควบคุมความชื้น===========================      
        }
     //=======ENDควบคุมอุณหภูมิ===========================
  }
  else
  {
    Serial.println();Serial.print("Error No :");
    Serial.print(err);Serial.println();  
  }
 delay(DHT11_RETRY_DELAY);
}

งานปฏิบัติ 17


code
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int aVal=0,tempaVal=0;
const int SW_ON = 2;
const int led_ON =  13; int CSW_ON = 0; int C_CSW_ON =0;
int Relay1=12,Relay2=11,Relay3=10,Relay4=9;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
  lcd.backlight();
  lcd.begin();
  Serial.begin(9600);
  pinMode(led_ON, OUTPUT);pinMode(SW_ON, INPUT);
  pinMode(Relay1,OUTPUT);pinMode(Relay2,OUTPUT);
  pinMode(Relay3,OUTPUT);pinMode(Relay4,OUTPUT);
//
  digitalWrite(Relay1,HIGH);digitalWrite(Relay2,HIGH);
  digitalWrite(Relay3,HIGH);digitalWrite(Relay4,HIGH);
  lcd.setCursor(0,0);
  lcd.print("Mechatronic2018");
  lcd.setCursor(0,1);
  lcd.print("standby");
}
//END Setup
void loop() {
  CSW_ON = digitalRead(SW_ON);
  sensorValue = analogRead(sensorPin);//Serial.println(sensorValue);
  //=======================================================================
  int c_sensorValue1 = map(sensorValue,0,1023,0,255);
  //Serial.print("c_sensorValue1 = ");Serial.println(c_sensorValue1);
  int c_sensorValue2 = map(sensorValue,0,1023,255,0);
  //Serial.print("c_sensorValue2 = ");Serial.println(c_sensorValue2);
  //=======================================================================
  //check SW_ON
  if (CSW_ON == LOW) { delay(1000);
    lcd.clear();
    C_CSW_ON++;
      Serial.print("C_CSW_ON = ");Serial.println(C_CSW_ON);
    //OPEN Project
    digitalWrite(led_ON, HIGH);
  //END check SW_ON
    if(C_CSW_ON == 1){
    lcd.setCursor(0,0);
    lcd.print("Power On ");
    delay(1000);
    lcd.clear();
    lcd.print("Power On ");
    delay(1000);
    lcd.clear();
    }
  }
  if(C_CSW_ON == 1){//OPEN PROJECT
    digitalWrite(led_ON, HIGH);
    //delay(1000);
    digitalWrite(Relay1, HIGH);
    //ตรวจสอบค่า VR================
      //lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(c_sensorValue1);
      lcd.print(" ");
      //==============================
      if(c_sensorValue1 >= 150){
      digitalWrite(Relay2, LOW);
      }else{
        digitalWrite(Relay2, HIGH);
        }
      //=============================
    //RelaySTART();
    }else{//OFF PROJECT
    lcd.setCursor(0,0);
    //lcd.print("Power Off");
    lcd.setCursor(0,1);
    lcd.print("standby");
    digitalWrite(led_ON, LOW); C_CSW_ON = 0;
    RelaySTOP();
    }
  }//END Loop
//======โปรแกรมย่อย==========
void RelaySTOP(){
digitalWrite(Relay1,HIGH);digitalWrite(Relay2,HIGH);
digitalWrite(Relay3,HIGH);digitalWrite(Relay4,HIGH); 
  }
void RelaySTART(){
digitalWrite(Relay1,LOW);digitalWrite(Relay2,LOW);
digitalWrite(Relay3,LOW);digitalWrite(Relay4,LOW);

งาน 16


code
#include <Stepper.h>
#include "Keypad.h"
#define STEP_ANGLE_4STEP 32 //360/11.25 degree
#define STEP_OUT_WITH_GEAR 2048 //32*64
Stepper stepper(STEP_ANGLE_4STEP,8,10,9,11);
char keys[4][4]={
  {'7','8','9','A'},
  {'4','5','6','B'},
  {'1','2','3','C'},
  {'*','0','#','D'}};
byte rowPins[] = {7,6,5,4};
byte colPins[] = {3,2,1,0};
int speedmotor = 400;
int dirmotor = 1;
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,4,4);
void setup() 
{
}
void loop() 
{
  char key = keypad.getKey();
  if (key != NO_KEY)
  {
        if (key == '1')
            speedmotor = 400;
        if (key == '2')
            speedmotor = 700;
        if (key == '3')
            speedmotor = 1000;  
        if (key == 'A')
            dirmotor = 1;
        if (key == 'B')
            dirmotor = -1;     
        if (key == 'C')
            dirmotor = 0; 
  }
  stepper.setSpeed(speedmotor);
  stepper.step(dirmotor);
}
////////////////////////////////////////////////////////////////////////////////////

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

งานแก้ข้อสอบ

Hardware
แยกในส่วนของ Hardware



Arduino UNO
โมดูลบลูทู ธ HC - 05
ตัวต้านทาน 10 KΩ
ตัวต้านทาน 20 KΩ
ตัวต้านทาน 1 KΩ X 4
โมดูลรีเลย์ 4 แชนแนล 12V
แหล่งจ่ายไฟ 12 V
สมาร์ทโฟนหรือแท็บเล็ต (เปิดใช้งาน Bluetooth)
Relay
Load


input
โมดูลบลูทู ธ HC - 05

output
Load
สมาร์ทโฟนหรือแท็บเล็ต (เปิดใช้งาน Bluetooth)


Software

#include <SoftwareSerial.h> เอาข้อมูลจาก Linbrary SoftwareSerial
const int rxPin = 4; rxPin ขา4
const int txPin = 2; rxpin ขา2 

SoftwareSerial mySerial(rxPin, txPin);

const int Loads[] = {9, 10, 11, 12};

int state = 0;
int flag = 0;

void setup()
{
   for (int i=0;i<4;i++)
    {
      pinMode(Loads[i], OUTPUT);
    }
   mySerial.begin(9600);
   for (int i=0;i<4;i++)
    {
      digitalWrite(Loads[i], LOW);
    }
 
}

void loop()
{
   
    if(mySerial.available() > 0)
    {
      state = mySerial.read();
      flag=0;
    }
   
    switch(state)
    {

ฟังชั่นพิเศษ 
      case '0':digitalWrite(Loads[0], HIGH);
               flag=1;
               break;
      case '1':digitalWrite(Loads[0], LOW);
               flag=1;
               break;
      case '2':digitalWrite(Loads[1], HIGH);
               flag=1;
               break;
      case '3':digitalWrite(Loads[1], LOW);
               flag=1;
               break;
      case '4':digitalWrite(Loads[2], HIGH);
               flag=1;
               break;
      case '5':digitalWrite(Loads[2], LOW);
               flag=1;
               break;
      case '6':digitalWrite(Loads[3], HIGH);
               flag=1;
               break;
      case '7':digitalWrite(Loads[3], LOW);
               flag=1;
               break;
      case '8':digitalWrite(Loads[0], LOW);
               digitalWrite(Loads[1], LOW);
               digitalWrite(Loads[2], LOW);
               digitalWrite(Loads[3], LOW);
               flag=1;
               break;
     }
}



FlowChart

วันพฤหัสบดีที่ 27 กันยายน พ.ศ. 2561

Mini project PIR & MQ-2

Mini project PIR & MQ-2






หลักการทำงาน
เมื่อมีกลุ่มควัน ก๊าซ แก๊ส มาโดนบริเวณ Sensor จะมีการส่งสัญญาณ analog ไปยัง Arduino หากมีความหนาแน่นของ ก๊าซ แก๊ส ควัน ก็จะมีค่า analog ที่สูงขึ้นส่งไปยัง Arduino เมื่อ Arduino ประตูก็จะทำงาน เมิ่อไม่มีควันแต่มีการเคลือนไหวประตูก็จะเปิดโดยผ่าน PIR Sensor และจะปิดเมื่อไม่มีสิ่งเคลื่อนไหว แต่ถ้าเกิดไฟไหม้หรือมีควันมากเกินไปประตูก็จะเปิด ส่วนมาก เหมาะสำหรับในห้องครัวหรือในบ้าน


Code
int PIR = analogRead(A1);    //ประกาศตัวแปร และให้เก็บค่าอะนาลอก ที่ขา A1 ไว้
  int Smok = analogRead(A2); //ประกาศตัวแปร แล้วให้เก็บค่าอะนาลอกที่ขา A2 ไว้


void setup() {

  Serial.begin(9600);    //ตั้งค่าเริ่มต้น
}


void loop() {

  Serial.print("PIR = "); Serial.print(PIR);    Serial.print(  "    Smok =  ");                           Serial.println(Smok);     //    ให้แสดงค่า PIR และ Smok ที่จอมอนิเตอร์                           
  delay(1);       //     ดีเลย์ไว้ 0.001 วิ
  if(Smok >= 100 || PIR >= 500){  //ถ้าSmokมากกว่าหรือเท่ากับ 100 หรือ PIR มากว่าหรือเท่ากับ 500 ให้ทำเงื่อนไข
      analogWrite(A4, 0);     //สั่งให้ขาอะนาลอก A4 มีค่าเท่ากับ 0
      analogWrite(A5, 255); สั่งให้ขาอะนาลอก A5 ทีค่าเท่ากับ 255
      delay(1800);   ดีเลย์ไว้ 1.8 วิ
      analogWrite(A4, 255);   สั่งให้ อะนาลอก A4 มัค่าเท่ากับ 255
      analogWrite(A5, 0);  สั่ให้ขา อะนาลอก A5 มีค่าเท่ากับ 0
      delay(2000);  ดีเลย์ไว้ 2 วิ
      
  }
  
  delay(10);
}

Cilp Review







วันจันทร์ที่ 17 กันยายน พ.ศ. 2561

โครงงาน ชุดเปลี่ยนสีหลอดไฟ LED RGB แสดงผลผ่าน LCD

หลักการและเหตุผล

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

คุณสมบัติการทำงานของโครงงาน

  • สามารถเลือกใช้สีได้ 7 สี ตามต้องการ
  • สวิตซ์แต่ละตัวจะควบคุมสีแต่ละสี เช่น สีแดง,สีน้ำเงิน และ สีเขียว เป็นต้น
  • มีการบอกสถานะว่าสีอะไรที่ติดอยู่

โปรเจค Arduino เครื่องตรวจจับควัน MQ-2

ปรเจค Arduino เครื่องตรวจจับควัน MQ-2
โปรเจคนี้เป็นการอธิบายการทำงานของ Sensor MQ-2 ซึ่งเอาไว้ตรวจจับควันกลุ่มควัน และยังสามารถตรวจจับ แก๊สได้หลากหลายชนิดอีกด้วย สามารถนำไปประยุคต์ใช้งานในการตรวจจับควันจากการเผ่าไหมไฟไหม้บ้าน เป็นต้น
MQ-2 สามารถตรวจจับแก๊สได้หลากหลายชนิด ตรวจจับได้ดีที่สุดคือ ก๊าซติดไฟ 
  • LPG
  • Butane
  • Propane
  • Methane
  • Alcohol
  • Hydrogen
หลักการทำงานของโปรเจคนี้ คือ
เมื่อมีกลุ่มควัน ก๊าซ แก๊ส มาโดนบริเวณ Sensor จะมีการส่งสัญญาณ analog ไปยัง Arduino หากมีความหนาแน่นของ ก๊าซ แก๊ส ควัน ก็จะมีค่า analog ที่สูงขึ้นส่งไปยัง Arduino เมื่อ Arduino รับสัญญาณจาก Sensor หากยังไม่สูงพอ (ที่ตั้งไว้ 400) หากต่ำกว่า ค่าที่ตั้งไว้ไฟสีเขียวจะสว่าง ในทางกลับกันหากมีกลุ่มควัน แก๊ส ก๊าซ มีความหนาขึ้นสูงกว่า ค่าที่ตั้งไว้ ไฟสีแดงจะสว่างเพื่อเตือน ว่าไม่ปลอดภัยแล้วน๊ะ หลักการง่ายนิดเดียวมาเริ่มกันเลย
อุปกรณ์ประกอบด้วย
  • Arduino Uno R3
  • Sensor MQ-2
  • หลอดไฟ LED สีเขียว แดง
  • ตัวต้านทาน ค่าความต้านทานที่ 220 Ohm
  • บอร์ดทดลอง
  • สายไฟ ชนิด Male to Male และ Male to Female อย่างละ 10 เส้น
การต่อวงจรดังต่อไปนี้
โปรแกรม Code Arduino
int LedRED = 12;
int LEDgreen = 11;
int smokeA0 = A0;
int sensorThres = 400;  //ตั้ง ค่าความหนาของตวัน แก๊ส ก๊าซที่ 400
void setup() {
  Serial.begin(9600);
  pinMode(LedRED, OUTPUT);
  pinMode(LEDgreen, OUTPUT);
  pinMode(smokeA0, INPUT);
}
void loop() {
  int analogSensor = analogRead(smokeA0);
  Serial.print("Pin A0: ");
  Serial.println(analogSensor); 
  if (analogSensor > sensorThres)  {
    digitalWrite(LedRED, HIGH);
    digitalWrite(LEDgreen, LOW);
  }
  else  {
    digitalWrite(LedRED, LOW);
    digitalWrite(LEDgreen, HIGH);
  }
  delay(100);
}

งานปฏิบัติ 15




Code 1


#include <LedControl.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 11
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float Tfloat;
long Tint;
LedControl lc=LedControl(8,10,9,1); 
// Pin 8->DIN, 10->CLK, 9->CS(LOAD), 1 = No.of devices
void show6digit(int num)
{
  int seg1,seg2;
  seg2 = (((((num%100000)%10000)%1000)%100)/10);
  seg1 = (((((num%100000)%10000)%1000)%100)%10);
  lc.setDigit(0,0,seg1,false); 
  if (num>=10)
      lc.setDigit(0,1,seg2,false);
  delay(300);
}
void setup(void)
{
  sensors.begin();
  lc.shutdown(0,false);  
  lc.setIntensity(0,5); 
  lc.clearDisplay(0);
void loop(void)
{
  sensors.requestTemperatures(); 
  Tfloat = sensors.getTempCByIndex(0);
  Tint = int(Tfloat);
  lc.clearDisplay(0);
  show6digit(Tint);
}

งาน5 ในสถานที่ฝึกงานของ นักศึกษา ใช้ระบบควบคุมคุณภาพอย่างไร

Quality Assurance (QA) กับ Quality Control (QC) QC (Quality Control) หมายถึง  การควบคุมคุณภาพสินค้าให้เป็นไปตามคุณสมบัติที่กำหนดไว้  และส...