RS485 com PIC16F690


Na IDE que utilizo para programar para PIC (MikroC) encontram-se muitas bibliotecas, tal como em Arduino e por padrão, muitas mais já instaladas. Há algum tempo trabalhei em um projeto cuja comunicação em rede era RS485. Em Arduino, escrevi uma pequena prova de conceito nesse post. Como não escrevi nada para PIC, resolvi disponibilizar o protocolo desenvolvido na época.





Esquema

O circuito deve ser montado como no esquema a seguir:
rs485

Lembrando que o cabo não deve passar de 300 metros, deve-se evitar áreas de interferência eletromagnéticas e coisas do tipo.Seu alcance é de até 1200 metros com tolerância a pertubações eletromagnéticas.

Esse é um padrão de mercado e deve ser respeitado. Por exemplo, não é fundamental os resistores de 4.7k, mas o padrão prevê o máximo de proteção para a rede.

O código implementado será exposto a seguir, com os respectivos comentários.

Código

A mensagem deve ter um formato assim:
[ID:MSG]
Por exemplo, ler o sensor 1 no dispositivo 09:
[09:S1]

Todos os dispositivos recebem a mensagem. Se o byte 0 não for B e sim ‘[‘, então o segundo e terceiro byte são avaliados. Qualquer dispositivo que não seja o 09 irá ignorar a mensagem. O dispositivo 09 então lerá o primeiro byte do campo da mensagem. ‘S’ representa o sensor, e ‘1’, o sensor 1. Então o dispositivo monta a mensagem [ID:S1VALOR] e responde ao server.

O buzzer é para localização do dispositivo. Por exemplo, tenho 50 dispositivos, qual é o 09? Teria quer ler identificador por identificador, mas se tiver um buzzer tocando, posso ir diretamente ao dispositivo.

Enfim, o código pode ser facilmente modificado agora para suas necessidades. Não fiz video porque eu não tenho nenhum hardware comigo infelizmente, mas esse código é o suficiente para sua comunicação RS485.

Aqui foi utilizado o recurso de interrupções, ou seja, quando chega um dado serial o programa para completamente para atender a interrupção, precedendo qualquer tratamento com o desligamento das interrupções, afim de ‘represar’ qualquer novo dado entrante.

Se precisar de mais conceitos sobre interrupções ou outros recursos utilizados aqui, procure aqui no site, pois há referência para tudo o que foi utilizado.

Se gostou, não deixe de compartilhar; dê seu like no video e inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Prefere seguir-nos pelo facebook? Basta curtir aqui.

Prefere twitter? @DobitAoByte.

Próximo post a caminho!

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta