Სარჩევი:

უკონტაქტო წყლის შადრევანი: 9 ნაბიჯი (სურათებით)
უკონტაქტო წყლის შადრევანი: 9 ნაბიჯი (სურათებით)

ვიდეო: უკონტაქტო წყლის შადრევანი: 9 ნაბიჯი (სურათებით)

ვიდეო: უკონტაქტო წყლის შადრევანი: 9 ნაბიჯი (სურათებით)
ვიდეო: What to Know Know Before You Go: London 2024, ნოემბერი
Anonim
უკონტაქტო წყლის შადრევანი
უკონტაქტო წყლის შადრევანი

MCT– ის სტუდენტობის პირველი წლის ბოლოს მე დამავალეს შემექმნა პროექტი, რომელიც შეიცავდა ყველა იმ უნარ -ჩვევას, რაც მე ავიღე კურსებიდან მთელი წლის განმავლობაში.

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

ეს პროექტი იყენებს დისტანციის სენსორს იმის დასადგენად, არის თუ არა ჭიქა ან ჭიქა მოთავსებული წყლის გამოშვების ქვეშ, შადრევანი შემდეგ გააგრძელებს წყლის გამომუშავებას 60 წამის განმავლობაში (100 მლ / წთ). ეს უფრო თანმიმდევრული გახდება, რადგან ჭიქის ამოღების დადგენა აღმოჩნდა ძალიან რთული/ნელი ამოცანა, რის გამოც ტაიმერი დადგა. მას შემდეგ, რაც თქვენი ჭიქა 100 მლ წყლით აივსება, შეგიძლიათ დაელოდოთ 5 წამს და თუ ჭიქა ჯერ კიდევ მანძილის სენსორის წინ არის, ის სხვა დროს შეივსება (ეს ნიშნავს იმას, რომ ორი განსხვავებული შევსებას შორის ასევე არის 5 წამიანი შესვენება. ნივთები).

მარაგები

კომპონენტები

- 1x RaspberryPi (მე გამოვიყენე მე -4 ვერსია, მაგრამ ძველი ვერსიებიც ასევე შეიძლება მუშაობდეს)- 1x S8050 ტრანზისტორი ან 1x PN2222 ტრანზისტორი შეიძლება ასევე მუშაობდეს- 1x ფოტორეზისტორი- 1x HC-SR04 (ულტრაბგერითი დისტანციის სენსორი)- 1x RFID-RC522- 3x განსხვავებული ფერები LED- ები (ლურჯი, ყვითელი, წითელი)- 1x LCD1602- 1x აქტიური ბუზერი- 1x PCF8574- 1x MCP3008- 1x წყლის ტუმბო (გამოიყენებოდა 12v პერისტალტიკური ტუმბო, ამ ერთეულის ბმული)

- 1x DC დენის წყარო (12v, 600mAh)- 1x დენის აგური 3 ლაქით- 3x breadboard (თქვენ ალბათ ნაკლებად გამოიყენებთ)- T-cobbler for RaspberryPi GPIO pin- T-cobbler cable (pi and cobbler შორის დასაკავშირებლად)

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

- საბურღი შემდეგი საბურღი ნაჭრებით:

- 4 მმ (ხრახნებისთვის ხვრელების წინასწარ გაბურღვისთვის) - 15 მმ (მანძილის სენსორისთვის ხვრელების გაბურღვისთვის)

- ნებისმიერი screwdriver- 30 ხრახნი 45 მმ სიგრძის- 6 ხრახნი 20 მმ- 2 დამოკიდებული კარისთვის- MDF ფირფიტა დაახლოებით 130 სმ 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 ამ ფაილის ბოლოს, რათა დავრწმუნდეთ, რომ ჩვენ შეგვიძლია დავუკავშირდეთ ჩვენს მოწყობილობას ethernet– ით (დარწმუნდით, რომ თქვენ არ დაამატებთ ENTERS თქვენი ფაილის ბოლოს, წინააღმდეგ შემთხვევაში პრობლემები შეგექმნებათ).

ახლა თქვენ შეგიძლიათ განათავსოთ თქვენი SDCARD თქვენს RaspberryPi– ში და ჩატვირთოთ იგი, დაუკავშიროთ Pi თქვენს კომპიუტერს და გამოიყენოთ Putty თქვენი Pi– ს SSH– ზე დასაკავშირებლად. მე ვიყენებ შემდეგ ბრძანებას ჩემს Pi– ს დასაკავშირებლად ნაცვლად Putty– ის გამოყენების. "ssh [email protected]" ეს შეიძლება ამოიწურა, ასე რომ იყავით მომთმენი და დაელოდეთ Pi- ს ჩატვირთვას. პაროლის მოთხოვნისთანავე ჩვენ შეავსებთ "ჟოლოს" ნაგულისხმევ პაროლს. დარწმუნდით, რომ შეცვალეთ ეს პაროლი შესვლის შემდეგ, რათა თავიდან აიცილოთ ვინმე ცუდი განზრახვით თქვენს Raspberry Pi– ზე წვდომისგან.

ჩვენ ახლა დავაკონფიგურირებთ ჩვენს Pi- ს ჩვენი კოდის საჭირო ფუნქციონირებისათვის. გამოიყენეთ "sudo raspi-config" კონფიგურაციის მენიუს გასახსნელად და აქ ჩვენ გადავალთ ინტერფეისის პარამეტრებზე.

აქ ჩვენ შევცვლით შემდეგ ვარიანტებს:- SPI-I2C

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

პაკეტები: (გაუშვით ბრძანებები იმ თანმიმდევრობით, როგორც აქ არის მითითებული)

ქვემოთ მოცემულია უახლესი განახლებები ჩვენი Pi- sudo apt განახლების && apt განახლებისთვის -y

დააინსტალირეთ ჩვენი MySQL სერვერი და webserver- sudo apt install mariadb-server apache2

მე გამოვიყენებ MySQL Workbench– ს მონაცემთა ბაზის დასაყენებლად ამ სახელმძღვანელოში, თუ თქვენ არ იყენებთ ამას და უპირატესობას ანიჭებთ phpmyadmin– ს შეგიძლიათ დააინსტალიროთ შემდეგი ბრძანებით, თქვენ თავისუფლად შეგიძლიათ გამოიყენოთ ნებისმიერი სხვა MySQL კლიენტი, რამდენადაც თქვენ შემიძლია მონაცემთა ბაზის სწორად იმპორტი. sudo apt install phpmyadmin

ყოველივე ზემოთქმულის დასრულების შემდეგ, ჩვენ უნდა შევქმნათ მომხმარებელი ჩვენი მონაცემთა ბაზისთვის. გამოიყენეთ "sudo mysql -u root" თქვენს MySQL სერვერზე შესასვლელად, აქ ჩვენ შევქმნით მომხმარებელს db_admin შესაბამისი პაროლით, შეინახეთ ეს პაროლი მითითებულია სადღაც მოგვიანებით ინსტრუქციებში. გაააქტიურეთ ყველა პრივილეგია *. * "db_admin"@"%" IDENTIFIED by BY "yourPasswordHere" GRANT OPTION with;

გამოიყენეთ "\ q" ბრძანება MySQL ტერმინალიდან გასასვლელად.

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

sudo pip3 დააინსტალირეთ Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

ასევე შემდეგი MySQL დაკავშირება პითონის პაკეტებთან, რათა დააინსტალიროთ python3 -mysql.connector -y

თუ ყველაფერი კარგად იყო, ახლა შეგიძლიათ ეწვიოთ თქვენს Pi ვებ ბრაუზერს შემდეგი მისამართით

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

ბექენდის დაყენება
ბექენდის დაყენება

აქ მე ვაპირებ აგიხსნათ, თუ როგორ შეგიძლიათ დააყენოთ უკანა მხარე საკუთარ თავს, ჯერ გადმოიწეროთ rar ფაილი ქვემოდან, გააუქმეთ იგი დროებით დირექტორიაში. დაუკავშირდით თქვენს RaspberryPi– ს FileZilla– ით ან WinSCP– ით შემდეგი სერთიფიკატებით:

IP: 169.254.10.1 მომხმარებელი: piPassword: ჟოლო (თუ პაროლი შეცვალეთ გააკეთეთ აქაც)

ამის შემდეგ შეგიძლიათ გააგრძელოთ ფაილების გადატანა თქვენს მიერ არარედიფიცირებულ ნებისმიერ დირექტორიაში, 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/https://127.0.0.1:5000/api/

მაგალითისთვის შეგიძლიათ გადახედოთ თანდართულ სურათს.

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

ჩვენი ფაილების გადაცემამდე, ჩვენ უნდა გავაკეთოთ რაღაც, სანამ ჩვენ დავიწყებთ ჩვენი frontend ფაილების გადაცემას. გახსენით თქვენი ბრძანების სტრიქონი SSH კავშირით, რომელიც ადრე გააკეთეთ და გამოიყენეთ ქვემოთ მოყვანილი ბრძანება ჩვენი RaspberryPi- ის ძირითად მომხმარებელზე გადასასვლელად: "sudo su -"

ამის შემდეგ ჩვენ შეგვიძლია შეცვალოთ ჩვენი root მომხმარებლის პაროლი შემდეგი ბრძანებით: "passwd" ეს მოგთხოვთ შეიყვანოთ ახალი პაროლი, ამის გაკეთების შემდეგ შეგიძლიათ დაუბრუნდეთ თქვენს FTP პროგრამას და შეხვიდეთ თქვენი root სერთიფიკატებით:

IP: 169.254.10.1 მომხმარებელი: root პაროლი:

გადმოწერეთ rar ფაილი ქვემოდან და გააუქმეთ იგი დროებით საქაღალდეში, შეგიძლიათ გადაიტანოთ ეს ფაილები თქვენს RaspberryPi– ში შემდეგ დირექტორიაში/var/www/html/, მას შემდეგ რაც დაასრულებთ, შეგიძლიათ ეწვიოთ frontend– ს http:/ /169.254.10.1, თქვენ ჯერ არ შეგიძლიათ ინტერაქცია, რადგან უკანა ნაწილი ჯერ არ მუშაობს, მე მოგვიანებით გაჩვენებთ ამ გზამკვლევს როგორ გავაკეთოთ ეს.

ნაბიჯი 5: ჩვენი პროექტის მონაცემთა ბაზის იმპორტი

ჩვენი პროექტის მონაცემთა ბაზის იმპორტი
ჩვენი პროექტის მონაცემთა ბაზის იმპორტი
ჩვენი პროექტის მონაცემთა ბაზის იმპორტი
ჩვენი პროექტის მონაცემთა ბაზის იმპორტი

გახსენით თქვენი საყვარელი MySQL სერვერის მენეჯმენტის პროგრამა და დაუკავშირდით თქვენს Raspberry Pi სერთიფიკატებს, რომლებიც ჩვენ შევქმენით მე –2 ნაბიჯში.

ჩამოტვირთეთ მონაცემთა ბაზის ნაგავსაყრელი ქვემოდან და შემოიტანეთ როგორც ჩვეულებრივ, MySQL workbench თქვენ გადადით ფაილზე> გახსენით SQL სკრიპტი და შეარჩიეთ გადმოწერილი მონაცემთა ბაზა. შემდეგ დააჭირეთ CTRL + SHIFT + ENTER და SQL სკრიპტი უნდა გაუშვათ და სტრუქტურა მონაცემთა ბაზისთვის უნდა შეიქმნას.

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

ნაბიჯი 6: დაიწყეთ ჩვენი პროექტი

ჩვენი პროექტის დაწყება
ჩვენი პროექტის დაწყება
ჩვენი პროექტის დაწყება
ჩვენი პროექტის დაწყება

სანამ ჩვენ დავიწყებთ ჩვენს პროექტს, ჩვენ უნდა შევცვალოთ მონაცემთა ბაზის რწმუნებათა სიგელები config.py ფაილში, თუ თქვენ მიჰყევით ინსტრუქციას ზუსტად ისე, როგორც ეს არის მითითებული ამ სახელმძღვანელოში, მაშინ თქვენ ნახავთ მათ ქვემოთ /home/pi/Documents/Backend/src/config.py აქ თქვენ უნდა შეცვალოთ db_config ცვლადის რწმუნებათა სიგელები, რათა ემთხვეოდეს ჩვენს მონაცემთა ბაზისთვის ადრე შექმნილ მონაცემებს. მე დავამატე მაგალითი იმისა, რასაც თქვენ იხილავთ ამ ფაილში ქვემოთ.

ამის შემდეგ თქვენ დავამატებთ.მომსახურების ფაილს, ეს ფაილი დარწმუნდება, რომ ჩვენი პროექტი იწყება RaspberryPi– ს დაწყებისთანავე, დარწმუნდით, რომ თქვენ სათანადოდ შეცვლით დირექტორიას, სადაც დააინსტალირეთ უკანა ფაილები. გამოიყენეთ შემდეგი ბრძანება სერვისის ფაილის შესაქმნელად: sudo nano /etc/systemd/system/dispenser.service ეს შექმნის მომსახურების ფაილს და დააკოპირებს ჩასვით ქვემოთ მოყვანილი კოდი ამ ფაილში.

[ერთეული] აღწერა = წყლის გამანაწილებელი შემდეგ = mysql.service

[სერვისი] ტიპი = მარტივი გადატვირთვა = ყოველთვის გადატვირთვა = 1 მომხმარებელი = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[დააინსტალირეთ] WantedBy = multi-user.target

შეცვალეთ ხაზი, სადაც ნათქვამია /home/pi/Documents/Backend/index.py სადაც დააინსტალირეთ თქვენი უკანა ფაილები, თუ ამას სწორად არ გააკეთებთ პროექტი არ დაიწყება სწორად! ქვემოთ დავამატებ მაგალითის ფაილს.

მას შემდეგ რაც თქვენ გააკეთებთ ამას და გამოხვალთ ტექსტური რედაქტორიდან, ჩვენ შეგვიძლია გავაქტიუროთ სერვისი შემდეგი ბრძანებებით:

და როგორც დამატებითი ჩვენ შეგვიძლია გაუშვათ: sudo systemctl სტატუსის გამანაწილებელი ეს აჩვენებს ინფორმაციას ჩვენი სერვისის გარშემო, აქტიურია თუ არა,…

ნაბიჯი 7: საქმე

Იმ შემთხვევაში
Იმ შემთხვევაში
Იმ შემთხვევაში
Იმ შემთხვევაში
Იმ შემთხვევაში
Იმ შემთხვევაში
Იმ შემთხვევაში
Იმ შემთხვევაში

გილოცავთ, ჩვენ თითქმის იქ ვართ, მე დავამატებ სურათებს, რომლებიც ზუსტად აჩვენებს იმ ზომებს, რაც მე გამოვიყენე ჩემი პროექტისთვის, მე გამოვიყენე MDF ფირფიტები 18 მმ სისქით, თქვენ შეგიძლიათ სურვილისამებრ გამოიყენოთ სხვა სისქე. ჩემი გარსაცმები შეიძლება გამოყენებულ იქნას როგორც სახელმძღვანელო თქვენი დიზაინის შესაქმნელად, ან შეგიძლიათ ხელახლა შექმნათ ის, რაც მე გავაკეთე. (თუ თქვენ იყენებთ MDF- ის სხვა სისქეს, ჩემი ნახატები აღარ მოგცემთ საშუალებას შექმნათ ჩემი დიზაინი, დარწმუნდით, რომ მოერგეთ მას!) მე გავაკეთე პანელები:- 2 პანელი 32 სმ 42 სმ (გვერდითი პანელები)- 1 პანელი 24 სმ. 32 სმ.

ნაბიჯი 8: აღფრთოვანებული იყავით საბოლოო პროდუქტით

აღფრთოვანებული იყავით საბოლოო პროდუქტით
აღფრთოვანებული იყავით საბოლოო პროდუქტით
აღფრთოვანებული იყავით საბოლოო პროდუქტით
აღფრთოვანებული იყავით საბოლოო პროდუქტით

თქვენ მიაღწიეთ დასასრულს და უკვე იმედია მოახერხეთ რომ ყველაფერი რეალობად აქციოთ. თუ თქვენ მხოლოდ გამვლელი კითხულობთ, ასევე მივესალმები, მადლობას გიხდით ბოლო ნაბიჯამდე კითხვისთვის!

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

ნაბიჯი 9: პრობლემები

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

უკანა კოდის ბაზა არის სტრუქტურირებული ისე, რომ ოსტატ მონათან ურთიერთობა სრულყოფილად შეიძლება იქნეს გაკეთებული, სადაც ერთი შადრევანი იმოქმედებს როგორც მთავარი ფრონტონდი და ყველა სხვა შადრევანი მონაცემებს და ცვლილებებს შეუქმნის ბატონის REST api. ასევე კოდში არის API ჟეტონის სისტემის ნარჩენები, რადგან ეს იყო განზრახული განხორციელება, მაგრამ მოგვიანებით შემცირდა დროის შეზღუდვების გამო.

მე ავტვირთე ჩემი კოდი ჩემს Gitlab სერვერზე და იქ შეგიძლიათ გადახედოთ კოდს მთლიანად:

გირჩევთ: