Talaan ng mga Nilalaman:

Walang Pakikipag-ugnay na Tubig na Tubig: 9 Mga Hakbang (na may Mga Larawan)
Walang Pakikipag-ugnay na Tubig na Tubig: 9 Mga Hakbang (na may Mga Larawan)

Video: Walang Pakikipag-ugnay na Tubig na Tubig: 9 Mga Hakbang (na may Mga Larawan)

Video: Walang Pakikipag-ugnay na Tubig na Tubig: 9 Mga Hakbang (na may Mga Larawan)
Video: Pagganyak na Gawain para sa Demo Teaching 2024, Nobyembre
Anonim
Walang contact na Water Fountain
Walang contact na Water Fountain

Para sa pagtatapos ng aking unang taon bilang isang mag-aaral ng MCT ay inatasan akong gumawa ng isang proyekto na naglalaman ng lahat ng mga kasanayang nakuha ko mula sa mga kurso sa buong taon.

Naghahanap ako ng isang proyekto na susuriin ang lahat ng mga kinakailangan na itinakda ng aking mga guro at sa parehong oras ay magiging masaya para sa akin na gawin. Kapag naghahanap para sa isang paksa hindi ko maiwasang maging inspirasyon ng Covid-19 (Tama ito bago ito nagpunta sa isang malawak na pagsiklab sa buong mundo.) Pinili ko para sa isang contact na mas mababa ang fountain / dispenser ng tubig, dahil mag-aalok ito para sa isang paraan ng inuming tubig nang hindi hinahawakan ang ilang mga pindutan bago lumabas ang tubig.

Gumagamit ang proyektong ito ng isang distansya sensor upang makita kung ang isang tasa o baso ay inilagay sa ilalim ng output ng tubig, ang fountain ay magpapatuloy sa paglabas ng tubig sa loob ng 60 segundo (100ml / minuto). Ito ay upang gawing mas pare-pareho ito dahil ang pagtuklas kung ang baso ay nakuha ay napatunayan na napakahirap / mabagal ng isang gawain na kung bakit inilagay ang isang timer sa lugar. Matapos mapuno ang iyong baso ng 100ml na tubig maaari kang maghintay ng 5 segundo at kung ang baso ay nasa harap pa rin ng distansya sensor ay magpapatuloy na punan ang isa pang oras (nangangahulugan ito na mayroon ding timeout na 5 segundo sa pagitan ng pagpuno ng dalawang magkakaibang item)

Mga gamit

Mga Bahagi

- 1x RaspberryPi (Ginamit ko ang ika-4 na bersyon ngunit maaaring gumana rin ang mga mas lumang bersyon) - Maaaring gumana rin ang 1x S8050 transistor o 1x PN2222 transistor- 1x Photoresistor- 1x HC-SR04 (Ultrasonic Distance Sensor) - 1x RFID-RC522- 3x Iba't ibang mga kulay na LED (asul, dilaw, pula) - 1x LCD1602- 1x Active Buzzer- 1x PCF8574- 1x MCP3008- 1x Water Pump (Isang 12v peristaltic pump ang ginamit, i-link ang item na ito)

- 1x DC Power supply (12v, 600mAh) - 1x power brick na may 3 spot- 3x breadboard (maaari kang gumamit ng mas kaunti) - T-cobbler para sa mga RaspberryPi GPIO pin- T-cobbler cable (para sa pagkonekta sa pagitan ng pi at cobbler)

Ginamit ang mga materyales at kagamitan

- Isang drill na may mga sumusunod na drill bit:

- 4mm (sa mga pre-drill hole para sa mga tornilyo) - 15mm (upang mag-drill ng mga butas para sa distansya sensor)

- Anumang distornilyador- 30 turnilyo ng 45mm haba- 6 na turnilyo ng 20mm- 2 bisagra para sa pintuan- Isang plato ng MDF na humigit-kumulang 130cm ng 80cm- Isang pares ng mga file

Hakbang 1: Pag-iipon ng Circuit

Pag-iipon ng Circuit
Pag-iipon ng Circuit
Pag-iipon ng Circuit
Pag-iipon ng Circuit
Pag-iipon ng Circuit
Pag-iipon ng Circuit

Para sa circuit mayroon kaming 2 sensor, distansya sensor at isang photoresistor. Ginagamit ang distansya sensor upang matukoy kung ang isang tasa ay inilagay sa saklaw ng fountain ng tubig at opsyonal na nagdagdag ako ng isang photoresistor, ang isang ito ay ginagamit upang makita kung ang pambalot ay binuksan ng sinumang hindi dapat buksan ito. Sa itaas nito ay mayroon kaming isang RFID reader maaari itong magamit upang patunayan ang isang mekaniko na kailangang buksan ang kaso upang muling mapunan ang reservoir ng tubig o para sa ilang ibang isyu sa makina.

Para sa mga aktibong elemento mayroon kaming LCD1602, aktibong buzzer at isang peristaltic pump, ginagamit ang LCD upang ipakita ang katayuan tulad ng kung bukas ang kaso o tumatakbo ang bomba pati na rin ang IP address ng aparato ay ipapakita, ang buzzer ay Ginagawa upang makagawa ng isang nakakaalarma na tunog kapag ang kaso ay binuksan nang walang taong nagpapahintulot dito.

Naidagdag ko ang paningin ng pisara at eskematiko ng circuit sa ibaba.

Hakbang 2: Pagse-set up ng aming RaspberryPi

Upang ma-set up ang aming RaspberryPi, mai-download namin ang software ng imaging mula sa site ng Raspberry, sa pamamagitan nito maaari mong i-download ang bersyon ng Raspbian na gusto mo at i-image ang iyong SDCARD para sa iyo. Matapos magawa ang tool na ito sa trabaho nito maaari mong buksan ang SDCARD sa Windows Explorer, makikita mo ang boot na pagkahati ng iyong RaspberryPi. Dito mahahanap natin ang isang file na tinatawag na cmdline.txt (huwag buksan ang file na ito sa notepad, buksan ito sa Notepad ++ o anumang iba pang IDE). Kami ay magdagdag ng ip = 169.254.10.1 sa dulo ng file na ito upang matiyak na maaari kaming kumonekta sa aming aparato sa ibabaw ng ethernet (tiyakin na hindi ka magdagdag ng anumang ENTERS sa dulo ng iyong file o magkakaproblema ka).

Ngayon ay maaari mong ilagay ang iyong SDCARD sa iyong RaspberryPi at i-boot ito, ikonekta ang Pi sa iyong computer at gamitin ang Putty upang kumonekta sa iyong Pi sa SSH. Ginagamit ko ang sumusunod na utos upang kumonekta sa aking Pi sa halip na gumamit ng Putty. "ssh [email protected]" maaari itong mag-timeout, kaya maging mapagpasensya at hintaying mag-boot up ang Pi. Kapag na-prompt para sa isang password punan namin ang default na password ng "raspberry". Tiyaking baguhin ang password na ito pagkatapos ng pag-log in upang maiwasan ang sinumang may masamang hangarin na ma-access ang iyong Raspberry Pi.

I-configure namin ngayon ang aming Pi upang maibigay ang kinakailangang pag-andar para sa aming code. Gumamit ng "sudo raspi-config" upang buksan ang menu ng pagsasaayos at dito pupunta kami sa Mga Pagpipilian sa Interfacing.

Sa ilalim dito ay i-toggle namin ang mga sumusunod na pagpipilian ON: - SPI- I2C

Sundin ang patnubay na ito upang mai-set up ang isang koneksyon sa wireless internet sa iyong Pi, pagkatapos mong matagumpay itong nagawa maaari kaming makakuha ng pag-install ng aming mga kinakailangang package.

Mga Pakete: (patakbuhin ang mga utos sa pagkakasunud-sunod habang nabanggit dito)

Ang mga sumusunod upang makuha ang pinakabagong mga update para sa aming aparatong apt na Pi- sudo && apt na pag-upgrade -y

I-install ang aming MySQL server at webserver- sudo apt i-install ang mariadb-server apache2

Gagamitin ko ang MySQL Workbench upang i-setup ang database sa paglaon sa gabay na ito, kung hindi mo ito gagamitin at ginusto ang phpmyadmin maaari mo itong mai-install sa sumusunod na utos, malaya kang gumamit ng anumang iba pang MySQL Client pati na rin hangga't ikaw Nagawang mai-import nang maayos ang database.- sudo apt install phpmyadmin

Matapos mong magawa ang lahat sa itaas kailangan namin upang lumikha ng isang gumagamit para sa aming database. Gumamit ng "sudo MySQL -U root" upang mag-log in sa iyong MySQL server, dito lilikha kami ng isang gumagamit na tinatawag na db_admin kasama ang kani-kanilang password, panatilihin ang password na ito ay nabanggit sa isang lugar para sa ibang pagkakataon sa mga tagubilin. GRANT ANG LAHAT NG PRIVILEGES ON *. * SA "db_admin" @ "%" KINILALA NG "yourPasswordHere" MAY PUMILI NG PAPAGKABAGO;

Gamitin ang utos na "\ q" upang lumabas sa MySQL terminal.

Mga Pakete ng Python: Kailangan pa rin naming mag-install ng ilang mga pakete ng sawa bago magpatuloy, patakbuhin ang utos sa ibaba upang matiyak na ang lahat ay naroroon para sa isang walang kamali-mali na karanasan.

sudo pip3 i-install ang Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

Pati na rin ang mga sumusunod na MySQL ikonekta ang python packagesudo apt i-install ang python3-mysql.connector -y

Kung naging tama ang lahat maaari mo na ngayong bisitahin ang iyong Pi sa iyong webbrowser gamit ang sumusunod na address na

Hakbang 3: Pag-set up ng Backend

Pag-set up ng Backend
Pag-set up ng Backend

Dito ko ipapaliwanag kung paano mo mai-set up ang backend sa iyong sarili, i-download muna ang rar file mula sa ibaba, i-unrar ito sa ilang pansamantalang direktoryo. Kumonekta sa iyong RaspberryPi sa FileZilla o WinSCP na may mga sumusunod na kredensyal:

IP: 169.254.10.1 Gumagamit: piPassword: raspberry (kung binago mo ang password gawin mo rin ito dito)

Pagkatapos ay maaari kang magpatuloy upang ilipat ang mga file na na-unrarar mo sa anumang direktoryo na nais mo sa direktoryo sa bahay ng pi gumagamit. Para sa kapakanan ng pagiging simple ipalagay namin sa setup na ito na na-upload namin ang lahat ng aming mga file sa ilalim ng direktoryo ng dokumento.

Panatilihing bukas ang iyong programa ng FTP para sa susunod na hakbang!

Ngayon buksan muli ang iyong prompt ng utos sa iyong koneksyon sa SSH dahil kakailanganin naming gumawa ng ilang mga pagbabago sa webserver upang ang frontend ay maaaring makipag-usap sa backend. Bubuksan namin ang default na Apache2 config file at baguhin ito nang bahagya: sudo nano /etc/apache2/site-available/000-default.conf

Idagdag ang mga sumusunod na linya sa ibaba ng DocumentRoot sa config file na binuksan lamang namin: ProxyPass / api / https://127.0.0.1onui000/api/ProxyPassReverse / api /

Maaari kang tumingin sa imaheng nakalakip bilang isang halimbawa.

Hakbang 4: Pag-set up ng Frontend

Bago ilipat ang aming mga file kailangan naming gumawa ng isang bagay bago namin masimulan ang paglilipat ng aming mga file sa harap. Buksan ang iyong command prompt gamit ang koneksyon ng SSH na ginawa mo dati at gamitin ang utos sa ibaba upang lumipat sa root user ng aming RaspberryPi: "sudo su -"

Pagkatapos nito maaari naming baguhin ang password ng aming root user gamit ang sumusunod na utos: "passwd" Hihilingin sa iyo na mag-input ng isang bagong password, pagkatapos mong magawa ito maaari kang bumalik sa iyong programa sa FTP at mag-login gamit ang iyong mga root kredensyal:

IP: 169.254.10.1 Gumagamit: rootPassword:

I-download ang rar file mula sa ibaba at alisin ito sa isang pansamantalang folder, maaari mong ilipat ang mga file na ito sa iyong RaspberryPi sa sumusunod na direktoryo / var / www / html /, pagkatapos mong magawa na maaari mong bisitahin ang frontend sa http: / /169.254.10.1, hindi ka pa maaaring makipag-ugnay dahil ang backend ay hindi pa tumatakbo, ipapakita ko sa iyo sa paglaon sa gabay na ito kung paano ito gawin.

Hakbang 5: Pag-import ng Database para sa Aming Project

Pag-import ng Database para sa Aming Project
Pag-import ng Database para sa Aming Project
Pag-import ng Database para sa Aming Project
Pag-import ng Database para sa Aming Project

Buksan ang iyong paboritong programa ng pamamahala ng server ng MySQL at kumonekta sa iyong Raspberry Pi gamit ang mga kredensyal na nilikha namin sa Hakbang 2.

I-download ang database dump mula sa ibaba at i-import ito tulad ng dati mong ginagawa, MySQL workbench pupunta ka sa File> Open SQL Script at piliin ang database dump na na-download mo. Pagkatapos ay pindutin ang CTRL + SHIFT + ENTER at ang SQL script ay dapat na patakbuhin at ang istraktura para sa database ay dapat nilikha.

Idinagdag ko ang mga kredensyal na ginamit ko para sa aking RaspberryPi bilang isang halimbawa sa ibaba pati na rin maraming mga larawan ng istraktura ng Database, maaari mo itong tingnan at subukan at makakuha ng isang pangkalahatang ideya kung paano gumagana ang lahat.

Hakbang 6: Pagsisimula ng Aming Project

Pagsisimula ng aming Project
Pagsisimula ng aming Project
Pagsisimula ng aming Project
Pagsisimula ng aming Project

Bago namin masimulan ang aming proyekto kailangan naming baguhin ang mga kredensyal ng database sa config.py file, kung sinunod mo ang mga tagubilin nang eksakto tulad ng sinabi ng gabay na ito pagkatapos ay mahahanap mo ang mga ito sa ilalim ng /home/pi/Documents/Backend/src/config.py dito kailangan mong baguhin ang mga kredensyal ng variable ng db_config upang tumugma sa mga nilikha namin nang mas maaga para sa aming database. Nagdagdag ako ng isang halimbawa ng kung ano ang makikita mo sa file na ito sa ibaba.

Pagkatapos nito ikaw ay magdagdag kami ng isang.service file na file na ito ay tiyakin na magsisimula ang aming proyekto kapag nagsimula ang RaspberryPi, tiyaking binago mo ang direktoryo nang naaangkop kung saan mo na-install ang mga backend file. Gamitin ang sumusunod na utos upang likhain ang file ng serbisyo: sudo nano /etc/systemd/system/dispenser.serviceLilikha ito ng isang file ng serbisyo at kopyahin ang idikit sa ibaba ang code sa file na ito.

[Yunit] Paglalarawan = Water DispenserAfter = mysql.service

[Serbisyo] Uri = simpleRestart = lagingRestartSec = 1User = piExecStart = / usr / bin / python3 /home/pi/Documents/Backend/index.py

[I-install] WantedBy = multi-user.target

Baguhin ang linya kung saan sinasabi /home/pi/Documents/Backend/index.py kung saan mo na-install ang iyong mga backend file, kung hindi mo ito nagawa nang tama ang proyekto ay hindi masisimulan nang tama! Magdaragdag ako ng isang halimbawa ng file sa ibaba.

Matapos mong gawin iyon at lumabas sa text editor maaari naming paganahin ang serbisyo sa mga sumusunod na utos: - sudo systemctl daemon-reload- sudo systemctl paganahin ang dispenser- sudo systemctl start dispenser

At bilang dagdag na maaari naming patakbuhin: sudo systemctl status dispenserIpapakita nito ang ilang impormasyon sa paligid ng aming serbisyo, kung ito ay aktibo o hindi,…

Hakbang 7: Ang Kaso

Ang kaso
Ang kaso
Ang kaso
Ang kaso
Ang kaso
Ang kaso
Ang kaso
Ang kaso

Congrats malapit na kami doon, magdaragdag ako ng ilang mga larawan na tumpak na magpapakita ng mga sukat na ginamit ko para sa aking proyekto, gumamit ako ng mga MDF plate na 18mm makapal, maaari mong opsyonal na gumamit ng ibang kapal. Ang aking pambalot ay maaaring magamit bilang isang gabay upang idisenyo ang iyo o maaari mong likhain muli ang ginawa ko. (Kung gagamit ka ng ibang kapal ng MDF hindi ka papayagan ng aking mga guhit na gawin ang aking disenyo, tiyaking iakma ito!) Ang mga panel na ginawa ko: - 2 mga panel ng 32cm ng 42cm (mga panel sa gilid) - 1 panel ng 24cm ng 32cm (ilalim na plato) - 2 mga panel ng 16cm ng 24cm (harap na plato kung saan nananatili ang LCD at mga kalapit na plato) - 1 panel ng 28cm ng 24cm (nakikita sa gitna ang plato mula sa harap) - 1 panel ng 30cm ng 24cm (tuktok na plato)

Hakbang 8: Humanga sa Huling Produkto

Humanga sa Huling Produkto
Humanga sa Huling Produkto
Humanga sa Huling Produkto
Humanga sa Huling Produkto

Narating mo na ang wakas at sa ngayon ay inaasahan kong nagawa ang buong bagay na isang katotohanan. Kung ikaw ay isang dumadaan lamang na nagbabasa, maligayang pagdating din, salamat sa iyong pagbabasa hanggang sa huling hakbang!

Gumastos ako ng maraming dugo, pawis at luha sa proyektong ito kaya't pahalagahan ko ito kung nag-iwan ka ng isang puna, ang anumang pagpuna sa pagpapabuti nito ay malugod!

Hakbang 9: Ang Mga Suliranin

Ilalagay ko ang proyekto sa kasalukuyang estado nito bilang isang gumaganang prototype na maaaring makakita ng mas maraming mga pagpapabuti.

Ang batayan ng code ng backend ay nakabalangkas sa isang paraan na ang isang ugnayan ng master alipin ay maaaring perpektong ginawa kung saan ang isang fountain ay gaganap bilang pangunahing frontend at lahat ng iba pang mga fountains ay itulak ang data at mga pagbabago sa REST api ng master. Mayroon ding mga labi ng isang sistema ng token ng API sa code dahil nilalayon itong ipatupad ngunit i-cut sa paglaon dahil sa mga paghihigpit sa oras.

Na-upload ko ang aking code sa aking Gitlab server at doon maaari mong tingnan ang code sa kabuuan:

Inirerekumendang: