Სარჩევი:

წყლის ავტომატური გამანაწილებელი მოხმარების საჩვენებლად: 6 ნაბიჯი
წყლის ავტომატური გამანაწილებელი მოხმარების საჩვენებლად: 6 ნაბიჯი

ვიდეო: წყლის ავტომატური გამანაწილებელი მოხმარების საჩვენებლად: 6 ნაბიჯი

ვიდეო: წყლის ავტომატური გამანაწილებელი მოხმარების საჩვენებლად: 6 ნაბიჯი
ვიდეო: მულტიმეტრის გამოყენება! როგორ გავზომოთ ამპერი! 2024, ივლისი
Anonim
წყლის ავტომატური გამანაწილებელი მოხმარების დასადგენად
წყლის ავტომატური გამანაწილებელი მოხმარების დასადგენად
წყლის ავტომატური გამანაწილებელი მოხმარების თვალყურის დევნება
წყლის ავტომატური გამანაწილებელი მოხმარების თვალყურის დევნება

Გამარჯობა!

ორიოდე თვის წინ, ჩემს ოთახში ვიყავი და ვფიქრობდი იმაზე, თუ რა სახის პროექტის გაკეთება მინდოდა სასკოლო დავალებისთვის. მინდოდა ისეთი რამ გამეკეთებინა, რაც მომწონდა და მომავალში მომგებიანი იქნებოდა. მოულოდნელად დედაჩემი შემოვიდა ოთახში და დაიწყო წუწუნი, რომ არ სვამდა საკმარის წყალს. მაშინვე ნათლისღება მომივიდა. იდეა გამიჩნდა, რომ გამეკეთებინა ავტომატური წყლის გამანაწილებელი (როგორც კინოთეატრში), რომელიც თვალყურს ადევნებს თქვენს წყლის მოხმარებას ყოველდღიურად.

Raspberry Pi, რამდენიმე სენსორი, ტუმბო და მცირე ცოდნა, მე შევეცადე ეს რაც შეიძლება კარგი ყოფილიყო.

ყველა ნაბიჯის დასასრულს გექნებათ სამუშაო წყლის გამანაწილებელი, რომელიც ავსებს თქვენს წყლის ბოთლს და რომელიც აკავშირებს და ურთიერთქმედებს თქვენს ჟოლოს პითან. თქვენ არა მხოლოდ თქვენ შეძლებთ თვალყური ადევნოთ თქვენს წყლის მოხმარებას პროცენტის საფუძველზე, არამედ თქვენ გექნებათ შესაძლებლობა ნახოთ თქვენი წყლის კონტეინერის ტემპერატურა და წყლის დონე. დაბოლოს, თქვენ შეძლებთ შეამოწმოთ თქვენი სტატისტიკა. თუ ეს თქვენთვის საინტერესოა, აუცილებლად გადაამოწმეთ და თავად სცადეთ!

GitHub საცავი:

მარაგები

მიკროკონტროლერები

ჟოლო პი 4

სენსორები და მოდულები

მე გამოვიყენე 4 სენსორი:

2xHC-SR04 ულტრაბგერითი სენსორი

ულტრაბგერითი სენსორები ზომავს მანძილს ულტრაბგერითი ტალღების გამოყენებით. სენსორის თავი ასხივებს ულტრაბგერითი ტალღას და იღებს ტალღას, რომელიც აისახება სამიზნედან. ულტრაბგერითი სენსორები ზომავს მანძილს სამიზნემდე გაზომვისა და მიღებას შორის დროის გაზომვით. ორი მათგანი გამოვიყენე იმის შესამოწმებლად, არის თუ არა ბოთლი ახლომახლო და ავზში წყლის მანძილი გავზომე.

Მონაცემთა ფურცელი

1x DS18B20 ტემპერატურის სენსორი

DS18B20 არის 1 მავთულის პროგრამირებადი ტემპერატურის სენსორი მაქსიმალურად ინტეგრირებული. იგი ფართოდ გამოიყენება ტემპერატურის გასაზომად მძიმე გარემოში, როგორიცაა ქიმიური ხსნარები, ნაღმები ან ნიადაგი და ა.შ. მე გამოვიყენე წყლის ავზის წყლის ტემპერატურის გასაზომად.

Მონაცემთა ფურცელი

1x RC522 RFID მოდული

RC522 არის 13.56MHz RFID მოდული, რომელიც ემყარება MFRC522 კონტროლერს NXP ნახევარგამტარებიდან. მოდულს შეუძლია მხარი დაუჭიროს I2C, SPI და UART და ჩვეულებრივ გაიგზავნება RFID ბარათით და გასაღები. ის ჩვეულებრივ გამოიყენება დასწრების სისტემებში და სხვა პირების/ობიექტების იდენტიფიკაციის პროგრამებში. ამ პროექტში ის გამოიყენება იდენტიფიკაციის/შესვლის სისტემისთვის.

Მონაცემთა ფურცელი

და 2 აქტივატორი:

1x პერისტალტიკური ტუმბო 12-24V

მე გამოვიყენე პერისტალტიკური ტუმბო, რომ ავზიდან წყალი წყლის ბოთლამდე მივიყვანო. ტუმბოების უმეტესობა ძალიან ნელი იყო, ამიტომ მე 24V ვერსიაზე შევედი, რომელსაც ვამუშავებ 24V დენის ადაპტერით.

1x LCD ეკრანი

LCD გამოიყენება IP მისამართისა და მნიშვნელოვანი შეტყობინებების საჩვენებლად. თხევადკრისტალური დისპლეი (LCD) არის ბრტყელი პანელის ჩვენება ან სხვა ელექტრონულად მოდულირებული ოპტიკური მოწყობილობა, რომელიც იყენებს თხევადი კრისტალების სინათლის მოდულირების თვისებებს პოლარიზატორებთან ერთად.

Მონაცემთა ფურცელი

გარსაცმები

გარსაცმზე საუბრისას, მე გავაკეთე წვრილმანი სახლის საწყობიდან (ჩემს შემთხვევაში ბრიკო ბელგიაში). მე გამოვიყენე პლაივუდი, რომელიც დავჭრა მარჯვენა ზომაზე. მე ვისაუბრებ იმაზე, თუ როგორ გავაკეთე ჩემი საქმე შემდგომ ეტაპზე, მაგრამ აქ არის ის, რაც დაგჭირდებათ:

  • 3x პლაივუდის ფიცარი
  • 1x პატარა ძაბრი
  • 1x წყლის ავზი (თქვენ შეგიძლიათ აირჩიოთ რა თანხა გსურთ, მე 10 ლიტრზე გადავედი)
  • 1x წვეთოვანი უჯრა

თქვენ შეგიძლიათ იპოვოთ ყველა მასალა და ფასი თანდართულ BOM– ში.

ნაბიჯი 1: დააკავშირეთ ყველა ელექტრონიკა

ყველა ელექტრონიკის დაკავშირება
ყველა ელექტრონიკის დაკავშირება
ყველა ელექტრონიკის დაკავშირება
ყველა ელექტრონიკის დაკავშირება

ახლა, როდესაც ჩვენ შევაჯამეთ ყველა ელექტრონიკა, დროა დააკავშიროთ ისინი. მე გავაკეთე ორი ფრიცინგის სქემა, ერთი დაფა და ერთი სქემატური, რათა გაჩვენოთ როგორ და სად უნდა იყოს დაკავშირებული ყველა ელექტრონიკა. Fritzing– ის გადმოსაწერი ბმული შეგიძლიათ იხილოთ აქ: https://fritzing.org/download/. როგორც უკვე აღვნიშნე, მე გამოვიყენე Raspberry Pi და დავუკავშირე RFID სკანერი, ორი ულტრაბგერითი სენსორი, ერთი ტემპერატურის სენსორი, LCD და პერისტალტიკური ტუმბო წყლისთვის.

მე დავამატე ორი სქემა PDF– ში, თუ გსურთ უფრო ახლოს გაეცნოთ მას.

ნაბიჯი 2: ჟოლოს პიის დაყენება

ჩვენ გამოვიყენებთ ჩვენს Raspberry Pi– ს ყველაფრის გასაშვებად და გასაკონტროლებლად: backend, frontend და მონაცემთა ბაზა.

ჟოლო Pi ავტომატურად არ მუშაობს. ჩვენ მოგვიწევს რამდენიმე ნაბიჯის გავლა, რომ დავიწყოთ მისი გამოყენება.

ნაბიჯი 1: რასპბიანი

თუ თქვენ იყენებთ ახალ 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 "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

თქვენ უნდა გადატვირთოთ თქვენი Pi კავშირის დასამყარებლად. იმის შესამოწმებლად, მუშაობს თუ არა, შეგიძლიათ გამოიყენოთ ifconfig, რომ შეამოწმოთ არის თუ არა IP მისამართი.

ნაბიჯი 5: ვებ სერვერის და მონაცემთა ბაზის დაყენება

პირველ რიგში, უმჯობესია სისტემის განახლება და განახლება შემდეგი ბრძანებების თანმიმდევრობით:

  1. sudo apt dist-upgrade-ავტომატური ამოღება -y
  2. sudo apt განახლება
  3. sudo apt განახლება
  4. sudo apt ავტომატური გადაადგილება

ამის დასრულების შემდეგ, ჩვენ გვჭირდება შემდეგი პაკეტები ჩვენი ვებ სერვერისთვის და მონაცემთა ბაზისთვის:

აპაჩი

sudo apt დააინსტალირეთ apache2 -y

PHP

sudo apt დააინსტალირეთ php

sudo apt დააინსტალირეთ phpMyAdmin -y

არ დაგავიწყდეთ MySQL პაროლის დაყენება, როდესაც ის ითხოვს პაროლის დაყენებას.

მარია დბ

sudo apt დააინსტალირეთ mariadb-server mariadb-client -y

sudo apt დააინსტალირეთ php -mysql -y

sudo systemctl გადატვირთეთ apache2.service

ნაბიჯი 6: პითონის ბიბლიოთეკების დაყენება

უკანა მხარისთვის, ჩვენ გვჭირდება რამდენიმე ბიბლიოთეკა პითონისთვის. ჩვენ დავაყენებთ მათ pip3– ის გამოყენებით, რადგან ჩვენ ვიყენებთ python3– ს.

pip3 დააინსტალირეთ mysql-connector-python

pip3 დააინსტალირეთ flask-socketio

pip3 დააინსტალირეთ კოლბები

pip3 დააინსტალირეთ gevent

pip3 დააინსტალირეთ gevent-websocket

sudo apt დააინსტალირეთ python3 -mysql.connector -y

pip3 დააინსტალირეთ mfrc522! (ჩვენ დაგვჭირდება ეს RFID სკანერის გამოსაყენებლად)

ნაბიჯი 7: ვიზუალური სტუდიის კოდის მომზადება

კოდის გასაშვებად გირჩევთ გამოიყენოთ Visual Studio Code თქვენი Raspberry Pi– თან დასაკავშირებლად. VSC– ის ინსტალაციის გადმოსაწერი ბმული შეგიძლიათ იხილოთ აქ.

თუ ჯერ არ გაქვთ დაინსტალირებული SSH გამოყენებით დისტანციური განვითარება, თქვენ შეგიძლიათ იპოვოთ ნაბიჯები ამის გასაკეთებლად აქ.

ნაბიჯი 3: მონაცემთა ბაზის შექმნა

მონაცემთა ბაზის შექმნა
მონაცემთა ბაზის შექმნა

ჩვენ ვინახავთ ჩვენს სენსორულ მონაცემებს და მომხმარებლის მონაცემებს მონაცემთა ბაზაში.

ჩემი მონაცემთა ბაზა შედგება 5 ცხრილისგან:

მოწყობილობა

მაგიდის მოწყობილობას აქვს DeviceID, რომელიც მიუთითებს თავად მოწყობილობაზე. DeviceName აჩვენებს მოწყობილობის სახელს, ამ შემთხვევაში ულტრაბგერითი სენსორი, ტემპერატურის სენსორი… DeviceType აჩვენებს მოწყობილობის ტიპს (სენსორი ან გამაქტიურებელი).

ისტორია

ცხრილის ისტორია შეიცავს სენსორების მთელ ისტორიას, თარიღთან ერთად (HistoryDate) დაემატა ისტორია და ისტორიის მომენტის მნიშვნელობა. მას ასევე აქვს ორი საგარეო გასაღები:

  • DeviceID, კონკრეტული ჟურნალის მოწყობილობასთან დასაკავშირებლად
  • UserID, კონკრეტული მომხმარებლის ჟურნალთან დასაკავშირებლად (ეს იმიტომ ხდება, რომ ჩვენ ვიყენებთ RFID- ს და გვინდა ისტორიის ჟურნალი დავამატოთ ერთ კონკრეტულ მომხმარებელს)

მომხმარებელი

Table User გამოიყენება მომხმარებლის შესვლის სისტემის შესაქმნელად RFID სკანერით. იგი შედგება მეტსახელის, სახელის, გვარის, პაროლისა და RFID- ისგან (ეს არის ტეგის RFID ნომერი). ყველა მომხმარებელი უკავშირდება კონტეინერს (წყლის ავზს) და ასევე ატარებს ContainerID- ს, როგორც საგარეო გასაღებს.

კონტეინერი

მაგიდის კონტეინერი შედგება სხვადასხვა კონტეინერისგან. მას აქვს ID, ContainerLocation (ეს შეიძლება იყოს საწარმო, სახლი ან სხვა რამ). დაბოლოს, მას აქვს MaxLevel, რაც ნიშნავს კონტეინერის მაქსიმალურ მოცულობას.

პარამეტრები

მაგიდის პარამეტრებს აქვს SettingsID და აკონტროლებს თითოეული მომხმარებლის DailyGoal + თარიღს, როდესაც DailyGoal დაემატა მომხმარებლის მიერ. ეს განმარტავს User Key– ის საგარეო გასაღებს.

მონაცემთა ბაზის ნაგავსაყრელი შეგიძლიათ იხილოთ ჩემს GitHub საცავში, მონაცემთა ბაზაში.

ნაბიჯი 4: ბექენდის დაყენება

არ არსებობს პროექტი სამუშაო ბექენდის გარეშე.

უკანა ნაწილი შედგება 4 განსხვავებული ნივთისგან:

დამხმარეები

დამხმარეები ყველა კლასია, რომლებიც გამოიყენება სხვადასხვა სენსორებისა და აქტივატორებისთვის. არსებობს დამხმარე ტემპერატურის სენსორისთვის (DS18B20), ულტრაბგერითი სენსორებისთვის (HCSR05), რომ შეძლონ მანძილის გაზომვა და LCD– ს შეეძლოს ეკრანზე შეტყობინებების ჩაწერა.

საცავები

საცავების საქაღალდეში ნახავთ 2 პითონის ფაილს:

  • Database.py რომელიც დამხმარეა თქვენი მონაცემთა ბაზიდან რიგების ამოღების მიზნით. ეს აადვილებს მონაცემთა ბაზის შესრულებას და კითხვას.
  • DataRepository.py რომელიც შეიცავს ყველა SQL მოთხოვნას, რომლებიც გამოიყენება მთავარ კოდში (app.py). ისინი გამოიყენება მონაცემთა ბაზიდან მონაცემების მისაღებად, განახლებისთვის ან წაშლისთვის.

app.py

ეს არის პროექტის მთავარი საყრდენი კოდი. ის აყენებს დაყენებას ყველა ქინძისთავის და რეჟიმის განსაზღვრის გზით და შეიცავს კოდს ტუმბოს მუშაობისთვის, ტემპერატურის მისაღებად, მომხმარებლის მოსაპოვებლად და ასე შემდეგ. იგი ასევე შეიცავს მარშრუტებს, რომლებიც გამოიყენება მონაცემთა ბაზიდან და ყველა socketio.on– დან მონაცემების მოსაპოვებლად. თითოეული HTML გვერდისთვის არის განსხვავებული socketio.on, რათა დარწმუნდეთ, რომ ყველა ფუნქცია მუშაობს სწორ დროს.

config.py

ჩვენ გვაქვს ერთი ფაილი: config.py. ეს არის ფაილი კონფიგურაციის პარამეტრებით თქვენს მონაცემთა ბაზასთან დასაკავშირებლად. ნუ დაგავიწყდებათ, რომ დააყენოთ თქვენი მონაცემთა ბაზის რწმუნებათა სიგელები.

უკანა მხარე შეგიძლიათ იხილოთ ჩემს საცავში Backend– ის ქვეშ.

ნაბიჯი 5: ფრონტონის დაყენება

ფრონტენის დაყენება
ფრონტენის დაყენება
ფრონტონის დაყენება
ფრონტონის დაყენება

Frontend– ისთვის, მე დავიწყე დიზაინი, თუ როგორ უნდა გამოიყურებოდეს ჩემი ვებ სერვერი AdobeXD– ში. მე გამოვიყენე ფერები ჩემს ლოგოში, ეს არის ნარინჯისფერი და 2 განსხვავებული ელფერი ლურჯი. მე შევეცადე, რომ დიზაინი მაქსიმალურად მარტივი ყოფილიყო და შევქმენი წყლის წვეთი, რომელიც აჩვენებს პროცენტულ მაჩვენებელს, რამდენად მიაღწიეთ თქვენს დღის მიზანს.

ჩემს GitHub საცავში, თქვენ ნახავთ ჩემს Frontend– ს კოდი> Frontend. მნიშვნელოვანია, რომ ეს ჩასვათ თქვენს /var /html საქაღალდეში Raspberry Pi, რათა ის ხელმისაწვდომი იყოს ვებ სერვერისგან.

იგი შედგება რამოდენიმე HTML ფაილიდან, რომელიც იწვევს სხვადასხვა გვერდებს. თქვენ ასევე ნახავთ ჩემს screen.css– ს ყველა CSS– სთან ერთად, რაც დაგჭირდებათ იმისათვის, რომ ის გამოიყურებოდეს ჩემს პროექტად. დაბოლოს, თქვენ გექნებათ სხვადასხვა JavaScript ფაილი სკრიპტების ქვეშ. ეს სკრიპტები დაუკავშირდება ჩემს უკანა მხარეს, რათა აჩვენოს მონაცემები ჩემი მონაცემთა ბაზიდან ან უკანა ხაზიდან.

უკანა მხარე შეგიძლიათ იხილოთ ჩემს საცავში Frontend– ის ქვეშ.

ნაბიჯი 6: გარსაცმის შექმნა

გარსაცმის შექმნა
გარსაცმის შექმნა
გარსაცმის შექმნა
გარსაცმის შექმნა
გარსაცმის შექმნა
გარსაცმის შექმნა

თუ ჩვენ ვსაუბრობთ ჩემს საქმეზე, არის ორი ძირითადი ნაწილი:

გარეთა გარსაცმები

მე ავაშენე საქმე ნულიდან. მე გამოვიყენე პლაივუდის ფიცრები და ვნახე ისინი სწორი ზომებით. ყველა ფიცარი ერთმანეთთან ერთად დავაბრუნე და ჩავარჭე ხვრელები LCD– ისთვის, ღილაკი, ულტრაბგერითი სენსორი, რათა დადგინდეს არის თუ არა წყლის ბოთლი და წყლის გასანაწილებელი ძაბრი. მე დავყავი ჩემი საქმე სხვადასხვა ნაწილად, რათა წყალი და ელექტრონიკა გამიჯნულიყო და გამოვიყენე საკაბელო უჯრა კაბელების წყლის გაჟონვისგან დასაცავად. თანდართულ ვიდეოში თქვენ შეგიძლიათ ნახოთ ჩემი გარსაცმის უმეტესობა და როგორ გავაკეთე იგი. მე ასევე 3D დაბეჭდილი ღილაკი, რომელიც დამაგრებულია ჩვეულებრივ ღილაკზე. დაბოლოს, მე გამოვიყენე წვეთოვანი უჯრა, რათა დამეღწია ყველა დაღვრილი წყალი. მე ასევე გამოვიყენე რგოლები, რომ შევძლო გვერდითა პანელის გახსნა და დახურვა, რათა შევხედო ჩემს ელექტრონიკას. თქვენ ყოველთვის შეგიძლიათ გამოიყენოთ მეორადი დისპენსერი ან სხვა მასალებიც.

ჩემი აღნაგობის ზუსტი გაზომვისთვის, მე დავამატე PDF, რომელშიც მოთავსებულია ფირფიტების ყველა ზომა.

Წყლის ავზი

წყლის ავზი არ იყო ადვილი სამუშაო. მე მივიღე წყლის სატანკო, რომელზეც ხვრელი იყო ბოლოში, ამიტომ მომიწია მისი ლენტით გაჟონვის შესაჩერებლად. თქვენ დაგჭირდებათ ოთხი ხვრელი: ერთი ტემპერატურის სენსორისთვის, მეორე თქვენი ტუმბოს მილებისთვის. ერთი მილის სატანკო შევსებისათვის და ერთი ულტრაბგერითი სენსორისთვის. ამ უკანასკნელისთვის, მე 3D დაბეჭდილი მაქვს საქმე, რომელიც შეგიძლიათ ნახოთ აქ. ეს სენსორს უფრო მეტ დაცვას აძლევს წყლისგან. შემდეგ მე ავხსენი მართკუთხედი ავზის ზედა ნაწილში, სენსორის დასაყენებლად.

გირჩევთ: