Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Čaute chlapci do školy Potreboval som nápad na projekt. Tak som si myslel, že to musí byť projekt s malinovým pi a je lokálny. Zrazu som dostal skvelý nápad a nepýtajte sa ma, ako som ten nápad dostal, ale premýšľal som o aktualizácii detskej opatrovateľky. Zamyslite sa nad touto myšlienkou, väčšina detských monitorov má iba funkciu, ktorou je počúvať detskú izbu.
Vlastnosti
- Malá svetelná šou s nastaviteľnými farbami
- Fotoaparát, ktorý vám zobrazuje živé obrázky
- Reproduktor na prehrávanie hudby
- Senzory na zachytenie pohybu dieťaťa
- To všetko sa zobrazuje na webovej stránke
Krátke informácie
Vysvetlíme to v krátkej verzii. Takže potrebujeme webovú stránku a pre tento projekt používam Flask, tiež potrebujeme databázu a ja používam mysql, tiež skript, ktorý beží hardvér a je to s pythonom (3) a ako posledné potrebujeme nastavenie servera to by bolo nginx na PI.
Čo potrebujeme
- Raspberry Pi 3
- Nevlastný motor 28BYJ
- Krokový modul krokového motora ovládača čipu ULN2003
- RGB žiarovka s 3 odpormi 330Ohm
- Kamera Pi NoIR V2
- Ultrazvukový senzor HC-SR04
- Mikro modul od ardiuno
- MAX98357A
- Reproduktor 8 Ohm
- A nezabudnite si kúpiť medveďa
Nastaviť malinový pi ----------------------------------------------- ---------------------------------------------------------- --------------------------
Najprv musíme nastaviť Pi. Začnite sa už prihlasovať pomocou tmelu, ak nemáte tmel, odporúčame vám ho stiahnuť, jednoducho zadajte svoju statickú ip Pi pomocou ssh a idete na to. Ak musíte nainštalovať svoj Raspberry Pi, mám zlú správu, v tomto projekte to nevysvetľujem.
Nainštalujte balíky
sudo apt aktualizácia
sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
Virtuálne prostredie
python3 -m pip install -upgrade pip setuptools wheel virtualenv
mkdir {názov priečinka vášho projektu} && cd {názov priečinka vášho projektu} python3 -m venv --system-site-packages env zdroj env/bin/aktivovať python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask- MySQL mysql-connector-python passlib
Teraz musíte klonovať úložisko git do priečinka projektu
github.com/NMCT-S2-Project-I/Project-I.git
Ak sa pozriete do priečinka projektu, musíte vidieť 5 priečinkov
- conf
- env
- snímač
- sql
- web
Databáza
sudo systemctl status mysql
ss -lt | grep mysql sudo mysql
vytvorte užívateľa v databáze so všetkými oprávneniami a vytvorte si databázu
vytvorte používateľa 'user'@'localhost' identifikovaného 'heslom';
vytvorte databázu meno_data; udeliť všetky oprávnenia pre vaše meno_databázy.* používateľovi@@localhost s možnosťou udelenia;
Konfiguračné súbory pre server
V uwsgi-flask.ini zmeníte 'module = …' na 'module = web: app' a cestu k vášmu virtuálnemu súboru, ktorý ste vytvorili. V ostatných súboroch musíte zmeniť cesty na skutočné absolútne cesty vášho adresára.
Keď ste na to prišli, môžete súbory nastaviť na správnom mieste.
sudo cp conf/project1-*. service/etc/systemd/system/
sudo systemctl daemon-reload sudo systemctl start project1-* sudo systemctl status project1-*
Teraz to musíme nastaviť
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 sudo systemctl restart nginx.service sudo nginx -t
Ak všetko prebehlo dobre, mali by ste s týmto príkazom pozdraviť svet
wget -qO - localhost
Hotový ! To je na tej časti, aby nechal váš systém bežať na …
Krok 1: Pripojenie hardvéru k pí
pomocou BCM
audio MAX98357A
- BCK na GPIO 18
- Údaje do GPIO 21
- LRCK na GPIO 19
svetlo
- červená na GPIO 17
- zelená na GPIO 27
- modrá na GPIO 22
motorový modul ULN2003
- kolík 1 na GPIO 5
- kolík 2 na GPIO 6
- kolík 3 na GPIO 13
- kolík 4 na GPIO 26
mikro
D0 až GPIO 21
ultrazvukový senzor
- trig na GPIO 16
- ozvena na GPIO 20
Krok 2: Kódovanie hlavných programov
Tu sa nedostávam do podrobností, ale môžete si pozrieť môj kód v github.
Na začiatku som urobil svoj html a css, index, prihlásenie, registráciu, úvodnú obrazovku, hudbu, addmusic, addbear, svetlo, fotoaparát, nastavenia kamery, senzor, stránku palubnej dosky. Súbory html musia byť v šablónach a súbory css v priečinku static/css. CSS si môžete úplne prispôsobiť, ako chcete.
Ak ste urobili túto časť, musíte nastaviť svoju banku. Flakón sa ľahko používa, je len príkladom ahoj sveta
# importná banka na začiatku
z banky import * @app.route ('/') def index (): return render_template ('index.html')
Teraz je to v mojom kóde už vyplnené. Jediná vec, ktorú musíte urobiť, je zmeniť používateľa databázy a heslo na to, ktoré ste zadali, a samozrejme vytvoriť rovnakú databázu, akú nájdete aj v github.
Krok 3: Vytvorenie databázy
Pre skutočných fanúšikov vám poviem, ako vytvoriť rovnakú databázu.
Najprv teda musíme vytvoriť databázu, ak ste to neurobili v prvom kroku.
vytvoriť databázu beargardian;
Akonáhle to urobíte, vytvoríte tabuľky v mysql workbench alebo phpadmin
užívateľská tabuľka má
- ID používateľa
- krstné meno
- priezvisko
- e -mail
- meno dieťaťa
- heslo s sha1
- užívateľský priečinok
- playmusic (int)
- svetielko (int)
- prehrávanie záznamu (int)
hudobný stôl má
- musicID
- pieseň
- cesta
- užívateľský priečinok
- postavenie
- objem
záznamový stôl má
- ID záznamu
- cesta
- užívateľský priečinok
- čas
- deň
tabuľka farieb má
- colorID
- červená
- zelená
- Modrá
- jas
- ID používateľa
medvedí stôl má
- bearID (desatinne (8))
- userID default null
- medvede meno
senzorový stôl má
- sensorID
- vzdialenosť
- mikro
- bearID
- čas
- deň
- čas na spanie
Takže teraz ste úspešne vytvorili databázu, poďme na hardvér.
Krok 4: Kódovanie hardvéru
Ukážem trochu kódu a poviem vám, prečo som to urobil.
Na začiatok som použil závitovanie, čo je v tomto projekte absolútnou nevyhnutnosťou. Čo je to závitovanie, hmmm, dobrá otázka! Hrozbou v pythone je spustenie viacerých programov naraz. Ak napríklad zmeníte farbu, môžete tiež nahrávať. Je to jednoduché použitie nebojte sa.
import _threaddef function_name (something, something_else): kód na spustenie
_thread.start_new_thread (function_name, tuple_with_the_functions_variables)
Ak ste sa pozreli na môj program, videli ste logger.info ('…'). Toto je funkcia tlače, ale oveľa lepšia, pretože na Pi nemôžete tlačiť veci, takže vytvorím súbor a vytlačím ho tam. S týmto kódom môžete nastaviť súbor denníka.
logger = logging.getLogger (_ name _) logger.setLevel (logging. INFO) # vytvoriť obslužnú rutinu obsluhy súboru = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)
# vytvorte formát protokolovania
formatter = logging. Formatter (' %(asctime) s - %(name) s - %(message) s') handler.setFormatter (formatter)
# pridajte obslužné rutiny do záznamníka
logger.addHandler (handler)
logger.info ('spustenie hardvéru / n ---------------------------------------')
ďalej v samotnom kóde všetko vysvetľujem.