เวลาฝนตกเราต้องรีบวิ่งไปเก็บผ้าใช่ไหม แต่! ตอนนี้เราไม่ต้องรีบวิ่งไปเก็บแล้ว เพราะว่า เราได้ D.I.Y. ราวตากผ้ากึ่งอัจริยะอันนี้ขึ้นมานั่นเอง โดยใช้บอร์ด Arduino ในการสั่งการและอุปกรณ์ที่หาได้ทั่วไป ไม่ว่าใครก็สามารถที่จะทำราวตากผ้านี้ขึ้นมาได้
บทนำ
ที่มาและความสำคัญ
เนื่องจากในปัจจุบันมีการนำเทคโนโลยีเข้ามาเกี่ยวข้องในการดำรงชีวิตประจำวันเยอะมาก มีทั้งการดัดแปลง ผสมผสาน แม้กระทั่งการนำมาใช้ทั้งหมด ทางกลุ่มเราเรงเห็นว่าเทคโนโลยีสำคัญมากและได้คิดที่ที่จะทำสิ่งประดิษฐ์สิ่งหนึ่งนั่นคือราวตากผ้า เพราะเป็นสิ่งที่ทุกบ้านต้องใช้ หากเราสามารถเพิ่มความสะดวกสบายในการตากผ้าเพื่อทำไปใช้ในชีวิตประจำวัน จะทำให้เราสามารถประหยัดเวลาในการตากผ้าและเก็บผ้า และไม่ต้องกังวลเวลาฝนตก และยังสามารถนำเวลาในช่วงนี้ไปทำการพัฒนาศักยภาพในด้านต่าง ๆ หรือนำไปทำให้เกิดประโยชน์ได้
วัตถุประสงค์และเป้าหมาย
- เพื่อประดิษฐ์ราวตกผ้าที่สามารถเพิ่มความสะดวกสบายให้กับผู้ใช้ได้
- เพื่อสามารถนำเทคโนโลยีที่มีอยู่ ( Arduino UNO R3 ) มาประยุกต์ใช้กับสิ่งประดิษฐ์
- เพื่อผู้ใช้จะสามารถลดเวลาในการตากและเก็บผ้า และสามารถนำไปใช้ให้เกิดประโยชน์
- อาจจะสามารถนำไปใช้ในเชิงพานิช ( การทำขายในท้องตลาด )
รายละเอียดของการพัฒนา
ราวตากผ้าในปัจจุบันที่ใช้อยู่ทุกบ้านและมีขายในท้องตลาด
เพื่อให้ได้ราวตากผ้าที่สามารถทำการตากและทำการเก็บได้เองเมื่อฝนตก
มีแบบจำลอง ดังนี้
โปรแกรมที่ใช้จะใช้กับบอร์ด Arduino UNO R3 คือโปรแกรม
ภาพ โปรแกรม Arduino IDE
ผลงานที่เราทำขึ้นมาเป็นดังภาพ
โดยทำการเขียนโค้ดโปรแกรม ผ่าน IDE ลงบอร์ด Arduino UNO R3
int Rain_Pin = A0; //สร้างตัวแปรชื่อ Rain_Pin ชนิด int เพื่อเก็บ A0 (ตำแหน่งของขารับสัญญาณ)
const int moterA=2 ;
const int moterB=4;
int d;
int check=0;
int check2=1;
void setup() {
pinMode(Rain_Pin,INPUT);
Serial.begin(9600); //กำหนดช่องความถี่ในการเชื่อมต่อกับ Serial เพื่อดูค่าต่างๆที่รับได้
pinMode(moterA,OUTPUT);
pinMode(moterB,OUTPUT);
}
void loop() {
d = analogRead(Rain_Pin);
Serial.print(“Rain/Water Detection Sensor Value = “);
Serial.println(d);
delay(200);
if((d>700) && (check==1)){
digitalWrite(moterA,LOW);
digitalWrite(moterB,HIGH);
delay(28000);
digitalWrite(moterA,LOW);
digitalWrite(moterB,LOW);
check2=1;
check=0;
}
else if(d<700 && check2==1 && d!=0){
digitalWrite(moterA,HIGH);
digitalWrite(moterB,LOW);
check=1;
delay(26500);
digitalWrite(moterA,LOW);
digitalWrite(moterB,LOW);
check2=0;
} }
***สามารถทำการเปลี่ยนตัวเลข delay ได้ตามความเหมาะสมของจำนวนผ้า
เอกสารที่เกี่ยวข้อง
การนำเสนอราวตากผ้าอัจฉริยะ Intelligent clothesline โดยการใช้บอร์ด Arduino UNO R3 และ sensor ตรวจจับน้ำ มาทำการประดิษฐ์เพื่อเพิ่มความสะดวกสบายให้กับผู้ใช้ มีเอกสารที่เกี่ยวข้องดังนี้
- Arduino UNO R3
- ความหมายของบอร์ด Arduino
- ลักษณะของบอร์ด Arduino
- การนำบอร์ด Arduino ไปใช้งาน
- Rain/Water Detection Sensor
2.1 ความหมายของ Rain/Water Detection Sensor
2.2 ลักษณะของ Rain/Water Detection Sensor
2.3 การนำ Rain/Water Detection Sensor ไปใช้งาน
- 3. DC Motor
3.1 ความหมายของ DC Motor
3.2 ลักษณะของ DC Motor
3.3 การนำ DC Motor ไปใช้งาน
Arduino UNO R3
1.1 ความหมายของ บอรด Arduino
Arduino คือ โครงการที่นาชิปไอซีไมโครคอนโทรลเลอร์ตระกลู ต่างๆ มาใช้ร่วมกันในภาษา C ซึ่งภาษา C นี้เป็นลักษณะเฉพาะ คือมีการเขียนไลบารี่ของ Arduino ขึ้นมาเพื่อให้การสั่งงาน ไมโครคอนโทรลเลอร์ที่แตกตางกัน สามารถใช้งานโค้ดตัวเดียวกันได้ โดยตัวโครงการได้ออกบอร์ด ทดลองมาหลายๆรูปแบบ
1.2 ลักษณะของบอรด Arduino
บอร์ด Arduino Uno R3
ข้อมูลจำเพราะ
ชิปไอซีไมโครคอนโทรเลอร์ ATmega328
ใช้แรงดันไฟฟ้า 5V
รองรับการจ่ายแรงดันไฟฟ้า (ที่แนะนำ) 7 – 12V รองรับการจ่ายแรงดันไฟฟ้า (ที่จำกัด) 6 – 20V
พอร์ต Digital I/O 14 พอร์ต (มี 6 พอร์ต PWM output)
พอร์ต Analog Input 6 พอร์ต
กระแสไฟที่จ่ายได้ในแต่ละพอร์ต 40mA
กระแสไฟที่จ่ายได้ในพอร์ต 3.3V 50mA
พื้นที่โปรแกรมภายใน32KB พื้นที่โปรแกรม, 500B ใช้โดย Booloader
พื้นที่แรม 2KB
พื้นที่หนวยความจำถาวร (EEPROM) 1K
1.3 การนา Arduino ไปใช้งาน
บอร์ด Arduino เป็นตัวไมโครคอนโทรเลอร์ที่สามารถนำไปสร้างผลงานหรือนวัตกรรมสิ่งใหม่ และสามารถสร้างสิ่งประดิษฐ์ โดยใช้โปรแกรม Arduino เป็นตัวสร้างคำสั่งตาม OUTPUT ที่เรา ต้องการและบอร์ด Arduino จะสามารถควบคุมอุปกรณ์ต่างๆ เช่น Sensor และ Servo Motor
Rain/Water Detection Sensor
2.1 ความหมายของ Rain/Water Detection Sensor
เป็นเซนเซอร์ตรวจจับ น้ำฝน/ความชื้น สามารถให้ค่าออกมาเป็นแบบ Digital หรือให้ค่าออกมาเป็นแบบ Analog และสามารถต่อใช้งานร่วมกับ Arduino ได้
2.2 ลักษณะของ Rain/Water Detection Sensor
รายละเอียด:
- แรงดันไฟฟ้าที่ใช้งานได้: 5 โวลต์
- ไฟแสดงสถานะ: ไฟแสดงสถานะเพาเวอร์และไฟ LED แสดงสถานะเอาต์พุต
- การควบคุมผู้ใช้: โพเทนชิออมิเตอร์การปรับความไวในตัว
- ขนาดบอร์ด PCB ขนาดเล็ก: 14×32 มิลลิเมตร (กว้าง x ยาว)
- ขนาดเซนเซอร์: 41×55 มิลลิเมตร (กว้าง x ยาว)
- เอาต์พุต: ดิจิตอล (DO) และอนาล็อก (AO)
2.3 การนำ Rain/Water Detection Sensor ไปใช้งาน
/*
* Coding By : Arduinos Pro
* Sample Coding : Rain/Water Detection Sensor
*/
int sensor_Pin = A0; //สร้างตัวแปรชื่อ sensor_Pin ชนิด int เพื่อเก็บ A0 (ตำแหน่งของขารับสัญญาณ)
void setup() {
Serial.begin(9600); //กำหนดช่องความถี่ในการเชื่อมต่อกับ Serial เพื่อดูค่าต่างๆที่รับได้
}
void loop() {
int sensor_Value = analogRead(sensor_Pin); //สร้างตัวแปรชื่อ sensor_Value ชนิด int เพื่อเก็บค่า analog ที่ได้จาก sensor_Pin
Serial.print(“Rain/Water Detection Sensor Value = “); //แสดงค่าออกทาง Serial Monitor ว่า “Rain/Water Detection Sensor Value = ”
Serial.println(sensor_Value); //แสดงค่าที่รับได้จากเซนเซอร์ออกทาง Serial Monitor จากนั้นขึ้นบรรทัดใหม่ (println)
delay(500); //หน่วงเวลา 500 มิลลิวินาที
}
DC Motor
3.1 ความหมายของ DC Motor
ดีซีเกียร์มอเตอร์ 12V ความเร็วรอบ 10 รอบต่อนาที ขนาดเพลา 6 มม. เป็นมอร์เตอร์ที่ทำงานรอบต่ำและใช้ในการทดได้สูง
3.2 ลักษณะของ DC Motor
– เป็นมอเตอร์ใหม่จากโรงงานผู้ผลิต ยี่ห้อ Zhengke
– ดีซีเกียร์มอเตอร์ 12V รุ่น ZGA37RG
– ความเร็วรอบเกียร์ทด: 10 รอบต่อนาที ( 10rpm)
– ขนาดเส้นผ่าศูนย์กลางเพลา: 6มม แบบแกนกลาง
– ขนาดเส้นผ่าศูนย์กลางมอเตอร์: 37มม
– แรงบิด (Torque): 3.95 kg.cm – 13.5kg.cm
– เฟืองเหล็ก แข็งแรงทนทาน
3.3 การนำ DC Motor ไปใช้งาน
ใช้ในการดึงผ้าหรือทดนำหนักนั่นเอง
ขั้นตอนการทำงาน
อุปกรณ์
- บอร์ด Arduino uno R3 1 บอร์ด
- Rain/Water Detection Sensor
- ดีซีเกียร์มอเตอร์ 12V รุ่น ZGA37RG
- ท่อ PVC
- แบตเตอร์รี่ 6 V 7 A
- ผ้าใบ
- สายไฟขั้นตอนการทำ
- ทำการเขียนโปรแกรม Sketch IDE ดังนี้
int Rain_Pin = A0; //สร้างตัวแปรชื่อ Rain_Pin ชนิด int เพื่อเก็บ A0 (ตำแหน่งของขารับสัญญาณ)
const int moterA=2 ;
const int moterB=4;
int d;
int check=0;
int check2=1;
void setup() {
pinMode(Rain_Pin,INPUT);
Serial.begin(9600); //กำหนดช่องความถี่ในการเชื่อมต่อกับ Serial เพื่อดูค่าต่างๆที่รับได้
pinMode(moterA,OUTPUT);
pinMode(moterB,OUTPUT);
}
void loop() {
d = analogRead(Rain_Pin);
Serial.print(“Rain/Water Detection Sensor Value = “);
Serial.println(d);
delay(200);
if((d>700) && (check==1)){
digitalWrite(moterA,LOW);
digitalWrite(moterB,HIGH);
delay(108000);
digitalWrite(moterA,LOW);
digitalWrite(moterB,LOW);
check2=1;
check=0;
}
else if(d<700 && check2==1 && d!=0){
digitalWrite(moterA,HIGH);
digitalWrite(moterB,LOW);
check=1;
delay(106500);
digitalWrite(moterA,LOW);
digitalWrite(moterB,LOW);
check2=0;
} }
2. นำท่อ PVC และ DC Motor มาประกอบติดกัน
3. จากนั้นทำการติดตั้งบอร์ด และอุปกรณ์
4. Rain/Water Detection Sensor
5. ทำการติดผ้าใบ
ภาพการต่อบอร์ด Arduino UNO R3 และ Sensor
เซนเซอร์น้ำฝน
สายสีฟ้า จะต่อกับขา A0 คือสายที่ส่งค่าของเซนเซอร์
สายสีแดง จะต่อกับ VCC 5 v
สายสีดำคือขา GND
โมดูลขับมอเตอร์
สายสีส้ม จะต่อกับขา 2 และ 4 คือสายที่ส่งค่าจากบอร์ดเข้าตัวโมดูล
สายสีดำ คือ GND จาก arduino จะต่อลงใน โฟโต้บอร์ด และมีจาก VCC 12 v 1 เส้นที่ต่อลง โฟโต้บอร์ด และมีต่อจากโมดูลลง โฟโต้บอร์ดอีกเช่นกัน และสีดำอีก1 เส้นคือเข้ามอเตอร์ DC 12 v
สายสีแดง จะมีจาก VCC 12 v ต่อเข้ากับโมดูลขับมอเตอร์ช่อง 12 v
และต่อจากโมดูลเข้ามอเตอร์DC12 v
Source Code ( ทำการเขียนเองทั้งหมด )
int Rain_Pin = A0; //สร้างตัวแปรชื่อ Rain_Pin ชนิด int เพื่อเก็บ A0 (ตำแหน่งของขารับสัญญาณ)
const int moterA=2 ; //สร้างตัวแปรชื่อ MoterA ชนิด int เพื่อเก็บ A2 (ตำแหน่งของขารับสัญญาณ)
const int moterB=4; //สร้างตัวแปรชื่อ MoterB ชนิด int เพื่อเก็บ B4 (ตำแหน่งของขารับสัญญาณ)
int d; //ทำการประกาศตัวแปลชื่อ d เป็นชนิด int เพื่อใช้ในการรับค่าและเก็บค่า
int check=0; //ทำการประกาศตัวแปลชื่อ check เป็นชนิด int เพื่อใช้ในเช็คค่าว่าเท่ากับ 0 หรือไม่
int check2=1; //ทำการประกาศตัวแปลชื่อ check2 เป็นชนิด int เพื่อใช้ในเช็คค่าว่าเท่ากับ 1 หรือไม่
void setup() { //ทำการ setup
pinMode(Rain_Pin,INPUT); //ประกาศว่า Rain_Pin แสดงออกเป็น Input
Serial.begin(9600); //กำหนดช่องความถี่ในการเชื่อมต่อกับ Serial เพื่อดูค่าต่างๆที่รับได้
pinMode(moterA,OUTPUT); //ประกาศว่า MoterA แสดงออกเป็น Output
pinMode(moterB,OUTPUT); //ประกาศว่า MoterB แสดงออกเป็น Output
}
void loop() { //ทำการเปิด void loop เพื่อเพิ่มเงื่อนไข
d = analogRead(Rain_Pin); // ประกาศพร้อมกำหนดการคำนวณค่าของตัวแปร d
Serial.print(“Rain/Water Detection Sensor Value = “);//ทำการแสดงค่าที่หน้าจอ Serial Monitor
Serial.println(d);//สิ่งที่แสดงค่าคือตัวแปร d
delay(200);//กำหนดระยะเวลา delay
if((d>700) && (check==1)) { //ทำการสร้างเงื่อนไข ถ้า ค่า d >700 เก็บค่าเป็น check=1
digitalWrite(moterA,LOW);//MoterA ไม่ทำงาน
digitalWrite(moterB,HIGH); //MoterB ทำงาน ( ตาก )
delay(XXX); //กำหนดระยะเวลา delay สามารถปรับตัวเลขได้
digitalWrite(moterA,LOW); //MoterA ไม่ทำงาน
digitalWrite(moterB,LOW); //MoterB ไม่ทำงาน ( moterหยุดทำงานเพื่อทำการเช็คอีกครั้ง )
check2=1;//เก็บค่า check อีกครั้ง
check=0; //เก็บค่า check อีกครั้ง
}
else if(d<=700 && check2==1 && d!=0){ //ทำการสร้างเงื่อนไข ถ้า ค่า d <=700 เก็บค่าเป็น check2=1
digitalWrite(moterA,HIGH); //MoterA ทำงาน ( เก็บ )
digitalWrite(moterB,LOW); //MoterB ไม่ทำงาน
check=1; //เก็บค่า check อีกครั้ง
delay(XXX); //กำหนดระยะเวลา delay สามารถปรับตัวเลขได้
digitalWrite(moterA,LOW); //MoterA ไม่ทำงาน
digitalWrite(moterB,LOW); //MoterB ไม่ทำงาน ( moterหยุดทำงานเพื่อทำการเช็คอีกครั้ง )
check2=0; //เก็บค่า check อีกครั้ง
} }
**********ขอบเขตจะขึ้นอยู่กับสภาพแวดล้อม และการเช็คสภาพการใช้งานของ Sensor และตัวระยะเวลา delay ที่ใช้จะขึ้นอยู่กับขนาดของผ้าว่าเยอะหรือน้อย และตัว rpm ของ Moter ที่ใช้ก็มีส่วนที่จะทำให้ระยะเวลา delay มากหรือน้อยเช่นกัน
ผลของการทดสอบโปรแกรม
ปัญหาและอุปสรรค
ปัญหาและอุปสรรคคือแกนหมุนเก็บผ้าหมุนช้าเกินไปทำให้ต้องเวลา delayที่นานขึ้นเนื่องจากมอเตอร์ มี rpm10 รอบ/นาที ซึ่งเป็นสเปคที่ใช้ในราวตากผ้าขนาดใหญ่
แนวทางในการพัฒนาต่อในอนาคต สามารถประยุกต์ใช้ร่วมกับงานอื่น ๆ
แนวทางที่จะพัฒนาต่อคือการทำให้ราวตากผ้านั้นตากผ้าเองละ ทำการเก็บผ้าเองเมื่อผ้าแห้งและยังสามารถพับผ้าที่เก็บแล้วได้อีกด้วย
ซึ่งเราสามารถประยุกต์ใช้กับแขนกลและการใช้ตัวเซนเซอร์อื่นๆเช่น ความชื้นและการตรวจจับวัตถุ
ข้อสรุปและข้อเสนอแนะ
-วัตถุประสงค์และเป้าหมาย
- เพื่อประดิษฐ์ราวตกผ้าที่สามารถเพิ่มความสะดวกสบายให้กับผู้ใช้ได้
- เพื่อสามารถนำเทคโนโลยีที่มีอยู่ ( Arduino UNO R3 ) มาประยุกต์ใช้กับสิ่งประดิษฐ์
- เพื่อผู้ใช้จะสามารถลดเวลาในการตากและเก็บผ้า และสามารถนำไปใช้ให้เกิดประโยชน์
- อาจจะสามารถนำไปใช้ในเชิงพานิช ( การทำขายในท้องตลาด )
-สรุปผลการดำเนินงานโครงงาน