Como criei uma placa eletrônica para sensores de telemetria e controle de periféricos

No processo de criação de um robô-garçom, um robô de telepresença, um robô de selfie, alguns desenvolvimentos pareceram um pecado não compartilhar com a comunidade, ou seja, criar código aberto. Uma das versões de trabalho era uma placa eletrônica, com o nome de código SB versão 4.0, usando um Arduino barato e com uma funcionalidade relativamente baixa, a saber, o Nano 3.0. A placa SB 4.0 é simples e compreensível para consolidar seu conhecimento de eletrônica e habilidades de solda durante a montagem, é funcional o suficiente para fazer seus próprios projetos práticos (por exemplo, acender uma lâmpada por sinais de um sensor de movimento e um sensor de luz ambiente ou por sua equipe via Bluetooth). e o custo dos componentes com entrega ao fazer o pedido de nossos amigos chineses com taobao foi de cerca de US $ 55 (incluindo os próprios sensores).

O principal objetivo da placa SB 4.0 é a interface de hardware. Após a coleta, você pode usá-lo para receber e processar dados de vários sensores pré-instalados, além de tomar decisões e executar algoritmos. Para conveniência da depuração, foi criada uma interface no sistema operacional Windows, que exibe claramente as leituras telemétricas de sensores e uma fonte de energia, o estado dos botões e servos, e você pode enviar comandos para o microcontrolador.

Nesta publicação, descreverei as características do quadro e um exemplo de sua aplicação. Novamente, tudo isso é de código aberto, licenciado sob o CC Share Non-Commercial Share Alike.

Sim, já existem placas de controle e KITs semelhantes com sensores (placas Arduino com blindagens mais caras, para Raspberry Pi, para ampere de iodo), mas o SB 4.0 difere delas na presença de uma placa de energia e de um programa de controle conveniente escrito usando o ambiente de desenvolvimento LabView. Ou seja, o SB 4.0 consiste em duas placas: controle + potência. Isso será visto em fotos e vídeos.

Foto das duas placas, sensor de movimento, bateria:



Programação


Para programar o microcontrolador, como sempre, usamos C / C ++. Estamos desenvolvendo o IDE do Arduino.

A captura de tela mostra a interface do programa Selfiebot Control Panel, onde as leituras telemétricas dos sensores e da fonte de energia, o estado dos botões e servos são claramente exibidos, você pode enviar comandos para o microcontrolador.

Captura de tela da parte da interface:



Desempenho


O SB 4.0 usa uma das plataformas mais baratas do Arduino Nano 3.0 com um microcontrolador ATmega328 de 8 bits. Isso é suficiente para processar o código e resolver problemas: controlar robôs, sistemas domésticos inteligentes, etc.



Compatibilidade


A tensão lógica é de 5 V, o que garante compatibilidade elétrica com os periféricos do Arduino.

Portas de entrada / saída


Pinos de controle do microcontrolador disponíveis. Entre parênteses, ele indicou elementos pré-instalados com os quais a placa já sabe trabalhar.
  • 2 pinos, que podem ser configurados como entrada / saída digital e saída PWM (para dois servos digitais);
  • 1 pino, entrada / saída digital (para sensor de movimento);
  • 3 pinos, entrada / saída digital (para LEDs RGB);
  • 1 pino, entrada / saída digital (para sensor de limite, botões);
  • 1 pino, saída digital + 5V / 0V (para controlar a carga externa).

O barramento I2C e a porta UART são usados ​​respectivamente para a placa de expansão de portas e o módulo Bluetooth.
A universalidade da placa SB 4.0 é fornecida. Corresponder níveis de potência, níveis de sinal, tipo de entrada / saída! Substitua os sensores pré-instalados pelos seus:

  • temperatura
  • nível de ruído
  • umidade
  • pressão, etc.


O pino de entrada opera em uma base fechada / aberta. I.e. no pino indo para o MK ou + 5V, ou 0. Esses valores estão incluídos nos dados de telemetria enviados ao software Selfiebot Control Panel.

O pino de saída produz 5V com capacidade de carga de 1A ou está desativado - 0V. Aplicar tensão ou não a este conector é possível apenas por um comando externo ou por um comando do algoritmo de firmware.

Não faz sentido conectar sensores analógicos a pinos digitais.

Nutrição


A energia é fornecida através da tomada de 2,1 mm ou de baterias de íon de lítio com um controlador de carregamento. A fonte é determinada automaticamente.
No caso de fonte de alimentação através de um soquete, a tensão de entrada recomendada é de 12 a 12,6 V. Os conversores de tensão CC-CC fornecem 7 V para servos, 5 V para USB1, USB2 e outras cargas.Um adaptador ou baterias podem ser usados ​​como fonte de energia.
Use pinos de 5V para alimentar periféricos. Ao usar uma fonte de energia externa, é possível obter até 1A a partir de um pino de 5V.

O kit de fonte de alimentação inclui:
  • Bateria 3x18650, 1 unidade
  • Bateria 18650, 3,7 V, de 2200 mAh, 3 pçs.
  • Controlador de carga, 1 pc.
  • 1 x conector de alimentação
  • Conversores DC-DC, 4 pçs.
  • Sensor Hall, 1 pc.
  • Transistores, 3 unid.
  • Optoacopladores e resistores.




Comunicação


O microcontrolador Arduino Nano é programado via USB com software livre padrão no site do fabricante MK. Para transferir dados entre o SB 4.0 e um computador, como sempre, escolhi o módulo Bluetooth HC-06 comum barato, a taxa de transferência de dados de 9600 Kb / s. Dados de telemetria e comandos de controle passam por esse canal sem fio.

Dimensões


Consegui as dimensões da placa de potência eletrônica - 100 × 70 × 40 mm. As dimensões do painel de controle eletrônico são 90 × 70 × 45 mm. Mas tenho certeza que você ainda pode xamanizar e reduzir o tamanho.

O espaçamento do contato é de 0,1 ″ (2,54 mm).

Especificações do microcontrolador


  • Microcontrolador: ATmega328 de 8 bits.
  • Frequência do relógio: 16 MHz.
  • Memória Flash: 32 KB (2 KB são usados ​​para o carregador de inicialização, 30 KB - para armazenar o código do seu programa).
  • RAM 2KB.
  • EEPROM 1 Kb.
  • Tensão nominal de trabalho: 5 V


Recursos da placa eletrônica SB 4.0


  • Tensão operacional nominal: 12,6 V
  • Tensão de entrada recomendada: 12–12,6 V.
  • Corrente máxima do barramento 5 V: 1000 mA
  • Portas de E / S de uso geral: 2
  • Portas com suporte PWM: 2


O painel de controle inclui os seguintes elementos:

  • Módulo Bluetooth HC-06, 1 pc.
  • Placa eletrônica do expansor de porta do microcontrolador, 1 pc.
  • Microcontrolador Arduino Nano 3.0, 1 pc.
  • 1 pç. Placa eletrônica de nível de iluminação
  • Servos TowerPro MG966R, 2 unid.
  • Fotoresistor, 1 pc.
  • Sensor de movimento, 1 pc.
  • 1 x LED RGB
  • Botão, 1 pc.
  • Fusível, 1 pc.
  • Jumper, 1 unid.
  • Transistor, 1 pc.
  • Capacitor, 1 pc.




Uso prático


Opções para uso prático:

1. Abrir / fechar janelas quando a temperatura mudar.
2. Ligue / desligue o ventilador quando a umidade da sala mudar.
3. Ligue / desligue a luz na presença de movimento no escuro.
4. Ligue / desligue o fornecimento de água ao alterar a umidade do solo.
5. Ligue a iluminação infravermelha no escuro.
6. Transfira todos os dados de telemetria para o servidor via conexão com a Internet.

Exemplo de aplicação da placa SB 4.0


Objetivo: desde que o botão seja pressionado, acenda a luz quando for detectado movimento.



Para fazer isso, precisamos adicionalmente de um módulo de relé, uma lâmpada (220 ADC ou até 12 VCC).

1. Na maioria das vezes encontramos relés 12VDC e 05VDC. O número significa que valor de tensão direta deve ser fornecido à entrada do relé.
2. Considere a operação do relé SRD-05VDC da Songle, que é comum no Arduino.
3. Quando a energia é aplicada ao pino Vcc e em curto ao pino “GND”, o LED verde acende.
4. Desde como temos um módulo de canal único, na placa você verá apenas um pino de sinal In1. Se você definir o nível de tensão LOW como In1, o LED vermelho no módulo de relé acenderá e o relé funcionará com um clique característico. No Arduino, o comando digitalWrite (pin, LOW) é responsável por definir o nível de tensão no pino; Para retornar o relé ao seu estado anterior, use o comando digitalWrite (pin, HIGH);
5. Conecte o módulo de relé à placa SB 4.0, que possui um sensor de movimento pré-instalado e um botão de usuário.
5.1 O pino de sinal In1 do módulo de relé está conectado ao pino 13.
5.2. No código do programa Arduino Nano, encontramos:
***********************************
 //     -   ,       timeout_SnSM
 if (var_Tlm_SnSM == 1) { time_Move_detect = millis(); }
 if (millis() - time_Move_detect < timeout_Move_detect) { Move_detect = 1; } else { Move_detect = 0; }
***********************************


Adicione estas linhas abaixo:
***********************************
  //     (== 0),     (== 1)     13 (== LOW),   timeout_SnSM
  if (var_Tlm_BUT == 0) { 
    if (Move_detect == 1) { digitalWrite(PIN_D13, LOW); } else {  digitalWrite(PIN_D13, HIGH); }
  } else {
    digitalWrite(PIN_D13, HIGH); 
  }
***********************************

5.3 Faça o download do novo firmware e ligue a alimentação da placa.

Se o sensor de movimento detectou movimento, graças ao nosso algoritmo, o nível LOW aparece no pino da fonte de alimentação da carga externa, o relé opera, fecha o circuito e a lâmpada acende.

Assim, se uma pessoa passa por um sensor de movimento, a luz acende.

Source: https://habr.com/ru/post/pt397493/


All Articles