Mundarija:

Iste'molni kuzatish uchun avtomatik suv tarqatuvchi: 6 qadam
Iste'molni kuzatish uchun avtomatik suv tarqatuvchi: 6 qadam

Video: Iste'molni kuzatish uchun avtomatik suv tarqatuvchi: 6 qadam

Video: Iste'molni kuzatish uchun avtomatik suv tarqatuvchi: 6 qadam
Video: MORTAL KOMBAT WILL DESTROY US 2024, Iyul
Anonim
Iste'molni kuzatish uchun avtomatik suv tarqatuvchi
Iste'molni kuzatish uchun avtomatik suv tarqatuvchi
Iste'molni kuzatish uchun avtomatik suv tarqatuvchi
Iste'molni kuzatish uchun avtomatik suv tarqatuvchi

Salom!

Bir necha oy oldin, men o'z xonamda maktab vazifasi uchun qanday loyiha qilmoqchiman, deb o'ylagandim. Men o'zimga mos keladigan va kelajakda menga foyda keltiradigan narsani yasashni xohlardim. To'satdan xonamga onam kirdi va etarli suv ichmasligidan shikoyat qila boshladi. Men darhol epifaniya oldim. Menga kunlik suv sarfini kuzatadigan avtomatik suv tarqatuvchi (kinoteatrda bo'lgani kabi) qilish g'oyasi keldi.

Raspberry Pi, bir nechta datchiklar, nasos va oz ma'lumotim bilan men buni iloji boricha yaxshi qilishga harakat qildim.

Barcha qadamlarning oxirida sizda suv idishini to'ldiradigan va Raspberry Pi bilan bog'laydigan va o'zaro ta'sir qiladigan ishlaydigan suv tarqatuvchi bo'ladi. Siz nafaqat suv sarfini foizga qarab kuzatib borasiz, balki suv idishining harorati va suv sathini ham ko'rish imkoniga ega bo'lasiz. Nihoyat, siz o'z statistikangizni tekshirishingiz mumkin. Agar bu sizga qiziq tuyulsa, albatta tekshirib ko'ring va o'zingizni sinab ko'ring!

GitHub ombori:

Ta'minotlar

Mikrokontroller

Raspberry Pi 4

Sensorlar va modullar

Men 4 ta sensordan foydalandim:

2xHC-SR04 Ultrasonik sensor

Ultrasonik sensorlar masofani ultratovush to'lqinlari yordamida o'lchaydilar. Sensor boshi ultratovush to'lqinini chiqaradi va nishondan qaytarilgan to'lqinni oladi. Ultrasonik sensorlar chiqindilar va qabul qilish orasidagi vaqtni o'lchab, maqsadgacha bo'lgan masofani o'lchaydilar. Men ulardan ikkitasini yonimda shisha bor -yo'qligini tekshirish va tankdagi suvgacha bo'lgan masofani o'lchash uchun ishlatganman.

Tafsilotli ro'yxat

1x DS18B20 harorat sensori

DS18B20-bu 1 simli programlanadigan, maksimal harorat sensori. Qattiq muhitda, masalan, kimyoviy eritmalarda, minalarda yoki tuproqda haroratni o'lchash uchun keng qo'llaniladi. Men uni suv idishining suv haroratini o'lchash uchun ishlatardim.

Tafsilotli ro'yxat

1x RC522 RFID moduli

RC522 - bu 13,56 MGts chastotali RFID moduli, u NXP yarimo'tkazgichlarining MFRC522 boshqaruvchisiga asoslangan. Modul I2C, SPI va UART -ni qo'llab -quvvatlaydi va odatda RFID kartasi va kalit fob bilan birga yuboriladi. U odatda tashrif tizimlarida va boshqa shaxs/ob'ektni identifikatsiyalash dasturlarida ishlatiladi. Ushbu loyihada u identifikatsiya/kirish tizimi uchun ishlatiladi.

Tafsilotli ro'yxat

Va 2 ta aktuator:

1x peristaltik nasos 12-24V

Men suvni idishdan suv idishiga olish uchun peristaltik nasosdan foydalandim. Ko'pgina nasoslar juda sekin edi, shuning uchun men 24V quvvat adapteri bilan ishlaydigan 24V versiyasini tanladim.

1x LCD displey

LCD IP -manzil va muhim xabarlarni ko'rsatish uchun ishlatiladi. Suyuq kristalli displey (LCD)-tekis panelli displey yoki boshqa elektron modulyatsiyalangan optik qurilma, polarizatorlar bilan birlashtirilgan suyuq kristallarning yorug'lik modulyatsion xususiyatlarini ishlatadi.

Tafsilotli ro'yxat

Qopqoq

Koson haqida gapirganda, men uy -joy omboridan etkazib beriladigan DIY ishini qildim (mening misolimda Belgiyadagi Brico). Men kerakli o'lchamdagi kontrplakdan foydalanardim. Men o'z ishimni keyingi bosqichda qanday hal qilganim haqida gaplashaman, lekin bu erda sizga kerak bo'lgan narsalar:

  • 3x kontrplak taxtasi
  • 1x kichik huni
  • 1x suv idishi (siz xohlagan miqdorni tanlashingiz mumkin, men 10L uchun ketdim)
  • 1x tomchi tepsisi

Siz barcha materiallar va narxlarni biriktirilgan BOMda topishingiz mumkin.

1 -qadam: Barcha elektronikalarni ulash

Barcha elektronikalarni ulash
Barcha elektronikalarni ulash
Barcha elektronikalarni ulash
Barcha elektronikalarni ulash

Endi biz barcha elektronikalarni yig'dik, ularni ulash vaqti keldi. Men sizga barcha elektronikani qanday va qayerda ulash kerakligini ko'rsatish uchun ikkita Fritzing sxemasini, bitta non taxtasi va bitta sxemani yasadim. Fritzing -ga yuklab olish havolasini bu erda topishingiz mumkin: https://fritzing.org/download/. Yuqorida aytib o'tganimdek, men Raspberry Pi -dan foydalandim va RFID skanerini, ikkita ultratovushli sensori, bitta harorat sensori, LCD va suv uchun peristaltik nasosni uladim.

Agar siz uni batafsil ko'rib chiqmoqchi bo'lsangiz, ikkita sxemani PDF formatida biriktirdim.

2 -qadam: Raspberry Pi -ni sozlash

Biz Raspberry Pi -dan hamma narsani ishga tushirish va boshqarish uchun foydalanamiz: orqa, old va ma'lumotlar bazasi.

Raspberry Pi avtomatik ravishda ishlamaydi. Uni ishlatishni boshlash uchun biz bir necha bosqichlardan o'tishimiz kerak bo'ladi.

1 -qadam: Raspbian

Agar siz yangi Raspberry Pi dan foydalansangiz, sizga raspbian kerak bo'ladi. Yuklab olish havolasi va qo'llanmani bu erda topishingiz mumkin.

2 -qadam: Rasmni SD -ga yozish

Endi sizda Raspbian tasviringiz bor, rasm faylini SD -kartaga yozish uchun sizga rasm yozish uchun dastur kerak bo'ladi (men win32diskimager ni tavsiya qilaman). To'liq qo'llanmani bu erda topishingiz mumkin.

3 -qadam: Raspberry Pi -ga kirish

"Powershell" -ni oching va "ssh [email protected]" yozing. Agar hamma narsa to'g'ri ketsa, ular sizdan parol so'rashadi (standart parol har doim malina). Odatda, bu sizni Raspberry Pi -ga kiritishi kerak. Endi biz sozlamalarga biroz o'zgartirish kiritishimiz kerak. Terminalga sudo raspi-config yozing va enter tugmasini bosing. Mahalliylashtirish variantlariga o'ting> Vaqt mintaqasini o'zgartiring va uni vaqt mintaqangizga o'rnating. Shuningdek, siz wi-fi mamlakatini o'z manzilingizga o'zgartirishingiz kerak. Nihoyat, interfeys variantlariga o'ting va SPI, I2C va 1-simni yoqing. Sensorlardan to'g'ri foydalanish muhim ahamiyatga ega bo'ladi.

4 -qadam: Internetga ulanishni sozlash

Biz Wi -Fi tarmog'idan foydalanamiz. Siz uy tarmog'ini quyidagi yo'llar bilan qo'shishingiz mumkin:

wpa_passphrase "Sizning tarmoq" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Ulanish uchun siz Pi -ni qayta ishga tushirishingiz kerak bo'ladi. Ishlaganligini tekshirish uchun ifconfig yordamida IP -manzil bor -yo'qligini tekshirishingiz mumkin.

5 -qadam: veb -server va ma'lumotlar bazasini sozlash

Birinchidan, tizimni quyidagi buyruqlar ketma -ketligi bilan yangilash va yangilash yaxshidir:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt upgrade
  3. sudo apt yangilash
  4. sudo apt autoremove

Bu bajarilgandan so'ng, bizga veb -server va ma'lumotlar bazasi uchun quyidagi paketlar kerak bo'ladi:

Apache

sudo apt install apache2 -y

PHP

sudo apt php -ni o'rnating

sudo apt ni o'rnatish phpMyAdmin -y

Parolni o'rnatishni so'raganda, xavfsiz MySQL parolini o'rnatishni unutmang.

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php -mysql -y

sudo systemctl apache2.service -ni qayta ishga tushiring

6 -qadam: Python kutubxonalarini o'rnatish

Orqa fon uchun bizga Python uchun ba'zi kutubxonalar kerak bo'ladi. Biz ularni pip3 yordamida o'rnatamiz, chunki biz python3 dan foydalanmoqdamiz.

pip3 mysql-connector-python-ni o'rnating

pip3 flask-socketio-ni o'rnating

pip3 flakon-korslarni o'rnating

pip3 gevent -ni o'rnating

pip3 gevent-websocket-ni o'rnating

sudo apt install python3 -mysql.connector -y

pip3 mfrc522 -ni o'rnating! (RFID skaneridan foydalanish uchun bizga kerak bo'ladi)

