Spisu treści:

Bezdotykowa fontanna wodna: 9 kroków (ze zdjęciami)
Bezdotykowa fontanna wodna: 9 kroków (ze zdjęciami)

Wideo: Bezdotykowa fontanna wodna: 9 kroków (ze zdjęciami)

Wideo: Bezdotykowa fontanna wodna: 9 kroków (ze zdjęciami)
Wideo: System mycia kół i podwozi Salma od Ultramist samochód osobowy 2024, Lipiec
Anonim
Bezkontaktowa fontanna wodna
Bezkontaktowa fontanna wodna

Pod koniec mojego pierwszego roku jako student MCT otrzymałem zadanie stworzenia projektu, który zawierał wszystkie umiejętności, które zdobyłem na kursach w ciągu roku.

Szukałem projektu, który sprawdziłby wszystkie wymagania stawiane przez moich nauczycieli, a jednocześnie byłby dla mnie zabawny. Szukając tematu, nie mogłem nic poradzić na to, że zainspirował mnie Covid-19 (to było tuż przed wybuchem epidemii na całym świecie). pić wodę bez dotykania niektórych przycisków, zanim woda wypłynie.

Ten projekt wykorzystuje czujnik odległości do wykrywania, czy filiżanka lub szklanka została umieszczona pod wylotem wody, fontanna będzie następnie wypuszczać wodę przez 60 sekund (100 ml / minutę). Ma to na celu uczynienie go bardziej spójnym, ponieważ wykrycie, czy szkło zostało odsunięte, okazało się zbyt trudne / powolne, dlatego wprowadzono zegar. Po napełnieniu szklanki 100 ml wody możesz odczekać 5 sekund, a jeśli szklanka nadal znajduje się przed czujnikiem odległości, zostanie napełniona innym razem (oznacza to również, że między napełnieniem dwóch różnych rzeczy).

Kieszonkowe dzieci

składniki

- 1x RaspberryPi (użyłem 4 wersji, ale starsze wersje też mogą działać) - 1x tranzystor S8050 lub 1x tranzystor PN2222 również może działać - 1x fotorezystor - 1x HC-SR04 (ultradźwiękowy czujnik odległości) - 1x RFID-RC522- 3x różne kolorowe diody LED (niebieski, żółty, czerwony)- 1x LCD1602- 1x Aktywny brzęczyk- 1x PCF8574- 1x MCP3008- 1x Pompa wodna (użyto pompy perystaltycznej 12 V, link do tej pozycji)

- 1x zasilacz DC (12v, 600mAh) - 1x kostka zasilająca z 3 punktami - 3x płytki stykowe (prawdopodobnie przydałoby się mniej) - T-cobbler do pinów GPIO RaspberryPi - Kabel T-cobbler (do połączenia między pi i cobbler)

Użyte materiały i narzędzia

- Wiertarka z następującymi wiertłami:

- 4mm (do nawiercenia otworów pod wkręty) - 15mm (do nawiercenia otworów pod czujnik odległości)

- Dowolny śrubokręt - 30 wkrętów długości 45mm - 6 wkrętów 20mm - 2 zawiasy do drzwi - Płyta MDF około 130cm na 80cm - Kilka pilników

Krok 1: Montaż obwodu

Składanie obwodu
Składanie obwodu
Składanie obwodu
Składanie obwodu
Składanie obwodu
Składanie obwodu

Do obwodu mamy 2 czujniki, czujnik odległości i fotorezystor. Czujnik odległości służy do wykrywania, czy kubek został postawiony w zasięgu wodotrysku i opcjonalnie dodałem fotorezystor, który służy do wykrywania otwarcia obudowy przez kogoś, kto nie powinien jej otwierać. Ponadto mamy czytnik RFID, którego można użyć do uwierzytelnienia mechanika, który musi otworzyć obudowę, aby napełnić zbiornik na wodę lub w przypadku innego problemu mechanicznego.

Dla elementów aktywnych mamy LCD1602, aktywny brzęczyk i pompę perystaltyczną, wyświetlacz LCD służy do wyświetlania stanu np. czy obudowa jest otwarta lub pompa pracuje oraz zostanie wyświetlony adres IP urządzenia, brzęczyk jest służy do wydawania alarmującego dźwięku, gdy skrzynka została otwarta bez autoryzacji.

Poniżej dodałem płytkę stykową i schematyczne widoki obwodu.

Krok 2: Konfiguracja naszego RaspberryPi

Aby skonfigurować nasze RaspberryPi, pobierzemy oprogramowanie do obrazowania ze strony Raspberry, dzięki czemu możesz pobrać żądaną wersję Raspbian i zobrazować swoją kartę SDCARD. Gdy to narzędzie wykona swoją pracę, możesz otworzyć SDCARD w Eksploratorze Windows, będziesz mógł zobaczyć partycję rozruchową swojego RaspberryPi. Tutaj znajdziemy plik o nazwie cmdline.txt (nie otwieraj tego pliku w notatniku, otwórz go w Notepad++ lub innym IDE). Dodamy ip=169.254.10.1 na końcu tego pliku, aby upewnić się, że możemy połączyć się z naszym urządzeniem przez Ethernet (upewnij się, że nie dodajesz żadnych ENTERS na końcu pliku, bo będziesz mieć problemy).

Teraz możesz umieścić kartę SDCARD w RaspberryPi i uruchomić ją, podłączyć Pi do komputera i użyć Putty, aby połączyć się z Pi przez SSH. Używam następującego polecenia, aby połączyć się z moim Pi, zamiast używać Putty. "ssh [email protected]" to może przekroczyć limit czasu, więc bądź cierpliwy i poczekaj na uruchomienie Pi. Po wyświetleniu monitu o hasło wprowadzimy domyślne hasło „malina”. Pamiętaj, aby zmienić to hasło po zalogowaniu, aby uniemożliwić dostęp do Raspberry Pi osobom o złych zamiarach.

Skonfigurujemy teraz nasze Pi, aby zapewnić niezbędną funkcjonalność dla naszego kodu. Użyj "sudo raspi-config", aby otworzyć menu konfiguracji i tutaj przejdziemy do opcji interfejsu.

W tym miejscu przełączymy następujące opcje ON:- SPI- I2C

Postępuj zgodnie z tym przewodnikiem, aby skonfigurować bezprzewodowe połączenie internetowe na swoim Pi, po pomyślnym wykonaniu tej czynności możemy przystąpić do instalacji naszych wymaganych pakietów.

Pakiety: (uruchom polecenia w podanej kolejności)

Poniżej znajdziesz najnowsze aktualizacje naszej aktualizacji apt Pisudo i aktualizacji apt -y

Zainstaluj nasz serwer MySQL i serwer WWW- sudo apt install mariadb-server apache2

Będę używał MySQL Workbench do konfiguracji bazy danych w dalszej części tego przewodnika, jeśli nie używasz tego i wolisz phpmyadmin, możesz zainstalować to za pomocą następującego polecenia, możesz używać dowolnego innego klienta MySQL, jak długo jesteś w stanie poprawnie zaimportować bazę danych. - sudo apt install phpmyadmin

Po wykonaniu wszystkich powyższych czynności, musimy utworzyć użytkownika dla naszej bazy danych. Użyj "sudo mysql -u root", aby zalogować się do swojego serwera MySQL, tutaj utworzymy użytkownika o nazwie db_admin z odpowiednim hasłem, zachowaj to hasło zanotowane gdzieś na później w instrukcjach. PRZYZNAJ WSZYSTKIE UPRAWNIENIA NA *.* TO "db_admin"@"%" IDENTYFIKOWANE PRZEZ "yourPasswordHere" Z OPCJĄ PRZYZNANIA;

Użyj polecenia "\q", aby wyjść z terminala MySQL.

Pakiety Pythona: Przed kontynuowaniem musimy jeszcze zainstalować niektóre pakiety Pythona, uruchom poniższe polecenie, aby upewnić się, że wszystko jest dostępne, aby zapewnić bezbłędne działanie.

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

Oprócz następujących pakietów MySQL connect Python udo apt install python3-mysql.connector -y

Jeśli wszystko poszło dobrze, możesz teraz odwiedzić swoje Pi w przeglądarce internetowej pod następującym adresem

Krok 3: Konfiguracja backendu

Konfigurowanie zaplecza
Konfigurowanie zaplecza

Tutaj wyjaśnię, jak samodzielnie skonfigurować backend, najpierw pobrać plik rar od dołu, rozpakować go do jakiegoś katalogu tymczasowego. Połącz się z RaspberryPi za pomocą FileZilla lub WinSCP z następującymi danymi uwierzytelniającymi:

IP: 169.254.10.1User: piPassword: raspberry (jeśli zmieniłeś hasło, zrób to również tutaj)

Następnie możesz przystąpić do przesyłania plików, których nie udało się rozwiązać, do dowolnego katalogu, który chcesz w katalogu domowym użytkownika pi. Dla uproszczenia założymy, że w tej konfiguracji załadowaliśmy wszystkie nasze pliki do katalogu dokumentów.

Nie zamykaj swojego programu FTP na następny krok!

Teraz ponownie otwórz wiersz poleceń za pomocą połączenia SSH, ponieważ będziemy musieli wprowadzić pewne zmiany na serwerze sieciowym, aby frontend mógł komunikować się z backendem. Otworzymy domyślny plik konfiguracyjny Apache2 i nieznacznie go zmodyfikujemy: sudo nano /etc/apache2/sites-available/000-default.conf

Dodaj następujące wiersze poniżej DocumentRoot w pliku konfiguracyjnym, który właśnie otworzyliśmy: ProxyPass /api/ https://127.0.0.1:5000/api/ProxyPassReverse /api/

Możesz spojrzeć na załączony obrazek dla przykładu.

Krok 4: Konfiguracja frontendu

Przed przesłaniem naszych plików musimy coś zrobić, zanim zaczniemy przesyłać nasze pliki frontendowe. Otwórz wiersz poleceń za pomocą połączenia SSH, które nawiązałeś wcześniej i użyj poniższego polecenia, aby przełączyć się na użytkownika root naszego RaspberryPi: "sudo su -"

Następnie możemy zmienić hasło naszego użytkownika root za pomocą następującego polecenia: "passwd"Poprosi Cię o wprowadzenie nowego hasła, po wykonaniu tej czynności możesz przełączyć się z powrotem do programu FTP i zalogować się przy użyciu poświadczeń roota:

IP: 169.254.10.1Użytkownik: rootPassword:

Pobierz plik rar poniżej i rozpakuj go w folderze tymczasowym, możesz przenieść te pliki do RaspberryPi do następującego katalogu /var/www/html/, po wykonaniu tej czynności możesz odwiedzić frontend na http:/ /169.254.10.1, nie możesz jeszcze wchodzić w interakcje, ponieważ backend jeszcze nie działa, pokażę ci później w tym przewodniku, jak to zrobić.

Krok 5: Importowanie bazy danych dla naszego projektu

Importowanie bazy danych dla naszego projektu
Importowanie bazy danych dla naszego projektu
Importowanie bazy danych dla naszego projektu
Importowanie bazy danych dla naszego projektu

Otwórz swój ulubiony program do zarządzania serwerem MySQL i połącz się z Raspberry Pi za pomocą danych uwierzytelniających, które stworzyliśmy w kroku 2.

Pobierz zrzut bazy danych od dołu i zaimportuj go tak jak zwykle, w środowisku roboczym MySQL przejdź do Plik> Otwórz skrypt SQL i wybierz pobrany zrzut bazy danych. Następnie naciśnij CTRL + SHIFT + ENTER i skrypt SQL powinien zostać uruchomiony i struktura dla bazy danych.

Dodałem poświadczenia, których użyłem dla mojego RaspberryPi jako przykład poniżej, a także kilka zdjęć struktury bazy danych, możesz na to spojrzeć i spróbować uzyskać ogólne pojęcie o tym, jak wszystko działa.

Krok 6: Rozpoczęcie naszego projektu

Rozpoczęcie naszego projektu
Rozpoczęcie naszego projektu
Rozpoczęcie naszego projektu
Rozpoczęcie naszego projektu

Zanim będziemy mogli uruchomić nasz projekt, musimy zmienić poświadczenia bazy danych w pliku config.py, jeśli postępowałeś zgodnie z instrukcjami zawartymi w tym przewodniku, możesz je znaleźć w /home/pi/Documents/Backend/src/config.py tutaj musisz zmienić poświadczenia zmiennej db_config, aby pasowały do tych, które utworzyliśmy wcześniej dla naszej bazy danych. Poniżej dodałem przykład tego, co zobaczysz w tym pliku.

Następnie dodamy plik.service, ten plik sprawi, że nasz projekt uruchomi się wraz z uruchomieniem RaspberryPi, upewnij się, że zmieniłeś odpowiednio katalog, w którym zainstalowałeś pliki backendu. Użyj następującego polecenia, aby utworzyć plik usługi: sudo nano /etc/systemd/system/dispenser.serviceSpowoduje to utworzenie pliku usługi i skopiowanie i wklejenie poniższego kodu do tego pliku.

[Jednostka]Opis=Dozownik wodyPo=mysql.service

[Service]Type=simpleRestart=alwaysRestartSec=1User=piExecStart=/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Zainstaluj]WantedBy=multi-user.target

Zmodyfikuj wiersz, w którym jest napisane /home/pi/Documents/Backend/index.py do miejsca, w którym zainstalowałeś swoje pliki backendu, jeśli nie zrobisz tego poprawnie, projekt nie zostanie uruchomiony poprawnie! Poniżej dodam przykładowy plik.

Po wykonaniu tej czynności i wyjściu z edytora tekstu możemy włączyć usługę za pomocą następujących poleceń:- sudo systemctl daemon-reload- sudo systemctl włącz dozownik- sudo systemctl start dozownik

Jako dodatek możemy uruchomić: sudo systemctl status dozownikTo pokaże pewne informacje dotyczące naszej usługi, czy jest aktywne, czy nie, …

Krok 7: Sprawa

Walizka
Walizka
Walizka
Walizka
Walizka
Walizka
Walizka
Walizka

Gratulacje, że już prawie dotarliśmy, dodam kilka zdjęć, które dokładnie pokażą wymiary, których użyłem do mojego projektu, użyłem płyt MDF o grubości 18mm, opcjonalnie można zastosować inną grubość. Moja obudowa może służyć jako wskazówka do zaprojektowania własnej lub możesz odtworzyć to, co zrobiłem. (Jeśli użyjesz innej grubości płyty MDF, moje rysunki nie pozwolą już na wykonanie mojego projektu, pamiętaj o dostosowaniu go!) Wykonane przeze mnie panele:- 2 panele o wymiarach 32cm na 42cm (boczne)- 1 panel o wymiarach 24cm o 32cm (płyta dolna) - 2 panele 16cm na 24cm (płyta przednia na której stoi LCD i sąsiednia płyta) - 1 panel 28cm na 24cm (płyta środkowa widziana z przodu) - 1 panel 30cm na 24cm (płyta górna)

Krok 8: Podziwiaj produkt końcowy

Podziwiaj produkt końcowy
Podziwiaj produkt końcowy
Podziwiaj produkt końcowy
Podziwiaj produkt końcowy

Dotarłeś do końca i miejmy nadzieję, że udało ci się urzeczywistnić całą sprawę. Jeśli jesteś tylko czytającym przechodniem, również witam, dziękuję za przeczytanie do ostatniego kroku!

Spędziłem dużo krwi, potu i łez w tym projekcie, więc byłbym wdzięczny, jeśli zostawisz komentarz, każda krytyka dotycząca jego ulepszenia jest mile widziana!

Krok 9: Problemy

Umieściłbym projekt w obecnym stanie jako działający prototyp, który może zobaczyć znacznie więcej ulepszeń.

Baza kodu backendu jest skonstruowana w taki sposób, że relacja master-slave może być idealnie stworzona, gdzie jedna fontanna będzie działać jako główny frontend, a wszystkie inne fontanny będą przesyłać dane i zmiany przez interfejs REST mastera. W kodzie znajdują się również pozostałości systemu tokenów API, ponieważ miał on zostać zaimplementowany, ale później został skrócony z powodu ograniczeń czasowych.

Przesłałem swój kod na mój serwer Gitlab i tam możesz rzucić okiem na kod jako całość:

Zalecana: