ถังขยะอัจฉริยะจาก Magicbit: 5 ขั้นตอน
ถังขยะอัจฉริยะจาก Magicbit: 5 ขั้นตอน
Anonim
Image
Image

ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับวิธีสร้างถังขยะอัจฉริยะโดยใช้ Magicbit dev บอร์ดกับ Arduino IDE มาเริ่มกันเลย

เสบียง

  • Magicbit
  • สาย USB-A เป็น Micro-USB
  • อัลตราโซนิกเซนเซอร์ - HC-SR04 (ทั่วไป)
  • SG90 ไมโครเซอร์โวมอเตอร์

ขั้นตอนที่ 1: เรื่องราว

การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์

ก่อนย้ายเข้าโครงการ เรามาดูกันดีกว่าว่าถังขยะอัจฉริยะคืออะไร บ้านทุกหลังมีถังขยะอย่างน้อยหนึ่งถัง ในหลาย ๆ ครั้งที่คุณปกปิดมัน เพราะนั่นจะทำให้กลิ่นในบ้านของคุณ ดังนั้นเมื่อจะทิ้งขยะลงถังขยะก็ต้องเปิดออก แต่ถ้าเดินไปใกล้ถังขยะเพื่อใส่ขยะและเปิดฝาถังขยะโดยอัตโนมัติแล้วหน้าตาจะออกมาเป็นอย่างไร บ้าาาา…. นั่นคือถังขยะอัจฉริยะ

ขั้นตอนที่ 2: ทฤษฎีและระเบียบวิธี

ทฤษฎีนี้ง่ายมาก เมื่อคุณเดินไปใกล้ถังขยะ มันจะตรวจจับคุณ หากระยะห่างระหว่างคุณกับถังขยะน้อยกว่าระยะที่กำหนด ฝาปิดถังขยะจะเปิดขึ้นโดยอัตโนมัติ เพื่อให้วัตถุทั้งสองนี้สมบูรณ์ เราใช้เซ็นเซอร์อัลตราโซนิก HC-SRO4 และเซอร์โวมอเตอร์ขนาดเล็ก คุณสามารถรับเซอร์โวมอเตอร์ดิจิตอลชนิดใดก็ได้

ขั้นตอนที่ 3: การตั้งค่าฮาร์ดแวร์

การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์

สำหรับโครงการนี้ เราใช้ส่วนประกอบฮาร์ดแวร์สามส่วนเป็นหลัก ได้แก่ Magicbit, เซอร์โวมอเตอร์และเซ็นเซอร์อัลตราโซนิก การเชื่อมต่อระหว่างส่วนเหล่านี้ทั้งหมดแสดงในรูปด้านบน

เซ็นเซอร์อัลตราโซนิกใช้ 3.3 v สำหรับเปิดเครื่อง ดังนั้นเราจึงใช้พอร์ตด้านล่างขวาของบอร์ด Magicbit เพื่อเชื่อมต่อเซ็นเซอร์อัลตราโซนิกกับ Magicbit แต่เซอร์โวมอเตอร์ใช้ 5V เพื่อการทำงานที่เหมาะสม ดังนั้นเราจึงใช้พอร์ตล่างซ้ายเพื่อเชื่อมต่อเซอร์โวมอเตอร์กับ Magicbit ในกรณีนี้ เราใช้โมดูลตัวเชื่อมต่อเซอร์โวเมจิกบิต แต่ถ้าคุณไม่มีโมดูลนั้น คุณสามารถใช้สายจัมเปอร์สามเส้นเพื่อเชื่อมต่อ 5V ถึง 5V, Gnd ถึง Gnd และพินสัญญาณเป็น 26 พินบน magicbit

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

ขั้นตอนที่ 4: การติดตั้งซอฟต์แวร์

การติดตั้งซอฟต์แวร์
การติดตั้งซอฟต์แวร์

ส่วนซอฟต์แวร์ก็ง่ายมากเช่นกัน มาดูโค้ด Arduino IDE กันและวิธีทำงานของโค้ดนั้น

สำหรับการขับเซอร์โวเราใช้ไลบรารีเซอร์โว ESP32 ไลบรารีนี้เกือบจะรวมอยู่ในตัวจัดการบอร์ดบิตวิเศษใน Arduino IDE เพื่อจัดการกับเซ็นเซอร์อัลตราโซนิกเราใช้ไลบรารี newPing สามารถดาวน์โหลดได้จากลิงค์ต่อไปนี้

bitbucket.org/teckel12/arduino-new-ping/d…

ดาวน์โหลดไฟล์ zip และไปที่เครื่องมือ > รวมไลบรารี > เพิ่มไลบรารี Zip ใน Arduino ตอนนี้เลือกไฟล์ zip ที่คุณดาวน์โหลดของไลบรารีพินใหม่ ในรหัสเราประกาศไลบรารีเซอร์โวและอัลตราโซนิกเซนเซอร์ก่อน ในฟังก์ชันวนรอบ เราจะตรวจสอบระยะห่างจากถังขยะไปยังวัตถุด้านหน้าที่ใกล้ที่สุดเสมอ ถ้าขูดมากกว่า 200 ระยะทางที่ส่งออกของไลบรารีจะเป็น 0 เมื่อระยะทางต่ำกว่า 60 ซม. ให้ดำเนินการวนรอบเพื่อเปิดฝาครอบโดยหมุนเซอร์โว หากระยะห่างมากกว่า 60 ซม. ฝาครอบจะวางลง โดยใช้ตัวแปรบูลีน เราจะตรวจสอบสถานะของหน้าปกเสมอ หากฝาครอบปิดลงก็จะเปิดเท่านั้น ในทางกลับกันอีกด้วย ตอนนี้เลือกพอร์ต COM ที่ถูกต้องและบอร์ดเป็น magcibit จากนั้นอัปโหลดรหัส ตอนนี้ถังขยะอัจฉริยะของคุณพร้อมใช้งานแล้ว

ขั้นตอนที่ 5: รหัส Arduino

#รวม

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 โซนาร์ Ping ใหม่ (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // รวมระยะทาง int ของไลบรารีเซอร์โว เรดาร์เซอร์โวเซอร์โว; การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); RadarServo.attach (26); // กำหนดว่าขาใดเป็นความล่าช้าของเซอร์โวมอเตอร์ที่แนบมา (3000); } void loop() {// หมุนเซอร์โวมอเตอร์จาก 15 ถึง 165 องศาสำหรับ (int i=0;i<=180;i++){ RadarServo.write(i); ล่าช้า (50); distance = sonar.ping_cm();// เรียกใช้ฟังก์ชันสำหรับคำนวณระยะทางที่วัดโดยเซ็นเซอร์อัลตราโซนิกสำหรับแต่ละองศาสำหรับ (int j=0;j0){ break; } Serial.print(i); // ส่งค่าดีกรีปัจจุบันไปที่ Serial Port Serial.print(", "); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี Serial.print(j); // ส่งค่าดีกรีปัจจุบันไปที่ Serial Port Serial.print("*"); Serial.print(1); // ส่งค่าระยะทางไปยัง Serial Port Serial.print("/"); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี Serial.print(ระยะทาง); // ส่งค่าระยะทางไปยัง Serial Port Serial.print("."); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี } } // ทำซ้ำบรรทัดก่อนหน้าจาก 165 ถึง 15 องศาสำหรับ (int i=180;i>=0;i--){ RadarServo.write(i); ล่าช้า (50); ระยะทาง = sonar.ping_cm(); สำหรับ(int j=75;j>=0;j-=25){ if(i==180 && (j==75 ||j==50 ||j==25)){ ดำเนินการต่อ; } Serial.print(i); // ส่งค่าดีกรีปัจจุบันไปที่ Serial Port Serial.print(", "); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี Serial.print(j); // ส่งค่าดีกรีปัจจุบันไปที่ Serial Port Serial.print("*"); Serial.print(-1); // ส่งค่าระยะทางไปยัง Serial Port Serial.print("/"); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี Serial.print(ระยะทาง); // ส่งค่าระยะทางไปยัง Serial Port Serial.print("."); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี } } }