BIG_GEN_II_SERIAL – ADICIONANDO SERIAL – COM PIC 16F628A (REF146)

0

Seria interessante poder ter uma forma de exportar informações da central BIG_GEN_II para um PC ? Talvez para se ter um arquivo com todos os controles acionados em uma dada ocasião? Uma integração com outro sistema de segurança?

Esta versão faz justamente isto: enviar para uma saída serial rodando a 9600 bauds, o número serial de todo controle que for acionado. Foi usado o pino 1 para esta finalidade, usando uma simples saída com um transistor para conectar com a DB9 do PC.
Se não tiver entrada serial em seu PC, poderá usar um adaptador USB/SERIAL. Para testes, poderemos usar o Hyperterminal configurado para porta COM1 ( ou outra) e a 9600 bauds, sem paridade, 1 stop bit. Ao acionar um controle remoto, de imediato, veremos na tela o valor do serial number.
O esquema foi alterado, pois foi necessário estabilizar a frequência de clock usando um cristal de 4mhz externo, pois do contrário, não se consegue um correto ‘baud rate’ para a transmissão serial. Os interruptores receberam uma nova configuração de ligação, visto que não sobra pinos neste PIC.
Veja o esquema abaixo:

O restante do circuito permaneceu igual, assim também a forma de programar e remover controles continuam exatamente iguais. Lembrando que ele aceita até 255 controles diferentes, da família HTP e HCS (em modo 400us de pulso básico, sem hopping code). Deverá trabalhar com outra(s) placa(s) de portão, usando a ligação da ‘botoeira(s)’ conectando no(s) rele(s) do esquema (reles acionados pelo pino 6 e 7).

Caso também domine a programação de ‘ARDUINO’ ou equivalentes, poderá realizar a integração mais fácil entre eles, usando justamente esta saída serial. Se você tem facilidade com programas para PC, poderá facilmente criar um aplicativo que possa usar estes ‘seriais numbers’. Abre-se assim, um novo leque de uso para o equipamento!
Obs. Esta montagem é apenas didática, sendo realizada e testada apenas em placa de protoboard, estando sujeita a bug’s ainda não observados. Esta sendo fornecido os arquivos ASM e HEX, que poderão ser alterados segundo as necessidades dos hobistas.

Segue pasta com os arquivos ASM e HEX:

BIG_GEN_II_ASCII

Segue pasta com arquivos ASM e HEX para versão que impede o apagamento se na posição pretendida estiver gravado já um controle (neste caso, terá que apagar o antigo número antes de gravar outro). Também, após enviar o serial number do controle acionado, enviará o caracter ‘1’ para acionamento da saída 1, ‘2’ para saída 2 e ‘3’ para ambas saídas acionadas:

BIG_GEN_III_ASCII

Manuais:
Pic 16f628a
Memória 24c08

Assuntos relacionados:
BIG_GEN_II (versão de 05/04/2014)
BIG_GEN I (versão anterior)
Big_gen_mix com at89c2051
Big_gen somente para Ht6p20b com at89c2051
Como ler sinal transmitido por controle remoto rf

Curiosidades:
Será que todos os idiomas vieram da “Torre de Babel”?
O que é preciso para adestrar um elefante
Jóias e pedras preciosas
O menor cãozinho do mundo
O banho de sauna — no passado e no presente
Newgrange: o mistério continua
O país da moeda de peso
Herodes, o Grande — um hábil construtor
O esperto camaleão do mar
Os cosméticos nos tempos bíblicos
Uma rocha imponente
Sal — produto da ação do sol, mar e vento

Outros assuntos:
Como posso me dar bem com meu professor?
Como controlar seu estresse
Quando seu casamento não é o que você esperava
Recuperar a confiança no casamento
Como acabar com a tática do silêncio
Como ser feliz no casamento?
Como ser um bom ouvinte
Como lidar com as dívidas
Como resolver problemas no casamento
Aprenda a perdoar
Como lidar com os sogros
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?

Até o próximo artigo!!!

0

24 comments

    1. 0

      Olá Caiocesarb!
      O protocolo USB é bem complexo e toma muito espaço de memória. Além disto, exige que o pic disponha de hardware para esta comunicação, pois não se consegue com o método ‘bit banging”. Geralmente os adaptadores de USB para Serial funcionam. Tente ver com o fabricante o que pode estar acontecendo.

      Cláudio

  1. 0

    No seu codigo, vc previu parte alta e baixa usando ADDRESS1 e ADDRESS ? Ou essas vaiaveis so trabalham com a parte baixa mesmo, e para a parte alta, tem que desenhar um loop novo ?

    1. 0

      Olá Caio!
      O ADDRESS1 é usado para selecionar o bloco da 24c08. Terá que alterar o código para corresponder a funcionalidade da 24c256 de 16 bits de endereçamento sem blocos.
      Cláudio

      1. 0

        Perfeito ! Depois de perguntar eu continuei olhando e achei o que nao estava vendo… o address1, entra no CONTRO BYTE, e era isso que estava me travando no 24c256. A logica ele e’ diferente. Charada matada, estou mudando… e’ bastante coisa mesmo… Grato !!!

  2. 0

    Boa noite.
    Para gravar mais controle, vou precisar aumentar a memoria externa. Coloquei uma 24c256 (ATMLU738 2EB). Mas ao acessar a memoria, o programa trava. Os pinos sao os mesmos… Tem algum segredo que nao peguei ?

    1. 0

      Olá Caio! O código de acesso a memória externa foi feita para a eeprom 24c08. Para usar outros modelos com maiores capacidade, você terá que alterar o código de envio I2c. Consulte o datasheet para saber como deve ser endereçada corretamente este novo modelo escolhido por você. Divirta-se com os datasheets! Produzem horas agradáveis de pesquisa pura!
      Cláudio

      1. 0

        Estou trabalhando nisso… Ainda nao deu certo, mas estou no caminho. Uma diferença que ja achei é que esta eprom usa 2 blocos de 8 bits de address. Ja completei o primeiro bloco com 0, mas ainda nao resolvi ainda. Se entre um dia ou outro, vc tiver uma soluçao para este bloco do programa, agente agradece ! Se eu resolver antes eu compartilho…

        1. 0

          Olá Caio! Como você disse anteriormente, ‘trabalhar com asm é complicado’. Olhando o datasheet é realmente isto: 2 bytes de endereçamento. Isto significa que além de alterar a rotina de envio, você terá que lembrar de incrementar a parte alta quando estourar a parte baixa, nas rotinas de busca/leitura/gravação de controles. Digamos que é a parte mais chata do código. Costuma dar canseira de muitas horas até rodar bonito! Mas você parece ser ‘persistente’, e logo alcançará o objetivo.
          Cláudio

          1. 0

            Ja dei um grande passo. O programa nao tava mais. Faz R/W na memoria. Eu ja tinha mexido nos contadores para deixar rodando mais que 255. Mas o que resolveu meu travamento foi mudar sua rotina de ACK. Segue como ficou.

            ACK: ;acknowledge from transmitter or receiver

            ;BSF SCL
            ;BANK1
            ;BSF TRISA,0 ;ENTRADA
            ;BANK0
            ;BTFSC SDA
            ;GOTO $-1
            ;BCF SCL
            ;BANK1
            ;BCF TRISA,0 ;SAIDA
            ;BANK0
            ;RETURN

            BANK1
            BSF TRISA,0 ;ENTRADA
            BSF SDA
            BANK0
            BCF TRISA,0 ;SAIDA
            BSF SCL
            NOP
            NOP
            NOP
            NOP
            CLRC
            BTFSC SDA
            BSF STATUS,C
            BCF SCL
            RETURN

    1. 0

      Olá Lourival!
      Que bom que já achou o problema! Então…, divirta-se com sua montagem!
      Claudio

  3. 0

    Claudio!

    Neste projeto é possível colocar a saída em Nivel TTL e não RS232.

    Estou achando estranho…… Usando o control Teste Serial funciona perfeitamente a saída serial.
    utilizando este projeto esta aparecendo sujeira (caracteres estranhos – estou utilizando 9600 baud) .
    Essa sujeira pode ser por causa da memoria? estou usando uma memória atmlu022. O k24c08 esta travando o PIC.
    Aproveitando o comentário … sobre Control tester serial, é possível na saída da serial o mesmo formato como este? o código + o status ?

    Abraços

    1. 0

      Claudio troquei a memoria para 24c08a e mesmo assim caracteres entranhos na entrada rx do Arduino
      Testei em um conversor TTL -> rs232 e a mesma sujeira abaixo!

      ÌÄÌDÌÄÄDÌÄDÌDÄDÄDÌÄÌDÄÄD@ÌDÌD

      Abraços

  4. 0

    Existe alguma coisa escrita em C? Assembler esta complicado…
    Estou desenhando uma placa, quando tiver, mando aqui.

    1. 0

      Olá Caio! No momento somente em Assembly. O sistema é um pouco complexo para ser feito rapidamente em ‘C’ (pelo menos para mim que sou apenas um hobista iniciante em ‘C’).
      Quem sabe no futuro possa ter alguma coisa.
      Cláudio

      1. 0

        Agora concordo com voce.
        Comecei a escrever em C, mas ja percebi problemas de desempenho, antes de concluir o projeto. Melhor deixar em ASM mesmo ! Boa escolha !!!

  5. 0

    🙂 :mrgreen: Olá Claudio, 100% este exemplo aqui ok, testado e funcionando blz, mais lhe faço uma pergunta, aqui estou usando uma eprom 24lc16 (não tenho a que vc indica no esquema, pode ter algum problema de ser maior, onde no fonte que determina a quantidade de 255 tx, mais uma perguntinha, aqui fiz uns testes de gravação de tx, e se eu não toma cuidado acaba gravando em cima de outro ja gravado, tem como broquear isto, o seja se estiver ja um tx gravado em uma posição não consiga gravar nada, a não ser que apague primeiro e ai so que consiga.Isto seria para evitar do dedinho nervoso dos curiosos gravar sem autorização em uma posição ja com tx gravado gravar outro, mais no geral esta 100% mesmo. ja estou dando umas mexidas para deixar da forma da minha necessidade aqui que seria para controle de vagas, valeu mesmo ai por mais este magnífico exemplo ok, abraço Claudio….

    1. 0

      Olá Foxconn! Que bom que deu certo ! Quanto a usar a 24c16, ficará sobrando memória. Para usa-la para gravar mais, terá que seguir as linhas de código e alterar este limite em várias partes do programa (na época, como ‘péssimo’ programador, não pensei em usar uma ‘constante’ para facilitar). Não sei se vai causar muito delay no tempo de busca ( tempo entre apertar um botão e efetivamente acionar a saída). Quanto a gravação e outros aprimoramentos, tente alterar estudando as linhas de código.
      Cláudio

      1. 0

        :mrgreen: :mrgreen: Opa Claudio, vi so hj as alterações que vc fez quanto ao problema de cadastrar o controle em posição ja existente, vou ver como ficou e fazer uns testes e ti reporto como ficou, abraço… 😀

  6. 0

    Dr. Cláúdio 🙂

    Fiz alguns teste na placa impressa e posterior em um protoboard baseado no esquemático, porem o LCD não estava dando Print e as saídas dos reles estava em alta e tbm não consegui grava o controle. 🙁 .
    Sobre a Saida Serial e possível fazer um protocolo do tipo

    COD.HT6P20,qual Rele acionado,Pulso ou retenção .
    XXXXXXXXXXXX,1,P

    abraços

    1. 0

      Olá Lourival!
      Você está usando o esquema correto? Big_gen_II? Gravando o Hex correto? O modo atual fornece apenas o serial number do tx acionado. Qual rele foi acionado dará , mas ‘pulso e retenção’ não se aplica a este esquema.
      Cláudio

  7. 0

    Mestre Cláudio, Otimo trabalho!
    Terminei de fazer a placa no Eagle, terminando o protótipo postarei os resultados.
    Com esses projeto e possível identificar o apartamento que acionou o controle salvando em um banco de dados (log) ou fazer outras integrações.
    Colocarei um Chip Ethernet para que possa Fazer um interface web.
    Novamente parabéns pelo trabalho!
    Abaixo da placa com o protótipo com os soquetes de Ethernet.
    http://www.gestaosqe.com.br/larios/larios.png

    1. 0

      Olá Lourival! Nada de ‘mestre’. Somente ‘Cláudio’. Bela placa! Ficamos no aguardo!
      Cláudio

Comments are closed.