Mundarija:
- 1 -qadam: uskunani Pi -ga ulash
- 2 -qadam: Asosiy dasturlarni kodlash
- 3 -qadam: Ma'lumotlar bazasini yaratish
- 4 -qadam: Uskuna kodlash
- 5 -qadam: Buyuk ish
Video: Beargardian: 5 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
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
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
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:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga belgilangan dvigatel tezligini o'zgartirishga imkon beradi, so'ngra xuddi shu algoritm yordamida yangi belgilangan tezlikka tezlashadi/sekinlashadi
Qanday qilib qadam taymerini yasash mumkin?: 3 qadam (rasmlar bilan)
Qanday qilib qadam taymerini yasash mumkin ?: Men ko'plab sport turlarida yaxshi qatnashardim: yurish, yugurish, velosiped haydash, badminton o'ynash va hokazo. Men tez orada sayohat qilishni yaxshi ko'raman. Xo'sh, qorin qornimga qarang …… Xo'sh, baribir, men mashg'ulotlarni qaytadan boshlashga qaror qildim. Qanday uskunani tayyorlashim kerak?
Arduino UNO bilan qadam motor: 3 qadam
Arduino UNO bilan qadam dvigateli: Bosqichli motorlar - bu alohida bosqichlarda harakatlanadigan shahar motorlari. Ularda "fazalar" deb nomlangan guruhlarga bo'lingan bir nechta rulon bor. Har bir fazani ketma -ket quvvatlantirganda, dvigatel birma -bir aylanadi, zinapoyali dvigatellar juda foydali
Kompyuteringizni qadam dvigateli bilan boshqaring!: 9 qadam (rasmlar bilan)
Kompyuteringizni qadam dvigateli bilan boshqaring!: Oldingi ko'rsatmalarimdan birida men sizga step motorini aylanuvchi kodlovchi sifatida qanday ishlatishni ko'rsatdim. Bu yo'riqnomada keling, undan kompyuterni boshqarish uchun qanday foydalanish kerakligini bilib olaylik. Shunday qilib, ko'p vaqt sarflamasdan, boshlaylik