Spisu treści:

Automatyczny dozownik wody do śledzenia zużycia: 6 kroków
Automatyczny dozownik wody do śledzenia zużycia: 6 kroków

Wideo: Automatyczny dozownik wody do śledzenia zużycia: 6 kroków

Wideo: Automatyczny dozownik wody do śledzenia zużycia: 6 kroków
Wideo: Automatyczne dozowanie w pralkach | Poradnik 2024, Lipiec
Anonim
Automatyczny dozownik wody do śledzenia zużycia
Automatyczny dozownik wody do śledzenia zużycia
Automatyczny dozownik wody do śledzenia zużycia
Automatyczny dozownik wody do śledzenia zużycia

Cześć!

Kilka miesięcy temu siedziałem w swoim pokoju i zastanawiałem się, jaki projekt chciałbym wykonać na zadanie szkolne. Chciałem stworzyć coś, co mi odpowiada i przyniesie korzyści w przyszłości. Nagle do pokoju weszła moja mama i zaczęła narzekać, że nie pije wystarczającej ilości wody. Od razu doznałem objawienia. Przyszedł mi do głowy pomysł stworzenia automatycznego dystrybutora wody (jak w kinie), który codziennie śledzi zużycie wody.

Z Raspberry Pi, kilkoma czujnikami, pompą i niewielką wiedzą starałem się, aby było to jak najlepiej.

Na końcu wszystkich kroków będziesz mieć działający dozownik wody, który napełnia butelkę z wodą i łączy się i wchodzi w interakcję z Twoim Raspberry Pi. Nie tylko będziesz mógł śledzić zużycie wody w procentach, ale także będziesz mieć możliwość podglądu temperatury i poziomu wody w swoim pojemniku na wodę. Wreszcie będziesz mógł sprawdzić swoje statystyki. Jeśli brzmi to dla Ciebie interesująco, koniecznie sprawdź to i wypróbuj sam!

Repozytorium GitHub:

Kieszonkowe dzieci

Mikrokontrolery

Raspberry Pi 4

Czujniki i moduły

Użyłem 4 czujników:

2xHC-SR04Czujnik ultradźwiękowy

Czujniki ultradźwiękowe mierzą odległość za pomocą fal ultradźwiękowych. Głowica czujnika emituje falę ultradźwiękową i odbiera falę odbitą od celu. Czujniki ultradźwiękowe mierzą odległość do celu, mierząc czas między emisją a odbiorem. Użyłem dwóch z nich, aby sprawdzić, czy w pobliżu jest butelka i zmierzyć odległość do wody w zbiorniku.

Arkusz danych

1x czujnik temperatury DS18B20

DS18B20 to 1-przewodowy programowalny czujnik temperatury firmy maxim zintegrowany. Jest szeroko stosowany do pomiaru temperatury w trudnych środowiskach, takich jak roztwory chemiczne, kopalnie, gleba itp. Wykorzystałem go do pomiaru temperatury wody w zbiorniku na wodę.

Arkusz danych

1x moduł RFID RC522

RC522 to moduł RFID 13,56 MHz oparty na kontrolerze MFRC522 firmy NXP. Moduł obsługuje I2C, SPI i UART i standardowo jest dostarczany z kartą RFID i brelokiem. Jest powszechnie stosowany w systemach rejestracji obecności i innych aplikacjach do identyfikacji osób/obiektów. W tym projekcie jest używany do systemu identyfikacji/logowania.

Arkusz danych

Oraz 2 siłowniki:

1x pompa perystaltyczna 12-24V

Użyłem pompy perystaltycznej, aby przelać wodę ze zbiornika do bidonu. Większość pomp była zbyt wolna, więc wybrałem wersję 24V, którą zasilam zasilaczem 24V.

1x wyświetlacz LCD

Wyświetlacz LCD służy do wyświetlania adresu IP i ważnych komunikatów. Wyświetlacz ciekłokrystaliczny (LCD) to płaski wyświetlacz lub inne elektronicznie modulowane urządzenie optyczne, które wykorzystuje właściwości modulacji światła ciekłych kryształów w połączeniu z polaryzatorami.

Arkusz danych

Obudowa

A skoro już mowa o obudowie, to zrobiłem majsterkowanie z zaopatrzeniem z magazynu Home (w moim przypadku Brico w Belgii). Użyłem sklejki, którą przyciąłem do odpowiedniego rozmiaru. Opowiem o tym, jak zrobiłem moją sprawę w kolejnym kroku, ale oto rzeczy, których będziesz potrzebować:

  • 3x deski ze sklejki
  • 1x mały lejek
  • 1x zbiornik na wodę (możesz wybrać jaką ilość chcesz, ja wybrałem 10L)
  • 1x tacka ociekowa

Wszystkie materiały i wycenę znajdziesz w załączonym zestawieniu komponentów.

Krok 1: Podłączanie całej elektroniki

Podłączanie całej elektroniki
Podłączanie całej elektroniki
Podłączanie całej elektroniki
Podłączanie całej elektroniki

Teraz, gdy podsumowaliśmy całą elektronikę, czas je podłączyć. Zrobiłem dwa obwody Fritzinga, jedną płytkę stykową i jeden schemat, aby pokazać, jak i gdzie należy podłączyć całą elektronikę. Link do pobrania do Fritzing można znaleźć tutaj: https://fritzing.org/download/. Jak wspomniałem wcześniej użyłem Raspberry Pi i podłączyłem skaner RFID, dwa czujniki ultradźwiękowe, jeden czujnik temperatury, wyświetlacz LCD i pompę perystaltyczną do wody.

Dołączyłem dwa obwody w pliku PDF, jeśli chcesz się temu bliżej przyjrzeć.

Krok 2: Konfiguracja Raspberry Pi

Użyjemy naszego Raspberry Pi do uruchamiania i kontrolowania wszystkiego: backendu, frontendu i bazy danych.

Raspberry Pi nie działa automatycznie. Będziemy musieli wykonać kilka kroków, aby zacząć z niego korzystać.

Krok 1: Raspbian

Jeśli używasz zupełnie nowego Raspberry Pi, będziesz potrzebować raspbian. Link do pobrania i samouczek można znaleźć tutaj.

Krok 2: Zapisywanie obrazu do SD

Teraz, gdy masz już swój obraz Raspbian, będziesz potrzebować oprogramowania do pisania obrazów (polecam win32diskimager), aby zapisać plik obrazu na karcie SD. Pełny samouczek można znaleźć tutaj.

Krok 3: Logowanie do Raspberry Pi

Otwórz „Powershell” i wpisz „ssh [email protected]”. Jeśli wszystko pójdzie dobrze, poprosi Cię o hasło (domyślne hasło to zawsze malina). Zwykle powinno to zalogować Cię do Raspberry Pi. Teraz musimy wprowadzić kilka zmian w naszych ustawieniach. Wpisz sudo raspi-config w terminalu i naciśnij enter. Przejdź do opcji lokalizacji > zmień strefę czasową i ustaw ją na swoją strefę czasową. Powinieneś również zmienić kraj Wi-Fi na własną lokalizację. Na koniec przejdź do opcji interfejsu i włącz SPI, I2C i 1-wire. Będzie to ważne, aby prawidłowo używać czujników.

Krok 4: Konfiguracja połączenia internetowego

Będziemy korzystać z sieci WiFi. Możesz dodać swoją sieć domową przez:

wpa_passphrase "Twoja sieć" "Twój identyfikator SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Będziesz musiał zrestartować swoje Pi, aby nawiązać połączenie. Aby sprawdzić, czy zadziałało, możesz użyć ifconfig, aby sprawdzić, czy istnieje adres IP.

Krok 5: Konfiguracja serwera WWW i bazy danych

Najpierw najlepiej zaktualizować i zaktualizować system za pomocą następującej sekwencji poleceń:

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

Gdy to zrobimy, będziemy potrzebować następujących pakietów dla naszego serwera WWW i bazy danych:

Apache

sudo apt zainstaluj apache2 -y

PHP

sudo apt zainstaluj php

sudo apt zainstaluj phpMyAdmin -y

Nie zapomnij ustawić bezpiecznego hasła MySQL, gdy poprosi o ustawienie hasła.

MariaDB

sudo apt zainstaluj serwer mariadb mariadb-klient -y

sudo apt zainstaluj php-mysql -y

sudo systemctl restart apache2.service

Krok 6: Instalacja bibliotek Pythona

Do backendu będziemy potrzebować bibliotek dla Pythona. Zainstalujemy je za pomocą pip3, ponieważ używamy python3.

pip3 zainstaluj mysql-connector-python

pip3 zainstaluj kolbę-socketio

pip3 zainstaluj kolby-cors

pip3 instalacja gevent

pip3 zainstaluj gevent-websocket

sudo apt install python3-mysql.connector -y

pip3 zainstaluj mfrc522 ! (będziemy tego potrzebować, aby skorzystać ze skanera RFID)

Krok 7: Przygotowanie kodu programu Visual Studio

Do uruchomienia kodu polecam użycie Visual Studio Code do połączenia z Raspberry Pi. Link do pobrania do zainstalowania VSC można znaleźć tutaj.

Jeśli nie masz jeszcze zainstalowanego zdalnego programowania przy użyciu SSH, możesz znaleźć instrukcje, jak to zrobić tutaj.

Krok 3: Tworzenie bazy danych

Tworzenie bazy danych
Tworzenie bazy danych

Będziemy przechowywać wszystkie nasze dane z czujników i dane użytkownika w bazie danych.

Moja baza danych składa się z 5 tabel:

Urządzenie

Table Device ma DeviceID, który odwołuje się do samego urządzenia. DeviceName podaje nazwę urządzenia, w tym przypadku czujnik ultradźwiękowy, czujnik temperatury, … DeviceType podaje typ urządzenia (czujnik lub aktuator).

Historia

Tabela History zawiera całą historię czujnika wraz z datą (HistoryDate) dodania historii oraz wartością momentu w historii. Posiada również dwa klucze obce:

  • DeviceID, aby połączyć określony dziennik z urządzeniem
  • UserID, aby połączyć konkretnego użytkownika z logiem (jest tak, ponieważ korzystamy z RFID i chcemy dodać log historii do jednego konkretnego użytkownika)

Użytkownik

Tabela Użytkownik służy do tworzenia Systemu Logowania Użytkownika za pomocą skanera RFID. Składa się z Pseudonim, Imię, Nazwisko, Hasło i RFID (jest to numer RFID tagu). Każdy użytkownik jest powiązany z Kontenerem (zbiornikiem wody), a także nosi ContainerID jako klucz obcy.

Pojemnik

Kontener stołowy składa się z różnych kontenerów. Ma identyfikator, ContainerLocation (może to być firma, dom lub cokolwiek innego). Wreszcie ma MaxLevel, który oznacza maksymalną objętość kontenera.

Ustawienia

Table Settings ma SettingsID i śledzi DailyGoal każdego użytkownika + datę dodania DailyGoal przez użytkownika. To wyjaśnia identyfikator użytkownika klucza obcego.

Zrzut bazy danych można znaleźć w moim repozytorium GitHub w sekcji Baza danych.

Krok 4: Konfiguracja backendu

Nie ma projektu bez działającego zaplecza.

Backend składa się z 4 różnych rzeczy:

pomocnicy

Pomocnikami są wszystkie klasy używane dla różnych czujników i elementów wykonawczych. Jest pomocnik dla czujnika temperatury (DS18B20), dla czujników ultradźwiękowych (HCSR05), aby móc mierzyć odległość i dla LCD, aby móc pisać wiadomości na ekranie.

repozytoria

W folderze repozytoria znajdziesz 2 pliki Pythona:

  • Database.py, który jest pomocnikiem do pobierania wierszy z Twojej bazy danych. Ułatwia wykonanie i odczytanie bazy danych.
  • DataRepository.py, który zawiera wszystkie zapytania SQL, które są używane w kodzie głównym (app.py). Służą do pobierania, aktualizacji lub usuwania danych z bazy danych.

aplikacja.py

To jest główny kod backendu projektu. Wykonuje konfigurację, definiując wszystkie piny i tryby oraz zawiera kod do uruchomienia pompy, uzyskania temperatury, uzyskania użytkownika i tak dalej. Zawiera również trasy używane do pobierania danych z bazy danych i wszystkich plików socketio.on. Dla każdej strony HTML jest inny socketio.on, aby upewnić się, że każda funkcja działa we właściwym czasie.

config.py

Pozostał nam jeden plik: config.py. Jest to plik z opcjami konfiguracyjnymi do połączenia z Twoją Bazą Danych. Nie zapomnij ustawić poświadczeń bazy danych.

Backend można znaleźć w moim repozytorium pod Backend.

Krok 5: Konfiguracja frontendu

Konfigurowanie interfejsu
Konfigurowanie interfejsu
Konfigurowanie interfejsu
Konfigurowanie interfejsu

W przypadku Frontendu zacząłem od zaprojektowania tego, jak powinien wyglądać mój serwer WWW w AdobeXD. Wykorzystałem kolory w moim Logo, które są pomarańczowe i 2 różne odcienie niebieskiego. Starałem się, aby projekt był jak najprostszy i stworzyłem kroplę wody, która pokazuje procent, w jakim stopniu osiągnąłeś swój cel dnia.

W moim repozytorium GitHub znajdziesz mój Frontend w sekcji Kod > Frontend. Ważne jest, aby wkleić to do folderu /var/html swojego Raspberry Pi, aby było dostępne z serwera WWW.

Składa się z kilku plików HTML, które prowadzą do różnych stron. Znajdziesz również mój screen.css z całym CSS, którego potrzebujesz, aby wyglądał jak mój projekt. Wreszcie pod skryptami będziesz mieć różne pliki JavaScript. Te skrypty komunikują się z moim backendem, aby pokazać dane z mojej bazy danych lub backendu.

Backend można znaleźć w moim repozytorium pod Frontend.

Krok 6: Tworzenie obudowy

Tworzenie obudowy
Tworzenie obudowy
Tworzenie obudowy
Tworzenie obudowy
Tworzenie obudowy
Tworzenie obudowy

Jeśli mówimy o moim przypadku, to są dwie główne części:

Obudowa zewnętrzna

Etui zbudowałem od podstaw. Użyłem desek ze sklejki i przepiłowałem je w odpowiednich rozmiarach. Skręciłem wszystkie deski i wywierciłem otwory na wyświetlacz LCD, przycisk, czujnik ultradźwiękowy do wykrywania butelki z wodą i lejek do rozprowadzania wody. Podzieliłem moją obudowę na różne sekcje, aby oddzielić wodę i elektronikę, i użyłem korytka kablowego, aby chronić kable przed wyciekiem wody. W załączonym filmie możecie zobaczyć większość aspektów mojej obudowy i sposób jej wykonania. Wydrukowałem też w 3D guzik, który jest przyklejony do zwykłego guzika. Na koniec użyłem tacki ociekowej, aby zebrać całą rozlaną wodę. Użyłem również zawiasów, aby móc otwierać i zamykać boczny panel, aby spojrzeć na moją elektronikę. Zawsze możesz skorzystać z dozownika z drugiej ręki lub możesz również użyć innych materiałów.

Dla dokładnych pomiarów mojej budowy załączyłem plik PDF ze wszystkimi rozmiarami płytek użytych w etui.

Zbiornik wodny

Zbiornik na wodę nie był łatwym zadaniem. Dostałem zbiornik na wodę z otworem na dnie, więc musiałem go okleić, aby zatrzymać wyciek. Potrzebne będą cztery otwory: jeden na czujnik temperatury, jeden na wężyk pompy. jeden do rurki do ponownego napełnienia zbiornika i jeden do czujnika ultradźwiękowego. Do tego ostatniego wydrukowałem w 3D etui, które można znaleźć tutaj. Daje to czujnikowi lepszą ochronę przed wodą. Następnie wywierciłem prostokąt w górnej części zbiornika, aby oprzeć czujnik.

Zalecana: