กลับไปหน้ารวมไฟล์
laundry-ifttt-alert-537192.md

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

นั่นคือจุดเริ่มต้นของการสร้างนี้

ผมมี Wii Nunchuck สองอันจากเครื่อง Wii ที่พังไปแล้ว ซึ่งมี motion sensor อยู่ข้างใน การค้นหาบนเว็บอย่างรวดเร็วทำให้ผมพบบทความบน Instructables http://www.instructables.com/id/Washer-Dryer-Laundry-Alarm-using-Arudino-SMS-Text-/?ALLSTEPS ที่ใช้ Arduino Yun ซึ่งมีประโยชน์มาก ผมมี Uno พร้อม Ethernet card อยู่แล้ว

นั่นคือจุดเริ่มต้นของการสร้าง ซึ่งค่อนข้างตรงไปตรงมา ใช้สายไฟ 4 เส้นจาก Wii Nunchuck และ LED สองสามดวงเพื่อดูสถานะการทำงาน ปรับค่าตัวเลขให้เข้ากับเครื่องซักผ้า แล้วเครื่องซักผ้าก็จะเชื่อมต่อกับ IFTTT ได้

แล้ววิธีอื่นล่ะ

ก่อนที่จะไปไกลกว่านี้ ลองพิจารณาวิธีการต่างๆ ในการดักจับการแจ้งเตือนที่ Arduino สามารถตอบสนองได้ การสั่นสะเทือน, กระแสไฟฟ้า และเสียง ล้วนเป็นไปได้ ผมชอบวิธีการตรวจจับกระแสไฟฟ้ามากที่สุด แต่กระนั้นมันก็ต้องเกี่ยวข้องกับ line voltage แม้จะใช้ inductive sensor ก็ตาม NEC จะกำหนดให้ sensor ต้องอยู่ใน junction box ในกรณีของผม ทั้งเครื่องซักผ้าและเครื่องอบผ้าต่างก็อยู่ใน independent circuit ดังนั้น main panel จึงเป็นตำแหน่งที่ดีสำหรับ sensor เนื่องจากผมเป็นผู้ออกแบบและเดินสายทั้งหมด วิธีนี้จึงเหมาะกับผมเป็นอย่างดี สำหรับโปรเจกต์นี้ หนึ่งในเป้าหมายคือการเขียน blog post

วิธีการติดตั้งที่ main electrical panel จะจำกัดกลุ่มผู้ใช้งาน ดังนั้นอย่างที่ MakerBee พิจารณาไว้ โซลูชันที่ไม่รบกวน (noninvasive) จะเหมาะสมกว่า การสั่นสะเทือนดูดีกว่าเสียงสำหรับผม เพราะเสียงบี๊บและบู๊ปที่หลากหลายจากอุปกรณ์อิเล็กทรอนิกส์ในปัจจุบันดูเหมือนจะถอดรหัสได้ยากกว่า

Nunchuck และอื่นๆ ข้อกำหนด

Nunchuck เป็นวิธีที่ค่อนข้างประหยัดในการนำ motion controller มาต่อสายให้พร้อมใช้งาน การ desoldering เล็กน้อยก็เป็นจุดเริ่มต้นที่ดี ประสบการณ์การซักผ้าส่วนใหญ่ของผมคือกับเครื่องซักผ้าฝาบน พวกมันสั่นสะเทือนอย่างรุนแรง แต่เครื่องซักผ้าฝาหน้าที่เรามีตอนนี้ไม่ค่อยขยับมากนัก แน่นอนว่าเมื่อมันปั่นหมาด ทุกอย่างก็จะเปลี่ยนไป แต่ส่วนใหญ่แล้วมันก็ทำงานไปอย่างราบรื่น Nunchuck sensor นั้นน่าประทับใจ มันสามารถตรวจจับการเคลื่อนไหวเพียงเล็กน้อยได้อย่างง่ายดาย การแตะนิ้วเบาๆ บนโต๊ะแข็งๆ ที่อยู่ห่างออกไปสองสามฟุตก็สามารถรับรู้ได้

ข้อกำหนดอีกอย่างคือฟังก์ชัน Auto start ผมต้องการให้อุปกรณ์ทำงานได้โดยไม่ต้องมีการควบคุม ควรจะตรวจจับได้ว่าเครื่องกำลังทำงานอยู่ ตรวจสอบจนกระทั่งเสร็จสมบูรณ์ และส่ง text message ตัวตรวจจับเครื่องอบผ้าไม่ควร Auto start ในระหว่าง cycle การซักของเครื่องซักผ้า และในทางกลับกัน สุดท้าย อุปกรณ์ควรจะแสดงสถานะการทำงานผ่าน LED สองสามดวง

การสร้างนี้ค่อนข้างง่าย ต้องขอบคุณ Nunchuck library

ส่วนประกอบที่จำเป็นสำหรับหนึ่งชุด

1 - Arduino Uno

1 - Ethernet Shield

2 - Momentary contact buttons

4 - LED's สีต่างๆ (แดง, เขียว, น้ำเงิน, เหลือง)

2 - Resistors ประมาณ 2K

Nunchuck Breakout Board

1 - Wii Nunchuck อาจจะมาพร้อม Nunchuck breakout board

1 - Case

1 - Neodymium magnet (จาก hard drive เก่า)

1 - Arduino Nunchuck library อุปกรณ์มาตรฐานอื่นๆ เช่น สายไฟ, breadboard

Wiring Diagram, ปุ่มต่างๆ อยู่ใน Nunchuck

คุณอาจต้องการ Resistor เพิ่มอีกตัว LED สีแดงและสีน้ำเงินจำเป็นต้องใช้ Resistor ด้วยเหตุผลบางอย่างสีเหลืองไม่ต้องการ และสีเขียวมักจะถูกควบคุมโดยโปรแกรม ผมไม่ใช่ EE แต่ในฐานะคนทั่วไป ผมคิดว่าทั้ง LED สีเหลืองและสีเขียวควรจะมี series resistor ด้วย อาจจะใช้ค่าที่น้อยกว่าสำหรับสีเขียว ปุ่มต่างๆ ไม่ได้แสดงใน diagram ให้ต่อสายออกมาจาก Nunchuck circuit board โมดูลปุ่มมีสายไฟ 3 เส้น คือ common หนึ่งเส้น และแต่ละปุ่มอีกเส้น Nunchuck เป็นอุปกรณ์ 3.3 volt อ่านข้อมูลทั้งหมดเกี่ยวกับ Nunchuck ได้ที่ https://create.arduino.cc/projecthub/infusion/using-a-wii-nunchuk-with-arduino-597254

ผมเริ่มต้นด้วยการตัดปลั๊กออกจาก Nunchuck และติดตั้ง DuPont connectors เข้ากับสายไฟ

จากนั้นก็เสียบเข้ากับ Ethernet Shield ที่อยู่บน Uno นั่นคือทั้งหมดที่จำเป็นสำหรับโปรเจกต์นี้ LED เป็นแค่ของตกแต่ง หรืออย่างที่เพื่อนผมบอกว่า ทุกคนขายสเต็ก นั่นคือเสียงฉ่า (sizzle) เมื่อใช้ Ethernet Shield อย่าใช้ pins 10 ถึง 13 และบางครั้ง pin 8 ก็เกี่ยวข้องกับการเชื่อมต่อ network ด้วย

คุณควรรู้ไว้ว่า ผมค่อนข้างใหม่กับ Arduino, electronic design และ Arduino code แต่ผมบัดกรีเป็น ดังนั้นโปรดอ่านบันทึกของผมเหมือนคุณอ่านเจอจากอินเทอร์เน็ต

ลำดับและการใช้งาน LED มีดังนี้

  • สีน้ำเงิน จะติดขึ้นมาระหว่าง POST จากนั้นจะดับลงเมื่อระบบทำงาน
  • สีน้ำเงินติดขึ้นเมื่อพิจารณาการเริ่มต้น และดับลงเมื่อพิจารณาเสร็จชั่วคราว จะติดขึ้นอีกครั้งเมื่อถึงครึ่งทาง
  • สีเหลือง, ระบบได้ Auto start แล้ว
  • สีเขียว, ระบบกำลังทำงาน
  • สีแดง, พิจารณาการหยุด, ดับลงเมื่อเสร็จสิ้นชั่วคราว จะติดขึ้นเมื่อถึง 10% ของระยะเวลา
  • สีแดงจะดับลงเมื่อเริ่มส่งข้อมูล network ไปยัง IFTTT
  • สีเหลืองจะดับลงเมื่อการส่งข้อมูล network ไปยัง IFTTT สิ้นสุดลง
  • สีเขียวจะดับลงเมื่อ cycle เสร็จสมบูรณ์

เมื่อเพิ่ม LED ผมพบว่ามีเพียงสีน้ำเงินและสีแดงเท่านั้นที่ต้องการ series resistor ส่วนสีเหลืองนั้นไม่ได้สว่างมากเกินไป / เกือบไหม้ ระดับความสว่างของ LED สีเขียวถูกควบคุมไว้ระหว่าง Arduino loop จากนั้นมันจะสว่างเกินไป (overdriven) เมื่อมีการส่งข้อมูล network เกิดขึ้น

ปุ่มของ Nunchuck ใช้เป็นฟังก์ชันเสริมสำหรับ start หรือ stop เครื่องซักผ้าแต่ละเครื่องมีอุปกรณ์ของตัวเองที่ใช้ code base ร่วมกัน การเพิ่ม Transistor สองสามตัวและปรับแก้โค้ดจะช่วยให้สามารถใช้ Nunchuck สองตัวบน I2C protocol ได้

การตั้งค่าและคำอธิบายกระบวนการ

เครื่องแต่ละเครื่องมี variable ของตัวเองสำหรับการตั้งค่าแต่ละรายการ ตัวแปร IsWasherDryer ใช้เพื่อควบคุมว่าโค้ดนั้นใช้สำหรับเครื่องใด ตั้งค่าเป็น True สำหรับเครื่องซักผ้า และ False สำหรับเครื่องอบผ้า

กระบวนการ Auto start

Arduino จะตรวจสอบ sensor ประมาณ 84 ครั้งต่อวินาที Motion sensor ใน Nunchuck มีความไวสูง สามารถตรวจจับการแตะนิ้วเบาๆ บนโต๊ะหนักๆ ที่อยู่ห่างออกไปสองสามฟุตได้ ข้อมูลการเคลื่อนไหวจะมาในรูปแบบ integer ระหว่าง 0 ถึง 254 การแตะนิ้วทำให้ sensor หนึ่งหรือสองตัวจากสามตัวมีการเปลี่ยนแปลงที่เห็นได้ชัด เมื่อเครื่องเริ่มสั่นสะเทือน อุปกรณ์ก็จะเริ่มทำงาน

เกณฑ์การเคลื่อนไหวสำหรับการเริ่มต้นเรียกว่า AutoStartSensitivity ด้วยอัตราการ refresh ที่รวดเร็วและการเคลื่อนไหวเล็กน้อย บางครั้ง sensor อาจรายงานว่าไม่มีการเคลื่อนไหว สิ่งนี้จะถูกจัดการด้วยตัวแปร AutoStartThreashold ตัวแปรสุดท้ายที่กำหนดสำหรับการ automatic starting คือระยะเวลาที่อุปกรณ์ต้องมีการเคลื่อนไหวจึงจะถือว่าเป็นการเริ่มต้นอย่างเป็นทางการ สิ่งนี้เรียกว่า AutoStartMovementTime

ตามหลักการแล้ว อุปกรณ์ควรจะเริ่มทำงานใกล้เคียงกับช่วงเริ่มต้นของ cycle การทำงานของเครื่องจักร อย่างไรก็ตามสำหรับเครื่องซักผ้าฝาหน้าที่มีการทำงานที่ราบรื่นมาก อาจจะดีกว่าที่จะเริ่มที่ first spin cycle เครื่องอบผ้ามีการสั่นสะเทือนที่สม่ำเสมอกว่ามาก และง่ายต่อการ Auto start ค่า AutoStartMovementTime ของเครื่องอบผ้าควรจะนานกว่า spin cycle ของเครื่องซักผ้า หรืออย่างน้อยก็ช่วงที่สั่นสะเทือนรุนแรง

ข้อมูล Frontmatter ดั้งเดิม

title: "Laundry IFTTT Alert"
description: "Make laundry machines let you know when they are done, non-invasive automatic start with IFTTT call at end of cycle."
author: "danvanf"
category: "Home & Automation"
tags:
  - "laundry"
  - "iot"
  - "home automation"
  - "internet of things"
views: 9144
likes: 3
price: 1120
difficulty: "Intermediate"
components:
  - "1x Arduino UNO"
tools: []
apps:
  - "1x Maker service"
downloadableFiles: []
documentationLinks: []
passwordHash: "6be1d9af55db1877966447842b6535862de3a90528e25592914c71f515d0f4a1"
encryptedPayload: "U2FsdGVkX18tKWJ5H3m8U2LNPr02i3wUaKD577vQ7tn2onokGjm9UsxSflOOH9BbfMCsoBBIiM9B08T/nUDry4bxWL+ZWhd+GkckI9F970I="
seoDescription: "Build a non-invasive laundry alert system using IFTTT. Get notifications when your cycle ends without modifying the machine."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/laundry-ifttt-alert-537192_cover.png"
lang: "th"