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

งาน สอบแก้ตัว

 



Arduino UNO :  ( MCU )


ใช้ Arduino UNO ขนาด 8 บิต ATMega 328P
ควบคุมส่วนประกอบต่างๆเช่นโมดูลบลูทูธ และ รีเลย์







โมดูลบลูทูธ :  ( INPUT )


โมดูล Bluetooth ที่ใช้คือ HC-05 ดังรูปที่ด้านล่างโมดูลบลูทู ธ นี้มีขา 4
ขาสำหรับ VCC (5V), พื้นดิน, TX และ RX

โมดูลบลูทู ธ มีขา 4 ขา: VCC, TX, RX และ GND VCC และ GND เชื่อมต่อกับ 5V และใช้
Ground จาก Arduino UNO โมดูลบลูทู ธ ทำงานบน 3.3V และมีตัวควบคุม 5V ถึง 3.3V
บนเมนบอร์ด

หมุด TX และ RX ของโมดูลบลูทู ธ ต้องเชื่อมต่อกับ RX และ TX pins ของ Arduino ใน
Arduino UNO เรากำหนดขา 2 และ 4 เป็น RX และ TX โดยใช้ซอฟต์แวร์ ดังนั้น TX ของ
Bluetooth เชื่อมต่อกับขา 4 ของ Arduino

แต่เมื่อเชื่อมต่อ RX ของ Bluetooth ไปยัง TX ของ Arduino (หรือไมโครคอนโทรลเลอร์ตัวใด
ๆ อันที่จริงแล้ว) เราต้องระมัดระวังเนื่องจากขาสามารถทนต่อ 3.3V
เท่านั้น แต่แรงดันไฟฟ้าจาก TX หรือ Arduino จะเป็น 5V

ดังนั้นจึงใช้เครือข่ายเครื่องแบ่งแรงดันไฟฟ้าประกอบด้วยตัวต้านทานแบบ 10K และ 20K
เพื่อลดแรงดันไฟฟ้าลงเหลือ 3.3V







รีเลย์ : ( OUTPUT )


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

โดยทั่วไปรีเลย์ประกอบด้วยขั้ว 5 ขั้ว: ขดลวดขั้วสองขั้วขั้วสามัญ (COMM) เทอร์มินัลที่เปิดอยู่ตามปกติ (NO) และขั้วต่อปิดปกติ (NC)

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

 ขั้นตอนต่อไปคือการเชื่อมต่อขา I / O ดิจิตอลของ Arduino เข้ากับบอร์ดรีเลย์เชื่อมต่อกับ Pin 9, 10, 11, 12  ของ Arduino)



ซอฟต์แวร์






#include <SoftwareSerial.h>   เรียกใช้ฟังก์ชั่น Bluetooth

  const int rxPin = 4;     Rx PIN  ขา4
     const int txPin = 2;      TX PIN  ขา2        

SoftwareSerial mySerial(rxPin, txPin);       กำหนดค่าลงใน Library Bluetooth

   const int Loads[] = {9, 10, 11, 12};         กำหนด ตัวแปร รีเรย์

     int state = 0;              ตัวแปร State = 0
int flag = 0;                   ตัวแปร Flag = 0

ฟังก์ชั่น พิเศษ

##########################################################################

void setup()
                      {
           for (int i=0;i<4;i++)            ถ้า int เท่ากับ0และน้อยกว่า4 ให้ i+ไปเรื่อยๆ
    {
       pinMode(Loads[i], OUTPUT);          ให้ Load โดยเกHบค่าตัวแปรอาเรย์ i เป็น OUTPUT
    }
     mySerial.begin(9600);           แสดงผล ออกทาง Serial Moniter 9600
   for (int i=0;i<4;i++)                                     ถ้า int เท่ากับ0และน้อยกว่า4 ให้ i+ไปเรื่อยๆ
    {
            digitalWrite(Loads[i], LOW);        ให้Load iเป็นสถานะ ต่ำ
    }
 
}

void loop()
                           {
   
           if(mySerial.available() > 0)             ถ้า MySerial.available() มากกว่า 0
    {
        state = mySerial.read();             State คือ อ่านค่า
      flag=0;                                                Flag คือ 0
    }
   
      switch(state)                        การตรวจสอบตัวแปรว่ามีค่าเท่ากับ case ใด ถ้าตรง                                                                           กับ case ใดก็จะทำงาน
    {
          case '0':digitalWrite(Loads[0], HIGH);            Case 0 แสดงค่า Load อาเรย์ 0  เป็น สูง
               flag=1;                                                   flag เท่ากับ 1
                  break;                                                          หยุดการทำงาน
        case '1':digitalWrite(Loads[0], LOW);        Case1 แสดงค่า Load อาเรย์ 0  เป็น ต่ำ
               flag=1;                                                        flag เท่ากับ 1
                 break;                                                         หยุดการทำงาน
        case '2':digitalWrite(Loads[1], HIGH);          Case2 แสดงค่า Load อาเรย์ 1  เป็น สูง
               flag=1;                                                         flag เท่ากับ 1
                  break;                                                          หยุดการทำงาน
        case '3':digitalWrite(Loads[1], LOW);       Case 3 แสดงค่า Load อาเรย์ 1  เป็น ต่ำ
               flag=1;                                                         flag เท่ากับ 1
                  break;                                                          หยุดการทำงาน
         case '4':digitalWrite(Loads[2], HIGH);       Case 4 แสดงค่า Load อาเรย์ 2  เป็น สูง
               flag=1;                                                         flag เท่ากับ 1
                  break;                                                           หยุดการทำงาน
      case '5':digitalWrite(Loads[2], LOW);        Case 5 แสดงค่า Load อาเรย์ 2  เป็น ต่ำ
                 flag=1;                                                         flag เท่ากับ 1
               break;                                                           หยุดการทำงาน
      case '6':digitalWrite(Loads[3], HIGH);       Case 6 แสดงค่า Load อาเรย์ 3  เป็น สูง
               flag=1;                                                         flag เท่ากับ 1
                  break;                                                           หยุดการทำงาน
      case '7':digitalWrite(Loads[3], LOW);        Case 7 แสดงค่า Load อาเรย์ 3  เป็น ต่ำ
               flag=1;                                                          flag เท่ากับ 1
                   break;                                                            หยุดการทำงาน
        case '8':digitalWrite(Loads[0], LOW);             Case 8 แสดงค่า Load อาเรย์ 0  เป็น ต่ำ
                   digitalWrite(Loads[1], LOW);                      แสดงค่า Load อาเรย์ 1 เป็น สถานะ ต่ำ
                 digitalWrite(Loads[2], LOW);                แสดงค่า Load อาเรย์ 2 เป็น สถานะ ต่ำ
               digitalWrite(Loads[3], LOW);                      แสดงค่า Load อาเรย์ 3 เป็น สถานะ ต่ำ

                  flag=1;            flag เท่ากับ 1
               break;              หยุดการทำงาน
                                                                      }
}







Flowchart








ไม่มีความคิดเห็น:

แสดงความคิดเห็น

งานที่ 5

การบริหารงานคุณภาพเทคโนโลยีและสารสนเทศคือ   ISO 9001-2000  ในด้านคุณภาพการผลิตและบริการ ซึ่งเป็นมาตราฐานสากลที่องค์กรธุรกิจทั่วโลกให้คว...