Përmbajtje:

Beargardian: 5 hapa
Beargardian: 5 hapa

Video: Beargardian: 5 hapa

Video: Beargardian: 5 hapa
Video: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, Nëntor
Anonim
Beargardian
Beargardian

Hej djema për shkollën më duhej një ide për një projekt. Kështu që unë po mendoja, duhet të jetë një projekt me mjedrën pi dhe është lokal. Papritur pata një ide të shkëlqyeshme dhe mos më pyesni se si e marr atë ide, por mendova për një azhurnim për një monitor të foshnjave. Vetëm mendoni një sekondë për atë ide, shumica e vëzhguesve të foshnjave thjesht kanë funksionin të dëgjojnë dhomën e foshnjës.

Karakteristikat

  • Një shfaqje e vogël e dritës me ngjyra të rregullueshme
  • Një aparat fotografik që ju tregon imazhe të drejtpërdrejta
  • Një altoparlant për të luajtur muzikë
  • Sensorë për të kapur lëvizjen e foshnjës
  • E gjithë kjo shfaqet në një faqe në internet

Informacion i shkurtër

Le ta shpjegojmë këtë në një version të shkurtër. Pra, ne kemi nevojë për një faqe në internet dhe për këtë projekt unë jam duke përdorur Flask, ne gjithashtu kemi nevojë për një bazë të dhënash dhe unë jam duke përdorur mysql, gjithashtu një skript që drejton harduerin dhe kjo është me python (3) dhe si e fundit kemi nevojë për një konfigurim të serverit që do të ishte nginx në PI.

Çfarë na duhet

  • Raspberry Pi 3
  • Motori i njerkut 28BYJ
  • Çipi i drejtuesit të njësitit modul stepper ULN2003
  • Një rgb led me 3 rezistorë 330Ohm
  • Kamera Pi NoIR V2
  • Sensori tejzanor HC-SR04
  • Mikro moduli nga ardiuno
  • MAX98357A
  • Një altoparlant 8 Ohm
  • Dhe mos harroni të blini një ari

Vendosni mjedrën pi -------------------------------------------------- ------------------------------------------------------ --------------------------

Në fillim duhet të konfigurojmë Pi. Filloni të regjistroheni tashmë përmes stuko, nëse nuk keni stuko ju rekomandoj ta shkarkoni këtë, thjesht shkruani IP -në tuaj statike të Pi me ssh dhe shkoni me të. Nëse duhet të instaloni Raspberry Pi tuaj atëherë kam marrë një lajm të keq, nuk po e shpjegoj këtë në këtë projekt.

Instaloni paketat

sudo apt përditësim

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

Mjedisi virtual

python3 -m pip install -përditëso pip setuptools wheel virtualenv

mkdir {emrin e dosjes së projektit tuaj} && cd {emrin e dosjes së projektit tuaj} python3 -m venv --system-site-packages env source env/bin/activ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask- MySQL mysql-lidhës-python passlib

Tani ju duhet të klononi depon git në dosjen e projektit tuaj

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

Nëse shikoni në dosjen e projektit tuaj, duhet të shihni 5 dosje

  • konf
  • zili
  • sensori
  • sql
  • ueb

Baza e të dhënave

sudo systemctl status mysql

ss -lt | grep mysql sudo mysql

krijoni një përdorues në bazën e të dhënave me të gjitha privilegjet dhe bëni bazën tuaj të të dhënave

krijoni përdoruesin 'user'@'localhost' të identifikuar me 'password';

krijoni bazën e të dhënave të bazës suaj; jepni të gjitha privilegjet në emrin tuaj të bazës së të dhënave.* 'user'@'localhost' me opsion granti;

Skedarët konf për serverin

Në uwsgi-flask.ini ju ndryshoni 'module =…' në 'module = web: app' dhe rrugën drejt virtualenv tuaj që keni krijuar. Në skedarët e tjerë ju duhet të ndryshoni shtigjet drejt shtigjeve absolute aktuale të drejtorisë tuaj.

Pasi ta kuptoni se mund t'i vendosni skedarët në vendin e duhur.

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

sudo systemctl daemon-ringarkoni projektin e fillimit të sistemit sudo1-* projekti i statusit të sudo systemctl1-*

tani ne duhet ta vendosim këtë në dispozicion

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

Nëse gjithçka shkoi mirë, atëherë duhet të përshëndetni botën me këtë urdhër

wget -qO - localhost

U krye! Epo kjo është për pjesën që do të lejojë që sistemi juaj të funksionojë në…

Hapi 1: Lidhja e pajisjes me Pi

Lidhja e pajisjes me Pi
Lidhja e pajisjes me Pi

duke përdorur BCM

audio MAX98357A

  • BCK në GPIO 18
  • Të dhënat në GPIO 21
  • LRCK te GPIO 19

dritë

  • e kuqe në GPIO 17
  • jeshile në GPIO 27
  • blu në GPIO 22

moduli motorik ULN2003

  • pin 1 te GPIO 5
  • pin 2 te GPIO 6
  • pin 3 te GPIO 13
  • pin 4 në GPIO 26

mikro

D0 në GPIO 21

sensor tejzanor

  • shkaktohet në GPIO 16
  • jehonë në GPIO 20

Hapi 2: Kodimi i programeve kryesore

Unë nuk po hyj në detaje këtu, por ju mund të kontrolloni kodin tim në github.

Për të filluar, unë bëra html dhe css, një indeks, hyrje, regjistrim, ekran në shtëpi, muzikë, shtesë muzikore, shtesë, dritë, kamera, cilësime të kamerave, sensor, faqe pulti. Skedarët html duhet të jenë në shabllone dhe skedarët css në dosjen statike/css. Ju mund ta personalizoni plotësisht css ashtu siç dëshironi.

Nëse e keni bërë këtë pjesë, duhet të konfiguroni shishen tuaj. Flask është e lehtë për t'u përdorur vetëm një shembull i botës së përshëndetjes

# balonë importi në fillim

nga importi i shisheve * @app.route ('/') def index (): kthehu render_template ('index.html')

Tani në kodin tim kjo është mbushur tashmë, e vetmja gjë që duhet të bëni është të ndryshoni përdoruesin e bazës së të dhënave dhe fjalëkalimin në atë nga ju dhe natyrisht bëni të njëjtën bazë të dhënash që gjithashtu mund të gjeni në github.

Hapi 3: Krijimi i bazës së të dhënave

Krijimi i bazës së të dhënave
Krijimi i bazës së të dhënave

Për tifozët e vërtetë unë do t'ju tregoj se si të krijoni të njëjtën bazë të dhënash.

Pra, së pari ne duhet të krijojmë bazën e të dhënave nëse nuk e keni bërë në hapin e parë.

krijoni bazën e të dhënave beargardian;

Pasi ta keni bërë këtë, krijoni tabelat në mysql workbench ose phpadmin

tabela e përdoruesve ka

  • ID e përdoruesit
  • Emri
  • mbiemri
  • email
  • emri i foshnjës
  • fjalëkalim me sha1
  • dosje përdoruesi
  • playmusic (int)
  • dritë loje (int)
  • regjistrim loje (int)

tabela e muzikës ka

  • musicID
  • kenge
  • rrugë
  • dosje përdoruesi
  • statusit
  • vëllimi

tabela e regjistrimit ka

  • regjistrimi ID
  • rrugë
  • dosje përdoruesi
  • koha
  • dita

tabela me ngjyra ka

  • colorID
  • e kuqe
  • jeshile
  • blu
  • shkëlqim
  • ID e përdoruesit

tryeza e ariut ka

  • bearID (dhjetore (8))
  • userID default null
  • emri i markës

tabela e sensorit ka

  • sensorID
  • distanca
  • mikro
  • bearID
  • koha
  • dita
  • Koha per te fjetur

Pra, tani ju keni krijuar bazën e të dhënave me sukses, le të shkojmë në harduer.

Hapi 4: Kodimi i harduerit

Unë do të tregoj pak kod dhe do t'ju them pse e bëra në atë mënyrë.

Për të filluar me kam përdorur filetim, ajo që duhet të jetë absolute në këtë projekt. Çfarë është filetimi, hmmm pyetje e mirë! Pra, kërcënimi në python është të ekzekutoni programe të shumta në të njëjtën kohë. Pra, nëse për shembull ndryshoni ngjyrën, gjithashtu mund të regjistroni. Easyshtë e lehtë për t'u përdorur mos u shqetësoni.

importo_threaddef funksion_name (diçka, diçka_tjetër): kodi për tu ekzekutuar

_thread.start_new_thread (emri i funksionit, tuple_with_the_functions_variables)

Nëse shikoni programin tim, shihni logger.info ('…'). Ky është funksioni i printimit por shumë më i mirë, sepse në Pi nuk mund të printoni sende kështu që unë bëj një skedar dhe e printoj atje. Yoe mund të vendosë skedarin e regjistrit me këtë kod.

logger = logging.getLogger (_ emri _) logger.setLevel (logging. INFO) # krijoni një mbajtës skedari të menaxhimit = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)

# krijoni një format regjistrimi

formatues = regjistrim. Formatter (' %(asctime) s - %(emri) s - %(mesazh) s') handler.setFormatter (formatues)

# shtoni mbajtësit në regjistrues

logger.addHandler (mbajtës)

logger.info ('filloni harduerin / n ---------------------------------------')

më tej në vetë kodin shpjegoj gjithçka.

Recommended: