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

Mini project

Ethernet + Blynk ปิด เปิด ไฟ LED ผ่าน อินเตอร์เน็ต





จัดทำโดย
1.นายภัทระ      อุ่นเจ้าบ้าน  รหัส 6131271132
2.นายปวเรศ    จาตุกรณีย์   รหัส 6131271136

อุปกรณ์

1.Arduino R3
2.แผ่นไม้อัด
3.LED
4.Ethernet Shield W5100
5.บอร์ด PCB
6.Ethernet Cables


Book diagram



Wiring diagram


                                                       แอปพลิเคชัน

Blynk Application เป็นโปรแกรมบนมือถือที่ทำให้เราสร้างหน้าต่างควบคุมหรือแสดงผลเชื่อมต่อกับพวกไมโครคอนโทรเลอร์(Ardunio, ESP8266, Raspberry Pi) ได้ง่ายๆ และยังสามารถควบคุมผ่าน ทุกที่ ที่สามารถเชื่อมต่ออินเตอร์เน็ต  ได้อีกด้วย

ไปที่ Play Store ค้นหา Blynk

เปิด Blynk Application ขึ้นมา

-> Create New Account



กรอก อีเมล และ พาสเวิด -> Sign Up


-> New Project

เลือก DEVICE

ตั้งค่า ดังนี้

your hardware เป็น Arduino UNO

connection type เป็น Ethernet
ตั้งชื่อ Project ในตัวอย่างชื่อ W5100 แล้วจึงคลิก Create


โปรกรม จะส่ง Auth Toke ไปที่ อีเมล ที่เรากรอกไว้ -> OK


โดยทุกๆครั้งที่เริ่มสร้างโปรเจคใหม่ AUTH TOKEN จะถูกเปลี่ยนใหม่เสมอ ซึ่ง KEY นี้เองที่เป็นเสมือนกุญแจสำหรับเชื่อมต่อ คลิก เครื่องหมาย +


คลิก เพิ่ม Button

จะมี ปุ่ม BUTTON เพิ่มเข้ามาที่หน้าจอ แล้วจึง คลิกที่ BUTTON เพื่อตั้งค่า


เลือก เป็นแบบ SWITCH แล้ว คลิก ที่ PIN



Select pin -> Digital -> D7 -> CONTINUE


BUTTON จะอยู่ริมซ้ายมือบน


ไปที่

http://www.blynk.cc/getting-started/

ดาวน์โหลด ไลบรารี่ Blynk


เปิด โปรแกรม Arduino IDE จากนั้นให้ทำการเพิ่ม ไลบรารี่ Blynk  ให้กับ Arduino (IDE) ของเรา
การเพิ่ม ไลบรารี่ Blynk ให้กับ Arduino (IDE) ของเรา ตามรูป


เลือกไฟล์ ไลบรารี่ blynk-library-0.4.8.ZIP ที่เรา ดาวน์โหลดมาอยู่ในคอมพิวเตอร์ของเรา จากนั้นคลิก Open โปรแกรม จะเพิ่ม ไลบรารี่ Blynk เข้าสู่ Arduino (IDE) ของเรา



เมื่อเพิ่มเสร็จแล้วไปที่ File -> Eamples -> Blynk -> Boards_Ethernet -> Arduino_Ethernet


แก้ไข YourAuthToken ที่เราได้รับจาก อีเมล


ที่เราได้รับจาก อีเมล





เมื่อแก้ไขแล้ว อัพโหลดโค้ด ไปยัง  Arduino UNO



CODE


#define BLYNK_PRINT Serial #include <SPI.h> #include <Ethernet.h> #include <BlynkSimpleEthernet.h> // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "18f89ec26be248018f0d629d17204350"; // ต้องแก้ไข
#อธิบายโค้ด ใช้เพื่อตั้งชื่อค่าคงที่ของw5100และsdcard ก่อนที่โปรแกรมจะถูกคอมไพล์ ค่าคงที่ที่ถูก define ใน Arduino จะไม่ใช้พื้นที่หน่วยความจำใดๆบนชิป
#define W5100_CS 10 #define W5100_CS 10คอมไพล์เลอร์จะแทนที่ W5100_CS ทุกที่ด้วย 10 เมื่อทำการคอมไพล์


#define SDCARD_CS 4 #define SDCARD_CS 4คอมไพล์เลอร์จะแทนที่ SDCARD_CS ทุกที่ด้วย 4 เมื่อทำการคอมไพล์ void setup() { // Debug console Serial.begin(9600); pinMode(SDCARD_CS, OUTPUT); digitalWrite(SDCARD_CS, HIGH); // Deselect the SD card Blynk.begin(auth); // You can also specify server: //Blynk.begin(auth, "blynk-cloud.com", 8442); //Blynk.begin(auth, IPAddress(192,168,1,100), 8442); // For more options, see Boards_Ethernet/Arduino_Ethernet_Manual example } void loop() { Blynk.run(); }

ลิ้งทดลอง
https://www.youtube.com/watch?v=iZcU5wrAr8Q



แนวทางและที่มา

วันเสาร์ที่ 20 ตุลาคม พ.ศ. 2561

Microcontroller 11


 LDR Sensor เซนเซอร์วัดแสง


 อุปกรณ์ที่ใช้

1. บอร์ด Arduino Uno R3 
2. Breadboard 
3. LDR Sensor เซนเซอร์วัดแสง

Code
int LDR_Sensor_Pin = A0;  
 
void setup() {
  Serial.begin(9600);  
  
} 
void loop() {
  int sensor_Value = analogRead(LDR_Sensor_Pin);  
  Serial.print("LDR Sensor Value = ");  
  Serial.println(sensor_Value);  
  delay(500); 
}

แหล่งอ้างอิง

Microcontroller 10


เซ็นเซอร์จับการเคลื่อนที่เปลี่ยนสี LED 4 สี


   

อุปกรณ์ที่ใช้

- Sparkfun APDS-9960
- Jumper wires (generic)
- Arduino UNO
- Resistor 4.75k ohm
- RGB Diffused Common Cathode


Motion rgb led bb

Code

#include <Wire.h>
#include <SparkFun_APDS9960.h>

// Pins
#define APDS9960_INT    2 // Needs to be an interrupt pin

// Constants
int red_pin = A0;
int green_pin = A1;
int blue_pin = A2;

int onOff_flag = 0;

//Make the array to loop through
int colorNumber = 0;

// Global Variables
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;

void setup() {

  // Set interrupt pin as input
  pinMode(APDS9960_INT, INPUT);

  // Initialize Serial port
  Serial.begin(9600);
  Serial.println();
  Serial.println(F("--------------------------------"));
  Serial.println(F("SparkFun APDS-9960 - GestureTest"));
  Serial.println(F("--------------------------------"));
  
  // Initialize interrupt service routine
  attachInterrupt(0, interruptRoutine, FALLING);

  // Initialize APDS-9960 (configure I2C and initial values)
  if ( apds.init() ) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }
  
  // Start running the APDS-9960 gesture sensor engine
  if ( apds.enableGestureSensor(true) ) {
    Serial.println(F("Gesture sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during gesture sensor init!"));
  }
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  analogWrite(A0, 0);
  analogWrite(A1, 0);
  analogWrite(A2, 0);
}

void loop() {
  if( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }
  if (onOff_flag == 1){
  switch (colorNumber){
    case 0:
    Serial.println("red");
      analogWrite(red_pin, 255);
      analogWrite(green_pin, 0);
      analogWrite(blue_pin, 0);
      break;
    case 1:
    Serial.println("baby blue");
      analogWrite(red_pin, 255);
      analogWrite(green_pin, 153);
      analogWrite(blue_pin, 204);
      break;
    case 2:
    Serial.println("dark blue");
      analogWrite(red_pin, 100);
      analogWrite(green_pin, 0);
      analogWrite(blue_pin, 170);
      break;
    case 3:
    Serial.println("green");
      analogWrite(red_pin, 0);
      analogWrite(green_pin, 255);
      analogWrite(blue_pin, 0);
      break;
    case 4:
    Serial.println("blue");
      analogWrite(red_pin, 0);
      analogWrite(green_pin, 0);
      analogWrite(blue_pin, 255);
      break;
    case 5:
    Serial.println("violet");
      analogWrite(red_pin, 191);
      analogWrite(green_pin, 0);
      analogWrite(blue_pin, 255);
      break;
  }
}
else if(onOff_flag == 0){
  analogWrite(red_pin, 0);
  analogWrite(green_pin, 0);
  analogWrite(blue_pin, 0);
}
delay(1000);
}

void interruptRoutine() {
  isr_flag = 1;
}

void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        Serial.println("UP");
        onOff_flag = 1;
        break;
      case DIR_DOWN:
        Serial.println("DOWN");
        onOff_flag = 0;
        break;
      case DIR_LEFT:
        Serial.println("LEFT");
        if(onOff_flag == 1){
          if(colorNumber>0){
            colorNumber -= 1;
            Serial.println(colorNumber);
        }
        else if(colorNumber < 1){
          colorNumber = 5;
          Serial.println(colorNumber);
        }
        }
        break;
      case DIR_RIGHT:
        Serial.println("RIGHT");
        if(onOff_flag == 1){
          if(colorNumber < 5){
            colorNumber += 1;
            Serial.println(colorNumber);
          }
          else if(colorNumber > 4){
            colorNumber = 0;
            Serial.println(colorNumber);
          }
        }
        break;
      case DIR_NEAR:
        Serial.println("NEAR");
        break;
      case DIR_FAR:
        Serial.println("FAR");
        break;
      default:
        Serial.println("NONE");
    }

  }

แหล่งอ้างอิง

Microcontroller 9


เซ็นเซอร์วัดอุณหภูมิ



อุปกรณ์ที่ใช้

- DHT11
- Arduino UNO

Code

#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
   Serial.begin(9600); 
   Serial.println("DHTxx test!");

   dht.begin();
}

void loop() {
   float h = dht.readHumidity();
   float t = dht.readTemperature();
   float f = dht.readTemperature(true);

   if (isnan(h) || isnan(t) || isnan(f)) {
     Serial.println("Failed to read from DHT sensor!");
      return;
   }

   float hi = dht.computeHeatIndex(f, h);

   Serial.print("Humidity: "); 
   Serial.print(h);
   Serial.print(" %\t");
   Serial.print("Temperature: "); 
   Serial.print(t);
   Serial.print(" *C ");
   Serial.print(f);
   Serial.print(" *F\t");
   Serial.print("Heat index: ");
   Serial.print(hi);
   Serial.println(" *F");
  
   delay(2000);
}

Microcontroller 8


ควบคุมสีแบบเคลื่อนที่


Motion rgb led bb
อุปกรณ์
  Sparkfun APDS-9960


Code

#include <Wire.h>
#include <SparkFun_APDS9960.h>

#define APDS9960_INT    2 
int red_pin = A0;
int green_pin = A1;
int blue_pin = A2;

int onOff_flag = 0;

int colorNumber = 0;

SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;

void setup() {

  pinMode(APDS9960_INT, INPUT);

  Serial.begin(9600);
  Serial.println();
  Serial.println(F("--------------------------------"));
  Serial.println(F("SparkFun APDS-9960 - GestureTest"));
  Serial.println(F("--------------------------------"));
    attachInterrupt(0, interruptRoutine, FALLING);

  if ( apds.init() ) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }
    if ( apds.enableGestureSensor(true) ) {
    Serial.println(F("Gesture sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during gesture sensor init!"));
  }
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  analogWrite(A0, 0);
  analogWrite(A1, 0);
  analogWrite(A2, 0);
}

void loop() {
  if( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }
  if (onOff_flag == 1){
  switch (colorNumber){
    case 0:
    Serial.println("red");
      analogWrite(red_pin, 255);
      analogWrite(green_pin, 0);
      analogWrite(blue_pin, 0);
      break;
    case 1:
    Serial.println("baby blue");
      analogWrite(red_pin, 255);
      analogWrite(green_pin, 153);
      analogWrite(blue_pin, 204);
      break;
    case 2:
    Serial.println("dark blue");
      analogWrite(red_pin, 100);
      analogWrite(green_pin, 0);
      analogWrite(blue_pin, 170);
      break;
    case 3:
    Serial.println("green");
      analogWrite(red_pin, 0);
      analogWrite(green_pin, 255);
      analogWrite(blue_pin, 0);
      break;
    case 4:
    Serial.println("blue");
      analogWrite(red_pin, 0);
      analogWrite(green_pin, 0);
      analogWrite(blue_pin, 255);
      break;
    case 5:
    Serial.println("violet");
      analogWrite(red_pin, 191);
      analogWrite(green_pin, 0);
      analogWrite(blue_pin, 255);
      break;
  }
}
else if(onOff_flag == 0){
  analogWrite(red_pin, 0);
  analogWrite(green_pin, 0);
  analogWrite(blue_pin, 0);
}
delay(1000);
}

void interruptRoutine() {
  isr_flag = 1;
}

void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        Serial.println("UP");
        onOff_flag = 1;
        break;
      case DIR_DOWN:
        Serial.println("DOWN");
        onOff_flag = 0;
        break;
      case DIR_LEFT:
        Serial.println("LEFT");
        if(onOff_flag == 1){
          if(colorNumber>0){
            colorNumber -= 1;
            Serial.println(colorNumber);
        }
        else if(colorNumber < 1){
          colorNumber = 5;
          Serial.println(colorNumber);
        }
        }
        break;
      case DIR_RIGHT:
        Serial.println("RIGHT");
        if(onOff_flag == 1){
          if(colorNumber < 5){
            colorNumber += 1;
            Serial.println(colorNumber);
          }
          else if(colorNumber > 4){
            colorNumber = 0;
            Serial.println(colorNumber);
          }
        }
        break;
      case DIR_NEAR:
        Serial.println("NEAR");
        break;
      case DIR_FAR:
        Serial.println("FAR");
        break;
      default:
        Serial.println("NONE");
    }
  }
}

งานครั้งที่ 1 โครงสร้างโรงงาน

    เป็นการจัดโครงสร้างองค์การแบบ ตามหน้าที่การ งาน  หมายถึง โครงสร้างที่จัดตั้งขึ้นโดยแบ่งไปตามประเภทหรือหน้าที่การงาน เพื่อแสดงให้เ...