Índice:

Comunicação sem fio usando módulos de RF de 433 MHz baratos e microcontroladores Pic. Parte 2: 4 etapas (com imagens)
Comunicação sem fio usando módulos de RF de 433 MHz baratos e microcontroladores Pic. Parte 2: 4 etapas (com imagens)

Vídeo: Comunicação sem fio usando módulos de RF de 433 MHz baratos e microcontroladores Pic. Parte 2: 4 etapas (com imagens)

Vídeo: Comunicação sem fio usando módulos de RF de 433 MHz baratos e microcontroladores Pic. Parte 2: 4 etapas (com imagens)
Vídeo: Comunicação sem fio entre Arduinos usando módulos RF TX e RX 433MHz 2024, Julho
Anonim
Comunicação sem fio usando módulos de RF de 433 MHz baratos e microcontroladores Pic. Parte 2
Comunicação sem fio usando módulos de RF de 433 MHz baratos e microcontroladores Pic. Parte 2

Na primeira parte deste instrutivo, demonstrei como programar um PIC12F1822 usando MPLAB IDE e compilador XC8, para enviar uma string simples sem fio usando módulos TX / RX 433MHz baratos.

O módulo receptor foi conectado por meio de um adaptador de cabo USB para UART TTL a um PC e os dados recebidos foram exibidos no RealTerm. A comunicação foi realizada a 1200 baud e o alcance máximo alcançado foi de cerca de 20 metros através das paredes. Meus testes mostraram que, para aplicações onde não há necessidade de alta taxa de dados e longo alcance, e para transmissão contínua, esses módulos tiveram um desempenho excepcionalmente bom.

A segunda parte deste projeto demonstra como adicionar um microcontrolador PIC16F887 e um módulo LCD de 16 × 2 caracteres no receptor. Além disso, no transmissor, um protocolo simples é seguido com a adição de alguns bytes de preâmbulo. Esses bytes são necessários para que o módulo RX ajuste seu ganho antes de obter a carga útil real. Do lado do receptor, o PIC é responsável por obter e validar os dados que são exibidos na tela LCD.

Etapa 1: modificações do transmissor

Modificações do transmissor
Modificações do transmissor
Modificações do transmissor
Modificações do transmissor
Modificações do transmissor
Modificações do transmissor

Na primeira parte, o transmissor estava enviando uma string simples a cada poucos ms usando oito bits de dados, um bit de início e um bit de parada a 1200 bits por segundo. Como a transmissão era quase contínua, o receptor não teve problemas para ajustar seu ganho aos dados recebidos. Na segunda parte, o firmware é modificado para que a transmissão seja realizada a cada 2,3 segundos. Isso é conseguido usando a interrupção do temporizador de watchdog (definida como 2.3s) para despertar o microcontrolador, que é colocado no modo de hibernação entre cada transmissão.

Para que o receptor tenha tempo de ajustar seu ganho, alguns bytes de preâmbulo com tempos de LO curtos "(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa)" são enviados antes dos dados reais. A carga útil é então indicada por um byte inicial '&' e uma parada '*'.

Portanto, o protocolo simples é descrito da seguinte forma:

(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa) & Hello InstWorld! *

Além disso, um capacitor de tântalo de desacoplamento de 10uF é adicionado entre o V + e o GND do módulo de RF para eliminar a ondulação causada pelo módulo de step up DC-DC.

A taxa de bauds permaneceu a mesma, mas meus testes mostraram que a 2400 bauds também, a transmissão era eficiente.

Etapa 2: Modificações do receptor: Adicionando LCD PIC16F887 e HD44780

Modificações do receptor: Adicionando PIC16F887 e HD44780 LCD
Modificações do receptor: Adicionando PIC16F887 e HD44780 LCD
Modificações do receptor: Adicionando LCD PIC16F887 e HD44780
Modificações do receptor: Adicionando LCD PIC16F887 e HD44780
Modificações do receptor: Adicionando LCD PIC16F887 e HD44780
Modificações do receptor: Adicionando LCD PIC16F887 e HD44780

O design do receptor foi baseado no PIC16F887, mas você pode usar um PIC diferente com pequenas modificações. No meu projeto, usei esse μC de 40 pinos, pois precisarei de pinos extras para projetos futuros baseados neste design. A saída do módulo RF é conectada ao pino UART rx, enquanto um lcd de 16x2 caracteres (HD44780) é conectado através dos pinos PORTB b2-b7 para exibir os dados recebidos.

Como na Parte 1, os dados recebidos também são exibidos no RealTerm. Isso é obtido usando o pino UART tx, que é conectado por meio de um adaptador de cabo USB para UART TTL a um PC.

Olhando para o firmware, quando ocorre uma interrupção UART, o programa verifica se o byte recebido é um byte inicial ('&'). Se sim, ele começa a gravar os bytes subsequentes, até que um byte de parada seja capturado ('*'). Assim que a frase completa for obtida, e se estiver em conformidade com o protocolo simples descrito anteriormente, ela é enviada para a tela do lcd, bem como para a porta UART tx.

Antes de receber o byte inicial, o receptor já ajustou seu ganho usando os bytes do preâmbulo anteriores. Estes são críticos para o bom funcionamento do receptor. Uma verificação simples de erro de saturação e enquadramento é executada; no entanto, esta é apenas uma implementação básica de tratamento de erros UART.

Em termos de hardware, algumas peças são necessárias para o receptor:

1 x PIC16F887

1 x HD44780

1 x módulo RF Rx 433 MHz

1 x 10 μF capacitor de tântalo (desacoplamento)

1 x 10 K aparador (brilho da fonte LCD)

1 x 220 Ω resistor de 1/4 W (luz de fundo do LCD)

1 x 1 KΩ 1/4 W

1 x antena 433 MHz, 3dbi

Na prática, a recepção funcionou excepcionalmente bem em alcances de até 20 metros através de paredes.

Etapa 3: algumas referências …

Existem muitos blogs na web que fornecem dicas sobre programação PIC e solução de problemas, além do site oficial da Microschip. Achei o seguinte muito útil:

www.romanblack.com/

0xee.net/

www.ibrahimlabs.com/

picforum.ric323.com/

Etapa 4: Conclusões e Trabalho Futuro

Espero que este manual tenha ajudado você a entender como usar módulos RF e microcontroladores Pic. Você pode ajustar seu firmware às suas próprias necessidades e incluir CRC e criptografia. Se você deseja tornar seu projeto ainda mais sofisticado, você pode utilizar a tecnologia Keeloq da Microschip. No caso de sua aplicação precisar de dados bidirecionais, você precisaria ter um par de TX / RX em ambos os microcontroladores, ou você pode usar um transceptor mais sofisticado módulos. No entanto, usando este tipo de módulo barato de 433 MHz, apenas a comunicação half duplex pode ser realizada. Além disso, para tornar a comunicação mais confiável, você precisaria ter algum tipo de handshaking entre TX e RX.

No próximo instrutível, mostrarei uma aplicação prática onde um sensor ambiental com temperatura, pressão barométrica e umidade é adicionado ao transmissor. Aqui, os dados transmitidos incluirão crc e terão uma criptografia básica.

O sensor usará a porta i2c do PIC12F1822, enquanto a implementação do transmissor e do receptor será exposta por meio de esquemas e arquivos pcb. Obrigado por me ler!

Recomendado: