สารบัญ:

เครื่องจ่ายน้ำอัตโนมัติเพื่อติดตามการบริโภค: 6 ขั้นตอน
เครื่องจ่ายน้ำอัตโนมัติเพื่อติดตามการบริโภค: 6 ขั้นตอน

วีดีโอ: เครื่องจ่ายน้ำอัตโนมัติเพื่อติดตามการบริโภค: 6 ขั้นตอน

วีดีโอ: เครื่องจ่ายน้ำอัตโนมัติเพื่อติดตามการบริโภค: 6 ขั้นตอน
วีดีโอ: เครื่องกดน้ำอัตโนมัติ เครื่องปั๊มน้ำอัตโนมัติ แบบชาร์จได้ ราคา 49 บาท | รีวิวสัมปะปิ 2024, กรกฎาคม
Anonim
เครื่องจ่ายน้ำอัตโนมัติเพื่อติดตามการบริโภค
เครื่องจ่ายน้ำอัตโนมัติเพื่อติดตามการบริโภค
เครื่องจ่ายน้ำอัตโนมัติเพื่อติดตามการบริโภค
เครื่องจ่ายน้ำอัตโนมัติเพื่อติดตามการบริโภค

สวัสดี!

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

ด้วย Raspberry Pi เซ็นเซอร์สองสามตัว ปั๊ม และความรู้เพียงเล็กน้อย ฉันพยายามทำให้ดีที่สุด

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

ที่เก็บ GitHub:

เสบียง

ไมโครคอนโทรลเลอร์

ราสเบอร์รี่ Pi 4

เซนเซอร์และโมดูล

ฉันใช้เซ็นเซอร์ 4 ตัว:

2xHC-SR04อัลตราโซนิกเซนเซอร์

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

แผ่นข้อมูล

1x DS18B20 อุณหภูมิ เซนเซอร์

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

แผ่นข้อมูล

1x RC522 โมดูล RFID

RC522 เป็นโมดูล RFID 13.56MHz ที่ใช้ตัวควบคุม MFRC522 จากเซมิคอนดักเตอร์ NXP โมดูลนี้สามารถรองรับ I2C, SPI และ UART และโดยปกติจะมาพร้อมกับการ์ด RFID และพวงกุญแจ มักใช้ในระบบการเข้างานและแอปพลิเคชันระบุตัวบุคคล/วัตถุอื่นๆ ในโครงการนี้ ใช้สำหรับระบบการระบุ/เข้าสู่ระบบ

แผ่นข้อมูล

และ 2 แอคทูเอเตอร์:

1x Peristaltic เครื่องสูบน้ำ 12-24V

ฉันใช้ปั๊มรีดน้ำเพื่อเอาน้ำจากถังไปใส่ขวดน้ำ ปั๊มส่วนใหญ่ช้าเกินไป ดังนั้นฉันจึงเลือกใช้รุ่น 24V ที่ฉันจ่ายไฟด้วยอะแดปเตอร์แปลงไฟ 24V

1x LCD แสดงผล

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

แผ่นข้อมูล

ปลอก

เมื่อพูดถึงเคส ฉันทำ DIY พร้อมอุปกรณ์จากโฮมดีโป (ในกรณีของฉันคือ Brico ในเบลเยียม) ฉันใช้ไม้อัดที่ฉันตัดให้ได้ขนาดที่เหมาะสม ฉันจะพูดถึงวิธีที่ฉันทำคดีของฉันในขั้นต่อไป แต่นี่คือสิ่งที่คุณต้องการ:

  • 3x แผ่นไม้อัด
  • 1x กรวยเล็ก
  • 1x ถังเก็บน้ำ (คุณสามารถเลือกปริมาณที่คุณต้องการได้ ฉันไปสำหรับ 10L)
  • 1x ถาดรองน้ำหยด

คุณสามารถค้นหาวัสดุและราคาทั้งหมดได้ใน BOM ที่แนบมา

ขั้นตอนที่ 1: เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ทั้งหมด

เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ทั้งหมด
เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ทั้งหมด
เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ทั้งหมด
เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ทั้งหมด

ตอนนี้เราได้สรุปอุปกรณ์อิเล็กทรอนิกส์ทั้งหมดแล้ว ก็ถึงเวลาเชื่อมต่อพวกมัน ฉันสร้างวงจร Fritzing สองวงจร หนึ่งเขียงหั่นขนมและหนึ่งแผนผัง เพื่อแสดงให้คุณเห็นว่าควรเชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ทั้งหมดอย่างไรและที่ไหน คุณสามารถหาลิงค์ดาวน์โหลด Fritzing ได้ที่นี่: https://fritzing.org/download/ ดังที่ได้กล่าวไว้ก่อนหน้านี้ ฉันใช้ Raspberry Pi และเชื่อมต่อเครื่องสแกน RFID, เซ็นเซอร์อัลตราโซนิกสองตัว, เซ็นเซอร์อุณหภูมิหนึ่งตัว, LCD และปั๊มรีดท่อสำหรับน้ำ

ฉันได้แนบวงจรทั้งสองเป็น PDF หากคุณต้องการดูให้ละเอียดยิ่งขึ้น

ขั้นตอนที่ 2: การตั้งค่า Raspberry Pi

เราจะใช้ Raspberry Pi เพื่อเรียกใช้และควบคุมทุกอย่าง: แบ็กเอนด์ ฟรอนท์เอนด์ และฐานข้อมูล

Raspberry Pi ไม่ทำงานโดยอัตโนมัติ เราจะต้องทำตามขั้นตอนบางอย่างเพื่อเริ่มใช้งาน

ขั้นตอนที่ 1: Raspbian

หากคุณกำลังใช้ Raspberry Pi ใหม่ล่าสุด คุณจะต้องใช้ raspbian ลิงค์ดาวน์โหลดและบทช่วยสอนสามารถพบได้ที่นี่

ขั้นตอนที่ 2: การเขียนภาพไปยัง SD

ตอนนี้คุณมีรูปภาพ Raspbian แล้ว คุณจะต้องมีซอฟต์แวร์เขียนรูปภาพ (ฉันแนะนำ win32diskimager) เพื่อเขียนไฟล์รูปภาพลงในการ์ด SD กวดวิชาเต็มรูปแบบสามารถพบได้ที่นี่

ขั้นตอนที่ 3: ลงชื่อเข้าใช้ Raspberry Pi

เปิด "Powershell" และพิมพ์ "ssh [email protected]" หากทุกอย่างถูกต้อง พวกเขาจะถามรหัสผ่าน (รหัสผ่านเริ่มต้นจะเป็นราสเบอร์รี่เสมอ) โดยปกติ สิ่งนี้ควรนำคุณเข้าสู่ระบบ Raspberry Pi ตอนนี้เราจำเป็นต้องทำการเปลี่ยนแปลงบางอย่างในการตั้งค่าของเรา พิมพ์ sudo raspi-config ในเทอร์มินัลแล้วกด Enter ไปที่ตัวเลือกการแปล > เปลี่ยนเขตเวลา และตั้งค่าเป็นเขตเวลาของคุณ คุณควรเปลี่ยนประเทศ Wi-Fi เป็นตำแหน่งของคุณเองด้วย สุดท้าย ไปที่ตัวเลือกการเชื่อมต่อและเปิดใช้งาน SPI, I2C และ 1-wire นี่จะเป็นสิ่งสำคัญที่จะใช้เซ็นเซอร์อย่างถูกต้อง

ขั้นตอนที่ 4: การตั้งค่าการเชื่อมต่ออินเทอร์เน็ต

เราจะใช้เครือข่าย WiFi คุณสามารถเพิ่มเครือข่ายในบ้านของคุณผ่าน:

wpa_passphrase "เครือข่ายของคุณ" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

คุณจะต้องรีบูต Pi ของคุณเพื่อเชื่อมต่อ หากต้องการตรวจสอบว่าใช้งานได้หรือไม่ คุณสามารถใช้ ifconfig เพื่อตรวจสอบว่ามีที่อยู่ IP หรือไม่

ขั้นตอนที่ 5: การตั้งค่าเว็บเซิร์ฟเวอร์และฐานข้อมูล

อันดับแรก เป็นการดีที่สุดที่จะอัปเดตและอัปเกรดระบบด้วยลำดับคำสั่งต่อไปนี้:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt อัพเกรด
  3. sudo apt อัปเดต
  4. sudo apt autoremove

เมื่อเสร็จแล้ว เราจะต้องมีแพ็คเกจต่อไปนี้สำหรับเว็บเซิร์ฟเวอร์และฐานข้อมูลของเรา:

Apache

sudo apt ติดตั้ง apache2 -y

PHP

sudo apt ติดตั้ง php

sudo apt ติดตั้ง phpMyAdmin -y

อย่าลืมตั้งรหัสผ่าน MySQL ที่ปลอดภัย เมื่อระบบขอตั้งรหัสผ่าน

MariaDB

sudo apt ติดตั้ง mariadb-server mariadb-client -y

sudo apt ติดตั้ง php-mysql -y

sudo systemctl รีสตาร์ท apache2.service

ขั้นตอนที่ 6: การติดตั้งไลบรารี Python

สำหรับแบ็กเอนด์ เราจำเป็นต้องมีไลบรารี่สำหรับ Python เราจะติดตั้งสิ่งเหล่านี้โดยใช้ pip3 เนื่องจากเราใช้ python3

pip3 ติดตั้ง mysql-connector-python

pip3 ติดตั้ง flask-socketio

pip3 ติดตั้ง flask-cors

pip3 ติดตั้ง gevent

pip3 ติดตั้ง gevent-websocket

sudo apt ติดตั้ง python3-mysql.connector -y

pip3 ติดตั้ง mfrc522 ! (เราต้องการสิ่งนี้เพื่อใช้ประโยชน์จากเครื่องสแกน RFID)

ขั้นตอนที่ 7: การเตรียม Visual Studio Code

สำหรับการรันโค้ด ฉันแนะนำให้ใช้ Visual Studio Code เพื่อเชื่อมต่อ Raspberry Pi ของคุณ ลิงค์ดาวน์โหลดเพื่อติดตั้ง VSC สามารถพบได้ที่นี่

หากคุณยังไม่ได้ติดตั้ง Remote Development โดยใช้ SSH คุณสามารถดูขั้นตอนในการดำเนินการนี้ได้ที่นี่

ขั้นตอนที่ 3: การสร้างฐานข้อมูล

การสร้างฐานข้อมูล
การสร้างฐานข้อมูล

เราจะจัดเก็บข้อมูลเซ็นเซอร์และข้อมูลผู้ใช้ทั้งหมดไว้ในฐานข้อมูล

ฐานข้อมูลของฉันประกอบด้วย 5 ตาราง:

อุปกรณ์

Table Device มี DeviceID ซึ่งอ้างอิงถึงตัวอุปกรณ์เอง DeviceName ให้ชื่ออุปกรณ์ ในกรณีนี้คือเซ็นเซอร์อัลตราโซนิก เซ็นเซอร์อุณหภูมิ … DeviceType ระบุประเภทของอุปกรณ์ (เซ็นเซอร์หรือแอคทูเอเตอร์)

ประวัติศาสตร์

ประวัติตารางประกอบด้วยประวัติเซ็นเซอร์ทั้งหมด พร้อมด้วยวันที่ (HistoryDate) ประวัติที่เพิ่มเข้ามาและคุณค่าของช่วงเวลาในประวัติศาสตร์ นอกจากนี้ยังมีกุญแจต่างประเทศสองดอก:

  • DeviceID เพื่อเชื่อมโยงบันทึกเฉพาะกับ Device
  • UserID เพื่อเชื่อมโยงผู้ใช้รายใดรายหนึ่งกับบันทึก (เนื่องจากเราใช้ RFID และเราต้องการเพิ่มบันทึกประวัติให้กับผู้ใช้เฉพาะรายหนึ่ง)

ผู้ใช้

Table User ใช้สำหรับสร้าง User Login System ด้วยเครื่องสแกน RFID ประกอบด้วยชื่อเล่น ชื่อ นามสกุล รหัสผ่าน และ RFID (นี่คือหมายเลข RFID ของแท็ก) ผู้ใช้ทุกคนเชื่อมโยงกับคอนเทนเนอร์ (ถังเก็บน้ำ) และถือ ContainerID เป็นคีย์ต่างประเทศ

คอนเทนเนอร์

Table Container ประกอบด้วยคอนเทนเนอร์ที่แตกต่างกันทั้งหมด มี ID, ContainerLocation (อาจเป็นองค์กร บ้าน หรืออะไรก็ได้) สุดท้ายมี MaxLevel ซึ่งหมายถึงปริมาณสูงสุดที่คอนเทนเนอร์มี

การตั้งค่า

การตั้งค่าตารางมี SettingsID และติดตาม DailyGoal ของผู้ใช้ทุกคน + วันที่ DailyGoal ถูกเพิ่มโดยผู้ใช้ สิ่งนี้อธิบายรหัสผู้ใช้รหัสต่างประเทศ

ดัมพ์ของฐานข้อมูลสามารถพบได้ในที่เก็บ GitHub ของฉันภายใต้ฐานข้อมูล

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

ไม่มีโครงการใดที่ไม่มีแบ็กเอนด์ที่ใช้งานได้

แบ็กเอนด์ประกอบด้วย 4 สิ่งที่แตกต่างกัน:

ผู้ช่วย

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

คลังเก็บ

ในโฟลเดอร์ repositories คุณจะพบไฟล์ Python 2 ไฟล์:

  • Database.py ซึ่งเป็นตัวช่วยในการดึงแถวออกจากฐานข้อมูลของคุณ ทำให้ง่ายต่อการดำเนินการและอ่านฐานข้อมูล
  • DataRepository.py ซึ่งมีการสืบค้น SQL ทั้งหมดที่ใช้ในรหัสหลัก (app.py) ใช้สำหรับรับ อัปเดต หรือลบข้อมูลออกจากฐานข้อมูล

app.py

นี่คือรหัสแบ็กเอนด์หลักของโครงการ มันทำการตั้งค่าโดยกำหนดพินและโหมดทั้งหมด และมีรหัสสำหรับการทำให้ปั๊มทำงาน รับอุณหภูมิ รับผู้ใช้ และอื่นๆ นอกจากนี้ยังมีเส้นทางที่ใช้ในการดึงข้อมูลจากฐานข้อมูลและ socketio.on ทั้งหมด สำหรับทุกหน้า HTML เป็น socketio.on ที่แตกต่างกันเพื่อให้แน่ใจว่าทุกฟังก์ชันทำงานในเวลาที่ถูกต้อง

config.py

เราเหลือไฟล์เดียว: config.py นี่คือไฟล์ที่มีตัวเลือกการกำหนดค่าเพื่อเชื่อมต่อกับฐานข้อมูลของคุณ อย่าลืมตั้งค่าข้อมูลรับรองฐานข้อมูลของคุณ

แบ็กเอนด์สามารถพบได้ในที่เก็บของฉันภายใต้แบ็กเอนด์

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

การตั้งค่าส่วนหน้า
การตั้งค่าส่วนหน้า
การตั้งค่าส่วนหน้า
การตั้งค่าส่วนหน้า

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

ในที่เก็บ GitHub ของฉัน คุณจะพบส่วนหน้าของฉันภายใต้รหัส > ส่วนหน้า สิ่งสำคัญคือคุณต้องวางสิ่งนี้ในโฟลเดอร์ /var/html ของคุณ Raspberry Pi เพื่อให้สามารถเข้าถึงได้จากเว็บเซิร์ฟเวอร์

ประกอบด้วยไฟล์ HTML สองสามไฟล์ ซึ่งนำไปสู่หน้าต่างๆ คุณจะพบ screen.css ของฉันพร้อมด้วย CSS ทั้งหมดที่คุณต้องการเพื่อให้ดูเหมือนโปรเจ็กต์ของฉัน สุดท้าย คุณจะมีไฟล์ JavaScript ที่แตกต่างกันภายใต้สคริปต์ สคริปต์เหล่านี้สื่อสารกับแบ็กเอนด์ของฉันเพื่อแสดงข้อมูลจากฐานข้อมูลหรือแบ็กเอนด์ของฉัน

แบ็กเอนด์สามารถพบได้ในที่เก็บของฉันภายใต้ส่วนหน้า

ขั้นตอนที่ 6: การสร้าง Casing

การสร้างปลอก
การสร้างปลอก
การสร้างปลอก
การสร้างปลอก
การสร้างปลอก
การสร้างปลอก

หากเรากำลังพูดถึงกรณีของฉัน มีสองส่วนหลัก:

ปลอกด้านนอก

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

ฉันได้แนบไฟล์ PDF พร้อมขนาดของเพลตทั้งหมดที่ใช้ในเคสเพื่อการวัดขนาดที่แน่นอนของสิ่งก่อสร้างของฉัน

ถังเก็บน้ำ

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

แนะนำ: