Kazalo:
- Korak: Priključite strojno opremo na Pi
- 2. korak: Kodiranje glavnih programov
- 3. korak: Ustvarjanje baze podatkov
- 4. korak: Kodiranje strojne opreme
- 5. korak: Odlično delo
Video: Beargardian: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Hej fantje za šolo. Potreboval sem idejo za projekt. Tako sem razmišljal, to mora biti projekt z malinovim pi in je lokalni. Nenadoma sem dobil odlično idejo in ne sprašuj me, kako sem dobil to idejo, ampak sem pomislil na nadgradnjo otroške varuške. Samo pomislite malo na to idejo, večina otroških monitorjev ima samo funkcijo poslušanja otroške sobe.
Lastnosti
- Majhen svetlobni šov z nastavljivimi barvami
- Kamera, ki prikazuje slike v živo
- Zvočnik za predvajanje glasbe
- Senzorji za zajem gibanja otroka
- Vse to je prikazano na spletnem mestu
Kratke informacije
Naj to razložim v kratki različici. Zato potrebujemo spletno mesto in za ta projekt uporabljam Flask, potrebujemo tudi bazo podatkov in uporabljam mysql, tudi skript, ki poganja strojno opremo, to pa je s pythonom (3) in nazadnje potrebujemo nastavitev strežnika to bi bil nginx na PI.
Kaj potrebujemo
- Raspberry Pi 3
- Stepmotor 28BYJ
- Koračni modul koračnega gonilnika koračnega motorja ULN2003
- RGB vodnik s tremi upori 330Ohm
- Kamera Pi NoIR V2
- Ultrazvočni senzor HC-SR04
- Mikro modul iz Ardiuno
- MAX98357A
- Zvočnik 8Ohm
- In ne pozabite kupiti medveda
Namestitev maline pi ----------------------------------------------- -------------------------------------------------- --------------------------
Najprej moramo nastaviti Pi. Začnite se prijavljati prek kita, če nimate kita, vam priporočam, da ga prenesete, preprosto vnesite statični ip Pi s ssh in pojdite z njim. Če morate namestiti svoj Raspberry Pi, imam slabe novice, tega v tem projektu ne razlagam.
Namestite pakete
sudo apt posodobitev
sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-strežnik uwsgi nginx uwsgi-plugin-python3
Virtualno okolje
python3 -m pip install --upgrade pip setuptools wheel virtualenv
mkdir {ime mape vašega projekta} && cd {ime mape vašega projekta} python3 -m venv --system-site-packages env vir env/bin/aktiviraj python -m pip namestite mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask- MySQL mysql-connector-python passlib
Zdaj morate klonirati skladišče git v mapi projekta
github.com/NMCT-S2-Project-I/Project-I.git
Če pogledate v mapo projekta, morate videti 5 map
- conf
- env
- senzor
- sql
- spletu
Baza podatkov
sudo systemctl status mysql
ss -lt | grep mysql sudo mysql
ustvarite uporabnika v zbirki podatkov z vsemi privilegiji in naredite svojo bazo podatkov
ustvarite uporabnika 'user'@'localhost', označenega z 'password';
ustvarite zbirko podatkov vašeimepodatkovne baze; podeli vse privilegije za ime svoje baze podatkov.* uporabniku '@' localhost 'z možnostjo dodelitve;
Conf datoteke za strežnik
V uwsgi-flask.ini spremenite 'module = …' v 'module = web: app' in pot do vašega virtualenv, ki ste ga ustvarili. V drugih datotekah morate spremeniti poti do dejanskih absolutnih poti vašega imenika.
Ko to ugotovite, lahko datoteke nastavite na pravo mesto.
sudo cp conf/project1-*. storitev/etc/systemd/system/
sudo systemctl daemon-reload sudo systemctl start project1-* sudo systemctl status project1-*
zdaj moramo to omogočiti
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 znova zaženite nginx.service sudo nginx -t
Če bi bilo vse v redu, bi morali imeti s tem ukazom hello world
wget -qO - localhost
Končano ! No, to je del, ki omogoča, da sistem zaženete na…
Korak: Priključite strojno opremo na Pi
z uporabo BCM
avdio MAX98357A
- BCK do GPIO 18
- Podatki v GPIO 21
- LRCK v GPIO 19
svetloba
- rdeča do GPIO 17
- zelena do GPIO 27
- modra do GPIO 22
motorni modul ULN2003
- pin 1 na GPIO 5
- pin 2 na GPIO 6
- pin 3 na GPIO 13
- pin 4 na GPIO 26
mikro
D0 do GPIO 21
ultrazvočni senzor
- sproži na GPIO 16
- odmev na GPIO 20
2. korak: Kodiranje glavnih programov
Tu se ne spuščam v podrobnosti, vendar lahko v githubu preverite mojo kodo.
Za začetek sem naredil svoj html in css, indeks, prijavo, registracijo, začetni zaslon, glasbo, addmusic, addbear, light, kamero, nastavitve kamere, senzor, stran na nadzorni plošči. Datoteke html morajo biti v predlogah, datoteke css pa v mapi static/css. CSS lahko popolnoma prilagodite, kot želite.
Če ste naredili ta del, morate nastaviti bučko. Flask je enostaven za uporabo, le primer sveta hello
# uvozna bučka najprej
iz flask import * @app.route ('/') def index (): vrni render_template ('index.html')
Zdaj je v moji kodi to že izpolnjeno, edino, kar morate storiti, je, da uporabnika in geslo baze podatkov spremenite na to od vas in seveda naredite isto bazo podatkov, ki jo lahko najdete tudi v githubu.
3. korak: Ustvarjanje baze podatkov
Za prave oboževalce vam bom povedal, kako ustvariti isto bazo podatkov.
Zato moramo najprej ustvariti bazo podatkov, če niste v prvem koraku.
ustvariti bazo podatkov;
Ko to storite, ustvarite tabele v delovni mizi mysql ali phpadmin
uporabniška miza ima
- Uporabniško ime
- ime
- priimek
- E-naslov
- babyname
- geslo s sha1
- uporabniška mapa
- playmusic (int)
- igralna svetilka (int)
- predvajanje (int)
glasbena miza ima
- musicID
- pesem
- pot
- uporabniška mapa
- stanje
- glasnost
snemalna miza ima
- recordID
- pot
- uporabniška mapa
- čas
- dan
barvna miza ima
- colorID
- rdeča
- zelena
- modra
- svetlost
- Uporabniško ime
medvedja miza ima
- bearID (decimalni (8))
- userID privzeto ničelno
- nosi ime
senzorska miza ima
- sensorID
- razdalja
- mikro
- bearID
- čas
- dan
- čas spanja
Zdaj ste uspešno ustvarili bazo podatkov, pojdimo na strojno opremo.
4. korak: Kodiranje strojne opreme
Pokazal vam bom malo kode in vam povedal, zakaj sem to storil tako.
Za začetek sem uporabil nitanje, kaj je v tem projektu absolutno nujno. Kaj je threading, hmmm dobro vprašanje! V Pythonu grozi izvajanje več programov hkrati. Torej, če na primer spremenite barvo, lahko tudi posnamete. Je enostaven za uporabo, ne skrbite.
import _threaddef function_name (something, something_else): koda za zagon
_thread.start_new_thread (ime_funkcije, tuple_with_the_functions_variables)
Če ste pogledali moj program, ste videli logger.info ('…'). To je funkcija tiskanja, vendar veliko boljša, saj na Pi ne morete natisniti stvari, zato naredim datoteko in jo tam natisnem. Yoe lahko s to kodo nastavite datoteko dnevnika.
logger = logging.getLogger (_ name _) logger.setLevel (logging. INFO) # ustvarite handler handler handler = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)
# ustvarite obliko zapisovanja
formatter = logging. Formatter (' %(asctime) s - %(name) s - %(message) s') handler.setFormatter (oblikovalec)
# dodajte zapisovalnike v dnevnik
logger.addHandler (upravljavec)
logger.info ('zagon strojne opreme / n ---------------------------------------')
nadalje v sami kodi vse razlagam.
Priporočena:
Števec korakov - mikro: Bit: 12 korakov (s slikami)
Števec korakov - Micro: Bit: Ta projekt bo števec korakov. Za merjenje korakov bomo uporabili senzor pospeška, ki je vgrajen v Micro: Bit. Vsakič, ko se Micro: Bit trese, bomo štetju dodali 2 in ga prikazali na zaslonu
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): 8 korakov
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): ultrazvočni pretvorniki zvoka L298N Dc ženski adapter z napajalnim vtičem za enosmerni tok Arduino UNOBreadboard Kako to deluje: Najprej naložite kodo v Arduino Uno (to je mikrokrmilnik, opremljen z digitalnim in analogna vrata za pretvorbo kode (C ++)
Vijak - Nočna ura za brezžično polnjenje DIY (6 korakov): 6 korakov (s slikami)
Bolt - Nočna ura za brezžično polnjenje DIY (6 korakov): Induktivno polnjenje (znano tudi kot brezžično polnjenje ali brezžično polnjenje) je vrsta brezžičnega prenosa energije. Za zagotavljanje električne energije prenosnim napravam uporablja elektromagnetno indukcijo. Najpogostejša aplikacija je brezžično polnjenje Qi
Merilnik korakov 1. del: Enobarvni zaslon 128x32 in Arduino: 5 korakov
Pedometer 1. del: Enobarvni zaslon 128x32 in Arduino: To je osnovna vadnica, ki uči, kako uporabljati zaslon OLED s svojim Arduinom. Uporabljam zaslon velikosti 128x32, lahko pa uporabite tudi drugačen zaslon z ločljivostjo in po potrebi spremenite ločljivost/koordinate. V tem delu vam bom pokazal, kako
Preklopna obremenitvena banka z manjšo velikostjo korakov: 5 korakov
Preklopna banka odpornikov obremenitve z manjšo velikostjo korakov: Banke uporovnih obremenitev so potrebne za preskušanje energetskih proizvodov, za karakterizacijo sončnih kolektorjev, v preskusnih laboratorijih in v industriji. Reostati zagotavljajo stalno spreminjanje odpornosti na obremenitev. Ker pa se vrednost upora zmanjša, moč