Kazalo:

Beargardian: 5 korakov
Beargardian: 5 korakov

Video: Beargardian: 5 korakov

Video: Beargardian: 5 korakov
Video: Tschaikowsky: 5. Sinfonie ∙ hr-Sinfonieorchester ∙ Manfred Honeck 2024, November
Anonim
Beargardian
Beargardian

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

Ožičenje strojne opreme na Pi
Ožičenje strojne opreme 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

Ustvarjanje baze podatkov
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: