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

Project พัดลมปรับความเร็วตามอุณหภูมิ + ควบคุมผ่าน Android

แนะนำความสามารถของพัดลมตัวนี้กันก่อนนะครับ 
สามารถทำงานได้ 3 โหมด คือ 1. Manual  2. Auto และ 3. Manual โดย Android Phone
ในโหมด Manual จะสามารถกดที่ปุ่มได้ปกติ เบอร์ 1 ความเร็วระดับ 1 ,เบอร์ 2 ความเร็วระดับ 2 และ เบอร์ 3 ความเร็วระดับ 3 เมื่อมีการกดเบอร์ 1 หรือ 2 หรือ 3 จะเข้าสู่โหมด Manual ทันที 
ในโหมด Auto  พัดลมจะปรับความเร็วตามอุณหภูมิ 
ความเร็วเบอร์ 0 อุหณภูมิน้อยกว่า 25 องศา 
ความเร็วเบอร์ 1 อุหณภูมิช่วง 25 - 28 องศา 
ความเร็วเบอร์ 2 อุณหภูมิช่วง 29 - 31 องศา 
ความเร็วเบอร์ 3 อุณหภูมิมากว่า 31 องศา
ในโหมด Manual ผ่าน Android Phone จะเชื่อมต่อกับพัดลมผ่านระบบ bluetooth hc-06 โดยเราได้เขียน application สำหรับควบคุมพัดลมตัวนี้ขึ้นมา จะสามารถดูอุณหภูมิและความเร็วมอเตอร์ผ่านตัว app ได้เลยพร้อมทั้งสามารถสั่งเปลี่ยนความเร็วผ่าน app android ได้เลย

อุปกรณ์ที่ใช้
1. บอร์ด arudino uno r3 สั่งซื้อ คลิก
2. bluetooth hc-06 สั่งซื้อ คลิก 
3. บอร์ด relay 4 channel สั่งซื้อ คลิก
4. LCD + I2C สั่งซื้อ คลิก
5. DHT11 สั่งซื้อ คลิก
6. พัดลมขนาด 12 นิ้ว



รายละเอียดอุปกรณ์ที่ใช้


ตัวอย่างใช้งานโหมด Manual 
กดเบอร์ 1 ทีจอจะแสดง Manual Mode S=1

ตัวอย่างใช้งานในโหมด Auto 
อุณหภูมิอยู่ที่ 30 องศา เฉาะอยู่ในเงื่อนไขเบอร์ 2 ใน Auto Mode

ตัวอย่างการทำงานในโหมด Manual ผ่าน Android Phone

Manaul Speed = 2 อุณหภูมิ = 29 องศา

Manual Speed 3 อุณหภูมิ = 29 องศา

Manual ปิดพัดลม อุณหภูมิ = 29 องศา







วันนี้จะมาสอนใช้งาน Arduino Shield Ethernet W5100 แสดงค่าอุณหภูมิและความชื้น ภายในบ้าน
โดยผมใช้ sensor dht11 เป็นตัวอ่านค่าอุณหภูมิและความชื้น
มาดูวงจรแบบง่ายกันเลยครับ สำหรับการต่อ dht11
 
vcc ต่อ +5v
data ต่อ pin2
n/a ไม่ต้องต่อครับ
gnd ต่อ 0v

จากนั้นเสียบบอร์ด Arduino Shield Ethernet W5100 พร้อมสาย Lan ดังรูปด้านล่าง
โหลด Libary DHT จาก ลิ้งค์นี้
https://dl.dropboxusercontent.com/u/13758529/elec2you/DHT.rar นำไปวางไว้ใน Folder libary ของ Arduino ที่ใช้เขียนโปรแกรม 
 จากนั้นนำโค้ดนี้ upload ลง arduio เพื่อหา IP Address ก่อน 
#include "SPI.h"
#include "Ethernet.h"

 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = { 173,194,126,119  }; // www.google.co.th
 
EthernetClient client;
 
void setup()
{
  Serial.begin(9600);
  if(Ethernet.begin(mac) == 0) { // start ethernet using mac & DHCP
    Serial.println("Failed to configure Ethernet using DHCP");  
    while(true)   // no point in carrying on, so stay in endless loop:
      ;
  } 
  delay(1000); // give the Ethernet shield a second to initialize
  
  Serial.print("This IP address: ");
  IPAddress myIPAddress = Ethernet.localIP(); 
  Serial.print(myIPAddress);  
  if(client.connect(server, 80)>0) {
    Serial.println(" connected");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } else {
    Serial.println("connection failed");
  }
}
 
void loop()
{
  if (client.available()) {
    char c = client.read();
    // uncomment the next line to show all the received characters   
    // Serial.print(c);
  }
 
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}

เมื่อได้ IP ดังรูป 
จากนั้นแก้ IP Address ใน Code ด้านล่างให้ตรงกับที่เรา FIND IP มา
 */

#include 
#include 
#include "DHT.h"

#define DHTPIN 2     // what pin we're connected to
#define DHTTYPE DHT11   // DHT 11 
DHT dht(DHTPIN, DHTTYPE);
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,100,146);

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

 //IPAddress myIPAddress = Ethernet.localIP(); 
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  dht.begin();
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
  client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("");
          client.println("");
            
            client.print("WWW.ELEC2YOU.COM");
            client.println("
"); 
            client.print("Humidity: ");
            client.print(dht.readHumidity());
            client.print(" Temperature: ");
            client.print(dht.readTemperature());
            client.println("
");       
          
          client.println("");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}
upload ลง บอร์ด arduion uno r3

วันพุธที่ 24 กันยายน พ.ศ. 2557

เริ่มแรกขออธิบายการทำงานของ dht11 ก่อนเลยนะครับ
dht11 เป็นเซ็นเซอร์ที่วัดค่าอุณหภูมืและค่าความชื้นที่เป็นแบบ digital สำเร็จเลย
มันมีความน่าเชื่อถือและสเถียรภาพค่อนข้างมาก มีทั้งหมด 4 pin ดังรูปด้านล่าง
สเปกทางเทคนิค
แบบละเอียด

การ wiring ดังรูปด้านล่าง

ขั้นตอนการสื่อสารระหว่าง MCU และ DHT11

คุณสมบัติทางไฟฟ้า


มาทดลองปฎิบัติกัน
อุปกรณ์ที่่ใช้ มี 
บอร์ด Arduino Uno R3 สั่งซื้อ

wiring ตามรูปด้านล่าง แต่ผมไม่ได้ต่อตัว R


เสียบสาย usb ทำการ Upload โปรแกรมตัวอย่าง 


ลืมไปให้ไป โหลด library จาก website https://github.com/adafruit/DHT-sensor-library/archive/master.zip 

ติดตั้ง library เสร็จทำการเปิดโปรแกรมตัวอย่างที่ชื่อว่า 
DHTtester แก้ข้อมูลตามกรอบสีแดงรูปด้านล่าง จากนั้น upload โปรแกรม DHTtester ลงบอร์ด Arduino Uno R3


ใช้ Serial Port Monitor จะแสดงดังรูปด้านล่าง





วันเสาร์ที่ 13 กันยายน พ.ศ. 2557

การใช้งาน HC-06 Bluetooth
1. เริ่มที่ Wiring Diagram กันก่อนเลย 
  • Connect the HC-06 Ground (GND) pin to ground (duh!).
  • Connect the HC-06 VCC pin to 5v.
  • Connect the HC-06 TX/TXD pin to Arduino digital pin 4.
  • Connect the HC-06 RX/RXD pin to Arduino digital pin 2.
RX pin ถูก design ให้ใช้แรงดัน 3.33 v เฉพาะนั้นเราต้องเอา R มาทำเป็น Votage Divider 
2. ติดตั้ง library สำหรับ hc-06 bluetooth ดาวโหลดได้ที่ 
เมื่อติดตั้ง library เรียบร้อยแล้วลองทดลอง program
ไปที่ 
ทำการ upload ลง arduino 
3. เมื่อทุกอย่าง Ok เปิด Serial Monitor
พิมพ์ AT แล้วกด ENTER จะได้
พิมพ์ 
AT+VERSION จะได้ OKlinvorV1.8
AT+BAUD4 จะได้ OK9600

วันอังคารที่ 19 สิงหาคม พ.ศ. 2557

วันนี้เราจะมาสอนใช้ vb6 ติดต่อ PLC Mitsubishi กันนะครับ
1. ต้องมีโปรแกรม vb6
2. MX Component V.3
3. PLC Mitsubishi
4. สายลิ้งคอมพิวเตอร์กับPLC Mitsubishi

เมื่อติดตั้งโปรแกรมและเตรียมอุปกรณ์พร้อมแล้วก็เริ่มเลยนะครับ ทำการตรวจสอบว่าคอมพิวเตอร์ของเราติดต่อ PLC Mitsubishi ได้เหรอไว้ โดยใช้ Communication Setup Utility ทดสอบกัน

Communication Setup Utility  






vb6

 ActFXCPU1.ActPortNumber  ตั้งค่า port number
ActFXCPU1.Open  เปิด port serial


ActFXCPU1.GetDevice(szDeviceName, lData)   อ่านค่าจาก PLC

szDeviceName ชื่อ device เช่น m100 ,d0 ,y0
lData ข้อมูลได้อ่านมาได้




ActFXCPU1.SetDevice(szDeviceName, CLng(szDeviceValue))
szDeviceName ชื่อ device เช่น m100 ,d0 ,y0
CLng(szDeviceValue) ข้อมูลที่จะส่งไปให้ PLC


k.ต้อม 0804224466 
www.elec2you.com    Elec2you จำหน่ายอุปกรณ์อิเล็กทรอนิกส์ เซ็นเซอร์ ไมโครคอนโทรลเลอร์ พีแอลซี เป็นต้น ราคาถูกที่สุด


วันศุกร์ที่ 8 สิงหาคม พ.ศ. 2557

รับเขียนโปรแกรม plc mitsubishi

  • งานซ่อม
  • งานเขียนไหม่ เล็ก ใหญ่ รับหมดครับ
  • งาน crack password
ติดต่อ k.ต้อม 0804224466



วันพุธที่ 4 มิถุนายน พ.ศ. 2557

SHT10 digital humidity and temperature sensor is the low cost version of the reflow solderable humidity sensor series. The accuracies have been opened to a level that guarantees a very competitive price. The capacitive humidity sensor is available up to high volumes and as every other sensor type of the SHTxx family, it is fully calibrated and provides a digital output.
Features:
·         Interface Type: Serial (I2C non standard)
·         Humidity Ranger:0-100%RH
·         Tempereature ranger: -40-128.8 degree Celsius
·         Humidity accuracy:±4.5%RH
·         Temperature accuracy:±0.5 degree Celsius (25 degree Celsius)
·         Size: 32x17mm
·         Weight:5 gram


Wiring Diagram

Wiring Diagram


โค้ด
/**
 * ReadSHT1xValues
 *
 * Read temperature and humidity values from an SHT1x-series (SHT10,
 * SHT11, SHT15) sensor.
 *
 * Copyright 2009 Jonathan Oxer <jon@oxer.com.au>
 * www.practicalarduino.com
 */

#include <SHT1x.h>

// Specify data and clock connections and instantiate SHT1x object
#define dataPin  10
#define clockPin 11
SHT1x sht1x(dataPin, clockPin);

void setup()
{
   Serial.begin(38400); // Open serial connection to report values to host
   Serial.println("Starting up");
}

void loop()
{
  float temp_c;
  float temp_f;
  float humidity;

  // Read values from the sensor
  temp_c = sht1x.readTemperatureC();
  temp_f = sht1x.readTemperatureF();
  humidity = sht1x.readHumidity();

  // Print the values to the serial port
  Serial.print("Temperature: ");
  Serial.print(temp_c, DEC);
  Serial.print("C / ");
  Serial.print(temp_f, DEC);
  Serial.print("F. Humidity: ");
  Serial.print(humidity);
  Serial.println("%");

  delay(2000);
}


ArduinoLibrary:SHT1x

DatasheetSHT1x_Datasheet

วันจันทร์ที่ 26 พฤษภาคม พ.ศ. 2557

Ladder Diagram (LD)
เป็นภาษาที่เขียนแสดงอยู่ในรูปของกราฟิค ซึ่งมีรากฐานมาจากวงจรรีเลยและวงจรไฟฟ้า ซึ่ง แลดเดอร์ ไดอะแกรม จะประกอบด้วย ราง (Rail) ทั้งซ้ายและขวา ของไดอะแกรม เพื่อใช้สำหรับเชื่อมต่ออุปกรณ์ที่เป็นสวิตช์หน้าสัมผัส เพื่อเป็นทางผ่านของกระแส และมีขดลวด หรือ คอยล์ เป็นเอ้าท์พุท
Ladder Diagram(LD)

วันพุธที่ 14 พฤษภาคม พ.ศ. 2557

การทำงานของ PLC ทำงานโดยการสแกน (SCAN) โปรแกรมอย่างต่อเนื่อง การ SCAN 1 รอบจะประกอบด้วยขั้นตอนที่สำคัญ 3 ขั้นตอน (อาจจะมีมากว่า 3 ข้ันตอนก็ได้) ดังภาพ
ขั้นตอนที่ 1 ตรวจสอบสถานะของอินพุท
         ขั้นแรก PLC จะตรวจสอบอินพุตแต่ละอินพุตว่ามีสถานะ ON หรือ OFF โดยจะทำการตรวจสอบดูว่า Sensor ที่ต่ออยู่กับอินพุตตัวแรกว่ามีสถานะเป็นอย่างไรแล้วจึงตรวสอบที่อินพุตตัวที่ 2 และ 3 ไปเรื่อยๆ จากนั้นจะทำการบันทึกข้อมูลที่ได้ลงในหน่วยความจำเพื่อจะใช้ในขั้นตอนต่อไป
ขั้นตอนที่ 2 การประมวลผลของโปรแกรม
        ขั้นตอนนี้ PLC จะทำการประมวลผลตามโปรแกรมที่ได้เขียนขึ้นโดยจะทำเพียงคำสั่งละครั้ง ตัวอย่างเช่น ตัวโปรแกรมอาจจะบอกว่า "ถ้าอินพุตแรกมีสถานะเป็น ON จากนั้นจะ ทำให้เอาต์พุตแรกมีสถานะ ON" เนื่องจากเรารู้มาแล้วว่าอินพุตมีสถานะ ON หรือ OFF จากขั้นตอนที่แล้ว ดังนั้นจึงทำให้ PLC สามารถตัดสินใจได้ว่าเอาต์พุตแรกควรจะมีสถานะ เป็นอย่างไร จากนั้นก็จะเก็บผลที่ได้จากการประมวลผลไว้ในหน่วยความจำเพื่อใช้ในขั้นตอนต่อไป
ขั้นตอนที่ 3 ปรับปรุงสถานะของเอาต์พุต
        ขั้นตอนสุดท้ายคือ PLC จะทำการปรับปรุงสถานะของเอาต์พุด โดยในการปรับปรุงค่าสถานะของเอาต์พุตนี้จะขึ้นอยู่สถานะ ของอินพุตที่ได้มาจากขั้นตอนแรกและผลจากการประมวลผลตามโปรแกรมในช่วงขั้นตอนที่สอง
        หลังจากเสร็จขั้นตอนที่สามแล้ว PLC จะกลับไปที่ขั้นตอนที่ 1 และทำซ้ำไปเรื่อยๆอย่างต่อเนื่อง ซึ่งนอกจากเหนือจากขั้นตอนทั้งสามนี้แล้ว PLC อาจจะใช้เวลาในการติดต่อสื่อสารกับอุปกรณ์อื่นๆ หรือตรวจสอบสถานการณ์ทำงานต่างๆ ซึ่งไม่มีนัยยะสำคัญมากนัก
ดังนั้น 1 scan time จะหมายถึงเวลาที่ใช้ไปในการทำงานตามขั้นตอนหลักทั้ง 3 ที่ได้กล่าวมา

วันอังคารที่ 13 พฤษภาคม พ.ศ. 2557

หลักการทำงาน


Wiring Digaram

Arduino Code
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

int pos = 0;    // variable to store the servo position
int motor = 0;

void setup()
{  
  Serial.begin(9600);  // initialize serial: 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
 
  Serial.print("Arduino control Servo Motor Connected OK");
  Serial.print('\n');
}

void loop()
  // if there's any serial available, read it:
  while (Serial.available() > 0) {
    
    // look for the next valid integer in the incoming serial stream:
    motor = Serial.parseInt();
   
    // do it again:
    pos = Serial.parseInt();
  
    // look for the newline. That's the end of your  sentence:
    if (Serial.read() == '\n') {
              
       myservo.write(pos);              // tell servo to go to position in variable 'pos'
       delay(15);                       // waits 15ms for the servo to reach the position
     
      // print the three numbers in one string as hexadecimal:
      Serial.print("Data Response : ");
      Serial.print(motor, DEC);
      Serial.print(pos, DEC);
      
    }
  }
}
 
  //for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees
  //{                                  // in steps of 1 degree
  //  myservo.write(pos);              // tell servo to go to position in variable 'pos'
  //  delay(15);                       // waits 15ms for the servo to reach the position
  //}
  //for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees
  //{                                
  //  myservo.write(pos);              // tell servo to go to position in variable 'pos'
  //  delay(15);                       // waits 15ms for the servo to reach the position
  //}
 
 
  //val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  //val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  //myservo.write(val);                  // sets the servo position according to the scaled value
  //delay(15);


App Andorid

ขอบคุณ  http://microcontrollerkits.blogspot.com/2014/01/arduino-usb-control-servo-motor.html

วันศุกร์ที่ 18 เมษายน พ.ศ. 2557


รับเขียนโปรแกรม arduino ทุกรุ่น ปรึกษาได้
080-422-4466
automation999.engineer@gmail.com


http://www.elec2you.com/
Elec2you จำหน่ายอุปกรณ์อิเล็กทรอนิกส์ เซ็นเซอร์ ไมโครคอนโทรลเลอร์ พีแอลซี เป็นต้น ราคาถูกที่สุด

วันพุธที่ 16 เมษายน พ.ศ. 2557

Project oscilloscope arduino 

plot แรงดัน 0-5 v (analog0) กับแกน x(time สามารถปรับเวลาได้) พร้อมบันทึกข้อมูลลง SD Card



วันอาทิตย์ที่ 30 มีนาคม พ.ศ. 2557

Project เครื่องทดสอบกระแสไฟฟ้า Solar Cell



Arduino UNO


R6Ohm 50W
Current Sensor


ทดลองวัดกระแสจริง



ชิ้นงาน