แสดงบทความที่มีป้ายกำกับ Android แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Android แสดงบทความทั้งหมด

วันอาทิตย์ที่ 11 มกราคม พ.ศ. 2558

Project ปลั๊กไฟอัจฉริยะ ที่สามารถควบคุมด้วย smart phone พร้อมตั้งเวลาปิดได้
เพื่อเพิ่มความสะดวก สบาย ให้แก่ผู้ใช้งาน ซึ่งเป็นการนำความรู้ด้าน อิเล็กทรอนิกส์ ไฟฟ้า ระบบควบคุมมาประยุกต์ใช้งาน เพื่อให้เกิดการนำเทคโนโลยีมาใช้ในบ้านต่อไป smart home

อุปกรณ์ที่ใช้ 
  1. ปุ่มกดสีแดง 
  2. หลอด led สีเขียว
  3. กล่องอเนกประสงค์ 
  4. สวิตช์ เปิด - ปิด ไฟ
  5. ปลัํกตัวเมีย 
  6. hc-06 bluetooth module
  7. arduino pro mini 5v 16Mhz 
  8. borad relay 
  9. power adapter 5v 
  10. สายไฟ 
คุณสมบัติของ project
  • สามารถ เปิด - ปิด ได้แบบแมลนัว คือ 
    • กรณีปิดอยู่ กดปุ่มสีแดงค้างไว้ 1 วินาที  จะเปิด 
    • กรณีเปิดอยู่ กดปุ่มสีแดงค้างไว้ 1 วินาที จะปิด
  • มีหลอด led แสดงสถานะการจ่ายไฟที่ปลั๊กตัวเมีย
    • สีเขียวติด แสดงว่าจ่ายไฟ
    • สีเขียวดับ แสดงว่าไม่ได้จ่ายไฟ
  • สามารถ เปิด - ปิด ด้วย app android 


  • สมารถตั้งเวลาปิดได้ หน่วยเป็นวินาที
  • มีการแสดงเวลานับถอยหลังได้

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

  • มีระบบควบคุมที่ชื่อว่า arduino pro mini  ที่ใช้ในการรับคำสั่งจากปุ่มกดสีแดง พร้อมส่งคำสั่งไปยังวงจรรีเลย์ที่ใช้ในการ เปิด ปิด ไฟ พร้อมทั้งเชื่อมต่อแบบไร้สายโดยใช้เทคโนโลยี bluetooth ระหว่างตัว arduino pro mini กับ android phone ในการรับส่งข้อมูล 
สนใจสอบถามได้ 
080-422-4466 

วันอาทิตย์ที่ 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

วันอังคารที่ 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

วันอังคารที่ 24 ธันวาคม พ.ศ. 2556

รับทำโปรเจค Microcontroller และงานอิเล็กทรอนิกส์  ทุกตระกูล
รับเขียนโปรแกรม Microcontrolle  PIC AVR MCS ARM  STM32
รับเขียนโปรแกรม android ติดต่อ อุปกรณ์ภายนอก
รับเขียนโปรแกรม Image Processing 
Project ที่รับทำเช่น
-Project เกี่ยวกับการควบคุมหุ่นยนต์ Control มอเตอร์
-ออกแบบวงจรที่ใช้ ไมโครคอนโทรเลอร์ทุกการใช้งาน
-Display 7 Segment แสดงผลขนาดเล็ก ถึง ใหญ่ เช่น นาฬิกา,วัดความชื้นและอุณหภูมิ-เครื่องวัดอุณหภูมิ และการแสดงผลอื่นๆ
-ชุดคอนโทรมอเตอร์ DC Motor ,Stepper Motor, Servo Motor
-ระบบควบคุมระยะไกลหรือระบบไร้สายต่างๆ
-เครื่องควบคุมอุปกรณ์ด้วยรีโมตคอนโทรล
-งาน Visual Basic และฐานข้อมูลต่างๆ
-เครื่องต้นแบบต่างๆ

วันศุกร์ที่ 13 ธันวาคม พ.ศ. 2556


รับทำโปรเจ็ค,รับปรึกษาโครงงานนักศึกษา ปวช. ปวส. ปริญญาตรี และProjectงานทั่วไป 
  • รับทำโปรเจ็คนักศึกษา ทั้งโปรแกรมและชิ้นงานด้าน ไฟฟ้า , อิเล็กทรอนิกส์ , คอมพิวเตอร์ , ไมโครคอนโทรลเลอร์ (PIC , MEGAWIN )
  • รับทำงานโปรเจ็คต่างๆ ในโรงงานอุตสาหกรรมหรือบริษัท ห้างร้าน ทั่วไป
  • รับทำสื่อการเรียนการสอน ด้านวิทยาศาสตร์ เทคโนโลยีและวิศวกรรม (ไฟฟ้า , อิเล็กทรอนิกส์) ตั้งแต่ระดับประถมศึกษา มัธยมศึกษา จนถึงระดับอุดมศึกษา(ชิ้นงาน + คู่มือการใช้งาน)

สนใจสอบถามข้อมูล ติดต่อ

คุณพรประเสริฐ   
โทร : 080-422-4466
E-mail : ng.pornprasert@gmail.com

วันพุธที่ 28 มีนาคม พ.ศ. 2555

วันนี้ว่าง ๆ หลังทานอาหารอิ่มๆ ผมไปอ่านข่าวเจอแอฟที่เป็นเกมยอดนิยมใน iPhone / iPad มาช่วงระยะเวลาหนึ่ง นั่นคือ เกม Temple Run ซึ่งตอนนี้ใน Android  โดยสามารถโหลดใน Google Play แล้วคร้าบบบ !! เกมก็ไม่มีอะไรมาก ผู้เล่นรับบทเป็นนักล่าสมบัติที่ต้องวิ่งหนีสัตว์ประหลาด มีการหลบสิ่งกีดขวาง กระโดด มุด และเก็บเหรียญตามจุดต่างๆ สนุกมากๆคร้าบลองโหลดเล่นกันนะคร้าบบ !!


ดาวน์โหลด ที่นี้

รูปตัวอย่างเกม Temple Run . . .

วันศุกร์ที่ 29 กรกฎาคม พ.ศ. 2554

           การสร้างลิงค์ติดต่อสื่อสารแบบ TCP/IP ที่เป็น sockets เป็นการเชื่อมต่อแบบ connection-orientated ซึ่งนั้นก็หมายความว่าการสนทนาระหว่างเครื่อง client กับ server จะทำการเชื่อมต่อตลอดเวลาที่สนทนานอกเสียจากมันจะเสีย ซึ่งการสนทนากันหรือการแลกเปลี่ยนข้อมูลระหว่าง client กับ server นั้นจะต้องเป็นไปตามกฎของ protocol 
          สำหรับตัวอย่างการติดต่อ TCP/IP  ที่เป็น sockets ผมจะให้
- โทรศัพท์มือถือ android ให้เป็น client 
- notebook เป็น server 

รูปแสดงไดอะแกรมแสดงการติดต่อสื่อสารกันระหว่าง client และ server ด้วย TCP Socket

รูปแสดงลำดับขั้นตอนในการติดต่อสื่อสารข้อมูล TCP Socket
Java Code
package com.tomkrub.app.simpleconnect;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;

public class SimpleConnectActivity extends Activity {
    /** Called when the activity is first created. */
   
    private Button btnConnect;
    private EditText editIP;
    private EditText editPort;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);     
                
        editIP = (EditText)findViewById(R.id.editIP);
        editPort = (EditText)findViewById(R.id.editPort);       
        btnConnect = (Button)findViewById(R.id.btnConnect);
       
        btnConnect.setOnClickListener(new OnClickListener()
                {    public void onClick(View v){   
                    connect(editIP.getText().toString(),Integer.parseInt(editPort.getText().toString()));
                 }
                });      
       
       // connectIP();
    }

   public void connect (String IP,int Port)
    {
        Socket clientSocket = null;
        try {
            //clientSocket = new Socket("localhost", 5000);//127.0.0.1
            clientSocket = new Socket(IP,Port);
           
            Toast.makeText(this, clientSocket.getInetAddress().toString(),
                    Toast.LENGTH_LONG).show();
            //clientSocket.close();
           
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
             Toast.makeText(this, "UnknownHostException "+e,
                        Toast.LENGTH_LONG).show();
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
             Toast.makeText(this, "IOException "+e,
                        Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
                      
          PrintWriter outToServer = null;
        try {
            outToServer = new PrintWriter(clientSocket.getOutputStream(),true);
            outToServer.println ("test sentence na krub") ; //ประโยคที่ทำการส่งให้ server
            Toast.makeText(this, "test",Toast.LENGTH_LONG).show();
            clientSocket.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
                       
    }
   
}
   

Server  TCP chat program Download TCPChat.jar หรือ Gui.java 

ผลการทดลอง
ขณะรอการเชื่อมต่อจาก client

ป้อน IP กับ Port ของ Server พร้อมกด Connect

Server เชื่อมต่อกับ client พร้อมได้รับข้อมูล




วันศุกร์ที่ 22 กรกฎาคม พ.ศ. 2554

ก็วันนี้ผมเอาคลิปวีดีโอเจ้าหุ่นยนต์ iRobot Create ซึ่งถูกควบคุมด้วย Android (a Nexus One)
มีการทำงานด้วยกัน 4 โหมดภายใน App ที่ชื่อว่า Cellbots.apk Download
 
1. ใช้ directional pad (D-Pad) ในการควบคุมหุ่นยนต์
2. ใช้ joystick ในการควบคุมหุ่นยนต์
3. ใช้ accelerometer ในการควบคุมหุ่นยนต์
4. ใช้ voice ในการควบคุมหุ่นยนต์

และยังออกแบบมาให้สามารถเชื่อมต่อผ่าน USB ,Bluetooth,Wifi ได้
ซึ่ง App Cellbots สนับสนุน Android 2.2 (Froyo) ขี้นไป นะครับ



ขอบคุณข้อมูลจาก http://www.cellbots.com/

วันอาทิตย์ที่ 22 พฤษภาคม พ.ศ. 2554

วันนี้จะมาบอกวิธีอัพเดตโทรศัทพ์คู่ใจของเรา LG GT540 ให้เป็น android 2.3 แรงได้ใจ ซึ่ง Rom 20D android 2.1 รอมศูนย์ไทยนั้นเมื่อใช้ไปนาน เริ่มอืดได้ใจวัยรุ่นเมื่อลง app เยอะๆ งั้นมาดูกันก่อนว่า android 2.3 มีอะไรกันบ้าง
Works:
FM-radio, wired headset, Wi-fi, Bluetouth, camera (video recording 3gp/m4v - it is mp4), 3D-accelerator, GPS, aGPS, sensors, memory card, touch .... well etc.

Does not work.
Hardware-accelerated DivX / Xvid (solved with RockPlayer)
All sorts of wireless headsets
There never will be flash (full)






วันพฤหัสบดีที่ 18 พฤศจิกายน พ.ศ. 2553

Acount Keeper เป็นโปรแกรมที่พัฒนาโดยคนไทย สำหรับบันทึกรายรับ รายจ่าย ของฟรี
โปรแกรมสามารถ BackUp Data ไว้ใน Memory Sd Card ได้ด้วย ถือว่าเป็นโปรแกรมที่สุดยอดอีกโปรแกรมหนึ่งก็ว่าได้
มาดูกันเลยดีกว่าครับ
1. หน้าแรกสรุป เงินที่เรามีครับ ถ้าใช้ credit card เยอะก็จะตัวแดงอย่างตัวอย่าง และก็สรุปรับจ่ายต่อเดือนเลือกเดือนที่ต้องการดูได้
2.บันทึกรับจ่าย