สารบัญ:

น้ำพุไร้สัมผัส: 9 ขั้นตอน (พร้อมรูปภาพ)
น้ำพุไร้สัมผัส: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: น้ำพุไร้สัมผัส: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: น้ำพุไร้สัมผัส: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: น้ำพุโซล่าร์เซลล์ ไม่ใช้ไฟ ติดตั้งง่าย ได้ประโยชน์มากกว่าความสวยงาม 200 บาท 2024, กรกฎาคม
Anonim
น้ำพุไร้สัมผัส
น้ำพุไร้สัมผัส

ในช่วงสิ้นปีแรกของฉันในฐานะนักเรียน MCT ฉันได้รับมอบหมายให้ทำโครงงานที่มีทักษะทั้งหมดที่ฉันได้รับจากหลักสูตรตลอดทั้งปี

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

โปรเจ็กต์นี้ใช้เซ็นเซอร์วัดระยะทางเพื่อตรวจจับว่าถ้วยหรือแก้ววางอยู่ใต้ช่องจ่ายน้ำหรือไม่ จากนั้นน้ำพุจะส่งน้ำออกเป็นเวลา 60 วินาที (100 มล. / นาที) เพื่อให้สอดคล้องกันมากขึ้น เนื่องจากการตรวจจับว่าแก้วถูกดึงออกไปหรือไม่ ซึ่งพิสูจน์แล้วว่ายากเกินไป/ทำงานช้า ซึ่งเป็นเหตุให้มีการตั้งเวลาไว้ หลังจากที่แก้วของคุณเติมน้ำ 100 มล. แล้ว คุณสามารถรอ 5 วินาที และหากแก้วยังอยู่หน้าเซ็นเซอร์วัดระยะ แก้วจะดำเนินการเติมอีกครั้ง (ซึ่งหมายความว่ายังมีการหมดเวลา 5 วินาทีระหว่างการเติมน้ำสองแบบที่แตกต่างกัน รายการ)

เสบียง

ส่วนประกอบ

- RaspberryPi 1 ตัว (ฉันใช้เวอร์ชันที่ 4 แต่รุ่นเก่าอาจใช้ได้เช่นกัน)- 1x S8050 ทรานซิสเตอร์หรือ 1x PN2222 ทรานซิสเตอร์อาจใช้งานได้เช่นกัน- 1x Photoresistor- 1x HC-SR04 (Ultrasonic Distance Sensor)- 1x RFID-RC522- 3x ต่างกัน ไฟ LED สี (น้ำเงิน เหลือง แดง) - 1x LCD1602 - 1x Active Buzzer - 1x PCF8574- 1x MCP3008- 1x ปั๊มน้ำ (ใช้ปั๊ม peristaltic 12v ลิงก์ไปยังรายการนี้)

- 1x แหล่งจ่ายไฟ DC (12v, 600mAh)- 1x อิฐพลังงานที่มี 3 จุด- 3x เขียงหั่นขนม (คุณอาจใช้น้อยลง)- T-cobbler สำหรับ RaspberryPi GPIO pins- สายเคเบิล T-cobbler (สำหรับเชื่อมต่อระหว่าง pi และ cobbler)

วัสดุและเครื่องมือที่ใช้

- สว่านที่มีดอกสว่านดังต่อไปนี้:

- 4 มม. (สำหรับเจาะรูล่วงหน้าสำหรับสกรู) - 15 มม. (สำหรับเจาะรูสำหรับเซ็นเซอร์ระยะ)

- ไขควงใดๆ- 30 สกรูยาว 45 มม.- 6 สกรู 20 มม.- 2 บานพับสำหรับประตู- แผ่น MDF ประมาณ 130 ซม. x 80 ซม.- ตะไบสองสามอัน

ขั้นตอนที่ 1: การประกอบวงจร

การประกอบวงจร
การประกอบวงจร
การประกอบวงจร
การประกอบวงจร
การประกอบวงจร
การประกอบวงจร

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

สำหรับองค์ประกอบที่ทำงานอยู่ เรามี LCD1602 ออดที่ทำงานอยู่ และปั๊มรีดท่อ จอ LCD จะใช้เพื่อแสดงสถานะเช่นว่าเคสเปิดอยู่หรือปั๊มกำลังทำงาน รวมถึงที่อยู่ IP ของอุปกรณ์จะปรากฏขึ้น ออดคือ ใช้ส่งเสียงเตือนเมื่อเปิดเคสโดยไม่มีใครอนุญาต

ฉันได้เพิ่มมุมมองเขียงหั่นขนมและแผนผังของวงจรด้านล่าง

ขั้นตอนที่ 2: การตั้งค่า RaspberryPi. ของเรา

ในการตั้งค่า RaspberryPi ของเรา เราจะดาวน์โหลดซอฟต์แวร์สร้างภาพจากเว็บไซต์ Raspberry โดยคุณสามารถดาวน์โหลดเวอร์ชันของ Raspbian ที่คุณต้องการและอิมเมจ SDCARD ให้คุณ หลังจากที่เครื่องมือนี้ทำงานเสร็จแล้ว คุณสามารถเปิด SDCARD ใน Windows Explorer ได้ คุณจะเห็นพาร์ติชันสำหรับเริ่มระบบของ RaspberryPi ในที่นี้ เราจะพบไฟล์ชื่อ cmdline.txt (อย่าเปิดไฟล์นี้ในแผ่นจดบันทึก ให้เปิดใน Notepad++ หรือ IDE อื่นๆ) เราจะเพิ่ม ip=169.254.10.1 ที่ส่วนท้ายของไฟล์นี้เพื่อให้แน่ใจว่าเราสามารถเชื่อมต่อกับอุปกรณ์ของเราผ่านอีเธอร์เน็ตได้ (ตรวจสอบให้แน่ใจว่าคุณไม่ได้เพิ่ม ENTER ใด ๆ ที่ส่วนท้ายของไฟล์ มิฉะนั้น คุณจะประสบปัญหา)

ตอนนี้คุณสามารถใส่ SDCARD ของคุณใน RaspberryPi แล้วบูตเครื่อง เชื่อมต่อ Pi กับคอมพิวเตอร์ของคุณ และใช้ Putty เพื่อเชื่อมต่อกับ Pi ของคุณผ่าน SSH ฉันใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อกับ Pi ของฉันแทนการใช้ Putty "ssh [email protected]" นี่อาจหมดเวลา ดังนั้นโปรดอดทนรอและรอให้ Pi บู๊ต เมื่อได้รับแจ้งให้ป้อนรหัสผ่าน เราจะกรอกรหัสผ่านเริ่มต้นของ "ราสเบอร์รี่" อย่าลืมเปลี่ยนรหัสผ่านนี้หลังจากเข้าสู่ระบบเพื่อป้องกันไม่ให้ใครก็ตามที่มีเจตนาร้ายเข้าถึง Raspberry Pi ของคุณ

ตอนนี้เราจะกำหนดค่า Pi ของเราเพื่อให้มีฟังก์ชันที่จำเป็นสำหรับโค้ดของเรา ใช้ "sudo raspi-config" เพื่อเปิดเมนูการกำหนดค่า และในที่นี้ เราจะไปที่ตัวเลือกการเชื่อมต่อ

ภายใต้ที่นี่เราจะสลับตัวเลือกต่อไปนี้เป็น ON:- SPI- I2C

ทำตามคำแนะนำนี้เพื่อตั้งค่าการเชื่อมต่ออินเทอร์เน็ตไร้สายบน Pi ของคุณ หลังจากที่คุณทำสิ่งนี้สำเร็จแล้ว เราจะไปติดตั้งแพ็คเกจที่จำเป็นของเรา

แพ็คเกจ: (รันคำสั่งตามลำดับที่ระบุไว้ที่นี่)

ข้อมูลต่อไปนี้เพื่อรับการอัปเดตล่าสุดสำหรับ Pi-sudo apt update && apt upgrade -y

ติดตั้งเซิร์ฟเวอร์ MySQL และเว็บเซิร์ฟเวอร์ของเรา - sudo apt ติดตั้ง mariadb-server apache2

ฉันจะใช้ MySQL Workbench เพื่อตั้งค่าฐานข้อมูลในภายหลังในคู่มือนี้ หากคุณไม่ได้ใช้สิ่งนี้และชอบ phpmyadmin คุณสามารถติดตั้งสิ่งนี้ด้วยคำสั่งต่อไปนี้ คุณสามารถใช้ไคลเอนต์ MySQL อื่น ๆ ได้อย่างอิสระตราบใดที่คุณ สามารถนำเข้าฐานข้อมูลได้อย่างถูกต้อง- sudo apt install phpmyadmin

หลังจากที่คุณทำทั้งหมดข้างต้นแล้ว เราจำเป็นต้องสร้างผู้ใช้สำหรับฐานข้อมูลของเรา ใช้ "sudo mysql -u root" เพื่อเข้าสู่เซิร์ฟเวอร์ MySQL ของคุณ ในที่นี้ เราจะสร้างผู้ใช้ชื่อ db_admin พร้อมรหัสผ่านตามลำดับ รหัสผ่านนี้ระบุไว้ที่ใดที่หนึ่งในภายหลังในคำแนะนำ ให้สิทธิ์ทั้งหมดบน *.* ถึง "db_admin"@"%" ระบุโดย "yourPasswordHere" พร้อมตัวเลือก GRANT

ใช้คำสั่ง "\q" เพื่อออกจากเทอร์มินัล MySQL

Python Packages:เรายังจำเป็นต้องติดตั้งแพ็คเกจ python ก่อนดำเนินการต่อ เรียกใช้คำสั่งด้านล่างเพื่อให้แน่ใจว่าทุกอย่างอยู่ที่นั่นเพื่อประสบการณ์ที่ไร้ที่ติ

sudo pip3 ติดตั้ง Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

เช่นเดียวกับ MySQL ต่อไปนี้จะเชื่อมต่อ python packagesudo apt install python3-mysql.connector -y

หากทุกอย่างเรียบร้อยดี คุณสามารถไปที่ Pi ของคุณบนเว็บเบราว์เซอร์ได้ด้วยที่อยู่ต่อไปนี้

ขั้นตอนที่ 3: การตั้งค่าแบ็กเอนด์

การตั้งค่าแบ็กเอนด์
การตั้งค่าแบ็กเอนด์

ฉันจะอธิบายวิธีตั้งค่าแบ็กเอนด์ด้วยตัวเอง ก่อนอื่นให้ดาวน์โหลดไฟล์ rar จากด้านล่าง แล้ว unrar ไปยังไดเร็กทอรีชั่วคราว เชื่อมต่อกับ RaspberryPi ของคุณด้วย FileZilla หรือ WinSCP ด้วยข้อมูลรับรองต่อไปนี้:

IP: 169.254.10.1 ผู้ใช้: piPassword: raspberry (หากคุณเปลี่ยนรหัสผ่าน ให้ดำเนินการที่นี่ด้วย)

จากนั้นคุณสามารถดำเนินการถ่ายโอนไฟล์ที่คุณ unrarred ไปยังไดเร็กทอรีที่คุณต้องการในโฮมไดเร็กทอรีของผู้ใช้ pi เพื่อความง่าย เราจะถือว่าในการตั้งค่านี้เราได้อัปโหลดไฟล์ทั้งหมดของเราภายใต้ไดเร็กทอรีเอกสาร

เปิดโปรแกรม FTP ไว้สำหรับขั้นตอนต่อไป!

ตอนนี้ให้เปิดพรอมต์คำสั่งของคุณอีกครั้งด้วยการเชื่อมต่อ SSH เนื่องจากเราจำเป็นต้องทำการเปลี่ยนแปลงบางอย่างกับเว็บเซิร์ฟเวอร์เพื่อให้ส่วนหน้าสามารถสื่อสารกับแบ็กเอนด์ได้ เราจะเปิดไฟล์กำหนดค่า Apache2 เริ่มต้นและแก้ไขเล็กน้อย:sudo nano /etc/apache2/sites-available/000-default.conf

เพิ่มบรรทัดต่อไปนี้ด้านล่าง DocumentRoot ในไฟล์ปรับแต่งที่เราเพิ่งเปิด:ProxyPass /api/ https://127.0.0.1:5000/api/ProxyPassReverse /api/

คุณสามารถดูภาพที่แนบมาเป็นตัวอย่าง

ขั้นตอนที่ 4: การตั้งค่าส่วนหน้า

ก่อนที่จะโอนไฟล์ของเรา เราจะต้องทำอะไรบางอย่างก่อนจึงจะสามารถเริ่มถ่ายโอนไฟล์ส่วนหน้าได้ เปิดพรอมต์คำสั่งของคุณด้วยการเชื่อมต่อ SSH ที่คุณทำไว้ก่อนหน้านี้ และใช้คำสั่งด้านล่างเพื่อสลับไปยังผู้ใช้รูทของ RaspberryPi ของเรา: "sudo su -"

หลังจากนี้ เราสามารถเปลี่ยนรหัสผ่านของผู้ใช้ root ได้โดยใช้คำสั่ง "passwd" ซึ่งจะขอให้คุณป้อนรหัสผ่านใหม่ หลังจากที่คุณทำเสร็จแล้ว คุณสามารถเปลี่ยนกลับไปใช้โปรแกรม FTP และเข้าสู่ระบบด้วยข้อมูลประจำตัวของ root ได้:

IP: 169.254.10.1 ผู้ใช้: root รหัสผ่าน:

ดาวน์โหลดไฟล์ rar จากด้านล่างและ unrar ในโฟลเดอร์ชั่วคราว คุณสามารถย้ายไฟล์เหล่านี้ไปยัง RaspberryPi ของคุณไปยังไดเร็กทอรีต่อไปนี้ /var/www/html/ หลังจากที่คุณทำเสร็จแล้ว คุณสามารถเยี่ยมชมส่วนหน้าบน http:/ /169.254.10.1 คุณยังไม่สามารถโต้ตอบได้ เนื่องจากแบ็กเอนด์ยังไม่ทำงาน ฉันจะแสดงวิธีดำเนินการนี้ให้คุณดูภายหลังในคู่มือนี้

ขั้นตอนที่ 5: การนำเข้าฐานข้อมูลสำหรับโครงการของเรา

การนำเข้าฐานข้อมูลสำหรับโครงการของเรา
การนำเข้าฐานข้อมูลสำหรับโครงการของเรา
การนำเข้าฐานข้อมูลสำหรับโครงการของเรา
การนำเข้าฐานข้อมูลสำหรับโครงการของเรา

เปิดโปรแกรมจัดการเซิร์ฟเวอร์ MySQL ที่คุณชื่นชอบและเชื่อมต่อกับ Raspberry Pi ของคุณด้วยข้อมูลประจำตัวที่เราสร้างขึ้นในขั้นตอนที่ 2

ดาวน์โหลดดัมพ์ฐานข้อมูลจากด้านล่างและนำเข้าตามปกติ MySQL workbench คุณจะไปที่ File > Open SQL Script และเลือกดัมพ์ฐานข้อมูลที่คุณดาวน์โหลด จากนั้นกด CTRL + SHIFT + ENTER และสคริปต์ SQL ควรถูกเรียกใช้และโครงสร้าง สำหรับฐานข้อมูลควรจะถูกสร้างขึ้น

ฉันได้เพิ่มข้อมูลประจำตัวที่ฉันใช้สำหรับ RaspberryPi ของฉันเป็นตัวอย่างด้านล่าง เช่นเดียวกับรูปภาพหลายรูปของโครงสร้างฐานข้อมูล คุณสามารถดูและลองทำความเข้าใจโดยทั่วไปว่าทุกอย่างทำงานอย่างไร

ขั้นตอนที่ 6: เริ่มโครงการของเรา

เริ่มโครงการของเรา
เริ่มโครงการของเรา
เริ่มโครงการของเรา
เริ่มโครงการของเรา

ก่อนที่เราจะเริ่มต้นโครงการได้ เราจำเป็นต้องเปลี่ยนข้อมูลประจำตัวของฐานข้อมูลในไฟล์ config.py หากคุณปฏิบัติตามคำแนะนำตามที่คู่มือนี้บอกไว้ คุณจะพบสิ่งเหล่านี้ภายใต้ /home/pi/Documents/Backend/src/config.py ในที่นี้ คุณต้องเปลี่ยนข้อมูลประจำตัวของตัวแปร db_config เพื่อให้ตรงกับที่เราสร้างไว้ก่อนหน้าสำหรับฐานข้อมูลของเรา ฉันได้เพิ่มตัวอย่างสิ่งที่คุณจะได้เห็นในไฟล์ด้านล่างนี้

หลังจากนั้น เราจะเพิ่มไฟล์.service ไฟล์นี้จะช่วยให้แน่ใจว่าโปรเจ็กต์ของเราเริ่มต้นเมื่อ RaspberryPi เริ่มทำงาน ตรวจสอบให้แน่ใจว่าคุณได้เปลี่ยนไดเร็กทอรีตามตำแหน่งที่คุณติดตั้งไฟล์แบ็กเอนด์อย่างเหมาะสม ใช้คำสั่งต่อไปนี้เพื่อสร้างไฟล์บริการ: sudo nano /etc/systemd/system/dispenser.serviceThis จะสร้างไฟล์บริการและคัดลอกวางโค้ดด้านล่างลงในไฟล์นี้

[หน่วย]คำอธิบาย=ตู้น้ำหลัง=mysql.service

[บริการ]ประเภท=simpleRestart=alwaysRestartSec=1User=piExecStart=/usr/bin/python3 /home/pi/Documents/Backend/index.py

[ติดตั้ง] WantedBy=multi-user.target

แก้ไขบรรทัดที่ระบุว่า /home/pi/Documents/Backend/index.py เป็นตำแหน่งที่คุณติดตั้งไฟล์แบ็กเอนด์ หากคุณไม่ดำเนินการอย่างถูกต้อง โครงการจะไม่เริ่มต้นอย่างถูกต้อง! ฉันจะเพิ่มไฟล์ตัวอย่างด้านล่าง

หลังจากที่คุณทำเสร็จแล้วและออกจากโปรแกรมแก้ไขข้อความ เราสามารถเปิดใช้งานบริการด้วยคำสั่งต่อไปนี้:- sudo systemctl daemon-reload- sudo systemctl enable dispenser- sudo systemctl start dispenser

และพิเศษกว่านั้น เราสามารถเรียกใช้ได้:sudo systemctl status dispenserสิ่งนี้จะแสดงข้อมูลบางอย่างเกี่ยวกับบริการของเรา หากมีการใช้งานอยู่หรือไม่ …

ขั้นตอนที่ 7: กรณี

กรณี
กรณี
กรณี
กรณี
กรณี
กรณี
กรณี
กรณี

ยินดีด้วยที่ใกล้เสร็จแล้ว ฉันจะเพิ่มรูปภาพที่จะแสดงขนาดที่ฉันใช้ในโครงการได้อย่างแม่นยำ ฉันใช้แผ่น MDF หนา 18 มม. คุณสามารถเลือกความหนาที่แตกต่างกันได้ เคสของฉันสามารถใช้เป็นแนวทางในการออกแบบของคุณหรือคุณสามารถสร้างสิ่งที่ฉันทำขึ้นใหม่ได้ (หากคุณใช้ MDF ที่มีความหนาต่างกัน ภาพวาดของฉันจะไม่อนุญาตให้คุณทำแบบของฉันอีกต่อไป โปรดอย่าลืมปรับเปลี่ยนมันด้วย!)แผงที่ฉันทำ:- 2 แผงขนาด 32 ซม. x 42 ซม. (แผงด้านข้าง)- 1 แผงขนาด 24 ซม. 32 ซม. (จานล่าง)- 2 แผงขนาด 16 ซม. คูณ 24 ซม. (จานด้านหน้าที่ LCD อยู่และจานข้างเคียง)- 1 แผงขนาด 28 ซม. คูณ 24 ซม. (จานกลางมองจากด้านหน้า)-1 แผงขนาด 30 ซม. x 24 ซม. (จานบน)

ขั้นตอนที่ 8: ชื่นชมผลิตภัณฑ์ขั้นสุดท้าย

ชื่นชมผลิตภัณฑ์ขั้นสุดท้าย
ชื่นชมผลิตภัณฑ์ขั้นสุดท้าย
ชื่นชมผลิตภัณฑ์ขั้นสุดท้าย
ชื่นชมผลิตภัณฑ์ขั้นสุดท้าย

คุณมาถึงจุดสิ้นสุดแล้ว และตอนนี้หวังว่าจะสามารถทำให้สิ่งทั้งหมดเป็นจริงได้ หากคุณเป็นเพียงคนเดินผ่านไปมาก็ยินดีต้อนรับเช่นกัน ฉันขอขอบคุณสำหรับการอ่านจนถึงขั้นตอนสุดท้าย!

ฉันทุ่มเทเลือด หยาดเหงื่อ และน้ำตาให้กับโปรเจ็กต์นี้ ดังนั้นฉันจะขอบคุณมากหากคุณแสดงความคิดเห็น คำติชมใดๆ เกี่ยวกับการปรับปรุง ยินดีต้อนรับ!

ขั้นตอนที่ 9: ปัญหา

ฉันจะวางโครงการในสถานะปัจจุบันเป็นต้นแบบการทำงานที่สามารถเห็นการปรับปรุงมากขึ้น

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

ฉันได้อัปโหลดรหัสของฉันไปยังเซิร์ฟเวอร์ Gitlab แล้ว และคุณสามารถดูรหัสทั้งหมดได้ที่นี่:https://git.damon.sh/Yimura/project-1

แนะนำ: