Sadržaj:

Beargardian: 5 koraka
Beargardian: 5 koraka

Video: Beargardian: 5 koraka

Video: Beargardian: 5 koraka
Video: Домашний ХЛЕБ - всего 5 компонентов! + намазка к нему! Простейший РЕЦЕПТ от шеф-повара Лазерсона 2024, Novembar
Anonim
Beargardian
Beargardian

Hej momci za školu, trebala mi je ideja za projekt. Pa sam mislio, to mora biti projekt sa malinom pi i to je lokalni. Odjednom mi je pala na pamet odlična ideja i ne pitajte me kako sam došao na tu ideju, ali sam razmišljao o nadogradnji monitora za bebe. Razmislite samo malo o toj ideji, većina monitora za bebe ima samo funkciju da sluša dječju sobu.

Karakteristike

  • Mali svjetlosni show s podesivim bojama
  • Kamera koja prikazuje slike uživo
  • Zvučnik za reprodukciju muzike
  • Senzori za snimanje kretanja bebe
  • Sve se to prikazuje na web stranici

Kratke informacije

Dopustite mi da ovo objasnim u kratkoj verziji. Dakle, potrebna nam je web stranica, a za ovaj projekt koristim Flask, potrebna nam je i baza podataka, a ja koristim mysql, također skriptu koja pokreće hardver, a to je s pythonom (3) i kao posljednje potrebno nam je postavljanje servera to bi bio nginx na PI.

Šta nam treba

  • Raspberry Pi 3
  • Stepmotor 28BYJ
  • Steper modul koračnog motora ULN2003 koračni modul
  • RGB vodio sa 3 otpornika 330Ohm
  • Pi NoIR kamera V2
  • Ultrazvučni senzor HC-SR04
  • Mikro modul iz ardiuna
  • MAX98357A
  • Zvučnik 8Ohm
  • I ne zaboravite kupiti medvjeda

Postavljanje maline pi ----------------------------------------------- -------------------------------------------------- --------------------------

Prvo moramo postaviti Pi. Počnite se već prijavljivati putem kit -a, ako nemate kit, preporučujem vam da preuzmete ovo, jednostavno upišite svoj statički ip Pi sa ssh -om i krenite s njim. Ako morate instalirati svoj Raspberry Pi, dobio sam loše vijesti, ovo ne objašnjavam u ovom projektu.

Instalirajte pakete

sudo apt update

sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Virtuelno okruženje

python3 -m pip install --upgrade pip setuptools wheel virtualenv

mkdir {ime fascikle vašeg projekta} && cd {ime fascikle vašeg projekta} python3 -m venv --system-site-packages env izvor env/bin/aktiviranje python -m pip instaliranje mysql-konektora-python argon2-cffi Bočica-HTTPAuth Flask- MySQL mysql-connector-python passlib

Sada morate klonirati git spremište u fascikli vašeg projekta

github.com/NMCT-S2-Project-I/Project-I.git

Ako pogledate u fasciklu svog projekta, morate vidjeti 5 mapa

  • conf
  • env
  • senzor
  • sql
  • web

Baza podataka

sudo systemctl status mysql

ss -lt | grep mysql sudo mysql

stvorite korisnika u bazi podataka sa svim privilegijama i napravite svoju bazu podataka

kreirati korisnika 'user'@'localhost' identificiranog 'lozinkom';

kreirati bazu yourdatabasename; dodijelite sve privilegije na vašoj bazi podataka.* korisniku '@' localhost 's opcijom odobrenja;

Conf datoteke za server

U uwsgi-flask.ini mijenjate 'module = …' u 'module = web: app' i put do vašeg virtualenv-a koji ste kreirali. U ostalim datotekama morate promijeniti putanje do stvarnih apsolutnih staza vašeg direktorija.

Kada to shvatite, datoteke možete postaviti na pravo mjesto.

sudo cp conf/project1-*. service/etc/systemd/system/

sudo systemctl daemon-reload sudo systemctl start project1-* sudo systemctl status project1-*

sada moramo ovo učiniti dostupnim

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 ponovo pokrenite nginx.service sudo nginx -t

Ako je sve prošlo dobro, trebali biste imati hello world sa ovom naredbom

wget -qO - localhost

Gotovo! Pa to je dio koji vam omogućava da pokrenete sistem na …

Korak 1: Ožičenje hardvera na Pi

Ožičenje hardvera na Pi
Ožičenje hardvera na Pi

pomoću BCM -a

audio MAX98357A

  • BCK na GPIO 18
  • Podaci u GPIO 21
  • LRCK na GPIO 19

svjetlo

  • crveno do GPIO 17
  • zelena za GPIO 27
  • plavo za GPIO 22

modul motora 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

ultrazvučni senzor

  • okrenite na GPIO 16
  • eho na GPIO 20

Korak 2: Kodiranje glavnih programa

Ne ulazim u detalje ovdje, ali možete provjeriti moj kôd u githubu.

Za početak sam napravio svoj html i css, indeks, prijavu, registraciju, početni ekran, muziku, addmusic, addbear, light, kameru, postavke kamere, senzor, stranicu s nadzornom pločom. Html datoteke moraju biti u predlošcima, a css datoteke u folderu static/css. Možete potpuno prilagoditi css kako želite.

Ako ste uradili ovaj dio, morate postaviti bocu. Flask je jednostavan za korištenje samo kao primjer hello svijeta

# uvozna tikvica u početku

iz flask import * @app.route ('/') def index (): return render_template ('index.html')

Sada je u mom kodu ovo već popunjeno, jedino što trebate učiniti je promijeniti korisnika baze podataka i lozinku na onu koju imate i naravno napraviti istu bazu podataka koju možete pronaći i na githubu.

Korak 3: Kreiranje baze podataka

Kreiranje baze podataka
Kreiranje baze podataka

Za prave obožavatelje ću vam reći kako stvoriti istu bazu podataka.

Dakle, prvo moramo stvoriti bazu podataka ako niste učinili u prvom koraku.

kreiranje baze podataka beargardian;

Nakon što to učinite, kreirate tablice u mysql radnom stolu ili phpadmin -u

korisnička tabela ima

  • Korisnički broj
  • ime
  • prezime
  • email
  • babyname
  • lozinka sa sha1
  • userfolder
  • muzička muzika (int)
  • playlight (int)
  • snimanje reprodukcije (int)

muzički sto ima

  • musicID
  • pjesma
  • put
  • userfolder
  • status
  • volumen

sto za snimanje ima

  • recordID
  • put
  • userfolder
  • vrijeme
  • dan

tablica boja ima

  • colorID
  • crvena
  • zelena
  • plava
  • svjetlina
  • Korisnički broj

medvjeđi stol ima

  • bearID (decimalni (8))
  • userID default null
  • bearname

senzorski sto ima

  • sensorID
  • razdaljina
  • mikro
  • bearID
  • vrijeme
  • dan
  • vrijeme spavanja

Dakle, sada ste uspješno stvorili bazu podataka, idemo na hardver.

Korak 4: Hardversko kodiranje

Pokazaću vam malo koda i reći ću vam zašto sam to uradio na taj način.

Za početak sam koristio threading, što je apsolutni must u ovom projektu. Šta je threading, hmmm dobro pitanje! U Pythonu prijeti pokretanje više programa odjednom. Dakle, ako na primjer promijenite boju, možete i snimiti. Lako je koristiti, ne brinite.

import _threaddef function_name (something, something_else): kod za pokretanje

_thread.start_new_thread (ime_funkcije, tuple_with_the_functions_variables)

Ako ste pogledali moj program, vidjeli ste logger.info ('…'). Ovo je funkcija ispisa, ali mnogo bolja, jer na Pi -u ne možete ispisati stvari pa ja napravim datoteku i tamo je isprintam. Yoe možete postaviti datoteku dnevnika s ovim kodom.

logger = logging.getLogger (_ name _) logger.setLevel (logging. INFO) # kreiraj handler za rukovanje datotekama = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)

# stvorite format zapisa

formatter = logging. Formatter (' %(asctime) s - %(name) s - %(message) s') handler.setFormatter (formatter)

# dodajte rukovaoce u dnevnik

logger.addHandler (rukovatelj)

logger.info ('pokretanje hardvera / n ---------------------------------------'))

dalje u samom kodu sve objašnjavam.

Preporučuje se: