İçindekiler:

Beargardian: 5 Adım
Beargardian: 5 Adım

Video: Beargardian: 5 Adım

Video: Beargardian: 5 Adım
Video: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, Kasım
Anonim
Beargardian
Beargardian

Hey çocuklar okul için bir proje için bir fikre ihtiyacım vardı. Ben de düşündüm ki, ahududu pi ile bir proje olmalı ve yerel. Birden aklıma harika bir fikir geldi ve bu fikre nasıl ulaştığımı sormayın ama bir bebek telsizi için yükseltme yapmayı düşündüm. Bu fikir hakkında bir saniye düşünün, çoğu bebek monitörü bebeğin odasını dinleme işlevine sahiptir.

Özellikler

  • Ayarlanabilir renklerle küçük bir ışık gösterisi
  • Size canlı görüntüler gösteren bir kamera
  • Müzik çalmak için bir hoparlör
  • Bebeğin hareketini algılayan sensörler
  • Tüm bunlar bir web sitesinde gösteriliyor

Kısa bilgi

Bunu kısa bir versiyonda açıklayayım. Bu yüzden bir web sitesine ihtiyacımız var ve bu proje için Flask kullanıyorum, ayrıca bir veritabanına ihtiyacımız var ve mysql kullanıyorum, ayrıca donanımı çalıştıran bir betik ve bu python(3) ile ve son olarak bir sunucu kurulumuna ihtiyacımız var bu PI'de nginx olurdu.

Neye ihtiyacımız var

  • Ahududu Pi 3
  • Step motor 28BYJ
  • Stepmotor sürücü çipi ULN2003 step modülü
  • 3 dirençli 330Ohm ile bir rgb led
  • Pi NoIR kamera V2
  • Ultrasonik sensör HC-SR04
  • ardiuno'dan mikro modül
  • MAX98357A
  • Bir hoparlör 8Ohm
  • Ve bir ayı almayı unutma

Ahududu pi'yi kurun -------------------------------------------------- -------------------------------------------------- --------------------------

İlk önce Pi'yi kurmamız gerekiyor. Putty ile giriş yapmaya şimdiden başlayın, eğer Putty'niz yoksa bunu indirmenizi tavsiye ederim, sadece Pi'nin statik ip'ini ssh ile yazın ve onunla devam edin. Raspberry Pi'nizi kurmanız gerekiyorsa kötü bir haberim var, bunu bu projede anlatmıyorum.

Paketleri yükle

sudo uygun güncelleme

sudo apt kurulum -y python3-venv python3-pip python3-mysqldb mysql-sunucu uwsgi nginx uwsgi-plugin-python3

Sanal çevre

python3 -m pip kurulumu --upgrade pip kurulum araçları tekerleği sanalenv

mkdir {proje klasör adınız} && cd {proje klasör adınız} 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-bağlayıcı-python şifresi

Şimdi proje klasörünüzdeki git deposunu klonlamanız gerekiyor

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

Proje klasörünüze bakarsanız 5 klasör görmeniz gerekir.

  • konf
  • ortam
  • sensör
  • sql

Veri tabanı

sudo systemctl durumu mysql

ss -lt | grep mysql sudo mysql

veritabanında tüm ayrıcalıklara sahip bir kullanıcı oluşturun ve veritabanınızı yapın

'parola' ile tanımlanan 'kullanıcı'@'localhost' kullanıcısını oluşturun;

veritabanınızı veritabanı adınızı oluşturun; veri tabanı adınız* üzerindeki tüm yetkileri hibe seçeneği ile 'user'@'localhost'a verin;

Sunucu için conf dosyaları

uwsgi-flask.ini'de 'module = …' öğesini 'module= web:app' olarak ve oluşturduğunuz virtualenv'inizin yolunu değiştirirsiniz. Diğer dosyalarda, dizininizin gerçek mutlak yollarına giden yolları değiştirmeniz gerekir.

Bunu anladıktan sonra dosyaları doğru yere ayarlayabilirsiniz.

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

sudo systemctl arka plan programı-yeniden yükle sudo systemctl projeyi başlat1-* sudo systemctl durum projesi1-*

şimdi bunu kullanılabilir hale getirmeliyiz

sudo cp conf/nginx /etc/nginx/siteler kullanılabilir/proje1

sudo rm /etc/nginx/sites-etkin/varsayılan sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1 sudo systemctl nginx.service yeniden başlat sudo nginx -t

Her şey yolunda gittiyse, bu komutla merhaba dünyanız olmalı

wget -qO - yerel ana bilgisayar

Tamamlandı ! Peki bu, sisteminizi çalıştırmanıza izin verecek kısım için…

Adım 1: Donanımı Pi'ye Bağlama

Donanımı Pi'ye Kablolama
Donanımı Pi'ye Kablolama

BCM'yi kullanma

ses MAX98357A

  • BCK'den GPIO 18'e
  • GPIO 21'e veri
  • LRCK'den GPIO'ya 19

ışık

  • GPIO 17'ye kırmızı
  • GPIO 27'ye yeşil
  • maviden GPIO 22'ye

motor modülü ULN2003

  • pin 1'den GPIO 5'e
  • pin 2'den GPIO 6'ya
  • pin 3'ten GPIO 13'e
  • pim 4'ten GPIO 26'ya

mikro

D0 - GPIO 21

ultrasonik sensör

  • GPIO 16'ya tetikleme
  • GPIO 20'ye yankı

Adım 2: Ana Programların Kodlanması

Burada ayrıntılara girmiyorum ama kodumu github'da kontrol edebilirsiniz.

Başlamak için html ve css, bir dizin, giriş, kayıt, ana ekran, müzik, addmusic, addbear, ışık, kamera, kamera ayarları, sensör, gösterge tablosu sayfası oluşturdum. Html dosyaları şablonlarda ve css dosyaları da static/css klasöründe olmalıdır. Css'i tamamen istediğiniz gibi özelleştirebilirsiniz.

Bu kısmı yaptıysanız, şişenizi ayarlamanız gerekir. Flask, merhaba dünyasının sadece bir örneğini kullanmak kolaydır

# ilk başta şişeyi içe aktar

şişeden içe aktarma * @app.route('/') def index(): render_template('index.html') döndür

Şimdi kodumda bu zaten doldurulmuş, yapmanız gereken tek şey veritabanı kullanıcısını ve şifresini sizden değiştirmek ve tabii ki github'da da bulabileceğiniz aynı veritabanını yapmak.

Adım 3: Veritabanını Oluşturma

Veritabanını Oluşturma
Veritabanını Oluşturma

Gerçek hayranlar için aynı veritabanını nasıl oluşturacağınızı anlatacağım.

Yani birinci adımda yapmadıysanız, önce veritabanını oluşturmamız gerekiyor.

Beargardian veritabanı oluşturmak;

Bunu yaptıktan sonra tabloları mysql tezgahında veya phpadmin'de yaratırsınız.

kullanıcı tablosu var

  • Kullanıcı kimliği
  • ilk adı
  • Soyadı
  • e-posta
  • bebek ismi
  • sha1 ile şifre
  • kullanıcı klasörü
  • oyun müziği (int)
  • oyun ışığı (int)
  • oynatma kaydı (int)

müzik masası var

  • müzik kimliği
  • şarkı
  • yol
  • kullanıcı klasörü
  • durum
  • Ses

kayıt tablosu var

  • kayıt kimliği
  • yol
  • kullanıcı klasörü
  • zaman
  • gün

renk tablosu var

  • renk kimliği
  • kırmızı
  • Yeşil
  • Mavi
  • parlaklık
  • Kullanıcı kimliği

ayı masası var

  • ayıKimliği (ondalık(8))
  • kullanıcı kimliği varsayılanı boş
  • ayı adı

sensör tablosu vardır

  • sensör kimliği
  • mesafe
  • mikro
  • ayı kimliği
  • zaman
  • gün
  • uyku zamanı

Veritabanını başarıyla oluşturdunuz, şimdi donanıma geçelim.

Adım 4: Donanım Kodlaması

Biraz kod göstereceğim ve size neden böyle yaptığımı anlatacağım.

Başlangıç olarak iş parçacığı kullandım, bu projede mutlak bir zorunluluktur. İş parçacığı nedir, hmmm güzel soru! Python'da tehdit, aynı anda birden fazla program çalıştırmaktır. Yani örneğin rengi değiştirirseniz, kayıt da yapabilirsiniz. Merak etmeyin kullanımı kolaydır.

import _threaddef function_name(bir şey, bir şey_else): çalıştırılacak kod

_thread.start_new_thread(işlev_adı, tuple_with_the_functions_variables)

Programıma baktıysanız, logger.info('…') ifadesini gördünüz. Bu yazdırma işlevi ama çok daha iyi, çünkü Pi'de bir şeyler yazdıramazsınız, bu yüzden bir dosya hazırlayıp oraya yazdırırım. Bu kod ile log dosyasını ayarlayabilirsiniz.

logger = logging.getLogger(_name_)logger.setLevel(logging. INFO) # dosya işleyici oluştur = logging. FileHandler('logger.log') handler.setLevel(logging. INFO)

# bir günlük formatı oluştur

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

# işleyicileri kaydediciye ekleyin

logger.addHandler(işleyici)

logger.info('donanımı başlat\n------------------------------------------')

kodun kendisinde her şeyi açıklarım.

Önerilen: