Alarmtron
Projeto ALARMTRON
Este projeto consiste em acionar o botão do Emissor de RF e assim, acionar o sistema que fica em estado de espera até receber o sinal a que foi projetado a receber, no nosso caso o número "2" mas que pode ser mudado no programa facilmente por você. ao receber o sinal "2" o receptor aciona os relês de acordo com o que foi programado e que também poderá ser mudado com facilidade basta ver o programa feito em Basic que é bastante intuitivo como veremos adiante, desbravando o programa do transmissor, com muitos comentários, inclusive explicando algumas funções, como o Soft_Uart_Init e o Soft_Uart_Write, que eu diria serem as funções mais importantes no projeto, pois saber como essas funções são usadas é de suma importância para que o hardware funcione.
A função (Soft_Uart_Read) que é usado no receptor deverá ser estudada e analisada também, será deixado uma nota explicando esta função, que serve para ler o pacote de ,enviados pelo Transmissor. |
Desbravando o Programa do Transmissor
1 - Program TX '..................... Nomeia o programa como TX dentro do compilador você deverá sempre iniciar o programa com esta 'primeira linha dando um nome ao programa no nosso caso "TX" poderia ser Emissor. Ficaria: Program Emissor
2 - Symbol Led=PortB.5 'NOMEIA A PORTA RB5 COMO Led / Após essa função o PortB.5 agoraga chamar-se-á LED
3 - Symbol Botao=PortB.4 'NOMEIA A PORTA RB4 COMO Botao / Após essa função o PortB.4 agora Chamar-se-á Botao
'* NOMEAR AS PORTAS FACILITA MUITO NA HORA DE ENTENDER O QUE VOCÊ ESTÁ FAZENDO E SE ACONTECER ALGUM ERRO NA PROGRAMAÇÃO, ACHAR O ERRO FICA 'MAIS FÁCIL TAMBÉM
4 -- main: 'inicializa o PIC definindo o uso das protas é a principal chamada do programa, main sempre estará presente programando em Basic.
5 - TrisA=0 'COLOCA O CONJUNTO DE PORTAS RA EM NÍVEL 0
6 - TrisB=%00000110 'COLOCA RB 1 e 2 EM NÍVEL ALTO 1
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7 - soft_uart_init(PortB,1,2,1200,0)
'Explicação da Função
'Soft_uart_init Initaliza o software UART. PortB parâmetro que especifica a porta do PIC em que RX e 'TX pinos estão localizados; no nosso caso RB1 e RB2, no diagrama esquemático lá em baixo na Figura 1 você pode observar que o pino emissor 'TX é o RB2. Os parâmetros rx e tx precisam estarem na faixa 0-7 e não pode apontar para o mesmo pino, o pino ideal para ser usado como TX 'no PIC16f628A é o RB2; BAUD_RATE "1200" é a taxa de transmissão desejada. Taxa máxima de transmissão depende relógio do PIC e condições 'de trabalho do mesmo. Parâmetro invertido "0", se definido como valor não-zero, indica lógica invertida na saída. Soft_Uart_Init precisa ser 'chamado antes de usar outras funções da Biblioteca UART por iste motivo está aqui na linha sete.
'Nota: Ao se programar no MikroBasic não precisa numerar as linhas de programação, se você selecionar todo o texto aqui e copiar, desde ' 'Program TX até End. e remover a numeração e os hifens após os números, colar no compilador, ele será capaz de compilar normalmente.
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8 - Botao=1 'A porta RB4 batizada anteriormente de Botao, recebe aqui nível lógico alto "1"
9 - led=0 'A Porta RB5 batizada anteriormente de Led, recebe aqui nível lógico baixo "0"
10 - Goto acionador 'Aqui a linha acionador é chamada pelo comando Goto "Vá Para" ou seja: vá para a linha Acionador. " As linhas de 'comando abaix de acionador serão verificadas "
11- Acionador:
12- Botao=1 'Aqui nesta linha é reforçada a colocação da porta RB4 em nível 1 por que a linha 19 irá chamar a linha 11 Acionador fazendo 'assim um loop.
13 - If Botao = (0) Then Goto Transfere
Else Goto main 'Aqui o comando If e Then assumem a função lógica como em português 'diríamos: Se Botao "Porta RB4" é igual a 0 então segue a linha debaixo "Transfere" Senão for igual a "0" vá para a linha 4 main.
'Na verdade aqui verifica se o botão físico de nosso controle foi acionado ou não.
'Nota: Por motivo de economia de escrita e alguns bits no arquivo hex que será gerado, poderiamos simplesmente retirar a linha 14 e o comando Then 'Goto Transfere Else Goto main e deixar somente Then Goto e o programa entenderá que deve ir para a linha 15 Soft_Uart_Write.
14 - Transfere:
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
15 - Soft_Uart_Write("2") ' UART deve ser inicializado e a comunicação estabelecida. antes de usar essa função.
' Veja 'Soft_Uart_Init.
' Tenha atenção que, durante a transmissão, o software UART é incapaz de receber dados
' O protocolo de transferência de dados 'deve ser 'ajustado de tal forma a impedir a perda de
' informação. No nosso caso como a informação é transmitir o numero "2" Via ondas de RF
' O ajuste em Soft_Uart_Init está ajustado em 1200 Baund "Comunicação lenta"
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
16 - Delay_ms(20) 'Esta função gera uma pausa de 20 mílisegundos
17 - Led=1 'Aqui o led físico é aceso ao colocar a Porta RB5 em nível Alto "1"
18 - Delay_ms(20) 'Esta função gera uma pausa de 20 mílisegundos
19 - Led=0 'Aqui o led físico é apagado ao colocar o pino B5 ou Porta RB5 em nível baixo "0"
20 - Goto Acionador 'Loop para verificação se o botão físico está acionado
21 - End If 'Finaliza o comando If
22 - Goto Acionador 'Loop para verificação se o botão físico está acionado
23 - End. 'Fim do programa
1 - Program TX '..................... Nomeia o programa como TX dentro do compilador você deverá sempre iniciar o programa com esta 'primeira linha dando um nome ao programa no nosso caso "TX" poderia ser Emissor. Ficaria: Program Emissor
2 - Symbol Led=PortB.5 'NOMEIA A PORTA RB5 COMO Led / Após essa função o PortB.5 agoraga chamar-se-á LED
3 - Symbol Botao=PortB.4 'NOMEIA A PORTA RB4 COMO Botao / Após essa função o PortB.4 agora Chamar-se-á Botao
'* NOMEAR AS PORTAS FACILITA MUITO NA HORA DE ENTENDER O QUE VOCÊ ESTÁ FAZENDO E SE ACONTECER ALGUM ERRO NA PROGRAMAÇÃO, ACHAR O ERRO FICA 'MAIS FÁCIL TAMBÉM
4 -- main: 'inicializa o PIC definindo o uso das protas é a principal chamada do programa, main sempre estará presente programando em Basic.
5 - TrisA=0 'COLOCA O CONJUNTO DE PORTAS RA EM NÍVEL 0
6 - TrisB=%00000110 'COLOCA RB 1 e 2 EM NÍVEL ALTO 1
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7 - soft_uart_init(PortB,1,2,1200,0)
'Explicação da Função
'Soft_uart_init Initaliza o software UART. PortB parâmetro que especifica a porta do PIC em que RX e 'TX pinos estão localizados; no nosso caso RB1 e RB2, no diagrama esquemático lá em baixo na Figura 1 você pode observar que o pino emissor 'TX é o RB2. Os parâmetros rx e tx precisam estarem na faixa 0-7 e não pode apontar para o mesmo pino, o pino ideal para ser usado como TX 'no PIC16f628A é o RB2; BAUD_RATE "1200" é a taxa de transmissão desejada. Taxa máxima de transmissão depende relógio do PIC e condições 'de trabalho do mesmo. Parâmetro invertido "0", se definido como valor não-zero, indica lógica invertida na saída. Soft_Uart_Init precisa ser 'chamado antes de usar outras funções da Biblioteca UART por iste motivo está aqui na linha sete.
'Nota: Ao se programar no MikroBasic não precisa numerar as linhas de programação, se você selecionar todo o texto aqui e copiar, desde ' 'Program TX até End. e remover a numeração e os hifens após os números, colar no compilador, ele será capaz de compilar normalmente.
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8 - Botao=1 'A porta RB4 batizada anteriormente de Botao, recebe aqui nível lógico alto "1"
9 - led=0 'A Porta RB5 batizada anteriormente de Led, recebe aqui nível lógico baixo "0"
10 - Goto acionador 'Aqui a linha acionador é chamada pelo comando Goto "Vá Para" ou seja: vá para a linha Acionador. " As linhas de 'comando abaix de acionador serão verificadas "
11- Acionador:
12- Botao=1 'Aqui nesta linha é reforçada a colocação da porta RB4 em nível 1 por que a linha 19 irá chamar a linha 11 Acionador fazendo 'assim um loop.
13 - If Botao = (0) Then Goto Transfere
Else Goto main 'Aqui o comando If e Then assumem a função lógica como em português 'diríamos: Se Botao "Porta RB4" é igual a 0 então segue a linha debaixo "Transfere" Senão for igual a "0" vá para a linha 4 main.
'Na verdade aqui verifica se o botão físico de nosso controle foi acionado ou não.
'Nota: Por motivo de economia de escrita e alguns bits no arquivo hex que será gerado, poderiamos simplesmente retirar a linha 14 e o comando Then 'Goto Transfere Else Goto main e deixar somente Then Goto e o programa entenderá que deve ir para a linha 15 Soft_Uart_Write.
14 - Transfere:
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
15 - Soft_Uart_Write("2") ' UART deve ser inicializado e a comunicação estabelecida. antes de usar essa função.
' Veja 'Soft_Uart_Init.
' Tenha atenção que, durante a transmissão, o software UART é incapaz de receber dados
' O protocolo de transferência de dados 'deve ser 'ajustado de tal forma a impedir a perda de
' informação. No nosso caso como a informação é transmitir o numero "2" Via ondas de RF
' O ajuste em Soft_Uart_Init está ajustado em 1200 Baund "Comunicação lenta"
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
16 - Delay_ms(20) 'Esta função gera uma pausa de 20 mílisegundos
17 - Led=1 'Aqui o led físico é aceso ao colocar a Porta RB5 em nível Alto "1"
18 - Delay_ms(20) 'Esta função gera uma pausa de 20 mílisegundos
19 - Led=0 'Aqui o led físico é apagado ao colocar o pino B5 ou Porta RB5 em nível baixo "0"
20 - Goto Acionador 'Loop para verificação se o botão físico está acionado
21 - End If 'Finaliza o comando If
22 - Goto Acionador 'Loop para verificação se o botão físico está acionado
23 - End. 'Fim do programa
Obs.: A Função Soft_Uart_Read utilizado no programa do Receptor serve para ler o que foi enviado pelo Transmissor, como desbravamos apenas o programa do Transmissor, deixo aqui uma nota explicativa da função Soft_Uart_Read. Sua função é de receber um byte através de software UART. O Erro de parâmetro será zero, se a transferência for bem sucedida, esta é uma chamada de função non-blocking, então você deve testar o erro manualmente.
No MikroBasic existem exemplos, eles estão em inglês na ajuda (Help) do programa, basta, com o MikroBasic aberto, teclar F1 ou na aba Help, clicar em Help, escreva Soft_Uart_Read em pesquisar, como na imagem abaixo e faça um estudo sobre este comando, que é muito parecido com o Usart, que serve para comunicação PC - PIC via protocolo RS232.
obs.: O Help está em Inglês, selecione o texto, copie e cole no google tradutor. Para quem não entende o idioma, esse macete é uma mão na roda.
No MikroBasic existem exemplos, eles estão em inglês na ajuda (Help) do programa, basta, com o MikroBasic aberto, teclar F1 ou na aba Help, clicar em Help, escreva Soft_Uart_Read em pesquisar, como na imagem abaixo e faça um estudo sobre este comando, que é muito parecido com o Usart, que serve para comunicação PC - PIC via protocolo RS232.
obs.: O Help está em Inglês, selecione o texto, copie e cole no google tradutor. Para quem não entende o idioma, esse macete é uma mão na roda.
Programa em Basic do Transmissor
Código HEX do Transmissor
|
Programa em Basic do Receptor
Código HEX do Receptor
|