Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Hej chłopaki do szkoły Potrzebowałem pomysłu na projekt. Pomyślałem więc, że to musi być projekt z raspberry pi i to jest lokalne. Nagle wpadłem na świetny pomysł i nie pytaj mnie, skąd mam ten pomysł, ale pomyślałem o uaktualnieniu do niani elektronicznej. Zastanów się chwilę nad tym pomysłem, większość elektronicznych niań ma tylko funkcję słuchania pokoju dziecka.
Cechy
- Mały pokaz świetlny z regulowanymi kolorami
- Kamera, która pokazuje obrazy na żywo
- Głośnik do odtwarzania muzyki
- Czujniki do uchwycenia ruchu dziecka
- Wszystko to pokazuje na stronie internetowej
Krótka informacja
Pozwólcie, że wyjaśnię to w krótkiej wersji. Potrzebujemy więc strony internetowej i do tego projektu używam Flask, potrzebujemy również bazy danych i używam mysql, także skryptu, który uruchamia sprzęt i to jest z python (3) i na koniec potrzebujemy konfiguracji serwera to byłby nginx na PI.
Czego potrzebujemy
- Raspberry Pi 3
- Silnik krokowy 28BYJ
- Moduł krokowy sterownika krokowego ULN2003
- Led rgb z 3 rezystorami 330Ohm
- Kamera Pi NoIR V2
- Czujnik ultradźwiękowy HC-SR04
- Mikromoduł od ardiuno
- MAX98357A
- Głośnik 8Ohm
- I nie zapomnij kupić niedźwiedzia
Konfiguracja raspberry pi ----------------------------------------------- -------------------------------------------------- --------------------------
Najpierw musimy skonfigurować Pi. Zacznij już logować się przez putty, jeśli nie masz putty, polecam to pobrać, po prostu wpisz swoje statyczne ip Pi za pomocą ssh i idź z tym. Jeśli musisz zainstalować Raspberry Pi to mam złe wieści, nie wyjaśniam tego w tym projekcie.
Zainstaluj pakiety
aktualizacja sudo apt
sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
Wirtualne środowisko
python3 -m pip install --upgrade pip setuptools wheel virtualenv
mkdir {nazwa folderu projektu} && cd {nazwa folderu projektu} python3 -m venv --system-site-packages env source env/bin/activate python -m pip install mysql-connector-python argon2-cffi Flask-HTTPAuth Flask- MySQL-mysql-connector-python passlib
Teraz musisz sklonować repozytorium git w folderze projektu
github.com/NMCT-S2-Projekt-I/Projekt-I.git
Jeśli zajrzysz do folderu projektu, musisz zobaczyć 5 folderów
- konf
- zazdrościć
- czujnik
- sql
- sieć
Baza danych
sudo systemctl status mysql
ss-lt | grep mysql sudo mysql
utwórz użytkownika w bazie danych ze wszystkimi uprawnieniami i stwórz swoją bazę danych
utwórz użytkownika 'user'@'localhost' identyfikowanego przez 'password';
utwórz bazę danych nazwabazy danych; nadaj wszystkie uprawnienia do nazwy twojej bazy danych.* do 'user'@'localhost' z opcją grant;
Pliki konfiguracyjne dla serwera
W uwsgi-flask.ini zmieniasz 'module = …' na 'module= web:app' i ścieżkę do swojego wirtualnego środowiska, którą utworzyłeś. W pozostałych plikach musisz zmienić ścieżki na rzeczywiste ścieżki bezwzględne twojego katalogu.
Gdy już to zrozumiesz, możesz ustawić pliki we właściwym miejscu.
sudo cp conf/project1-*.service /etc/systemd/system/
sudo systemctl daemon-reload sudo systemctl start project1-* sudo systemctl status project1-*
teraz musimy ustawić to dostępne
sudo cp conf/nginx /etc/nginx/sites-available/project1
sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1 ponowne uruchomienie sudo systemctl nginx.service sudo nginx -t
Jeśli wszystko poszło dobrze, powinieneś mieć hello world z tym poleceniem
wget -qO - host lokalny
Gotowe ! Cóż, to jest część, która pozwala uruchomić system na…
Krok 1: Okablowanie sprzętu do Pi
za pomocą BCM
audio MAX98357A
- BCK do GPIO 18
- Dane do GPIO 21
- LRCK do GPIO 19
lekki
- czerwony do GPIO 17
- zielony do GPIO 27
- niebieski do GPIO 22
moduł silnika ULN2003
- pin 1 do GPIO 5
- pin 2 do GPIO 6
- pin 3 do GPIO 13
- pin 4 do GPIO 26
mikro
D0 do GPIO 21
czujnik ultradźwiękowy
- wyzwalanie do GPIO 16
- echo do GPIO 20
Krok 2: Kodowanie głównych programów
Nie wchodzę tutaj w szczegóły, ale możesz sprawdzić mój kod na github.
Na początek zrobiłem swój html i css, indeks, login, rejestr, ekran główny, muzykę, addmusic, addbear, światło, aparat, ustawienia aparatu, czujnik, stronę deski rozdzielczej. Pliki html muszą znajdować się w szablonach, a pliki css w folderze static/css. Możesz w pełni dostosować CSS, jak chcesz.
Jeśli wykonałeś tę część, musisz ustawić swoją kolbę. Flask jest łatwy w użyciu tylko przykładem hello world
# najpierw importuj kolbę
z flask import * @app.route('/') def index(): return render_template('index.html')
Teraz w moim kodzie jest to już wypełnione, jedyne, co musisz zrobić, to zmienić użytkownika bazy danych i hasło na to od Ciebie i oczywiście utworzyć tę samą bazę danych, którą możesz również znaleźć na github.
Krok 3: Tworzenie bazy danych
Prawdziwym fanom powiem, jak stworzyć tę samą bazę danych.
Więc najpierw musimy stworzyć bazę danych, jeśli nie zrobiłeś tego w pierwszym kroku.
stworzyć bazę Beargardian;
Gdy to zrobisz, utworzysz tabele w mysql workbench lub phpadmin
tabela użytkownika ma
- identyfikator użytkownika
- Imię
- nazwisko
- imię dziecka
- hasło z sha1
- folder użytkownika
- muzyka do odtwarzania (int)
- lampka do zabawy (wew.)
- nagranie odtwarzania (wew.)
stolik muzyczny ma
- musicID
- utwór muzyczny
- ścieżka
- folder użytkownika
- status
- Tom
stół do nagrywania ma
- identyfikator nagrania
- ścieżka
- folder użytkownika
- czas
- dzień
tabela kolorów ma
- IDKoloru
- czerwony
- Zielony
- niebieski
- jasność
- identyfikator użytkownika
Niedźwiedź ma
- identyfikator niedźwiedzia (dziesiętny(8))
- domyślna wartość identyfikatora użytkownika zerowa
- niedźwiedź
stół czujnika ma
- ID czujnika
- dystans
- mikro
- identyfikator niedźwiedzia
- czas
- dzień
- czas spania
Więc teraz pomyślnie utworzyłeś bazę danych, przejdźmy do sprzętu.
Krok 4: Kodowanie sprzętowe
Pokażę trochę kodu i powiem, dlaczego zrobiłem to w ten sposób.
Na początek zastosowałem gwintowanie, co jest absolutną koniecznością w tym projekcie. Co to jest gwintowanie, hmmm dobre pytanie ! Cóż, zagrożenie w pythonie polega na uruchamianiu wielu programów jednocześnie. Więc jeśli na przykład zmienisz kolor, możesz również nagrywać. Jest łatwy w użyciu, nie martw się.
import _threaddef nazwa_funkcji(coś, coś_innego): kod do uruchomienia
_thread.start_new_thread(nazwa_funkcji, krotka_z_zmiennymi_funkcjami)
Jeśli spojrzałeś na mój program, zobaczyłeś logger.info('…'). To jest funkcja drukowania, ale znacznie lepsza, ponieważ na Pi nie można drukować rzeczy, więc tworzę plik i drukuję go tam. Możesz ustawić plik dziennika za pomocą tego kodu.
logger = logging.getLogger(_name_)logger.setLevel(logging. INFO) # utwórz procedurę obsługi pliku handler = logging. FileHandler('logger.log') handler.setLevel(logging. INFO)
# utwórz format logowania
formatter = logging. Formatter('%(asctime)s - %(name)s - %(message)s') handler.setFormatter(formatter)
# dodaj programy obsługi do rejestratora
logger.addHandler(obsługa)
logger.info('uruchomienie sprzętu\n-------------------------------------------')
dalej w samym kodzie wszystko wyjaśniam.