Brilhe sempre, brilhe em todos os lugares. Parte 2
A versão atual daplaca do módulo do processador Chegou a segunda parte do material sobre o sistema de controle de iluminação da bicicleta feito por conta própria. Deixe-me lembrá-lo, decidi construir uma rede RS-485, na qual existem dispositivos executivos e de controle, e o mestre é um computador no qual o programa que implementa a lógica é executado. Antes de descrever a lógica do sistema, falarei sobre melhorias e mudanças de paradigma em termos de hardware que surgiram como resultado da discussão e teste de protótipos da primeira parte .DopilirovanieEm primeiro lugar, decidiu-se modular as glândulas, por analogia com o Arduino e vários outros projetos. Imaginei que meu módulo principal (processador) contém mais componentes que módulos funcionais, portanto será a mãe. E "escudos" serão inseridos nele. Em termos de circuitos, as seguintes alterações foram feitas:1) Um estabilizador de energia (AMS1117-5.0) foi adicionado.2) A fiação de energia do microcontrolador é alterada.3) A placa do módulo principal é divorciada, levando em consideração a manufatura industrial, mas a segunda camada de cobre é usada no mínimo - você pode fazer uma placa de camada única em casa e configurar jumpers.4) Jumper de endpoint adicionado para finalizar a linha no último dispositivo.5) Adicionado o jumper RST Lock para bloquear a reinicialização do microcontrolador.6) Da mesma forma que na cláusula 3, as placas filhas do codificador e o driver da tira de LED são divorciadas.7) Estou aguardando a primeira ordem de teste das placas de circuito impresso, enquanto apenas os módulos principais (ITEAD Studio).
A placa filha do driver de faixa de LEDVanity em torno do RS-485Agora eu me viro para o mestre da rede. Em termos de ferro, tudo é simples lá - bem, pelo menos eu pensava assim. Peguei um adaptador USB-UART, liguei uma pequena placa com MAX485 e vários resistores e comecei a trabalhar. E ele pisou em um excelente ancinho, bastante documentado, mas para um iniciante não era completamente óbvio.O MAX485 precisa ser alternado entre receber (baixo nos pinos fixados ~ RE e DE) e transmitir (alto). Guiado por uma lógica simples, usei a saída DTR do conversor (no CP2102) para controlar o modo, puxando-o programaticamente. E tem uma desgraça. De alguma forma, o sistema funcionou apenas com atrasos inaceitavelmente grandes entre a recepção e a transmissão. E tudo porque o DTR muda lentamente. Quão lentamente eu não tinha nada para medir, então apenas forneço um link para um estudo de rake mais sensato usando um osciloscópio.Do mesmo material, entendi o seguinte: o uso do FT232 será o menos doloroso, já que há uma conclusão: ao deixar o chip como padrão, ele foi projetado apenas para alternar os modos RS-485. Simplificando, um alto nível aparece ao transmitir via UART. Então, o clone chinês Arduino Nano foi extraído das caixas, ~ o RST está em curto, o fio é soldado à 13ª perna do FT232, e tudo isso está conectado ao MAX485. Funciona como um relógio. Na versão "combate" do sistema, é claro, esse design não será usado - a indústria chinesa tem o prazer de oferecer placas prontas semelhantes.Lógica do sistemaFinalmente, a forma como todo o processo se parece do ponto de vista do mestre. Funciona com objetos do dispositivo, que podem ser de controle ou executivos. Os gerentes são divididos em real ("ferro"), virtual e temporizadores. Executivo só pode ser real.Dispositivos de controle virtual serão necessários ao implementar um gerenciamento de sistema mais complexo, em particular quando uma interface da Web será anexada a ele. Eles também serão úteis para a integração com algo que eu ainda não criei. Sim, aqui, provavelmente, devo dizer que, em geral, esse "dispositivo" está dentro do sistema.Um dispositivo é um objeto da classe Device. O conjunto mínimo de atributos é o nome, tipo e sinalizador de uso. Além disso, dependendo do tipo, o endereço no barramento, o nome do dispositivo escravo, a prioridade de controle, os valores iniciais dos registradores e alguns outros atributos podem ser adicionados. Os principais métodos da classe estão relacionados ao trabalho com dispositivos reais - isso é ler e escrever registros.E agora, tendo decidido mais ou menos a estrutura do programa do sistema, podemos começar a implementação. Atualmente, existe o seguinte:1) Módulo Comm485 contendo uma descrição da classe Conn. Os métodos de classe são abrir e fechar uma conexão, enviar e receber um pacote e verificar uma soma de verificação.2) o módulo Device485 contém a classe Device descrita acima.3) o principal módulo de software.
Placa filha do codificadorNa verdade, duas coisas são implementadas no módulo principal. O primeiro é criar os objetos necessários da classe Device de acordo com o arquivo de configuração. O segundo é diretamente a lógica do sistema.No processoAtualmente, o seguinte funciona:1) Compilando uma lista de atuadores envolvidos.2) Para cada artista, uma lista dos dispositivos de controle envolvidos é compilada.3) Os valores dos registros do dispositivo de controle com maior prioridade são registrados nos registros do atuador e controle, que têm uma prioridade mais baixa.Ou seja, suponha que tenhamos um codificador (ferro) com baixa prioridade e um dispositivo de controle virtual com alta prioridade. No modo de espera, o dispositivo virtual está desativado. Quando você precisa ajustar a luz sem levantar o quinto ponto do sofá, um dispositivo virtual é ativado (por um curto período de tempo) para fornecer novos parâmetros ao artista e ao codificador.Mas, provavelmente, após uma pequena alteração de software, o modo principal será o seguinte: existem dois dispositivos de controle com a mesma prioridade. Ao alterar os registros de um deles, os valores são gravados nos registros do executor e do outro gerente, que não tiveram alterações.Na verdade, por enquanto. O projeto está disponível no github., na pasta host, você pode ver o código Python arrepiante. Existem dois módulos (Comm485, Device485), o programa principal (host) e a pasta cfg na qual os arquivos de configuração estão: configurando uma conexão UART e uma lista de dispositivos.Continuação certamente seguirá.PS: Sendo vítima da migração de Habr, várias possibilidades são limitadas.Source: https://habr.com/ru/post/pt381907/
All Articles