Mundarija:

Beargardian: 5 qadam
Beargardian: 5 qadam

Video: Beargardian: 5 qadam

Video: Beargardian: 5 qadam
Video: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, Noyabr
Anonim
Beargardian
Beargardian

Salom bolalar, maktab uchun menga loyiha uchun g'oya kerak edi. Men o'yladim, bu malina pi bilan loyiha bo'lishi kerak va u mahalliy. To'satdan menda ajoyib fikr paydo bo'ldi va mendan bu g'oyani qanday qabul qilganimni so'ramayman, lekin men chaqaloq monitorini yangilash haqida o'yladim. Bu fikr haqida bir zum o'ylab ko'ring, eng chaqaloq monitorlar faqat chaqaloq xonasini tinglash funktsiyasiga ega.

Xususiyatlari

  • Ranglari sozlangan kichik yorug'lik namoyishi
  • Sizga jonli tasvirlarni ko'rsatadigan kamera
  • Musiqa ijro etish uchun karnay
  • Bolaning harakatini tasvirga oladigan sensorlar
  • Bularning barchasi veb -saytda ko'rsatiladi

Qisqa ma'lumot

Buni qisqacha versiyada tushuntirib beray. Shunday qilib, biz veb -saytga muhtojmiz va bu loyiha uchun men Flaskdan foydalanmoqdaman, bizga ma'lumotlar bazasi kerak va men mysql -ni ishlataman, shuningdek, uskuna bilan ishlaydigan skript va bu python (3) bilan va oxirgi marta serverni sozlashimiz kerak. bu PIda nginx bo'ladi.

Bizga nima kerak

  • Raspberry Pi 3
  • Bosqichli motor 28BYJ
  • ULN2003 stepmotorli stepmotor haydovchi chipi
  • 330 Ohm 3 rezistorli rgb LED
  • Pi NoIR kamerasi V2
  • HC-SR04 ultratovush sensori
  • Ardiuno mikro moduli
  • MAX98357A
  • Karnay 8 Ohm
  • Va ayiq sotib olishni unutmang

Malinali pi ni o'rnatish ----------------------------------------------- -------------------------------------------------- --------------------------

Avvaliga biz Pi -ni sozlashimiz kerak. Putty orqali kirishni allaqachon boshlang, agar sizda macun bo'lmasa, men buni yuklab olishni maslahat beraman, ssh bilan Pi statik ipini yozing va siz u bilan ketasiz. Agar siz Raspberry Pi -ni o'rnatishingiz kerak bo'lsa, men yomon xabar oldim, men buni bu loyihada tushuntirmayman.

Paketlarni o'rnating

sudo apt yangilash

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

Virtual muhit

python3 -m pip install -pip setuptools wheel virtualenv ni yangilang

mkdir {sizning loyiha nomingiz} && cd {sizning loyihangiz papkasi} python3 -m venv --system-site-packages env source env/bin/python -m pip mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask- MySQL mysql-ulagichi-python passlib

Endi siz loyiha papkasida git omborini klonlashingiz kerak

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

Agar siz loyiha papkasiga qarasangiz, siz 5 ta papkani ko'rishingiz kerak

  • konf
  • env
  • Sensor
  • kv
  • tarmoq

Ma'lumotlar bazasi

sudo systemctl status mysql

ss -lt | grep mysql sudo mysql

ma'lumotlar bazasida barcha imtiyozlarga ega foydalanuvchi yaratish va ma'lumotlar bazasini yaratish

"parol" bilan aniqlangan "user"@"localhost" foydalanuvchisini yaratish;

ma'lumotlar bazasi nomining ma'lumotlar bazasini yaratish; Ma'lumotlar bazasi nomidagi barcha imtiyozlarni bering.* grant 'opsiyasi bilan' user '@' localhost 'ga;

Server uchun konf fayllari

Uwsgi-flask.ini-da siz 'module =…' ni 'module = web: app' ga va siz yaratgan virtual tarmoqqa yo'lni o'zgartirasiz. Boshqa fayllarda siz katalogingizning haqiqiy mutlaq yo'llarini o'zgartirishingiz kerak.

Buni aniqlaganingizdan so'ng, siz fayllarni kerakli joyga qo'yishingiz mumkin.

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

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

endi biz buni mavjud qilishimiz kerak

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

sudo rm/etc/nginx/sites-yoqilgan/default sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1 sudo systemctl restart nginx.service sudo nginx -t

Agar hamma narsa yaxshi bo'lsa, siz ushbu buyruq bilan salom olamiga ega bo'lasiz

wget -qO - localhost

Bajarildi! Xo'sh, bu sizning tizimingizni ishga tushirishga imkon beradigan qismdir …

1 -qadam: uskunani Pi -ga ulash

Uskunani Pi -ga ulash
Uskunani Pi -ga ulash

BCM yordamida

audio MAX98357A

  • BCIO dan GPIO 18gacha
  • GPIO 21 uchun ma'lumotlar
  • LRCK - GPIO 19

yorug'lik

  • qizil GPIO 17
  • GPIO 27 uchun yashil rang
  • ko'k GPIO 22 uchun

vosita moduli ULN2003

  • GPIO 5 -ga 1 -pin
  • 2 -pinni GPIO 6 -ga ulang
  • 3 -pinni GPIO 13 ga ulang
  • 4 -pinni GPIO 26 -ga ulang

mikro

D0 - GPIO 21

ultratovush sensori

  • GPIO 16 ga o'tish
  • GPIO 20 -ga aks -sado

2 -qadam: Asosiy dasturlarni kodlash

Men bu erda batafsil ma'lumotga ega emasman, lekin siz mening kodimni github -da tekshirishingiz mumkin.

Boshlash uchun men html va CSS -ni indeks, kirish, ro'yxatdan o'tish, bosh ekran, musiqa, qo'shiq, qo'shish, yorug'lik, kamera, kamera sozlamalari, sensor, asboblar paneli sahifasini yaratdim. HTML fayllari andozalarda va CSS fayllari statik/CSS papkasida bo'lishi kerak. Siz xohlagan tarzda CSS -ni to'liq sozlashingiz mumkin.

Agar siz ushbu qismni bajargan bo'lsangiz, siz idishni sozlashingiz kerak. Kolbadan salom olamining misolini ishlatish oson

avvaliga # import kolbasi

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

Endi mening kodimda bu allaqachon to'ldirilgan, siz qilishingiz kerak bo'lgan yagona narsa - bu ma'lumotlar bazasi foydalanuvchisi va parolini sizdan o'zgartirish va, albatta, github -da topishingiz mumkin bo'lgan ma'lumotlar bazasini yaratish.

3 -qadam: Ma'lumotlar bazasini yaratish

Ma'lumotlar bazasini yaratish
Ma'lumotlar bazasini yaratish

Haqiqiy muxlislar uchun men sizga bir xil ma'lumotlar bazasini qanday yaratishni aytaman.

Shunday qilib, agar siz birinchi qadamda qilmagan bo'lsangiz, avval ma'lumotlar bazasini yaratishimiz kerak.

beargardian ma'lumotlar bazasini yaratish;

Buni qilganingizdan so'ng, jadvallarni mysql workbench yoki phpadmin -da yaratasiz

foydalanuvchi jadvaliga ega

  • foydalanuvchi IDsi
  • ism
  • familiya
  • elektron pochta
  • otaning ismi
  • sha1 bilan parol
  • foydalanuvchi papkasi
  • musiqiy musiqa (int)
  • o'yin nuri (int)
  • ijro yozuvi (int)

musiqiy stol bor

  • musiqa identifikatori
  • Qo'shiq
  • yo'l
  • foydalanuvchi papkasi
  • holat
  • tovush

ro'yxatga olish jadvali mavjud

  • yozish ID
  • yo'l
  • foydalanuvchi papkasi
  • vaqt
  • kun

rangli jadval mavjud

  • colorID
  • qizil
  • yashil
  • ko'k
  • yorqinlik
  • foydalanuvchi IDsi

ayiq stoli bor

  • bearID (o'nlik (8))
  • userID standart null
  • ism

Sensorli stol mavjud

  • Sensor identifikatori
  • masofa
  • mikro
  • ayiq ID
  • vaqt
  • kun
  • uxlash vaqti

Endi siz ma'lumotlar bazasini muvaffaqiyatli yaratdingiz, keling uskunaga o'tamiz.

4 -qadam: Uskuna kodlash

Men ozgina kod ko'rsataman va nima uchun bunday qilganimni aytib beraman.

Ishni boshlash uchun, men bu loyihada mutlaqo nima bo'lishi kerak. Tarmoq nima, hmmm yaxshi savol! Python -da bir vaqtning o'zida bir nechta dasturlarni ishga tushirish tahdid soladi. Agar siz, masalan, rangni o'zgartirsangiz, yozib olishingiz mumkin. Qo'llash oson, xavotir olmang.

import _threaddef function_name (biror narsa, biror narsa_else): ishga tushirish uchun kod

_thread.start_new_thread (funktsiya_ nomi, funktsiyalari_variantlari bilan birga)

Agar siz mening dasturimga qarasangiz, logger.info ('…') ni ko'rdingiz. Bu bosib chiqarish funktsiyasi, lekin bundan ham yaxshiroq, chunki Pi -da siz biror narsani chop qila olmaysiz, shuning uchun men faylni tuzaman va u erda chop etaman. Yoe jurnal faylini ushbu kod bilan o'rnatishi mumkin.

logger = logging.getLogger (_ nomi _) logger.setLevel (logging. INFO) # fayl ishlov beruvchisi yaratish = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)

# jurnal formatini yaratish

formatter = logging. Formatter (' %(vaqt) s - %(ism) s - %(xabar) s') ishlovchi

# ishlovchilarni jurnalga qo'shing

logger.addHandler (ishlovchi)

logger.info ('apparatni ishga tushirish / n ---------------------------------------')

kodning o'zida men hamma narsani tushuntiraman.

Tavsiya: