กลับไปหน้ารวมไฟล์
the-cloud-barbot-cloudgames2022-5e2060.md

บทนำ

บาร์บอทของเราถือกำเนิดขึ้นจากความหลงใหลในการสร้างแกดเจ็ตด้วย Arduino นะน้อง เราคิดว่ามันต้องสนุกแน่ๆ ถ้าเรานำเสนอผลิตภัณฑ์สุดแปลกใหม่ให้กับช่อง YouTube ของเรา โดยใช้เทคโนโลยีที่ Arduino มอบให้ บาร์บอทของเราเป็นวัตถุเชื่อมต่อ (connected object) ที่สามารถเตรียมเครื่องดื่มอร่อยๆ ได้ โดยใช้แดชบอร์ดบน Arduino IoT Cloud หรือใช้ MKR IoT Carrier เป็นรีโมทคอนโทรลวางไว้บนโต๊ะเลย

มุมมองของโปรเจกต์

The Cloud Barbot #cloudgames2022 คือการสำรวจเทคโนโลยีหุ่นยนต์และการโต้ตอบ IoT แบบจัดเต็มเลยว่ะ โดยเน้นไปที่บล็อกพื้นฐานสำคัญ—นั่นคือ โมดูล MKR WiFi 1010 และ ตรรกะการคำนวณปริมาตรแบบหลายปั๊ม (multi-pump volumetric logic) ของคุณ—น้องจะได้เรียนรู้วิธีการสื่อสารและประสานงานภารกิจการเตรียมเครื่องดื่ม โดยใช้ตรรกะซอฟต์แวร์เฉพาะทางและการตั้งค่าการเชื่อมต่อไร้สายที่เสถียร

การลงมือทำจริง: การคำนวณปริมาตรและแดชบอร์ดบนคลาวด์

โปรเจกต์นี้เผยให้เห็นเลเยอร์ที่ซ่อนอยู่เบื้องหลังการโต้ตอบแบบเซ็นส์แล้วเท:

  • เลเยอร์ระบุตัวตน: MKR IoT Carrier ทำหน้าที่เป็นอินเทอร์เฟซความละเอียดสูงของเรา วัดทุกการเคลื่อนไหวของผู้ใช้เพื่อประสานงานภารกิจผสมเครื่องดื่ม
  • เลเยอร์แปลงข้อมูล: ระบบใช้โปรโตคอล WiFi ความเร็วสูง (ผ่านเฟิร์มแวร์ WiFiNINA) เพื่อรับแพ็กเก็ตข้อมูลความเร็วสูงสำหรับประสานงานงานเซ็นซิ่งที่สำคัญ
  • เลเยอร์อินเทอร์เฟซคลาวด์: Arduino IoT Cloud ทำหน้าที่เป็นแดชบอร์ดข้อมูลความละเอียดสูงสำหรับตรวจสอบสถานะบาร์บอทของคุณ (เช่น ขนาดแก้ว, ระดับการผสมเป็นมิลลิลิตร)
  • เลเยอร์ตรรกะประมวลผล: โค้ด Arduino ใช้กลยุทธ์ "ตามเวลาและปริมาตร" (หรือแบบปั๊มส่งจ่าย): มันตีความการตั้งค่ามิลลิลิตรและจับคู่กับเวลาการทำงานของปั๊ม เพื่อให้การไหลของเครื่องดื่มปลอดภัยและเป็นจังหวะ (60 * ml / speed) ห้ามช็อตนะตัวนี้
  • ลูปการสื่อสารรีโมทคอนโทรล: รหัสท่าทางจะถูกส่งเป็นจังหวะไปยัง Serial Monitor ในระหว่างการปรับเทียบเริ่มต้น เพื่อประสานสถานะ

แดชบอร์ด

Dashboard

แดชบอร์ดของบาร์บอทอนุญาตให้คุณปรับปริมาณของเหลวที่ต้องการสำหรับแต่ละส่วนผสมเป็นมิลลิลิตรได้เลยจ้า เป็นไปได้ที่จะเลือกขนาดแก้วจากขั้นต่ำ 0 ไปจนถึงสูงสุด 400 มล. ขอบคุณไลบรารี Barbot Nano Carrier เราจะสามารถรับระดับการเติมแก้วปัจจุบันและแสดงเปอร์เซ็นต์ให้เราดูได้ด้วย เครื่องหมายถูกสีเขียวบ่งชี้ว่าบาร์บอทพร้อมรับคำสั่งเริ่มทำงานแล้ว

รีโมทคอนโทรล

