Spisu treści:

Beargardian: 5 kroków
Beargardian: 5 kroków

Wideo: Beargardian: 5 kroków

Wideo: Beargardian: 5 kroków
Wideo: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, Listopad
Anonim
Beargardian
Beargardian

Hej chłopaki do szkoły Potrzebowałem pomysłu na projekt. Pomyślałem więc, że to musi być projekt z raspberry pi i to jest lokalne. Nagle wpadłem na świetny pomysł i nie pytaj mnie, skąd mam ten pomysł, ale pomyślałem o uaktualnieniu do niani elektronicznej. Zastanów się chwilę nad tym pomysłem, większość elektronicznych niań ma tylko funkcję słuchania pokoju dziecka.

Cechy

  • Mały pokaz świetlny z regulowanymi kolorami
  • Kamera, która pokazuje obrazy na żywo
  • Głośnik do odtwarzania muzyki
  • Czujniki do uchwycenia ruchu dziecka
  • Wszystko to pokazuje na stronie internetowej

Krótka informacja

Pozwólcie, że wyjaśnię to w krótkiej wersji. Potrzebujemy więc strony internetowej i do tego projektu używam Flask, potrzebujemy również bazy danych i używam mysql, także skryptu, który uruchamia sprzęt i to jest z python (3) i na koniec potrzebujemy konfiguracji serwera to byłby nginx na PI.

Czego potrzebujemy

  • Raspberry Pi 3
  • Silnik krokowy 28BYJ
  • Moduł krokowy sterownika krokowego ULN2003
  • Led rgb z 3 rezystorami 330Ohm
  • Kamera Pi NoIR V2
  • Czujnik ultradźwiękowy HC-SR04
  • Mikromoduł od ardiuno
  • MAX98357A
  • Głośnik 8Ohm
  • I nie zapomnij kupić niedźwiedzia

Konfiguracja raspberry pi ----------------------------------------------- -------------------------------------------------- --------------------------

Najpierw musimy skonfigurować Pi. Zacznij już logować się przez putty, jeśli nie masz putty, polecam to pobrać, po prostu wpisz swoje statyczne ip Pi za pomocą ssh i idź z tym. Jeśli musisz zainstalować Raspberry Pi to mam złe wieści, nie wyjaśniam tego w tym projekcie.

Zainstaluj pakiety

aktualizacja sudo apt

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

Wirtualne środowisko

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

mkdir {nazwa folderu projektu} && cd {nazwa folderu projektu} python3 -m venv --system-site-packages env source env/bin/activate python -m pip install mysql-connector-python argon2-cffi Flask-HTTPAuth Flask- MySQL-mysql-connector-python passlib

Teraz musisz sklonować repozytorium git w folderze projektu

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

Jeśli zajrzysz do folderu projektu, musisz zobaczyć 5 folderów

  • konf
  • zazdrościć
  • czujnik
  • sql
  • sieć

Baza danych

sudo systemctl status mysql

ss-lt | grep mysql sudo mysql

utwórz użytkownika w bazie danych ze wszystkimi uprawnieniami i stwórz swoją bazę danych

utwórz użytkownika 'user'@'localhost' identyfikowanego przez 'password';

utwórz bazę danych nazwabazy danych; nadaj wszystkie uprawnienia do nazwy twojej bazy danych.* do 'user'@'localhost' z opcją grant;

Pliki konfiguracyjne dla serwera

W uwsgi-flask.ini zmieniasz 'module = …' na 'module= web:app' i ścieżkę do swojego wirtualnego środowiska, którą utworzyłeś. W pozostałych plikach musisz zmienić ścieżki na rzeczywiste ścieżki bezwzględne twojego katalogu.

Gdy już to zrozumiesz, możesz ustawić pliki we właściwym miejscu.

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

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

teraz musimy ustawić to dostępne

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 ponowne uruchomienie sudo systemctl nginx.service sudo nginx -t

Jeśli wszystko poszło dobrze, powinieneś mieć hello world z tym poleceniem

wget -qO - host lokalny

Gotowe ! Cóż, to jest część, która pozwala uruchomić system na…

Krok 1: Okablowanie sprzętu do Pi

Okablowanie sprzętu do Pi
Okablowanie sprzętu do Pi

za pomocą BCM

audio MAX98357A

  • BCK do GPIO 18
  • Dane do GPIO 21
  • LRCK do GPIO 19

lekki

  • czerwony do GPIO 17
  • zielony do GPIO 27
  • niebieski do GPIO 22

moduł silnika ULN2003

  • pin 1 do GPIO 5
  • pin 2 do GPIO 6
  • pin 3 do GPIO 13
  • pin 4 do GPIO 26

mikro

D0 do GPIO 21

czujnik ultradźwiękowy

  • wyzwalanie do GPIO 16
  • echo do GPIO 20

Krok 2: Kodowanie głównych programów

Nie wchodzę tutaj w szczegóły, ale możesz sprawdzić mój kod na github.

Na początek zrobiłem swój html i css, indeks, login, rejestr, ekran główny, muzykę, addmusic, addbear, światło, aparat, ustawienia aparatu, czujnik, stronę deski rozdzielczej. Pliki html muszą znajdować się w szablonach, a pliki css w folderze static/css. Możesz w pełni dostosować CSS, jak chcesz.

Jeśli wykonałeś tę część, musisz ustawić swoją kolbę. Flask jest łatwy w użyciu tylko przykładem hello world

# najpierw importuj kolbę

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

Teraz w moim kodzie jest to już wypełnione, jedyne, co musisz zrobić, to zmienić użytkownika bazy danych i hasło na to od Ciebie i oczywiście utworzyć tę samą bazę danych, którą możesz również znaleźć na github.

Krok 3: Tworzenie bazy danych

Tworzenie bazy danych
Tworzenie bazy danych

Prawdziwym fanom powiem, jak stworzyć tę samą bazę danych.

Więc najpierw musimy stworzyć bazę danych, jeśli nie zrobiłeś tego w pierwszym kroku.

stworzyć bazę Beargardian;

Gdy to zrobisz, utworzysz tabele w mysql workbench lub phpadmin

tabela użytkownika ma

  • identyfikator użytkownika
  • Imię
  • nazwisko
  • e-mail
  • imię dziecka
  • hasło z sha1
  • folder użytkownika
  • muzyka do odtwarzania (int)
  • lampka do zabawy (wew.)
  • nagranie odtwarzania (wew.)

stolik muzyczny ma

  • musicID
  • utwór muzyczny
  • ścieżka
  • folder użytkownika
  • status
  • Tom

stół do nagrywania ma

  • identyfikator nagrania
  • ścieżka
  • folder użytkownika
  • czas
  • dzień

tabela kolorów ma

  • IDKoloru
  • czerwony
  • Zielony
  • niebieski
  • jasność
  • identyfikator użytkownika

Niedźwiedź ma

  • identyfikator niedźwiedzia (dziesiętny(8))
  • domyślna wartość identyfikatora użytkownika zerowa
  • niedźwiedź

stół czujnika ma

  • ID czujnika
  • dystans
  • mikro
  • identyfikator niedźwiedzia
  • czas
  • dzień
  • czas spania

Więc teraz pomyślnie utworzyłeś bazę danych, przejdźmy do sprzętu.

Krok 4: Kodowanie sprzętowe

Pokażę trochę kodu i powiem, dlaczego zrobiłem to w ten sposób.

Na początek zastosowałem gwintowanie, co jest absolutną koniecznością w tym projekcie. Co to jest gwintowanie, hmmm dobre pytanie ! Cóż, zagrożenie w pythonie polega na uruchamianiu wielu programów jednocześnie. Więc jeśli na przykład zmienisz kolor, możesz również nagrywać. Jest łatwy w użyciu, nie martw się.

import _threaddef nazwa_funkcji(coś, coś_innego): kod do uruchomienia

_thread.start_new_thread(nazwa_funkcji, krotka_z_zmiennymi_funkcjami)

Jeśli spojrzałeś na mój program, zobaczyłeś logger.info('…'). To jest funkcja drukowania, ale znacznie lepsza, ponieważ na Pi nie można drukować rzeczy, więc tworzę plik i drukuję go tam. Możesz ustawić plik dziennika za pomocą tego kodu.

logger = logging.getLogger(_name_)logger.setLevel(logging. INFO) # utwórz procedurę obsługi pliku handler = logging. FileHandler('logger.log') handler.setLevel(logging. INFO)

# utwórz format logowania

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

# dodaj programy obsługi do rejestratora

logger.addHandler(obsługa)

logger.info('uruchomienie sprzętu\n-------------------------------------------')

dalej w samym kodzie wszystko wyjaśniam.

Zalecana: