สวัสดีชาว Maker, ทีม R&D และสายพัฒนานวัตกรรมทุกท่านครับ! ในยุคที่อุตสาหกรรม Smart Home และ Smart Hygiene (สุขภัณฑ์อัจฉริยะ) กำลังเติบโต การสร้าง Prototype เพื่อทดสอบไอเดียถือเป็นหัวใจสำคัญของการทำงานสเกล B2B เลยก็ว่าได้
วันนี้เราจะพามาดูโปรเจกต์สนุกๆ ที่แฝงไปด้วยเทคนิคการพัฒนาฮาร์ดแวร์ระดับมืออาชีพ นั่นคือ "เครื่องกดสบู่โฟมอัตโนมัติรูปปั้นโมอาย (Moai Soap Dispenser)" ที่ผสมผสานงาน 3D Print ด้วยเส้น Marble PLA (ลายหินอ่อน) เข้ากับการออกแบบวงจรเซนเซอร์ IR และการเขียนโค้ดจัดการพลังงาน (Deep Sleep) เพื่อให้แบตเตอรี่ใช้งานได้ยาวนานระดับอุตสาหกรรมครับ!
เตรียมของก่อนลุย (Supplies & BOM)
การจัดหาชิ้นส่วน (Sourcing) ถือเป็นขั้นตอนแรกที่สำคัญ อุปกรณ์หลักๆ ที่ใช้ในโปรเจกต์นี้ประกอบด้วยชิ้นส่วนทางกลและอิเล็กทรอนิกส์พื้นฐานที่หาได้ง่ายครับ:
วัสดุ 3D Print: เส้น Marble PLA (ลายหินอ่อน) และ Black PLA
กลไกปั๊ม: Foaming pump (หัวปั๊มโฟม) และท่อซิลิโคน (OD 6.5mm / ID 3.5mm)
พลังงาน: แบตเตอรี่ 18650, รางถ่าน, พอร์ต USB-C, และโมดูลชาร์จ TP4056
สมองกลและเซนเซอร์: ไมโครคอนโทรลเลอร์ ATtiny402, 3mm IR LED (TX) และ Photodiode (RX)
วงจรขับ: N-Channel MOSFET (MOT3400), ตัวต้านทาน, คาปาซิเตอร์ (100uf Tantalum, 0805 SMD) และน็อต/Threaded inserts
💡 Pro Tip สำหรับสายอุตสาหกรรม (B2B): หากบริษัทของคุณกำลังพัฒนา Prototype อุปกรณ์ Smart Device หรือกำลังมองหา เส้นพลาสติก 3D Print (Filament) เกรดวิศวกรรมที่ทนทานต่อสารเคมี/ความชื้น ไปจนถึงบอร์ดไมโครคอนโทรลเลอร์และเซนเซอร์คุณภาพสูง ทาง Globalbyte ยินดีเป็นพาร์ทเนอร์จัดหาอุปกรณ์ให้คุณแบบครบวงจร เพื่อลดเวลา Sourcing และเร่งกระบวนการ R&D ของคุณให้ไวขึ้นครับ!
ดูภาพอุปกรณ์ทั้งหมด (View more) ซ่อนภาพ (View less)
Step 1-4: งาน 3D Print - จากไฟล์ STL สู่โปรดักต์จริง
ในขั้นตอนการทำ Prototype เรานำโมเดล 3D โมอายดั้งเดิมมา Remix ด้วย Tinkercad ให้ภายในกลวง เพื่อซ่อนปั๊มน้ำและแผงวงจร (Enclosure Design) จากนั้นใช้ซอฟต์แวร์ Cura ตั้งค่า Slicer โดยแยกขนาดหัวฉีด (Nozzle): ใช้หัว 0.6 mm สำหรับโครงสร้างหลักเพื่อความรวดเร็ว และ 0.4 mm สำหรับฝาครอบ LED เพื่อเก็บรายละเอียดครับ
เมื่อสั่งปริ้นท์ด้วย Marble PLA (ลายหินอ่อน) ผลลัพธ์ที่ได้จะดูพรีเมียมและพรางรอยต่อเลเยอร์ (Layer lines) ได้เนียนกริบสุดๆ เหมาะกับการทำชิ้นงาน Mockup ไปพรีเซนต์ลูกค้ามากๆ ครับ
ดูภาพการออกแบบและงาน 3D Print (View more) ซ่อนภาพ (View less)
Step 5-7: งานสมองกลและออกแบบ PCB (Electronics & PCB)
หลักการทำงานคือ ใช้ IR LED (ตัวส่ง) และ Photodiode (ตัวรับ) เมื่อยื่นมือเข้ามา แสง IR จะสะท้อนกลับไปเข้าตัวรับ สัญญาณจะถูกส่งไปที่ไมโครคอนโทรลเลอร์ ATtiny402 (ตัวเล็ก ประหยัดไฟจัด) เพื่อสั่งให้ MOSFET จ่ายไฟขับมอเตอร์ปั๊มโฟมครับ
วงจรนี้ถูกวาดและสั่งทำเป็น PCB (Printed Circuit Board) แบบ Custom จากนั้นใช้เทคนิคการบัดกรีอุปกรณ์ SMD ขนาดเล็ก (อย่างตัวต้านทานเบอร์ 0805) ลงบนแผ่นวงจร ก่อนจะล้างคราบฟลักซ์ด้วยแอลกอฮอล์ (IPA) ให้สะอาดตามมาตรฐานงานอิเล็กทรอนิกส์
ดูภาพวงจรและการบัดกรี PCB (View more) ซ่อนภาพ (View less)
Step 8-9: โค้ดดิ้งฉบับเซฟแบตเตอรี่ (Deep Sleep & Ambient Rejection)
นี่คือคีย์เวิร์ดสำคัญของอุปกรณ์ไร้สายในงานอุตสาหกรรมครับ! ถ้าชิปทำงานตลอดเวลา แบตเตอรี่จะหมดภายในไม่กี่วัน เราจึงต้องเขียนโค้ดให้ระบบเข้าสู่โหมด Deep Sleep (หลับลึกกินไฟน้อยมาก) และตื่นขึ้นมาเช็คเซนเซอร์เป็นช่วงสั้นๆ (0.5 วินาที) ถ้าเจอมือก็จะปั๊มสบู่ 1 วินาทีแล้วหลับต่อ
แถมในโค้ดยังมีการทำ Ambient Rejection (ลบกวนแสงสว่างรอบข้าง) โดยการวัดค่าตอนเปิด/ปิด LED แล้วเอามาลบกัน เพื่อป้องกันปัญหาไฟตกกระทบแล้วเครื่องปั๊มสบู่เองจนเลอะเทอะครับ
/*
ATtiny402 — IR + Deep Sleep + Ambient Rejection + Pump Timer
*/
#include <avr/sleep.h>
#include <avr/interrupt.h>
#define PUMP_PIN PIN_PA6
#define IR_ADC_PIN PIN_PA1
#define IR_LED_PIN PIN_PA3
#define DETECT_THRESHOLD 80
#define IR_WARMUP_US 200
#define NUM_SAMPLES 8
#define PUMP_MAX_TICKS 2 // Max pump run: 1 second
#define SLEEP_TICKS 4 // Cooldown: 2 seconds
volatile bool pitFired = false;
ISR(RTC_PIT_vect) {
RTC.PITINTFLAGS = RTC_PI_bm;
pitFired = true;
}
void setupPIT() {
RTC.CLKSEL = RTC_CLKSEL_INT1K_gc;
while (RTC.PITSTATUS & RTC_CTRLBUSY_bm);
RTC.PITINTCTRL = RTC_PI_bm;
while (RTC.PITSTATUS & RTC_CTRLBUSY_bm);
RTC.PITCTRLA = RTC_PERIOD_CYC512_gc | RTC_PITEN_bm;
}
void sleepOneTick() {
pitFired = false;
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sei();
sleep_cpu();
sleep_disable();
}
void sleepTicks(uint8_t ticks) {
for (uint8_t i = 0; i < ticks; i++) {
sleepOneTick();
}
}
int readIRDifferential() {
long sumOff = 0, sumOn = 0;
for (int i = 0; i < NUM_SAMPLES; i++) {
digitalWrite(IR_LED_PIN, LOW);
delayMicroseconds(100);
sumOff += analogRead(IR_ADC_PIN);
digitalWrite(IR_LED_PIN, HIGH);
delayMicroseconds(IR_WARMUP_US);
sumOn += analogRead(IR_ADC_PIN);
digitalWrite(IR_LED_PIN, LOW);
delayMicroseconds(100);
}
return (sumOn / NUM_SAMPLES) - (sumOff / NUM_SAMPLES);
}
bool isHandDetected() {
return (readIRDifferential() > DETECT_THRESHOLD);
}
void runPump() {
digitalWrite(PUMP_PIN, HIGH);
for (uint8_t tick = 0; tick < PUMP_MAX_TICKS; tick++) {
sleepOneTick();
if (!isHandDetected()) break;
}
digitalWrite(PUMP_PIN, LOW);
}
void setup() {
pinMode(PUMP_PIN, OUTPUT);
pinMode(IR_LED_PIN, OUTPUT);
pinMode(IR_ADC_PIN, INPUT);
digitalWrite(PUMP_PIN, LOW);
digitalWrite(IR_LED_PIN, LOW);
setupPIT();
sei();
}
void loop() {
if (pitFired) {
pitFired = false;
if (isHandDetected()) {
runPump();
sleepTicks(SLEEP_TICKS);
}
}
sleepOneTick();
}
ดูโค้ดทั้งหมด (View full code) ซ่อนโค้ด (View less)
Step 10-17: ประกอบร่างโมอาย! (Final Assembly)
เริ่มจากการฝัง Threaded inserts (น็อตทองเหลืองฝังพลาสติก) ลงในชิ้นส่วน 3D Print ด้วยหัวแร้งความร้อน จากนั้นนำชิ้นส่วน Black PLA มาครอบแบ่งกั้นระหว่าง IR LED และ Photodiode เพื่อไม่ให้แสงกวนกันเอง
ติดตั้งปั๊มโฟมและท่อซิลิโคนเข้าในตัวเครื่อง ขันน็อตยึดแผ่น PCB และแบตเตอรี่ 18650 ปิดฝาหลังให้เรียบร้อย เป็นอันเสร็จสิ้นขั้นตอนการประกอบ Prototype ครับ
ดูภาพขั้นตอนการประกอบทั้งหมด (View more) ซ่อนภาพ (View less)
Step 18-21: เติมสบู่แล้วเทสกันเลย! (Testing)
ระบบนี้ออกแบบมาสำหรับ "สบู่โฟม (Foaming soap)" โดยเฉพาะครับ ถ้ามีแต่สบู่เหลวธรรมดา ให้เอาไปเจือจางกับน้ำก่อนเติมลงไปในแท็งก์ เพื่อให้ปั๊มสามารถอัดอากาศผสมออกมาเป็นวิปโฟมสวยๆ ได้
ในระหว่างการทดสอบ มีบั๊กเล็กน้อยคือโฟมมักจะหยดติดคางโมอาย (Messy dispensing) วิธีแก้แบบง่ายๆ คือดึงท่อให้ออกมายาวนิดนึง แล้วตัดปลายท่อให้เป็นมุมเฉียง (Angle cut) เพื่อทิ้งระยะให้โฟมหลุดออกจากตัวเครื่องได้ดีขึ้นครับ
อ้างอิงข้อมูลจาก: Globalbyteshop Blog
ต้นฉบับโปรเจกต์โดย: Instructables | Original Link
ดาวน์โหลดเอกสารและไฟล์ที่เกี่ยวข้อง:
*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงแนวคิดจากบทความโปรเจกต์ต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยและบริบทบางส่วนอาจถูกปรับแต่งเพื่อให้เข้าใจง่ายในเชิงของการสร้าง Prototype สำหรับงานระบบ โปรดตรวจสอบรายละเอียดทางวิศวกรรมและไฟล์ต้นฉบับได้ที่
เว็บไซต์ต้นฉบับ ก่อนนำไปผลิตจริง