Índice:

Construir observador de máquina: 9 etapas
Construir observador de máquina: 9 etapas

Vídeo: Construir observador de máquina: 9 etapas

Vídeo: Construir observador de máquina: 9 etapas
Vídeo: 🫣Пьяных: на их совести смерть Немцова! Джонсон вспомнил. Откровения Ходарёнка о ПВО. Дудь вернулся. 2024, Novembro
Anonim
Construir observador de máquina
Construir observador de máquina
Construir observador de máquina
Construir observador de máquina

O ponto de partida para este projeto foi trabalhar em um projeto concreto para aprender algumas coisas sobre placas de microcontrolador.

A ideia inicial era criar um objeto físico que pudesse monitorar um Sistema de Integração Contínua (VSTS | Azure DevOps) e relatar falhas de compilação de software. Devido a questões de segurança do departamento de TI, recusei-me a conectar um dispositivo "não padrão" diretamente à rede corporativa.

Acabei com a arquitetura mostrada na foto acima. O fluxo de trabalho de execução pode ser resumido como:

Um aplicativo da área de trabalho do Windows verifica (puxa) as definições de compilação do VSTS. Ele analisa os resultados da construção e, em seguida, envia um comando para o dispositivo físico que executa uma pequena sequência animada antes de mostrar a bandeira vermelha ou a verde.

Etapa 1: peças necessárias

A lista a seguir resume todos os itens necessários:

  • 1 Arduino UNO R3 (https://store.arduino.cc/usa/arduino-uno-rev3).
  • 1 Expension Shield (https://www.dfrobot.com/wiki/index.php/IO_Expansion_Shield_for_Arduino_V7_SKU:DFR0265).
  • 2 módulos XBee S1 (https://www.adafruit.com/product/128).
  • 1 XBee explorer dongle (https://www.sparkfun.com/products/11697).
  • 2 servo motores contínuos 5VDC com acessórios de fixação (https://www.parallax.com/sites/default/files/downloads/900-00008-Continuous-Rotation-Servo-Documentation-v2.2.pdf).
  • 1 fonte de alimentação 9VDC.
  • 3 LEDs.
  • 3 resistores de 220 Ohm.
  • manga termo retrátil.
  • 1 botão de pressão.
  • 10KΩ pull resistor para pull up.
  • Capacitor 100nF.
  • Fios elétricos.
  • strip-board (para a montagem do botão)
  • Madeira de 5mm (50x50cm).
  • madeira vara seção quadrada 5x5 mm (1m).
  • cartão.
  • Parafuso 10 X de 2 mm de diâmetro.
  • 4 parafusos de 5 mm de diâmetro.
  • ímã forte.
  • módulo de torneamento. Reutilizei a parte interna móvel de uma luz intermitente. você pode colocar o que quiser. Você apenas terá que cuidar para que as 2 partes móveis possam se mover livremente sem se tocarem.

Etapa 2: construindo a caixa

Construindo a Caixa
Construindo a Caixa

Na verdade, você pode ter uma caixa no formato que desejar. As principais coisas a se pensar antes de começar são onde estarão as partes móveis e garantir que elas possam se mover livremente sem se tocarem. Outro ponto é onde você vai colocar o aparelho? Acabei ficando com um ímã (forte) para grudar em qualquer suporte metálico. se você deseja construir a mesma caixa, pode seguir as instruções no arquivo box_drawings.pdf.

Nesse caso, basta cortar todas as peças diferentes, fazer os furos para os servomotores, os LEDs, o botão e os parafusos e por último colar todas as peças. Depois de seco, um pouco de lixamento e um pouco de cor.

As duas bandeiras foram feitas com um pouco de papelão vermelho e verde. Para fixar o mastro da bandeira nos servomotores, você pode usar as peças de montagem fornecidas na compra.

Etapa 3: configuração do Arduino

Configuração do Arduino
Configuração do Arduino

Os itens conectados à placa de extensão do Arduino são:

  • PIN D2: o botão de pressão.
  • PIN D4: o LED que indica que o sistema está LIGADO.
  • PIN D5: o LED para dizer que executamos um ciclo.
  • PIN D6: o LED indica que o dispositivo recebeu uma nova mensagem.
  • PIN D9: o sinal de pulso PWM para o servomotor que manipula o giroscópio.
  • PIN D10: o sinal de pulso PWM para o servomotor que manipula a bandeira.
  • Soquete XBee: um Módulo ZigBee.

O esquema acima mostra como todos os itens são conectados ao tabuleiro.

Para os LEDs, o resistor e os fios são soldados diretamente nele (cuidado com a polaridade). Tudo é então embalado dentro de uma manga termo-retrátil.

Para o botão de pressão, todas as peças (botão, resistor e capacitor) são soldadas diretamente em uma pequena placa de tira de satélite. O strip-board é então diretamente fixado com dois parafusos (2 mm)

Os servomotores operam com 5 V de potência, portanto, podem ser conectados diretamente ao Arduino. Se você usar um com voltagem mais alta (12V), terá que adicionar outra camada para a fonte de alimentação.

Para os módulos XBee, uma vez configurados para se comunicarem (consulte a próxima seção), eles podem ser conectados diretamente aos soquetes.

Observações: Os LEDs e o botão de pressão podem ter sido conectados diretamente aos pinos do Arduino, pois podem implementar internamente as seguranças necessárias. Eu apenas fiz da maneira antiga, pois esse aspecto não estava muito claro para mim.

Etapa 4: Software - XCTU

Software - XCTU
Software - XCTU

Conforme mencionado acima, os dois dispositivos XBee devem ser configurados para se comunicarem. Para fazer isso, você precisa usar o software X-CTU dedicado da DIGI. Você precisa executar esta etapa de configuração apenas uma vez. siga o procedimento descrito no arquivo xbee_configuration.pdf.

Assim que a configuração estiver concluída, você pode conectar cada módulo em seu soquete. Um no conversor USB / Serial e um na placa de extensão do Arduino.

O conversor USB / Serial deve ser reconhecido automaticamente pelo Windows 10. Se não for, pode ser necessário instalar manualmente o driver

Observação:

Usar módulos XBee para fazer uma comunicação serial básica é um pouco exagero. Na época em que iniciei o projeto, não consegui encontrar dispositivos de comunicação serial simples facilmente utilizáveis no Windows 10 (problemas de driver). Também foi uma oportunidade de aprender algumas coisas sobre

Etapa 5: Software - Arduino Sketch

Software - Arduino Sketch
Software - Arduino Sketch

Para programar o Arduino usamos o IDE acessível no site oficial.

A lógica do programa é bastante simples, ele apenas escuta na porta serial padrão da placa por letras únicas ('a', 'b', …). Se o caractere recebido corresponder a um comando conhecido, uma subfunção reproduz a sequência correspondente.

Os 2 principais comandos úteis são animação de sucesso ('a') e animação de erro ('b').

Para poder jogar (ou depurar) um pouco mais com a caixa, existem alguns comandos extras que podem ser executados. Eles são:

  • ‘O’: força o LED LIGADO a estar LIGADO
  • ‘P’: força o LED LIGADO a ficar DESLIGADO
  • ‘Q’: força o LED de Nova Mensagem a LIGAR
  • ‘R’: força o LED de Nova Mensagem a DESLIGAR
  • ‘S’: força o LED de ciclo para LIGAR
  • ‘T’: força o LED de ciclo a DESLIGAR
  • ‘U’: ativa o servomotor do giroscópio
  • ‘V’: ativa o servomotor da bandeira.

Além do comando serial, existe uma sub-rotina (handlePushButton) que é ativada quando o botão é pressionado no dispositivo. Nesse caso, a animação de erro ou sucesso é reproduzida automaticamente. Este recurso permite verificar se o dispositivo físico foi montado corretamente.

O código do esboço do Arduino está no arquivo único bsldevice.ino. Você pode carregá-lo diretamente usando o IDE.

Etapa 6: Software - Aplicativo Desktop

Software - Aplicativo Desktop
Software - Aplicativo Desktop

O objetivo do aplicativo de desktop é monitorar o site do Microsoft Azure DevOps (anteriormente VSTS) e detectar se uma Definição de Compilação foi bem-sucedida ou está com erro. Cada vez que uma compilação é concluída, o aplicativo de desktop determina o status da compilação e envia o comando correspondente ('a' ou 'b') para a porta serial (COMx).

Depois de iniciar o aplicativo, a primeira ação é selecionar a porta de comunicação correta na qual o módulo ZigBee está conectado. Para determinar a porta, você pode usar o Gerenciador de Dispositivos do Windows (em Portas (seção COM e LPT)). A conexão com o Azure DevOps é feita automaticamente na inicialização usando as credenciais do usuário atual. Você também pode enviar qualquer comando predefinido manualmente usando a caixa de combinação à direita.

Todas as fontes foram geradas com Visual Studio 2017 Professional edition. Requer o. NET Framework 4.6.1. Esta versão do Framework é preferível para facilitar a conexão / autenticação ao site do VSTS.

usar:

  • baixe o arquivo bslwatcher_sources.zip.
  • Extraia-o em seu disco.
  • Leia o arquivo how_to_build.txt para detalhes de construção.

Etapa 7: primeiro início

Há duas coisas principais a se ter em mente ao iniciar a caixa:

1- Não há como o sistema saber por si mesmo onde estão as bandeiras. O sistema assume que, na inicialização, a bandeira verde está ativada.

2- Ao ligar a placa Arduino nada deve se mover. Como usamos servos contínuos, a posição zero é definida como 90 por padrão no arquivo de esboço. Se um servomotor começar a girar ou fazer algum barulho. você pode ter que redefinir sua posição zero. Para isso, basta ajustar o potenciômetro dentro do pequeno orifício na lateral do servomotor.

www.arduino.cc/en/Reference/ServoWrite

cmra.rec.ri.cmu.edu/content/electronics/boe…

Etapa 8: Conclusão

Este pequeno dispositivo relatará fisicamente o status do seu Sistema de Integração Contínua.

Como a "inteligência" está no aplicativo de desktop, você pode usar a caixa para monitorar qualquer outro software ou processo (e-mail, sensor de temperatura …). Você só precisa ter acesso a outra API e decidir o que é "bom" ou o que é "ruim". Se você não usar as cores de convenção vermelha e verde, você pode até mesmo alterar o significado da "mensagem".

As melhorias também podem ser trazidas para a própria caixa:

  • Use uma bateria.
  • Use outro protocolo de comunicação.
  • Adicione sensores para saber qual bandeira está no topo.

Espero que você tenha achado este projeto interessante.

Obrigado por ler até aqui.

Etapa 9: Anexo

Alguns dos links usados para criar este projeto:

Site do Arduino:

Site da DIGI:

Software XCTU:

Algumas informações usadas de outras pessoas:

arduino.stackexchange.com/questions/1321/se…

stackoverflow.com/questions/10399400/best-w…

www.mon-club-elec.fr/pmwiki_reference_ardui… (em francês)

jeromeabel.net/

Site do MSDN em geral:

docs.microsoft.com/en-us/dotnet/framework/…

Recomendado: