Talaan ng mga Nilalaman:

Beargardian: 5 Hakbang
Beargardian: 5 Hakbang

Video: Beargardian: 5 Hakbang

Video: Beargardian: 5 Hakbang
Video: Вязание носков на 5 спицах для начинающих пошагово видео 2024, Nobyembre
Anonim
Beargardian
Beargardian

Hey guys para sa paaralan kailangan ko ng isang ideya para sa isang proyekto. Kaya't iniisip ko, dapat itong isang proyekto kasama ang raspberry pi at ito ay lokal. Bigla akong nagkaroon ng isang mahusay na ideya at huwag tanungin kung paano ko nakukuha ang ideyang iyon ngunit naisip ko ang tungkol sa isang pag-upgrade para sa isang baby monitor. Isipin lamang ang isang segundo tungkol sa ideyang iyon, ang pinaka-monitor ng sanggol ay mayroon lamang pagpapaandar upang makinig sa silid ng sanggol.

Ang mga tampok

  • Isang maliit na light show na may naaayos na mga kulay
  • Isang camera na nagpapakita sa iyo ng mga live na larawan
  • Isang tagapagsalita upang tumugtog ng musika
  • Mga sensor upang makuha ang paggalaw ng sanggol
  • Ang lahat ng iyon ay nagpapakita sa isang website

Maikling impormasyon

Ipinaliwanag ito ni Letme sa isang maikling bersyon. Kaya kailangan namin ng isang website at para sa proyektong ito ay gumagamit ako ng Flask, kailangan din namin ng isang database at gumagamit ako ng MySQL, isang script din na nagpapatakbo ng hardware at kasama nito ang sawa (3) at huling kailangan namin ng isang pag-setup ng server magiging nginx iyon sa PI.

Ano ang ating kailangan

  • Ang Raspberry Pi 3
  • Ang stepmotor 28BYJ
  • Ang stepmotor driverchip ULN2003 stepper module
  • Ang isang rgb ay humantong na may 3 resistors na 330Ohm
  • Ang Pi NoIR camera V2
  • Ang ultrasonic sensor HC-SR04
  • Ang micro module mula sa ardiuno
  • Ang MAX98357A
  • Isang tagapagsalita 8Ohm
  • At huwag kalimutang bumili ng isang bear

I-setup ang raspberry pi ---------------------------------------------- ---- --------------------------

Sa una kailangan naming i-setup ang Pi. Magsimula nang mag-login sa pamamagitan ng masilya, kung wala kang masilya Inirerekumenda ko sa iyo na i-download ito, i-type lamang ang iyong static ip ng Pi na may ssh at sumama ka rito. Kung kailangan mong i-install ang iyong Raspberry Pi pagkatapos ay nakakuha ako ng masamang balita, hindi ko ito ipinapaliwanag sa proyektong ito.

Mag-install ng mga package

sudo apt update

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

Kapaligirang virtual

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

mkdir {iyong proyekto foldername} && cd {iyong proyekto foldername} python3 -m venv --system-site-packages env source env / bin / buhayin ang python -m pip i-install ang mysql-konektor-python argon2-cffi Flask Flask-HTTPAuth Flask- MySQL MySQL-konektor-python passlib

Ngayon ay kailangan mong i-clone ang git repository sa iyong folder ng proyekto

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

Kung titingnan mo ang iyong folder ng proyekto kailangan mong makita ang 5 mga folder

  • conf
  • env
  • sensor
  • sql
  • web

Database

sudo systemctl status MySQL

ss -lt | grep MySQL sudo MySQL

lumikha ng isang gumagamit sa database na may lahat ng mga pribilehiyo at gawin ang iyong database

lumikha ng 'user' @ 'localhost' ng gumagamit na kinilala ng 'password';

lumikha ng database yourdatabasename; ibigay ang lahat ng mga pribilehiyo sa iyongdatabasename. * sa 'gumagamit' @ 'localhost' na may pagpipilian sa pagbibigay;

Conf mga file para sa server

Sa uwsgi-flask.ini binago mo ang 'module =…' sa 'module = web: app' at ang landas sa iyong virtualenv na iyong nilikha. Sa iba pang mga file kailangan mong baguhin ang mga landas sa aktwal na ganap na mga landas ng iyong direktoryo.

Kapag naisip mo na maaari mong itakda ang mga file sa tamang lugar.

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

sudo systemctl daemon-reload sudo systemctl simulan ang proyekto1- * sudo systemctl status project1- *

ngayon kailangan naming itakda ang magagamit na ito

sudo cp conf / nginx / etc / nginx / sites-available / project1

sudo rm / etc / nginx / sites-pinagana / default sudo ln -s / etc / nginx / sites-magagamit / project1 / etc / nginx / sites-pinagana / project1 sudo systemctl restart nginx.service sudo nginx -t

Kung ang lahat ay naging maayos ikaw ay may hello mundo sa utos na ito

wget -qO - localhost

Tapos na! Sa gayon iyon ay para sa bahagi upang hayaang patakbuhin ang iyong system sa…

Hakbang 1: Pag-kable ng Hardware sa Pi

Pag-kable ng Hardware sa Pi
Pag-kable ng Hardware sa Pi

gamit ang BCM

audio MAX98357A

  • BCK hanggang GPIO 18
  • Data sa GPIO 21
  • LRCK sa GPIO 19

ilaw

  • pula sa GPIO 17
  • berde sa GPIO 27
  • asul sa GPIO 22

motor module ULN2003

  • i-pin ang 1 sa GPIO 5
  • i-pin ang 2 sa GPIO 6
  • i-pin ang 3 sa GPIO 13
  • i-pin ang 4 sa GPIO 26

micro

D0 hanggang GPIO 21

ultrasonic sensor

  • mag-trig sa GPIO 16
  • echo sa GPIO 20

Hakbang 2: Pag-coding ng Pangunahing Mga Program

Hindi ako nakakakuha ng mga detalye dito ngunit maaari mong suriin ang aking code sa github.

Upang magsimula sa ginawa ko ang aking html at css, isang index, pag-login, pagrehistro, homescreen, musika, addmusic, addbear, ilaw, camera, cameraettings, sensor, dashboard page. Ang mga html file ay dapat na nasa mga template at ang css file sa static / css folder. Maaari mong ganap na ipasadya ang css na nais mo.

Kung nagawa mo ang bahaging ito kailangan mong i-setup ang iyong prasko. Madaling gamitin ang Flask bilang isang halimbawa lamang ng mundo ng hello

# mag-import ng prasko sa una

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

Ngayon sa aking code ito ay napunan na, ang tanging bagay na kailangan mong gawin ay baguhin ang gumagamit ng database at password na mula sa iyo at ofcourse gawin ang parehong database na maaari mo ring makita sa github.

Hakbang 3: Paglikha ng Database

Paglikha ng Database
Paglikha ng Database

Para sa totoong mga tagahanga sasabihin ko sa iyo kung paano lumikha ng parehong database.

Kaya kailangan muna naming likhain ang database kung hindi ka sa unang hakbang.

lumikha ng database beargardian;

Kapag nagawa mo ito nilikha mo ang mga talahanayan sa MySQL workbench o phpadmin

mesa ng gumagamit ay mayroong

  • userID
  • pangalan
  • huling pangalan
  • email
  • babyname
  • password na may sha1
  • gumagamit ng folder
  • playmusic (int)
  • playlight (int)
  • playrecording (int)

mesa ng musika ay mayroong

  • musikaID
  • kanta
  • landas
  • gumagamit ng folder
  • katayuan
  • dami

talaan ng recording ay mayroon

  • nagre-recordID
  • landas
  • gumagamit ng folder
  • oras
  • araw

kulay talahanayan ay may

  • kulayID
  • pula
  • berde
  • bughaw
  • ningning
  • userID

bear table ay mayroong

  • bearID (decimal (8))
  • default na null ang userID
  • bearname

mesa ng sensor ay mayroong

  • sensorID
  • distansya
  • micro
  • bearID
  • oras
  • araw
  • oras ng tulog

Kaya't ngayon ay nilikha mo nang matagumpay ang database, pumunta tayo sa hardware.

Hakbang 4: Pag-coding ng Hardware

Magpapakita ako ng kaunting code at sasabihin sa iyo kung bakit ko nagawa iyon sa ganoong paraan.

Upang magsimula sa ginamit kong pag-thread, kung ano ang ganap na kinakailangan sa proyektong ito. Ano ang threading, hmmm magandang tanong! Ang pagbabanta sa sawa ay upang magpatakbo ng maraming mga programa nang sabay-sabay. Kaya kung halimbawa mong binago ang kulay maaari ka ring mag-record. Madaling gamitin huwag magalala.

i-import ang _threaddef function_name (isang bagay, isang bagay_else): code na tatakbo

_thread.start_new_thread (function_name, tuple_with_the_function_variables)

Kung tiningnan mo ang aking programa nakita mo ang logger.info ('…'). Ito ang pagpapaandar na naka-print ngunit mas mahusay, dahil sa Pi hindi mo mai-print ang mga bagay-bagay kaya gumawa ako ng isang file at mai-print ito doon. Maaaring itakda ni Yoe ang file ng log kasama ang code na ito.

logger = logging.getLogger (_ name _) logger.setLevel (logging. INFO) # create a file handler handler = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)

# Lumikha ng isang format ng pag-log

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

# idagdag ang mga handler sa logger

logger.addHandler (handler)

logger.info ('start up hardware / n -------------------------------------')

sa karagdagang sa code mismo ipinapaliwanag ko ang lahat.

Inirerekumendang: