Índice:

Beargardian: 5 etapas
Beargardian: 5 etapas

Vídeo: Beargardian: 5 etapas

Vídeo: Beargardian: 5 etapas
Vídeo: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, Novembro
Anonim
Beargardian
Beargardian

Olá, pessoal da escola, precisava de uma ideia para um projeto. Então eu estava pensando, tem que ser um projeto com o pi de framboesa e é local. De repente, tive uma ótima ideia e não me pergunte como tive essa ideia, mas pensei em um upgrade para uma babá eletrônica. Pense um pouco nessa ideia, a maioria das babás eletrônicas tem apenas a função de ouvir o quarto do bebê.

As características

  • Um pequeno show de luzes com cores ajustáveis
  • Uma câmera que mostra imagens ao vivo
  • Um alto-falante para tocar música
  • Sensores para capturar o movimento do bebê
  • Tudo isso mostrado em um site

Informação curta

Deixe-me explicar isso em uma versão curta. Então precisamos de um site e para este projeto estou usando Flask, também precisamos de um banco de dados e estou usando mysql, também um script que executa o hardware e isso é com python (3) e por último precisamos de uma configuração de servidor isso seria nginx no PI.

O que nós precisamos

  • The Raspberry Pi 3
  • O motor de passo 28BYJ
  • O módulo de passo do chip do motor de passo ULN2003
  • Um led rgb com 3 resistores 330Ohm
  • A câmera Pi NoIR V2
  • O sensor ultrassônico HC-SR04
  • O micro módulo de ardiuno
  • O MAX98357A
  • Um alto-falante 8Ohm
  • E não se esqueça de comprar um urso

Configurar raspberry pi ----------------------------------------------- -------------------------------------------------- --------------------------

Primeiramente, precisamos configurar o Pi. Comece já a logar via putty, caso não tenha putty recomendo que baixe, basta digitar seu ip estático do Pi com ssh e pronto. Se você tiver que instalar o Raspberry Pi, recebo uma má notícia, não estou explicando isso neste projeto.

Instale pacotes

atualização do apt sudo

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

Ambiente virtual

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

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

Agora você tem que clonar o repositório git na pasta do seu projeto

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

Se você olhar na pasta do seu projeto, verá 5 pastas

  • conf
  • env
  • sensor
  • sql
  • rede

Base de dados

sudo systemctl status mysql

ss -lt | grep mysql sudo mysql

crie um usuário no banco de dados com todos os privilégios e faça seu banco de dados

criar usuário 'usuário' @ 'localhost' identificado por 'senha';

criar banco de dados yourdatabasename; conceda todos os privilégios em seu nome do banco de dados. * para 'usuário' @ 'localhost' com opção de concessão;

Arquivos conf para o servidor

No uwsgi-flask.ini, você altera 'module =…' para 'module = web: app' e o caminho para o virtualenv que você criou. Nos outros arquivos, você precisa alterar os caminhos para os caminhos absolutos reais do seu diretório.

Depois de descobrir isso, você pode colocar os arquivos no lugar certo.

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

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

agora temos que definir isso disponível

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

Se tudo correu bem, devias ter olá, mundo com este comando

wget -qO - localhost

Feito ! Bem, essa é a parte de deixar seu sistema rodar …

Etapa 1: conectando o hardware ao Pi

Conectando o Hardware ao Pi
Conectando o Hardware ao Pi

usando BCM

áudio MAX98357A

  • BCK para GPIO 18
  • Dados para GPIO 21
  • LRCK para GPIO 19

luz

  • vermelho para GPIO 17
  • verde para GPIO 27
  • azul para GPIO 22

módulo do motor ULN2003

  • pino 1 para GPIO 5
  • pino 2 para GPIO 6
  • pino 3 para GPIO 13
  • pino 4 para GPIO 26

micro

D0 para GPIO 21

sensor ultrasônico

  • trig para GPIO 16
  • eco para GPIO 20

Etapa 2: Codificando os Programas Principais

Não estou entrando em detalhes aqui, mas você pode verificar meu código no github.

Para começar, fiz meu html e css, um índice, login, registro, tela inicial, música, addmusic, addbear, luz, câmera, configurações de câmera, sensor, página do painel. Os arquivos html devem estar nos modelos e os arquivos css na pasta estática / css. Você pode personalizar totalmente o css como desejar.

Se você fez esta parte, você precisa configurar seu frasco. O Flask é fácil de usar, apenas um exemplo do hello world

# importar flask no início

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

Agora no meu código isso já está preenchido, a única coisa que você precisa fazer é alterar o usuário e a senha do banco de dados para você e claro fazer o mesmo banco de dados que você também pode encontrar no github.

Etapa 3: Criação do banco de dados

Criando o banco de dados
Criando o banco de dados

Para os verdadeiros fãs, vou dizer a vocês como criar o mesmo banco de dados.

Portanto, primeiro precisamos criar o banco de dados, se você não o fez na etapa um.

criar banco de dados beargardian;

Depois de fazer isso, você cria as tabelas no mysql workbench ou phpadmin

a tabela do usuário tem

  • ID do usuário
  • primeiro nome
  • último nome
  • o email
  • nome do bebê
  • senha com sha1
  • pasta de usuário
  • playmusic (int)
  • playlight (int)
  • gravação de reprodução (int)

mesa de musica tem

  • musicID
  • música
  • caminho
  • pasta de usuário
  • status
  • volume

mesa de gravação tem

  • ID de gravação
  • caminho
  • pasta de usuário
  • Tempo
  • dia

tabela de cores tem

  • colorID
  • vermelho
  • verde
  • azul
  • brilho
  • ID do usuário

mesa de urso tem

  • bearID (decimal (8))
  • userID default null
  • bearname

mesa de sensor tem

  • sensorID
  • distância
  • micro
  • bearID
  • Tempo
  • dia
  • hora de dormir

Agora que você criou o banco de dados com sucesso, vamos ao hardware.

Etapa 4: codificação de hardware

Mostrarei um pouco de código e direi por que fiz isso dessa maneira.

Para começar, usei threading, o que é uma necessidade absoluta neste projeto. O que é threading, hmmm boa pergunta! Bem, ameaçar em python é executar vários programas ao mesmo tempo. Portanto, se você, por exemplo, alterar a cor, também poderá gravar. É fácil de usar, não se preocupe.

import _threaddef function_name (something, something_else): código a ser executado

_thread.start_new_thread (function_name, tuple_with_the_functions_variables)

Se você olhou no meu programa, viu logger.info ('…'). Esta é a função de impressão, mas muito melhor, porque no Pi você não pode imprimir coisas, então eu faço um arquivo e imprimo lá. Você pode definir o arquivo de log com este código.

logger = logging.getLogger (_ name _) logger.setLevel (logging. INFO) # criar um manipulador de arquivo handler = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)

# criar um formato de registro

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

# adicione os manipuladores ao logger

logger.addHandler (manipulador)

logger.info ('iniciar o hardware / n ---------------------------------------')

mais adiante no próprio código, explico tudo.

Recomendado: