Мазмуну:

Beargardian: 5 кадам
Beargardian: 5 кадам

Video: Beargardian: 5 кадам

Video: Beargardian: 5 кадам
Video: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, Ноябрь
Anonim
Beargardian
Beargardian

Эй балдар, мектеп үчүн мага долбоор үчүн идея керек эле. Мен ойлогом, бул малина пи менен долбоор болушу керек жана ал жергиликтүү. Күтүлбөгөн жерден менде сонун идея пайда болду жана мен бул идеяны кантип алганымды сурабайм, бирок мен бала мониторун жаңыртуу жөнүндө ойлондум. Бул идея жөнүндө бир аз ойлонуп көрүңүз, көпчүлүк ымыркай мониторлору баланын бөлмөсүн угуу функциясына ээ.

Өзгөчөлүктөр

  • Жөнөкөй түстөр менен кичинекей жарык шоу
  • Сизге жандуу сүрөттөрдү көрсөтүүчү камера
  • Музыканы ойното турган спикер
  • Баланын кыймылын тартып турган сенсорлор
  • Мунун баары веб -сайтта көрсөтүлөт

Кыска маалымат

Муну кыска нускада түшүндүрүп берейин. Ошентип, биз веб -сайтка муктажбыз жана бул проект үчүн мен Flask колдонуп жатам, бизге дагы маалымат базасы керек жана мен mysql колдонуп жатам, ошондой эле жабдууну иштетүүчү скрипт жана бул python (3) менен, акырында бизге серверди орнотуу керек бул PI боюнча nginx болмок.

Бизге эмне керек

  • Raspberry Pi 3
  • Stepmotor 28BYJ
  • Stepmotor driverchip ULN2003 кадам модулу
  • A rgb 3 каршылыгы 330Ohm менен жетектелген
  • Pi NoIR камерасы V2
  • УЗИ сенсор HC-SR04
  • Ардиунонун микро модулу
  • MAX98357A
  • Динамик 8Ohm
  • Анан аюу сатып алууну унутпаңыз

Малина пи орнотуу ----------------------------------------------- -------------------------------------------------- --------------------------

Адегенде биз Pi орнотушубуз керек. Шыбак аркылуу кирүүнү мурунтан баштаңыз, эгерде сизде шпаклинг жок болсо, мен муну жүктөп алууну сунуштайм, жөн эле Pi статикалык ipин ssh менен териңиз жана сиз аны менен барасыз. Эгерде сиз Raspberry Pi орнотушуңуз керек болсо, анда мен жаман кабар алдым, мен муну бул долбоордо түшүндүргөн жокмун.

Пакеттерди орнотуу

sudo apt update

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

Виртуалдык чөйрө

python3 -m пип орнотуу -pip setuptools дөңгөлөгүн виртуалдык жаңыртуу

mkdir {your project foldername} && cd {your project foldername} python3 -m venv --system-site-packages env source env/bin/activate python -m pip mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask- MySQL mysql-connector-python passlib

Эми сиз проект папкаңыздагы git репозиторийин клондошуңуз керек

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

Эгерде сиз долбооруңуздун папкасын карасаңыз, анда 5 папканы көрүшүңүз керек

  • конф
  • env
  • сенсор
  • sql
  • желе

Маалыматтар базасы

sudo systemctl status mysql

ss -lt | grep mysql sudo mysql

бардык артыкчылыктары бар маалымат базасында колдонуучу түзүү жана маалымат базаңызды түзүү

'password' менен аныкталган 'user'@'localhost' колдонуучусун түзүү;

маалымат базаңыздын атын түзүү; берилиштериңиздин аталышындагы бардык артыкчылыктарды бериңиз.* колдонуучуга@'localhost' грант берүү менен;

Сервер үчүн конф файлдары

Uwsgi-flask.iniде сиз 'module =…' '' module = web: app 'жана сиз түзгөн виртуалдык тармактын жолун өзгөртөсүз. Башка файлдарда сиз каталогдун чыныгы абсолюттук жолдоруна жолдорду өзгөртүүңүз керек.

Түшүнгөндөн кийин, сиз файлдарды керектүү жерге орното аласыз.

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

sudo systemctl daemon-reload sudo systemctl баштоо project1-* sudo systemctl status project1-*

азыр биз муну жеткиликтүү кылышыбыз керек

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

Эгер баары ойдогудай болсо, анда сиз бул буйрук менен салам дүйнөсүнө ээ болосуз

wget -qO - localhost

Бүттү! Ооба, бул сиздин системаңызды иштетүү үчүн …

1 -кадам: Аппаратты Piге туташтыруу

Аппаратты Piге туташтыруу
Аппаратты Piге туташтыруу

BCM колдонуу

аудио MAX98357A

  • BCKдан GPIO 18ге чейин
  • GPIO 21ге маалыматтар
  • GPR 19 үчүн LRCK

жарык

  • GPIO 17ге кызыл
  • GPIO 27 үчүн жашыл
  • GPIO 22ге көк

мотор модулу ULN2003

  • pin 1 GPIO 5ке
  • GPIO 6га 2 -пин
  • GPIO 13кө 3 -пин
  • GPIO 26га 4 -пин

микро

GPO 21 үчүн D0

УЗИ сенсор

  • GPIO 16га өтүү
  • GPIO 20га жаңыртуу

2 -кадам: Негизги программаларды коддоо

Мен бул жерде майда -чүйдөсүнө чейин эмесмин, бирок сиз менин кодумду githubдан текшере аласыз.

Баштоо үчүн мен html жана cssти, индексти, логинди, каттоону, башкы экранды, музыканы, музыканы, addbear, жарыкты, камераны, камера орнотууларын, сенсорду, панелдин баракчасын түздүм. HTML файлдары калыптарда жана CSS файлдары статикалык/CSS папкасында болушу керек. Сиз каалагандай CSSти толугу менен ыңгайлаштыра аласыз.

Эгер сиз бул бөлүктү аткарсаңыз, колбаңызды орнотушуңуз керек. Flask салам дүйнөсүнүн мисалын колдонуу оңой

# импорт колбасы башында

колбадан импорттоо * @app.route ('/') def index (): return render_template ('index.html')

Эми менин кодумда бул мурунтан эле толтурулган, сизден бир гана нерсе керек - бул маалымат базасынын колдонуучусун жана сырсөзүн сизден өзгөртүү жана, албетте, сиз дагы githubдан таба аласыз.

3 -кадам: Маалыматтар базасын түзүү

Маалыматтар базасын түзүү
Маалыматтар базасын түзүү

Чыныгы күйөрмандар үчүн мен сизге ошол эле маалымат базасын кантип түзүүнү айтып берейин.

Ошентип, биринчи кезекте биз маалымат базасын түзүшүбүз керек, эгер сиз биринчи кадамда болбосоңуз.

beargardian маалымат базасын түзүү;

Муну кылгандан кийин сиз mysql workbench же phpadminде таблицаларды түзөсүз

колдонуучу таблицасы бар

  • userID
  • биринчи аты
  • акыркы Аты
  • электрондук почта
  • атасынын аты
  • sha1 менен сырсөз
  • userfolder
  • ойноо музыкасы (int)
  • ойноткуч (int)
  • ойноо жазуусу (int)

музыкалык стол бар

  • musicID
  • ыр
  • жол
  • userfolder
  • статус
  • көлөмү

жазуу столу бар

  • жазуу ID
  • жол
  • колдонуучу папкасы
  • убакыт
  • күн

түстүү үстөл бар

  • colorID
  • Кызыл
  • жашыл
  • Көк
  • жарыктык
  • userID

аюунун столу бар

  • bearID (ондук (8))
  • userID демейки нөл
  • аталыш

сенсордук стол бар

  • sensorID
  • аралык
  • микро
  • bearID
  • убакыт
  • күн
  • уктоо убактысы

Эми сиз маалымат базасын ийгиликтүү түздүңүз, жабдыкка өтөлү.

4 -кадам: Аппараттык коддоо

Мен бир аз код көрсөтөм жана эмне үчүн мындай кылганымды айтып берейин.

Мен жипти колдонууну баштоо үчүн, бул долбоордо абсолюттук нерсе болушу керек. Тиш деген эмне, хмм жакшы суроо! Pythonдо коркунучтуу нерсе - бир эле учурда бир нече программаны иштетүү. Демек, эгер сиз, мисалы, түсүн өзгөртсөңүз, жаздырсаңыз болот. Колдонуу оңой, кабатыр болбо.

import _threaddef function_name (бир нерсе, бир нерсе_башка): иштетүү үчүн код

_thread.start_new_thread (функциянын_аталышы, функциялардын_өзгөрмөлөрү менен бирге)

Эгерде сиз менин программамды карасаңыз logger.info ('…') көрдүңүз. Бул басып чыгаруу функциясы, бирок алда канча жакшыраак, анткени Piде сиз эч нерсени басып чыгара албайсыз, ошондуктан мен файл жасап, ошол жерге басып чыгарам. Yoe бул файл менен журнал файлын орното алат.

logger = logging.getLogger (_ аты _) logger.setLevel (logging. INFO) # файл иштетүүчү иштетүүчү түзүү = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)

# журналдын форматын түзүү

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

# иштетүүчүлөрдү журналга кошуу

logger.addHandler (иштетүүчү)

logger.info ('аппараттык камсыздоону иштетүү / n ---------------------------------------')

андан ары коддун өзүндө мен баарын түшүндүрөм.

Сунушталууда: