Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Montaż obwodu
- Krok 2: Konfiguracja naszego RaspberryPi
- Krok 3: Konfiguracja backendu
- Krok 4: Konfiguracja frontendu
- Krok 5: Importowanie bazy danych dla naszego projektu
- Krok 6: Rozpoczęcie naszego projektu
- Krok 7: Sprawa
- Krok 8: Podziwiaj produkt końcowy
- Krok 9: Problemy
Wideo: Bezdotykowa fontanna wodna: 9 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
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
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
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
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
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
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
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:
Jak zrobić bezdotykową maszynę do dezynfekcji rąk: 5 kroków
Jak zrobić bezdotykową maszynę do dezynfekcji rąk: Cześć czytelnicy w tej instrukcji pokażę ci, jak zrobić bezdotykową maszynę do dezynfekcji rąk, ponieważ wszyscy wiemy, jak ważne jest, aby inni ludzie nie byli dotykani z powodu tej pandemii
Pompa wodna sprzężona magnetycznie: 10 kroków (ze zdjęciami)
Pompa wodna sprzężona magnetycznie: W tej INSTRUKCJI wyjaśnię, jak zrobiłem pompę wodną ze sprzęgłem magnetycznym. W tej pompie wodnej nie ma mechanicznego połączenia między wirnikiem a osią silnika elektrycznego, co sprawia, że działa. Ale jak to się dzieje i
Bezdotykowa bransoletka MaKey MaKey Ground: 8 kroków
Hands Free MaKey MaKey Ground Bracelet: Podczas Nocy budowy MaKey MaKey w Bibliotece Albertsons na Uniwersytecie Boise wielu uczestników stwierdziło, że fajnie byłoby mieć obie ręce wolne, zamiast trzymać je za kabel uziemienia. Uczestnik i uczeń Scott Schm
CribSense: bezdotykowa niania wideo oparta na wideo: 9 kroków (ze zdjęciami)
CribSense: bezdotykowa niania wideo oparta na wideo: CribSense to bezdotykowa niania wideo oparta na wideo, którą możesz wykonać samodzielnie bez rozbijania banku. CribSense to implementacja C++ funkcji powiększenia wideo dostrojona do działania na Raspberry Pi 3 Model B. W ciągu weekendu możesz ustawić własne łóżeczko
Fontanna wodna Mood Light Bluetooth: 5 kroków
Mood Light Bluetooth Water Fountain: Zamierzamy nadużywać starego plastikowego pudełka i niektórych kapsli do inteligentnej fontanny, która zmienia kolor losowo lub w zależności od naszego nastroju. Możemy zmienić kolor światła w zależności od naszego nastroju ze smartfona przez łączność Bluetooth