สร้างราวตากผ้ากึ่งอัจฉริยะ D.I.Y ด้วย Arduino

         เวลาฝนตกเราต้องรีบวิ่งไปเก็บผ้าใช่ไหม แต่! ตอนนี้เราไม่ต้องรีบวิ่งไปเก็บแล้ว เพราะว่า เราได้ D.I.Y. ราวตากผ้ากึ่งอัจริยะอันนี้ขึ้นมานั่นเอง โดยใช้บอร์ด Arduino ในการสั่งการและอุปกรณ์ที่หาได้ทั่วไป ไม่ว่าใครก็สามารถที่จะทำราวตากผ้านี้ขึ้นมาได้

บทนำ

ที่มาและความสำคัญ

          เนื่องจากในปัจจุบันมีการนำเทคโนโลยีเข้ามาเกี่ยวข้องในการดำรงชีวิตประจำวันเยอะมาก มีทั้งการดัดแปลง ผสมผสาน แม้กระทั่งการนำมาใช้ทั้งหมด ทางกลุ่มเราเรงเห็นว่าเทคโนโลยีสำคัญมากและได้คิดที่ที่จะทำสิ่งประดิษฐ์สิ่งหนึ่งนั่นคือราวตากผ้า เพราะเป็นสิ่งที่ทุกบ้านต้องใช้ หากเราสามารถเพิ่มความสะดวกสบายในการตากผ้าเพื่อทำไปใช้ในชีวิตประจำวัน จะทำให้เราสามารถประหยัดเวลาในการตากผ้าและเก็บผ้า และไม่ต้องกังวลเวลาฝนตก และยังสามารถนำเวลาในช่วงนี้ไปทำการพัฒนาศักยภาพในด้านต่าง ๆ หรือนำไปทำให้เกิดประโยชน์ได้

 วัตถุประสงค์และเป้าหมาย

  1. เพื่อประดิษฐ์ราวตกผ้าที่สามารถเพิ่มความสะดวกสบายให้กับผู้ใช้ได้
  2. เพื่อสามารถนำเทคโนโลยีที่มีอยู่ ( Arduino UNO R3 ) มาประยุกต์ใช้กับสิ่งประดิษฐ์
  3. เพื่อผู้ใช้จะสามารถลดเวลาในการตากและเก็บผ้า และสามารถนำไปใช้ให้เกิดประโยชน์
  4. อาจจะสามารถนำไปใช้ในเชิงพานิช ( การทำขายในท้องตลาด )

รายละเอียดของการพัฒนา

ราวตากผ้าในปัจจุบันที่ใช้อยู่ทุกบ้านและมีขายในท้องตลาด

            

เพื่อให้ได้ราวตากผ้าที่สามารถทำการตากและทำการเก็บได้เองเมื่อฝนตก

มีแบบจำลอง  ดังนี้

โปรแกรมที่ใช้จะใช้กับบอร์ด 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 ตรวจจับน้ำ มาทำการประดิษฐ์เพื่อเพิ่มความสะดวกสบายให้กับผู้ใช้ มีเอกสารที่เกี่ยวข้องดังนี้

  1. Arduino UNO R3
    • ความหมายของบอร์ด Arduino
    • ลักษณะของบอร์ด Arduino
    • การนำบอร์ด Arduino ไปใช้งาน
  2. Rain/Water Detection Sensor

2.1 ความหมายของ Rain/Water Detection Sensor

2.2 ลักษณะของ Rain/Water Detection Sensor

2.3 การนำ Rain/Water Detection Sensor ไปใช้งาน

  1. 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
  • ผ้าใบ
  • สายไฟขั้นตอนการทำ
    1. ทำการเขียนโปรแกรม 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 รอบ/นาที ซึ่งเป็นสเปคที่ใช้ในราวตากผ้าขนาดใหญ่

แนวทางในการพัฒนาต่อในอนาคต สามารถประยุกต์ใช้ร่วมกับงานอื่น ๆ

แนวทางที่จะพัฒนาต่อคือการทำให้ราวตากผ้านั้นตากผ้าเองละ ทำการเก็บผ้าเองเมื่อผ้าแห้งและยังสามารถพับผ้าที่เก็บแล้วได้อีกด้วย

ซึ่งเราสามารถประยุกต์ใช้กับแขนกลและการใช้ตัวเซนเซอร์อื่นๆเช่น ความชื้นและการตรวจจับวัตถุ

ข้อสรุปและข้อเสนอแนะ

-วัตถุประสงค์และเป้าหมาย

  1. เพื่อประดิษฐ์ราวตกผ้าที่สามารถเพิ่มความสะดวกสบายให้กับผู้ใช้ได้
  2. เพื่อสามารถนำเทคโนโลยีที่มีอยู่ ( Arduino UNO R3 ) มาประยุกต์ใช้กับสิ่งประดิษฐ์
  3. เพื่อผู้ใช้จะสามารถลดเวลาในการตากและเก็บผ้า และสามารถนำไปใช้ให้เกิดประโยชน์
  4. อาจจะสามารถนำไปใช้ในเชิงพานิช ( การทำขายในท้องตลาด )

-สรุปผลการดำเนินงานโครงงาน

การดำเนินโครงงานนี้บรรลุวัตถุประสงค์ที่ได้กำหนดไว้ คือ ราวตากผ้าสามารถเก็บผ้าได้เองเมื่อมีฝนตกลงมา และ ราวตากผ้าสามารถเลื่อนออกไปตากผ้าเมื่อฝนหยุดตก
-ข้อเสนอแนะ
ราวตากผ้ากึ่งอัจฉริยะสามารถเก็บผ้าและตากผ้าได้ก็จริง แต่อาจเกิดการบัคของโปรแกรมรวมถึงการรวนของเซ็นเซอร์ได้และต้องมีการเลือกมอเตอร์และการตั้ง delay เวลาให้เหมาะสมอีกด้วย
คลิป VDO

  •  
  •  
  •  
  •  
  •  
  •  
Panuwat Khwannet
at GlurGeek.Com
มีความคิดสร้างสรรค์แปลกใหม่ ชอบเทคโนโลยี นวัตกรรมใหม่ๆ เป็นคนที่ชอบฟังเพลง ชอบทำอาหาร

Leave a Reply