7 -qadam: Visual Studio kodini tayyorlash

Kodni ishlatish uchun Raspberry Pi -ni ulash uchun Visual Studio kodidan foydalanishni tavsiya qilaman. VSC -ni o'rnatish uchun yuklab olish havolasini bu erda topishingiz mumkin.

Agar siz hali ham SSH yordamida masofaviy ishlab chiqarishni o'rnatmagan bo'lsangiz, buni qanday qilish kerakligini bu erda topishingiz mumkin.

3 -qadam: Ma'lumotlar bazasini yaratish

Ma'lumotlar bazasini yaratish
Ma'lumotlar bazasini yaratish

Biz barcha sensor ma'lumotlarini va foydalanuvchi ma'lumotlarini ma'lumotlar bazasida saqlaymiz.

Mening ma'lumotlar bazam 5 ta jadvaldan iborat:

Qurilma

Jadval qurilmasida DeviceID mavjud bo'lib, u qurilmaning o'ziga ishora qiladi. DeviceName qurilma nomini beradi, bu holda ultratovush sensori, harorat sensori,… DeviceType qurilmaning turini (sensor yoki aktuator) beradi.

Tarix

Jadval tarixi barcha sensorlar tarixini o'z ichiga oladi, sana (HistoryDate) bilan birga tarix qo'shilgan va tarixdagi lahzaning qiymati. Bundan tashqari, ikkita tashqi kalit mavjud:

  • DeviceID, ma'lum bir jurnalni qurilmaga ulash uchun
  • UserID, ma'lum bir foydalanuvchini jurnalga bog'lash uchun (chunki biz RFIDdan foydalanamiz va biz tarix jurnalini ma'lum bir foydalanuvchiga qo'shmoqchimiz)

Foydalanuvchi

Jadval foydalanuvchisi RFID skaneri yordamida foydalanuvchi tizimiga kirish uchun ishlatiladi. Bu taxallus, ism, familiya, parol va RFIDdan iborat (bu tegning RFID raqami). Har bir foydalanuvchi konteynerga (suv idishiga) bog'langan va konteyner identifikatorini tashqi kalit sifatida olib yuradi.

Idish

Stol idishi har xil konteynerlardan iborat. Uning identifikatori, ContainerLocation (bu korxona, uy yoki boshqa narsa bo'lishi mumkin) mavjud. Va nihoyat, u MaxLevel -ga ega, bu konteynerning maksimal hajmini bildiradi.

Sozlamalar

Jadval sozlamalarida Sozlamalar identifikatori mavjud va u har bir foydalanuvchining DailyGoalini + foydalanuvchi tomonidan DailyGoal qo'shilgan sanani kuzatib boradi. Bu tashqi kalit UserIDni tushuntiradi.

Ma'lumotlar bazasi axlatini ma'lumotlar bazasi ostidagi GitHub omborimda topish mumkin.

4 -qadam: Orqa fonni sozlash

Ishlaydigan orqa qismi bo'lmagan loyiha yo'q.

Orqa fon 4 xil narsadan iborat:

yordamchilar

Yordamchilar - bu har xil sensorlar va aktuatorlar uchun ishlatiladigan barcha sinflar. Harorat sensori (DS18B20), ultratovush sensorlar (HCSR05) uchun masofani o'lchash va LCD displeyga xabar yozish uchun yordamchi mavjud.

omborlar

Ma'lumotlar omborida siz 2 ta Python faylini topasiz:

  • Ma'lumotlar bazasidan qatorlarni olishda yordamchi bo'lgan Database.py. Ma'lumotlar bazasini o'qish va bajarishni osonlashtiradi.
  • DataRepository.py, asosiy kodda (app.py) ishlatiladigan barcha SQL so'rovlarini o'z ichiga oladi. Ular ma'lumotlar bazasidan ma'lumotlarni olish, yangilash yoki o'chirish uchun ishlatiladi.

app.py

Bu loyihaning asosiy orqa kodi. U barcha pin va rejimlarni belgilash orqali o'rnatishni amalga oshiradi va nasosning ishlashi, haroratni olish, foydalanuvchini olish va boshqalarni o'z ichiga olgan kodni o'z ichiga oladi. Shuningdek, u ma'lumotlar bazasidan va barcha socketio.on -dan ma'lumotlarni olish uchun ishlatiladigan marshrutlarni o'z ichiga oladi. Har bir HTML sahifasi uchun har bir funktsiya o'z vaqtida ishlashiga ishonch hosil qilish uchun boshqa socketio.on.

config.py

Bizda bitta fayl qoldi: config.py. Bu ma'lumotlar bazasi bilan bog'lanish uchun konfiguratsiya variantlari bo'lgan fayl. Ma'lumotlar bazasi ma'lumotlarini o'rnatishni unutmang.

Orqa fonni mening omborimda Backend ostida topish mumkin.

5 -qadam: Frontendni sozlash

Frontendni sozlash
Frontendni sozlash
Frontendni sozlash
Frontendni sozlash

Frontend uchun men o'z veb -serverim AdobeXD -da qanday bo'lishi kerakligini loyihalashdan boshladim. Men o'z logotipimdagi to'q sariq va 2 xil ko'k ranglardan foydalanardim. Men dizaynni iloji boricha sodda saqlashga harakat qildim va suv tomchisini yaratdim, u sizning kunlik maqsadingizga qanchalik erishganligingizni ko'rsatadi.

Mening GitHub omborimda siz Frontend -ni Code> Frontend ostida topasiz. Buni veb -serverdan foydalanish uchun Raspberry Pi -ning /var /html papkasiga joylashtirish muhim.

U turli xil sahifalarga olib boradigan bir nechta HTML -fayllardan iborat. Siz shuningdek mening screen.css -ni mening loyihamga o'xshash qilish uchun kerak bo'lgan barcha CSS -larni topasiz. Nihoyat, skriptlar ostida sizda har xil JavaScript fayllari bo'ladi. Bu skriptlar ma'lumotlar bazasi yoki orqa qismidagi ma'lumotlarni ko'rsatish uchun mening orqa tomonim bilan aloqa o'rnatadi.

Orqa fonni Frontend ostidagi mening omborimda topish mumkin.

6 -qadam: Kosonni yaratish

Qoplamani yaratish
Qoplamani yaratish
Qoplamani yaratish
Qoplamani yaratish
Qoplamani yaratish
Qoplamani yaratish

Agar mening ishim haqida gapiradigan bo'lsak, ikkita asosiy qism bor:

Koson tashqarisida

Men ishni noldan qurdim. Men kontrplak taxtalarini ishlatardim va ularni to'g'ri o'lchamlarda arraladim. Men barcha taxtalarni bir -biriga bog'lab qo'ydim va LCD displey uchun teshiklar qildim, tugma, ultratovush sensori, suv shishasi borligini va suv tarqatadigan huni borligini aniqladi. Men suvni va elektronni ajratish uchun ishimni turli bo'limlarga ajratdim va kabellarni suv oqishidan himoya qilish uchun simi trayasidan foydalandim. Qo'shilgan videoda siz mening korpusimning ko'p qirralarini va uni qanday yasaganimni ko'rishingiz mumkin. Men ham oddiy tugmachaga yopishtirilgan tugmani 3D bosdim. Nihoyat, men to'kilgan suvni yig'ish uchun tomchi laganda ishlatdim. Men shuningdek, elektronikaga qarash uchun yon panelni ochish va yopish uchun menteşalardan foydalandim. Siz har doim ikkinchi qo'l dispenserdan foydalanishingiz yoki boshqa materiallardan foydalanishingiz mumkin.

Qurilmamning aniq o'lchovlari uchun men qutida ishlatiladigan plastinkalarning barcha o'lchamlari bilan PDF biriktirdim.

Suv idishi

Suv idishi oson ish emas edi. Pastki qismida teshik bo'lgan suv idishi bor edi, shuning uchun oqishni to'xtatish uchun uni lenta bilan yopishim kerak edi. Sizga to'rtta teshik kerak bo'ladi: biri harorat sensori uchun, ikkinchisi nasos trubkasi uchun. biri tankni to'ldirish uchun quvurlar uchun, ikkinchisi esa ultratovush sensori uchun. Oxirgisi uchun men 3D qutisini chop etdim, uni bu erda topishingiz mumkin. Bu sensorni suvdan ko'proq himoya qiladi. Keyin men tankni tepasida to'rtburchaklar ochdim, sensorni yoqish uchun.

Tavsiya: