สรุปการทำโครงงาน เพื่อที่จะนำเสนอในวันที่7/11/2014

ผมขอแนะนำเกี่ยวกับโปรเจคก่อนละกันครับ

  • ชื่อโปรเจค : Smart Light
  • เป็นโปรเจคที่ควบคุมแสงไฟและสีสันต่างๆ ภายในบ้านหรืองานต่างๆ เพื่อสีสันสำหรับบรรยากาศที่แปลกใหม่ภายในบ้านที่เป็นและเป็นสีสันของงานเลี้ยง หรือมีโครงงานเรื่อง  ระบบควบคุมหลดอดไฟ  ได้จัดทำขึ้นเพื่อตอบสนองความต้องการของผู้ใช้ในด้านความบันเทิงและสามารถควบคุมหลอดไฟได้ง่าย  ระบบควบคุมหลอดไฟนี้  ผู้ใช้สามารถควบคุมผ่านเวบไซต์  ซึ่งสามารถควบคุมหลอดไฟได้จากที่ต่างๆ ได้

การวางแผนงาน

  1. ปรึกษาหัวข้อที่จะทำ
  2. ร่างแบบของโครงงาน
  3. สร้างบล็อก
  4. หาข้อมูลและศึกษาเกี่ยวกับโครงงาน
    1. ศึกษา เรื่อง Network ว่าควรจะทำอย่างไร และใช้อุปกรณ์ใดบ้าง
    2. เขียนรายการอุปกรณ์ที่ต้องใช้
    3. เขียนร่างแบบของโครงงาน โดยนำอุปกรณ์ที่เขียนไว้มาใส่ด้วยว่าควรใช้อย่างไร
  5. สร้างโครงงาน
    1. จัดเตรียมซื้ออุปกรณ์ตามที่วางแผนไว้  (In Progress)
    2. ทดสอบการทำงานของอุปกรณ์
    3. เขียนโปรแกรม พร้อมกับนำมาเชื่อมต่อกับอุปกรณ์
  6. ตรวจสอบและแก้ไขงาน
    1. ลองรันโปรแกรม พร้อมกับทดสอบการทำงานว่าเป็นไปตามที่วางแผนไว้หรือไม่
    2. หากโปรแกรม ผิดพลาด จะมีเวลาการแก้ไขโปรแกรมเพิ่มเติม
    3. หากอุปกรณ์เสีย หรือทำงานผิดพลาด จะมีเวลาการซื้อ หรือแก้ไขอุปกรณ์เพิ่มเติม
  7. เตรียมตัวนำเสนอผลงาน
    1. ทำ Presentation สำหรับนำเสนอผลงาน
    2. แบ่งสคริปต์การรายงานของแต่ละคนในกลุ่ม
  8. นำเสนอผลงาน

ขณะนี้โครงงาน อยู่ในขั้นที่5.1

————————————————————————————————————————————————————

ปรึกษาหัวข้อที่จะทำ+ร่างแบบโครงงาน

พวกปรึกษาหัวข้อที่จะทำและร่างแบบโครงงาน ในการประชุมครั้งที่ 1

ซึ่งตอนแรก พวกผม มีหัวข้อที่จะทำโครงงาน อยู่ 2 หัวข้อ

-ทำ app ที่บอกว่าลิฟไหนเต็ม และให้ลิฟไม่หยุดเมือมีคนเต็มแล้ว

ซึ่งหัวข้อนี้ได้ตกไป เพราะ ไม่อยากยุ่งกับระบบ ของลิฟ

-ทำ อุปกรณ์ remote access control

หัวข้อนี้ได้ตกไป เพราะ จากการปรึกษาพี่ TA  แล้วปรากฏว่า โครงการนี้ยากเกินไป

ผลจากการปรึกษา ครั้งให้ผลจะสรุปว่า จะ ทำSmart Home ซึ่ง เริ่มจากการควบคุมไฟ โดยใช้เว็บไซต์

หัวข้อโครงงาน และแบบร่างของโครงงาน smart home
ฟังก์ชันเบื้องต้นของโครงงาน smart home

หาข้อมูลและศึกษาเกี่ยวกับโครงงาน

หลังจาก การประชุมกันหลังแรกเสร็จ พวกผมก็ต่างแยกย้ายไปศึกษาความรู้เพิ่มเติมเพื่อใช้ทำโครง งาน และหาว่าต้องใช้อุปกรณ์อะไรบ้าง

และพวกผมได้ปรึกษากับพี่TA เรื่องอุปกรณ์ ว่าจะให้พี่ช่วยเลือกอุปกรณ์อะไรดี ( Aduino,UART,Rasberry Pi)

และพี่แนะนำว่าให้ใช้ Aduino+ชีล ซึ่งมีตัวอย่างโค้ด ตาม Lab  Networkอยู่แล้ว

/*
Web Server
http://arduino.cc/en/Reference/Ethernet
http://arduino.cc/en/Tutorial/WebServer
http://startingelectronics.com/tutorials/arduino/ethernet-shield-web-server-tutorial/basic-web-server/

A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)

created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

*/

#include <SPI.h>
#include <Ethernet.h>

int SDcard = 4;
int LED = 13;
String POST = “”;
String SET = “”;

// 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, 0x08};
IPAddress ip(10,35,21,177);

// 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() {

// disable the SD card by switching pin 4 high
// not using the SD card in this program, but if an SD card is left in the socket,
// it may cause a problem with accessing the Ethernet chip, unless disabled
pinMode(SDcard, OUTPUT);
digitalWrite(SDcard, HIGH);

// Turn off LED
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);

// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection and the server:
// start the Ethernet connection and the server:
if(Ethernet.begin(mac) == 0) {
Serial.println(“Log: Cannot obtain IP address. Use a fixed one”);
Ethernet.begin(mac, ip);
}

server.begin();
Serial.print(“Log: Server is at “);
Serial.println(Ethernet.localIP());
}
void loop() {
int LEDstate = 0;

// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println(“Log: New client connected…”);
Serial.println(“Log: Messages from 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) {

// it is after the double cr-lf that the variables are
// read another line!
String POST = “”; /* To get data from client */
while(client.available()) {
c = client.read();
POST += c; /* Read data from client */
}

// Display what has been received from the client
// Check if client has clicked the radio button .
Serial.println(“Log: Body message: “);
Serial.println(POST);

if(POST != “”) {
if(POST == “led=1”){
SET = “on”;
LEDstate = 1;
Serial.println(“Log: LED state set to on”);
}
else {
SET = “off”;
LEDstate = 0;
Serial.println(“Log: LED state set to off”);
}
}

// 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();
client.println(“<!DOCTYPE HTML>”);
client.println(“<html>”);

client.println(“<h1>Web-controlled LED </h1>”);
client.print(“</pre><form method=\”post\”>”);
if(LEDstate == 0) {
client.print(“<input onclick=\”this.form.submit()\” type=\”radio\” name=\”led\” value=\”0\” checked=\”checked\” />Off<br/>”);
client.print(“<input onclick=\”this.form.submit()\” type=\”radio\” name=\”led\” value=\”1\” />On<br/>”);
}
else {
client.print(“<input onclick=\”this.form.submit()\” type=\”radio\” name=\”led\” value=\”0\” />Off<br/>”);
client.print(“<input onclick=\”this.form.submit()\” type=\”radio\” name=\”led\” value=\”1\” checked=\”checked\” />On<br/>”);
}

client.print(“</form><pre>”);
client.println(“”);
client.println(“</html>”);
break;
}

// every line of text received from the client ends with \r\n
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;
}
}
} /* End while */

// give the web browser time to receive the data
delay(1);

// close the connection:
client.stop();
Serial.println(“Log: client disconnected”);
}

if(SET == “on”){
digitalWrite(LED, HIGH);
}
else {
digitalWrite(LED, LOW);
}
}

ข้างบนคือโค้ดที่ได้จาก Lab Network

ปัญหาที่พบ

โครงงาน smart home มีส่วนคล้ายกับโครงงาน ของกลุ่มอื่นมาเกินไป ผมจึง ได้นัดเพื่อนประชุมครั้งที่ 3 เพื่อแก้ปัญหานี้

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

(หรือ Love Light อาจจะเปลี่ยน ชือเรื่อยๆ ตามความพอใจของสมาชิกในกลุ่ม)

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

1.SMD RGB LED
2.freeduino+ethernet shield
(อาจใช้เป็นวงจร PIC+USB UART ทดแทน)
3.breadboard สำหรับการทดลองวงจร
4.Router
5.Computer

หลักการการทำงาน:
กรณีที่ใช้ freeduino+ethernet shield
(การเชื่อมต่อ freeduino พ่วง RGB LED ต่อสายrj45ไปยัง router
1.โปรแกรมเว็บไซต์และคำสั่งควบคุมลุงไปใน free aduino + ethernet   shield
2.ประกอบวงจรใช้ freeduino ควบคุม LED ผ่านทาง PWM

ในกรณีที่ใช้ PIC + USB UART
1.เขียนโปรแกรมให้ PIC
2.เชื่อมต่อ USB UART กับ PIC
3.สร้าง webserver ใน PC โดยใช้ Appserv แล้วสร้างหน้าเว็บด้วย php ส่ง       คำสั่งไปยัง USB UART
4.USB UART รับคำสั่งในการเปลี่ยนโปรไฟล์ที่โปรแกรมไว้แล้วใน PIC

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s