การใช้ Oplà IoT Kit เราได้เพิ่มรีโมทคอนโทรลแบบหนึ่งเพื่อเตรียมเครื่องดื่มจากระยะไกล โดยไม่ต้องใช้มือถือหรือพีซีเลย

ขอบคุณฟีเจอร์จับท่าทาง (gestures) ทำให้เราสามารถเปลี่ยนเครื่องดื่มที่จะปรับแต่งได้ โดยการขยับมือจากขวาไปซ้ายหรือซ้ายไปขวาเพื่อเลื่อนดูระดับต่างๆ ที่มีอยู่

การใช้ปุ่มสัมผัส 1 หรือปุ่มสัมผัส 4 ทำให้สามารถเปลี่ยนระดับของเหลวสำหรับแต่ละเครื่องดื่มที่จะผสมได้

Remote Control Interface

ปุ่มสัมผัส 2 ช่วยให้คุณเริ่มผสมเครื่องดื่มตามระดับที่เลือกไว้ได้

เหมือนกับที่เกิดขึ้นบนแดชบอร์ด จอแสดงผลและ LED ของ MKR IoT Carrier จะเปลี่ยนเป็นสีเขียวหรือแดงตามการทำงานที่บาร์บอทกำลังทำอยู่: ถ้าเขียวคือพร้อมรับงานใหม่ ถ้าแดงคือกำลังยุ่งเตรียมเครื่องดื่มหรือยังไม่พร้อมเต็มที่

Status Display

ฮาร์ดแวร์และโครงสร้างพื้นฐานหุ่นยนต์

  • Arduino MKR WiFi 1010: ตัว "สมอง" ของโปรเจค จัดการการสื่อสาร WiFi แบบหลายทิศทางและประสานการซิงค์สถานะกับคลาวด์
  • MKR IoT Carrier: จัดหา "ลิงก์ภาพ" ที่แม่นยำและน่าเชื่อถือให้กับทุกจุดของอินเทอร์เฟซ Oplà
  • ปั๊มไดอะแฟรม (5x): จัดเตรียมอินเทอร์เฟซทางกายภาพที่ทรงพลังและน่าเชื่อถือสำหรับ "ภารกิจปรุงเครื่องดื่ม" ครั้งแรกให้สำเร็จ
  • โครงสร้างตัวถัง: ให้อินเทอร์เฟซทางกายภาพที่ชัดเจนและดูโปรสำหรับทุกภารกิจหุ่นยนต์ของน้อง และปกป้องชิ้นส่วนภายใน
  • MKR Relay Proto Shield: สำคัญมากสำหรับการจัดเตรียมแพลตฟอร์มควบคุม 12V ที่ชัดเจนและประหยัดพลังงานให้กับทุกจุดของปั๊ม
  • สาย Micro-USB: ใช้สำหรับโปรแกรม Arduino ของน้องและเป็นอินเทอร์เฟซหลักสำหรับตัวควบคุมระบบ

THE BARBOT LIBRARY

พวกเราสร้างไลบรารีเฉพาะสำหรับบาร์บอทของเรา เพื่อรับประกันว่าน้องจะต้องมาเขียนโค้ดเองน้อยลง ไลบรารีประกอบด้วยไฟล์ barbot.cpp และ barbot.h ซึ่งรวมอยู่ในโค้ดบนหน้านี้แล้ว

ทริคโค้ดเด็ด

ถ้าอยากให้บาร์บอทกลับไปที่ตำแหน่งโฮม (บ้าน) ใช้โค้ดนี้ใน setup ได้เลย:

// Inizialize barbot
barbotCarrier.begin();
// Barbot tower to home
bool home = false;
barbotCarrier.mixerTowerGoTop();
while (!home) {
  home = barbotCarrier.mixerToTop();
}
barbotCarrier.mixerTowerStop();

เวลาทำงานของปั๊ม: มันทำงานยังไงนะ?

เพราะเราไม่มีเซ็นเซอร์วัดระดับ พวกเราจึงพยายามหาวิธีแปลงค่ามิลลิลิตรที่เราตั้งไว้สำหรับแต่ละระดับ ให้เป็นมิลลิวินาทีของเวลาทำงาน

สูตรที่เราใช้คือ: 60 * มิลลิลิตร / ความเร็วปั๊ม (ลิตร/นาที)

การจะทำแบบนี้ได้ ใน setup เราต้องกำหนดว่าปั๊มที่เราใช้สามารถปั๊มได้กี่ลิตรต่อนาที ในกรณีของเรา ปั๊มไดอะแฟรมมีอัตราการไหล 2 ลิตรต่อนาที เราจึงตั้งค่าพารามิเตอร์นี้ให้กับทุกปั๊มใน setup:

//Pumps setup ml/m
barbotCarrier.setPump1LitersOnMinute(2); //2lt/m
barbotCarrier.setPump2LitersOnMinute(2);
barbotCarrier.setPump3LitersOnMinute(2);
barbotCarrier.setPump4LitersOnMinute(2);
barbotCarrier.setPump5LitersOnMinute(2);

จากนั้นเราตั้งค่ามิลลิลิตรสำหรับเครื่องดื่มแต่ละชนิดที่จะผสม:

//Pumps setup
barbotCarrier.setPump1Milliliters(400); //for 400ml
barbotCarrier.setPump2Milliliters(400);
barbotCarrier.setPump3Milliliters(400);
barbotCarrier.setPump4Milliliters(400);
barbotCarrier.setPump5Milliliters(400);

เราเปิดปั๊มด้วยคำสั่ง:

barbotCarrier.pumpWrite(PUMP1, HIGH);
barbotCarrier.pumpWrite(PUMP2, HIGH);
barbotCarrier.pumpWrite(PUMP3, HIGH);
barbotCarrier.pumpWrite(PUMP4, HIGH);
barbotCarrier.pumpWrite(PUMP5, HIGH);

เราทำการเปิดปั๊มแค่ครั้งเดียวใน setup หรือโดยใช้ flag ร่วมกับปุ่ม

ใน loop เราตรวจสอบตัวจับเวลาปิดด้วย:

barbotCarrier.pumpTimerOff(PUMP1, 60 * (barbotCarrier.getPump1Milliliters() / barbotCarrier.getPump1LitersOnMinute()));
barbotCarrier.pumpTimerOff(PUMP2, 60 * (barbotCarrier.getPump2Milliliters() / barbotCarrier.getPump2LitersOnMinute()));
barbotCarrier.pumpTimerOff(PUMP3, 60 * (barbotCarrier.getPump3Milliliters() / barbotCarrier.getPump3LitersOnMinute()));
barbotCarrier.pumpTimerOff(PUMP4, 60 * (barbotCarrier.getPump4Milliliters() / barbotCarrier.getPump4LitersOnMinute()));
barbotCarrier.pumpTimerOff(PUMP5, 60 * (barbotCarrier.getPump5Milliliters() / barbotCarrier.getPump5LitersOnMinute()));

ในตัวอย่างที่เรามีให้ในหน้านี้ (Barbot Firmware) มีการสร้างรูทีนเตรียมเครื่องดื่มตั้งแต่บรรทัดที่ 123 ถึง 175 ซึ่งทำให้น้องสามารถทำการทำงานต่างๆ ในเวลาต่างๆ โดยใช้ flag ที่สร้างจากตัวแปร boolean

หมายเหตุสำคัญ: ระบบนี้ไม่ได้ใช้เซ็นเซอร์วัดระดับ ดังนั้นมันอาจจะไม่เสถียรและทำงานไม่ตรงกับที่เราคาดหวัง พวกเราแนะนำให้น้องตั้งค่ามิลลิลิตรโดยใช้ค่าน้อยกว่าความจุจริงเล็กน้อย เพื่อให้มีระยะห่างของข้อผิดพลาดขั้นต่ำ และป้องกันไม่ให้ของเหลวล้นออกจากภาชนะ พวกเราตั้งไว้ที่ 140ml สำหรับภาชนะ 200ml! อย่าลืมนะ ห้ามช็อตนะตัวนี้

[!IMPORTANT] ระวังแก้วแตก! อย่าลืมตั้งค่า Pump Calibration factor (ml/min) ให้ตรงกับปั๊มของตัวเองด้วยนะตัวนี้ แล้วในลูปต้องมี Fail-Safe flag ด้วย ห้ามช็อตนะน้อง!

Barbot Automation and Interaction Step-by-Step

ระบบทำเครื่องดื่มแบบคลาวด์นี้ ออกแบบมาให้ทำงานแบบฉลาดๆ จัดไปวัยรุ่น:

  1. Initialize Workspace: จัดวางปั๊มกับ MKR carrier ให้เรียบร้อยในโครง Barbot แล้วต่อสายกับขา Arduino ให้ถูกต้องคร้าบ
  2. Setup Cloud Sync: ใน Arduino IoT Cloud ให้สร้าง Dashboard แล้วกำหนดตัวแปรสำหรับเครื่องดื่ม (เช่น ปริมาณ Pump1-5 เป็น ml) เพื่อควบคุมการผสม
  3. Internal Dialogue Loop: ระบบจะทำการตรวจสอบสถานะแบบเรียลไทม์และอัพเดทการทำงานของปั๊มตลอดเวลา ตามสูตรเครื่องดื่มที่ตั้งไว้
  4. Visual and Data Feedback Integration: ดู Dashboard บนมือถือได้เลย มันจะเต้นเป็นจังหวะแสดงสถานะ ตามการตั้งค่าของ Barbot จากระยะไกล สุดเท่!

Future Expansion

  • OLED Identity Dashboard Integration: ต่อจอ OLED ขนาดเล็กไว้ด้านหลังเพื่อแสดง "Current IP" หรือ "WiFi Signal Strength" ดูโปรหน่อย
  • Multi-sensor Climate Sync Synchronization: ต่อเซ็นเซอร์วัดน้ำหนัก (Weight Sensor - HX711) เพื่อทำฟีเจอร์ "Auto-Glass-Detect" แม่นยำสูงผ่านคลาวด์
  • Cloud Interface Registration Support Synchronization: สร้าง Web Dashboard เฉพาะทางบนสมาร์ทโฟนผ่าน WiFi/BT เพื่อติดตามและบันทึกประวัติการทำเครื่องดื่มแบบเป๊ะๆ
  • Advanced Velocity Profile Customization Support: เพิ่มฟังก์ชัน "Auto-Clean vCore" ในโค้ด เพื่อให้ระบบล้างตัวเองอัตโนมัติตามระยะห่างของผู้ใช้! สะอาดเว่อร์

Cloud Barbot นี่แหละโปรเจคต์เด็ดสำหรับสายวิทย์-สายช่างที่อยากได้เครื่องมือหุ่นยนต์แบบอินเทอร์แอคทีฟ สนุกและท้าทาย! สู้งานนะน้อง

DEMO

วิดีโอสาธิต:

วิดีโอภาษาอิตาเลียน (มีซับภาษาอังกฤษให้):

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

title: "The Cloud Barbot - ปรุงเครื่องดื่มสั่งผ่านคลาวด์แบบตึงๆ #cloudgames2022"
description: "งานนี้ใช้ Arduino มาสร้างบาร์เทนเดอร์อัจฉริยะที่เสิร์ฟเครื่องดื่มอร่อยๆ ให้อัตโนมัติ วัยรุ่นสายช่างต้องจัดไป งานง่ายแต่หล่อมาก! #cloudgames2022"
author: "FiloConnesso"
category: "Home & Automation"
tags:
  - "cloudgames2022"
  - "food and drinks"
  - "robots"
views: 5154
likes: 18
price: 1499
difficulty: "Intermediate"
components:
  - "1x Arduino Oplà IoT Kit"
  - "1x Micro-USB to USB Cable (Generic)"
  - "1x DC JACK for panel"
  - "5x Diaphragm pump"
  - "1x 3D Printer (generic)"
  - "1x Power Supply 12V 5A (generic)"
  - "1x Laser cutter (generic)"
  - "1x Shield Relay 8 Channel"
  - "1x Arduino Nano 33 IoT"
tools: []
apps:
  - "1x Arduino IoT Cloud"
  - "1x Arduino Web Editor"
downloadableFiles:
  - "https://create.arduino.cc/editor/FiloConnesso/c424c981-9504-498e-980a-1643f60e10e7/preview"
  - "https://create.arduino.cc/editor/FiloConnesso/4ba081b9-a002-4afe-8b4a-a5f585312b52/preview"
  - "https://create.arduino.cc/editor/FiloConnesso/c424c981-9504-498e-980a-1643f60e10e7/preview"
  - "https://create.arduino.cc/editor/FiloConnesso/4ba081b9-a002-4afe-8b4a-a5f585312b52/preview"
documentationLinks: []
passwordHash: "8dd96a4858483c93c75b42206a5aa1a51784305a36fa88e9513df68241bbe059"
encryptedPayload: "U2FsdGVkX19v6ssg1J5qJz1n5eRQxL9QI6ybzdFz+rdQDTRwHQ/MWRURb9ep0q8EdKYTKOXjjkIWyCpsGtqj55dTRQs6IMP5pGLZh/f3cQ2Y4Rh+kaZlfpruhqh2lNrHGsFXJOAz+uVoLkoJVaeudA=="
seoDescription: "Create delicious drinks with The Cloud Barbot, an Arduino-based device for automated beverage preparation. #cloudgames2022"
videoLinks:
  - "https://www.youtube.com/embed/iy5mIWu9w18"
  - "https://www.youtube.com/embed/Fma595J9ps0"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/the-cloud-barbot-cloudgames2022-5e2060_cover.jpg"
lang: "en"