Índice:

TheAir - Projeto Sensor de Gás: 10 Passos
TheAir - Projeto Sensor de Gás: 10 Passos

Vídeo: TheAir - Projeto Sensor de Gás: 10 Passos

Vídeo: TheAir - Projeto Sensor de Gás: 10 Passos
Vídeo: Sensors - which one to use 2024, Julho
Anonim
TheAir - Projeto Sensor de Gás
TheAir - Projeto Sensor de Gás

Monóxido de carbono e dióxido de carbono, também conhecido como CO e CO2. Gases que são incolores, inodoros, insípidos e francamente perigosos quando em altas concentrações em uma sala fechada. Se você está morando, por exemplo, em um quarto de estudante que está mal isolado, sem fluxo de ar bom e por algum motivo, a torradeira faz um barulho estranho ao fazer torradas. Aí você pode entrar em contato com esses gases e quando isso acontecer, esperemos que só termine com uma pequena dor de cabeça, pois em alta concentração pode incapacitar ou até matar (embora muito raramente).

Então decidi inventar este projeto. Minha ideia é simples, use ventiladores para fazer um fluxo de ar. Bom ar que entra e mau ar que sai, por assim dizer. Para utilidade extra, adicionei um sensor de temperatura extra, botão para ventiladores de ativação manual e também um site para quem gosta de ver estatísticas e / ou ativar ventiladores de seu computador.

Como aluno, pai, solteiro ou ser vivo. Isso é algo que você normalmente gostaria de evitar ao morar no conforto da sua própria casa. Isso ajuda quem gosta de tornar sua vida um pouco mais fácil.

Suprimentos

  • Raspberry Pi 3+
  • Carregador mini-usb 5V / 2,5A
  • Cartão micro-sd
  • Sensores

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (temperatura)
  • 2 x ventilador 12V DC
  • 2 transistores 2n2222
  • Visor LCD 16 * 2
  • Botão de apertar
  • MCP3008
  • Conversor de nível logi
  • Cabo Ethernet (por motivos de configuração)

Etapa 1: configuração do Raspberry Pi

Configuração do Raspberry Pi
Configuração do Raspberry Pi
Configuração do Raspberry Pi
Configuração do Raspberry Pi

Antes de trabalhar com o Rpi, precisaremos de algum software.

  • WinSCP ou FilleZilla (opcional se você deseja transferir arquivos do seu computador para o Rpi)
  • Disco Win32 ou Etcher (que você prefere mais)
  • Putty ou MobaXterm (o que você prefere mais)
  • Imagem Raspbian com desktop

Antes de começar, gostaria de mencionar que, ao fazer este tutorial, quando escolho um programa em vez de outro, NÃO significa que eu o recomende. Por exemplo, gosto de usar o etcher porque é mais amigável, mas o Win32 tem a opção de fazer backups. Agora isso está fora do meu sistema, vamos começar.

Se você já tem um Rpi conectado à sua rede wi-fi, pule para a etapa 3.

Primeiro, vamos usar o Etcher para colocar a imagem Raspbian em seu cartão SD. Agora, antes de retirar o cartão SD, vamos alterar algumas "coisas" no arquivo cmdline.txt, que pode ser encontrado na imagem. Abra o arquivo.txt -> Adicione esta linha "ip = 169.254.10.1" (sem aspas) no final da linha (tudo em 1 linha) -> Salvar arquivo

Em segundo lugar, crie uma pasta vazia chamada "ssh" na partição de inicialização (sem as aspas).

Depois disso, você pode ejetar o Microsd com segurança e colocá-lo no Rpi.

O motivo do IP estático codificado é para facilitar a conexão com o Rpi. Se por algum motivo o Rpi não tiver ip com DHCP então você usa facilmente o ip estático.

Etapa 2: Fazendo uma conexão e conectando a Rpi sem fio à sua rede local

Fazendo uma conexão e conectando Rpi sem fio à sua rede local
Fazendo uma conexão e conectando Rpi sem fio à sua rede local
Fazendo uma conexão e conectando Rpi sem fio à sua rede local
Fazendo uma conexão e conectando Rpi sem fio à sua rede local
Fazendo uma conexão e conectando Rpi sem fio à sua rede local
Fazendo uma conexão e conectando Rpi sem fio à sua rede local
Fazendo uma conexão e conectando a Rpi sem fio à sua rede local
Fazendo uma conexão e conectando a Rpi sem fio à sua rede local

Vamos inicializar o Rpi -> conecte o cabo ethernet entre o computador e o Rpi.

  1. Inicie o Putty e preencha:

    • Nome do host (ou endereço IP): 169.254.10.1
    • Porta: 22
  2. Um terminal aparece e você digita o nome de usuário e a senha padrão:

    • Nome de usuário: pi
    • Senha: framboesa

Agora que estamos conectados localmente ao rpi, queremos que o Rpi tenha uma conexão ao seu wi-fi.

  1. Extra: digite "sudo raspi-config"
  2. Aqui você precisará alterar a senha do usuário pi (razões de segurança)
  3. Em seguida, vá para Opções de localização -> Alterar horário (escolha o correto) -> Em seguida, vá para País Wifi -> escolha o país.
  4. Feche o raspi-config e reinicie.
  5. Quando logado, temporariamente torne-se usuário root -> sudo -i
  6. Escreva este comando para adicionar sua rede à Rpi (lista de códigos abaixo)

    • senha = "senha" (entre aspas)
    • Rede de nome = "SSID"
    • Lembre-se de usar duplo >>! Importante!

echo "senha" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Agora reinicie novamente

Ao reconectar, verifique seu ip digitando:

ifconfig

e verifique wlan0, próximo ao inet.

Agora que temos conexão com a internet, vamos fazer uma atualização "rápida".

atualização do apt sudo

sudo apt dist-upgrade -y

Isso pode levar algum tempo.

Etapa 3: Sensor DS18B20 (temperatura) - 1 fio

Sensor DS18B20 (temperatura) - 1 fio
Sensor DS18B20 (temperatura) - 1 fio
Sensor DS18B20 (temperatura) - 1 fio
Sensor DS18B20 (temperatura) - 1 fio

Em cada projeto, sempre haverá algo especial que precisa ser feito ou então não funcionará.

Desta vez, temos com o sensor de temperatura DS18B20 que requer 1 fio que não vou explicar por que, mas vou explicar como fazer funcionar, pelo menos.

Para isso, temos que voltar ao raspi-config no Rpi, a bela tela azul.

  1. Vá para as opções de interface
  2. Escolha 1-Wire e escolha habilitar.

Feito…

Estou brincando.

Agora precisaremos ajustar /boot/config.txt

sudo nano /boot/config.txt

Adicione esta linha na parte inferior.

# Habilitar onewire

dtoverlay = w1-gpio

Agora sudo reinicie essa coisa e pronto.

Para verificar se funciona, conecte o sensor ao Rpi e, em seguida, volte ao terminal e digite este código (consulte a próxima etapa de Hardware para saber como conectar o sensor de temperatura).

cd / sys / bus / w1 / devices / w1_bus_master1

ls

Você deve ver algo com números e letras em azul escuro no canto superior esquerdo, certifique-se de escrever esta informação para mais tarde, quando estivermos trabalhando com o código do github.

Se por algum motivo não funcionar, verifique este link que vai mais fundo nele.

Etapa 4: MCP3008 - Detecção Analógica

MCP3008 - Sensor Analógico
MCP3008 - Sensor Analógico
MCP3008 - Sensor Analógico
MCP3008 - Sensor Analógico

Como fizemos uma alteração no sensor de temperatura, também precisamos fazer algumas alterações nos outros sensores, já que precisamos ler os dados analógicos. É aqui que o MCP3008 é útil, também precisamos alterar a interface SPI.

sudo raspi-config

Vá para Opções de interface -> Selecionar SPI -> ativar.

Então termine.

Etapa 5: Hardware

Não terminamos totalmente com o Rpi, mas o suficiente para que possamos começar a construir e montar o hardware.

Um conselho é verificar minuciosamente suas conexões ao construir para ter certeza de não … explodir o Rpi.

Além disso, no esquema, você notará que alguns componentes estão nele apenas uma vez, embora estejamos trabalhando com mais de 1 do mesmo componente. Significa apenas que você deve repetir o mesmo processo de construção daquele componente. Há uma pequena exceção, os sensores mq-x não precisam de um conversor de nível extra ou MCP3008. Basta adicionar um cabo verde extra (em pdf) ao conversor de nível e MCP3008.

Edição extra: Os ventiladores precisam usar um transistor como interruptor. Eu uso um transistor 2n2222A para 1 ventoinha, porque 2 ventoinhas podem ser uma carga muito pesada.

Se você tiver um transistor que pode lidar com uma corrente maior do que boa, pule a última parte desta etapa.

Se você não tiver um como eu, você precisará fazer assim, 1 ventoinha = 1 transistor, 2 ventoinhas = 2 transistores e assim por diante (cada ventoinha é seu próprio transistor + diodo como no pdf).

Você também precisará adicionar algum código a app.py em backend_project posteriormente na Etapa 7: código Git….

Etapa 6: Criando uma base de dados Mariadb

Criação de uma base de dados Mariadb
Criação de uma base de dados Mariadb

Como o título indica, vamos criar um banco de dados para que possamos armazenar nossos dados de sensor.

Em primeiro lugar, baixe o Mariadb no Rpi.

sudo apt-get install servidor mariadb

Após a instalação, vamos usá-lo.

mysql -u root

A senha está em branco, então nada para digitar. Pressione Enter.

Vamos criar um usuário agora.

CRIAR USUÁRIO 'user' @ '%' IDENTIFICADO POR 'userdb';

GRANT ALL PRIVILEGES ON *. * TO 'user' @ '%' WITH GRANT OPTION;

PRIVILÉGIOS DE FLUSH;

Pressione Ctrl + C para sair e reiniciar rapidamente o serviço:

sudo service mysql restart

Login com nome de usuário: usuário e senha: userdb:

mysql -u user -p

É hora de criar o banco de dados agora.

CREATE DATABASE project_db DEFAULT CHARACTER SET utf8;

USE project_db

Crie uma tabela "historiek" (significa história).

CRIAR TABELA SE NÃO EXISTIR `historiek` (` id` INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NOT NULL,` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PRIMARY KEY (` id`)) ENGINE = InnoDB;

E pronto, o banco de dados está feito.

Etapa 7: código e teste do Github

Código e teste do Github
Código e teste do Github

Estamos chegando ao fim do nosso projeto.

Antes de obter o código, precisaremos importar alguns módulos para o Rpi:

pip3 instalar Flask_MySQL

pip3 instalar flask-socketio

pip3 install -U flask-cors

pip3 install spidev

Agora precisamos do código para fazer funcionar, digite no terminal:

git clone

Verifique se a pasta está lá com:

ls

Agora você precisará de 2 terminais, por isso é útil clicar com o botão direito do mouse no terminal e clicar em Duplicar sessões:

Vá para backend_project e temperatura usando o comando cd.

Agora, antes de iniciarmos os programas para fins de teste. Você ainda se lembra da Etapa 3 com o sensor de 1 fio, onde você precisa anotar alguns números? Não se preocupe, basta dar uma olhada rápida na etapa 3 novamente.

Vamos adicionar esses números ao código porque ele precisará saber o sensor correto ao usá-lo.

O terminal com a pasta de temperatura, você encontrará app.py. Vamos abri-lo.

sudo nano app.py

Procure a função chamada "def temperatuur ():", aí você terá que substituir o "**" pelos números que você anotou. No meu caso, eu pegaria esta linha de código (cada número é único).

sensor_file_name = '/ sys / devices / w1_bus_master1 / 28-0316a4be59ff / w1_slave

Tempo de teste. Ambos os terminais em backend_project e na pasta de temperatura, digite:

python3 app.py

Agora lembre-se da etapa 5: hardware onde você precisa adicionar código se estiver usando vários ventiladores e transistores?

Ótimo, se não, volte para a etapa 5.

Agora precisamos adicionar o código conforme mencionei a app.py em backend_project. Para facilitar, fiz um exemplo disso no código. Cada linha de código de comentário que tem "fan1", descomente essas linhas e voila, agora você pode usar 2 fãs.

Se você quiser usar mais do que apenas 2 ventiladores, copie e cole o mesmo código abaixo dele, mas com um número diferente. A desvantagem disso é mais trabalho pessoal para você e menos gpio.pins disponíveis. Que eu saiba, não há vantagens nisso.

Etapa 8: execute o código na inicialização

Executar o código na inicialização
Executar o código na inicialização

Queremos que esses 2 scripts python sejam executados no momento em que nosso Rpi for inicializado e, no caso de um script travar, ele deve reiniciar sozinho. Para fazer isso, vamos fazer 2 serviços.

Para fazer isso, digite:

sudo nano /etc/systemd/system/temperature.service

Copie e cole isso para um serviço de temperatura:

[Unidade] Descrição = Serviço de temperatura após = multi-user.target

[Serviço] Tipo = simples

ExecStart = / usr / bin / python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py

StandardInput = tty-force

Reiniciar = em caso de falha

RestartSec = 60s

[Instalar]

WantedBy = multi-user.target

Feche e faça novamente, mas para um backend_project.service:

Primeiro texto aberto:

sudo nano /etc/systemd/system/backend_project.service

Em seguida, copie e cole novamente:

[Unit] Descrição = serviço backend_project

After = multi-user.target

[Serviço]

Tipo = simples

ExecStart = / usr / bin / python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py

StandardInput = tty-force

Reiniciar = em caso de falha

RestartSec = 60s

[Instalar]

WantedBy = multi-user.target

Salvar e fechar.

A última parte é digitar isto:

sudo systemctl daemon-reload

sudo systemctl enable temperature.service sudo reboot

Agora, nossos 2 scripts Python devem ser executados automaticamente na inicialização.

Etapa 9: configurar o site

Ao baixar o repositório, você também deve ter obtido uma pasta chamada front. É aqui que se encontram os conteúdos do site.

Primeiro, precisamos do apache antes de usar a pasta. Siga o guia neste link para o apache.

Quando você estiver pronto. Vá para onde a pasta frontal está localizada:

cd / Documentos / nmct-s2-project-1-TheryBrian

Em seguida, digite:

sudo mv front / var / www / html

Quando isso estiver feito, vá para a pasta html, prepare-se para algum trabalho tedioso (minha culpa).

cd / var / www / html /

em seguida, vá para a pasta frontal e comece a mover tudo para a pasta html.

exemplo:

sudo mv css / var / www / html

Em seguida, exclua a pasta frontal.

E terminamos com tudo.

Boa sorte:).

Etapa 10: Opcional - Protótipo em miniatura

Opcional - Protótipo em miniatura
Opcional - Protótipo em miniatura
Opcional - Protótipo em miniatura
Opcional - Protótipo em miniatura

Para fins de teste, fiz um protótipo de apenas uma caixa com todo o hardware dentro para ver se tudo funciona sob encomenda.

Normalmente, esse projeto seria feito em uma escala maior. Por exemplo: um quarto, uma casa, uma fábrica, uma loja e assim por diante …

Mas obviamente antes de começarmos a fazer buracos nas paredes (rima legal). Primeiro, queremos ver se funciona. Na verdade, você não precisa fazer uma caixa para teste, mas é sempre divertido fazer alguns trabalhos manuais.

Aqui está meu exemplo.

Recomendado: