- วัสดุที่จำเป็น
- การทำงานของเซ็นเซอร์เสียง
- แผนภาพวงจรเซนเซอร์เสียง
- แผนภาพวงจรน้ำพุดนตรี
- การเขียนโปรแกรม Arduino Nano สำหรับ Dancing Fountain
มีน้ำพุหลายแห่งที่ฉีดน้ำโดยไม่มีเงื่อนไขพร้อมเอฟเฟกต์แสงที่น่าสนใจ ดังนั้นฉันจึงมุ่งมั่นที่จะออกแบบน้ำพุที่เป็นนวัตกรรมใหม่ซึ่งสามารถตอบสนองต่อเสียงดนตรีภายนอกและฉีดน้ำได้ขึ้นอยู่กับจังหวะดนตรี ฟังดูไม่น่าสนใจเหรอ?
แนวคิดพื้นฐานของArduino Water Fountainนี้คือการรับอินพุตจากแหล่งกำเนิดเสียงภายนอกใด ๆ เช่นมือถือ, iPod, PC ฯลฯ สุ่มตัวอย่างเสียงและแยกย่อยเป็นช่วงแรงดันไฟฟ้าที่แตกต่างกันจากนั้นใช้เอาต์พุตเพื่อเปิดรีเลย์ต่างๆ ก่อนอื่นเราใช้โมดูลเซ็นเซอร์เสียงที่ใช้ไมโครโฟนคอนเดนเซอร์เพื่อดำเนินการกับแหล่งกำเนิดเสียงเพื่อแยกเสียงออกเป็นช่วงแรงดันไฟฟ้าที่แตกต่างกัน จากนั้นแรงดันไฟฟ้าจะถูกป้อนให้กับ op-amp เพื่อเปรียบเทียบระดับเสียงกับขีด จำกัด เฉพาะ ช่วงแรงดันไฟฟ้าที่สูงขึ้นจะสอดคล้องกับสวิตช์รีเลย์เปิดซึ่งประกอบด้วยน้ำพุดนตรีที่ทำงานตามจังหวะและจังหวะของเพลง ดังนั้นที่นี่เรากำลังสร้างMusical Fountain โดยใช้ Arduino และเซ็นเซอร์เสียง
วัสดุที่จำเป็น
- Arduino นาโน
- โมดูลเซ็นเซอร์เสียง
- โมดูลรีเลย์ 12V
- ปั๊ม DC
- ไฟ LED
- การเชื่อมต่อสายไฟ
- บอร์ด Vero หรือ Breadboard
การทำงานของเซ็นเซอร์เสียง
โมดูลเซ็นเซอร์เสียงเป็นบอร์ดอิเล็กทรอนิกส์ที่ใช้ไมโครโฟนอิเล็กเตรตแบบธรรมดาที่ใช้ในการตรวจจับเสียงภายนอกจากสภาพแวดล้อม มันขึ้นอยู่กับเพาเวอร์แอมป์ LM393 และไมโครโฟนแบบอิเลคเตรตซึ่งสามารถใช้เพื่อตรวจจับว่ามีเสียงเกินขีด จำกัด ที่กำหนด เอาต์พุตของโมดูลเป็นสัญญาณดิจิทัลซึ่งบ่งชี้ว่าเสียงนั้นมากกว่าหรือน้อยกว่าเกณฑ์
สามารถใช้โพเทนชิออมิเตอร์เพื่อปรับความไวของโมดูลเซ็นเซอร์ได้ เอาต์พุตของโมดูลจะสูง / ต่ำเมื่อแหล่งกำเนิดเสียงต่ำ / สูงกว่าเกณฑ์ที่โพเทนชิออมิเตอร์กำหนด โมดูลเซ็นเซอร์เสียงเดียวกันสามารถใช้ในการวัดระดับเสียงเป็นเดซิเบลได้
แผนภาพวงจรเซนเซอร์เสียง
อย่างที่เราทราบกันดีว่าในโมดูลเซ็นเซอร์เสียงอุปกรณ์อินพุตพื้นฐานคือไมโครโฟนซึ่งจะแปลงสัญญาณเสียงเป็นสัญญาณไฟฟ้า แต่เนื่องจากเอาต์พุตสัญญาณไฟฟ้าของเซ็นเซอร์เสียงมีขนาดเล็กมากซึ่งยากต่อการวิเคราะห์ดังนั้นเราจึงใช้วงจรขยายสัญญาณทรานซิสเตอร์ NPN ซึ่งจะขยายและป้อนสัญญาณเอาต์พุตไปยังอินพุตที่ไม่กลับด้านของ Op- แอมป์ LM393 OPAMP ใช้เป็นตัวเปรียบเทียบซึ่งจะเปรียบเทียบสัญญาณไฟฟ้าจากไมโครโฟนและสัญญาณอ้างอิงที่มาจากวงจรแบ่งแรงดันไฟฟ้า หากสัญญาณอินพุตมากกว่าสัญญาณอ้างอิงเอาต์พุตของ OPAMP จะสูงและในทางกลับกัน
คุณสามารถติดตามส่วนวงจร Op-amp เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการทำงาน
แผนภาพวงจรน้ำพุดนตรี
ดังที่แสดงในแผนภาพวงจรน้ำพุดนตรีด้านบนเซ็นเซอร์เสียงใช้พลังงานจาก Arduino Nano 3.3V และขาเอาต์พุตของโมดูลเซ็นเซอร์เสียงเชื่อมต่อกับขาอินพุตแบบอะนาล็อก (A6) ของ Nano คุณสามารถใช้พินอะนาล็อกใดก็ได้ แต่อย่าลืมเปลี่ยนค่านั้นในโปรแกรม โมดูลรีเลย์และปั๊ม DC ใช้พลังงานจากแหล่งจ่ายไฟ 12VDC ภายนอกดังแสดงในรูป สัญญาณอินพุตของโมดูลรีเลย์เชื่อมต่อกับขาเอาต์พุตดิจิตอล D10 ของ Nano สำหรับเอฟเฟกต์แสงฉันเลือก LED สองสีที่แตกต่างกันและเชื่อมต่อกับพินเอาต์พุตดิจิตอลสองตัว (D12, D11) ของ Nano
ที่นี่ปั๊มเชื่อมต่อในลักษณะที่เมื่อให้พัลส์สูงเข้ากับอินพุตของโมดูลรีเลย์หน้าสัมผัส COM ของรีเลย์จะเชื่อมต่อกับหน้าสัมผัส NO และกระแสจะได้รับเส้นทางปิดวงจรที่จะไหลผ่านปั๊มไปยัง เปิดใช้งานการไหลของน้ำ มิฉะนั้นปั๊มจะยังคงปิดอยู่ พัลส์สูง / ต่ำสร้างขึ้นจาก Arduino Nano ขึ้นอยู่กับอินพุตเสียง
หลังจากบัดกรีวงจรที่สมบูรณ์บน perfboard แล้วจะมีลักษณะดังนี้:
ที่นี่เราใช้กล่องพลาสติกเป็นที่ใส่น้ำพุและปั๊มมินิ5vเพื่อทำหน้าที่เป็นน้ำพุเราเคยใช้ปั๊มนี้ในหุ่นยนต์ดับเพลิง
การเขียนโปรแกรม Arduino Nano สำหรับ Dancing Fountain
โปรแกรมที่สมบูรณ์ของโครงการน้ำพุ Arduino นี้มีให้ที่ด้านล่างของหน้า แต่ที่นี่ฉันแค่อธิบายทีละส่วนเพื่อความเข้าใจที่ดีขึ้น:
ส่วนแรกของโปรแกรมคือการประกาศตัวแปรที่จำเป็นสำหรับการกำหนดหมายเลขพินที่เราจะใช้ในบล็อกถัดไปของโปรแกรม จากนั้นกำหนดค่า REF คงที่ด้วยค่าซึ่งเป็นค่าอ้างอิงของโมดูลเซ็นเซอร์เสียง ค่าที่กำหนด 700 คือค่าเทียบเท่าไบต์ของสัญญาณไฟฟ้าขาออกของเซ็นเซอร์เสียง
เซ็นเซอร์ int = A6; int redled = 12; int greenled = 11; ปั๊ม int = 10; # กำหนด REF 700
ในฟังก์ชัน การตั้งค่าเป็นโมฆะ เราได้ใช้ฟังก์ชัน pinMode เพื่อกำหนดทิศทางข้อมูล INPUT / OUTPUT ของหมุด เซ็นเซอร์ที่นี่ถ่ายเป็น INPUT และอุปกรณ์อื่น ๆ ทั้งหมดจะใช้เป็น OUTPUT
การตั้งค่าเป็นโมฆะ () { pinMode (เซ็นเซอร์อินพุต); pinMode (สีแดงเอาท์พุท); PinMode (เป็นสีเขียว, OUTPUT); pinMode (ปั๊มเอาท์พุท); }
ภายในอนันต์ ห่วง , analogRead ฟังก์ชั่นที่เรียกว่าซึ่งการอ่านอินพุตแบบอะนาล็อกค่าจากเซ็นเซอร์ขาและเก็บไว้ในตัวแปรsensor_value
int sensor_value = analogRead (เซ็นเซอร์);
ในส่วนสุดท้ายจะใช้ลูป if-else เพื่อเปรียบเทียบสัญญาณอนาล็อกอินพุตกับค่าอ้างอิง หากมีค่ามากกว่าค่าอ้างอิงขาเอาต์พุตทั้งหมดจะได้รับเอาต์พุตสูงเพื่อให้ LED และปั๊มทำงานทั้งหมดมิฉะนั้นทุกอย่างจะยังคงปิดอยู่ ที่นี่เราได้กำหนดเวลาหน่วงไว้ 70 มิลลิวินาทีเพื่อแยกเวลาเปิด / ปิดของรีเลย์
ถ้า (sensor_value> REF) { digitalWrite (เป็นสีเขียว, สูง); digitalWrite (แดง, สูง); digitalWrite (ปั๊มสูง); ล่าช้า (70); } else { digitalWrite (เขียว, LOW); digitalWrite (แดง, LOW); digitalWrite (ปั๊ม LOW); ล่าช้า (70); }
นี่คือวิธีการทำงานของWater Fountain ที่ควบคุมโดย Arduinoรหัสที่สมบูรณ์พร้อมวิดีโอการทำงานได้รับด้านล่าง