Muitas vezes, necessitamos chamar uma pessoa de sua sala para prestar algum tipo de serviço em outras salas. Pode-se usar interfones, telefones e radios comunicadores. Alguns estão adaptando ‘campainhas sem fio’ para funcionar como aviso. Realmente, vai da criatividade!!! Mas, seria possivel fazer um sistema de chamada sem fio com simples controles remotos comerciais (chaveirinhos)? Veja esta idéia….
Basicamente, a idéia do projeto é usar 4 leds para indicar quem está necessitando de atendimento. Veja a sugestão visual possivel, abaixo:
Quando uma pessoa necessita de ajuda/atendimento, ela aperta o seu controle remoto (previamente ‘aprendido’). Isto fará que um led correspondente acenda no aparelho na sala do prestador de ajuda/atendimento. Uma breve sinalização sonora será ouvida para chamar a atenção nas mudanças dos leds.
Após realizar o atendimento/ajuda, deverá ser apagado o led desejado, por se apertar o botão do lado do led.
Neste projeto foi usado um pequeno microcontrolador Pic 12f629. Caso necessite de mais leds, poderá migrar para um microcontrolador com maior quantidade de portas, adaptando o arquivo asm para a necessidade.
Agora, veja o esquema abaixo:
No pino 4 temos a entrada de sinal provindo do receptor de rf de 433mhz. O receptor é do tipo miniatura, facilmente encontrado na internet e no comércio. Pelo pino 2, com função multiplexada, obtemos a função ‘botão learn’ para entrar com aprendizado e apagamento de controles, a função ‘led learn’ que indica quando foi aprendido e pisca após apagamento completo da Eeprom e finalmente a função ‘toque sonoro’, acionando um pequeno falante piezolétrico. Este ‘som’ chama a atenção a mudança no painel de leds. Os pinos 3,5,6,7 são as saidas dos leds e também multiplexado com função de ‘botões’ de desligamento. Os resistores r1,r4,r7 e r10 são usados para aumentar o nivel a vcc, pois os leds apresentam queda de tensão de 1,8 a 2,4 volts, sendo que, sem eles, em alguns casos, poderá não funcionar corretamente.
A fonte de alimentação poderá ser feita via fonte externa com regulador de 5 volts do tipo 7805, ou por uma bateria de 9 volts, também com o regulador de 5 volts, ou ainda, uma fonte de carga de bateria de celular, dos modernos (tipo ‘usb’) que já fornece direto os 5 volts necessários.
Este projeto é apenas didático, fornecendo sugestão para os hobistas realizarem seus objetivos. Foi montado apenas em protoboard, sujeito a bugs ainda não identificados.
Segue abaixo o arquivo ASM (para 12f629):
Segue abaixo o arquivo HEX (para 12f629):
Segue abaixo o arquivo ASM (para 12f675):
Segue abaixo o arquivo HEX (para 12f675):
Curiosidades:
Universo cheio de surpresas
Universo – obra do acaso?
Nosso inigualável sistema solar
Mapeamento do céu
Qual a origem do universo e a vida?
Outros assuntos:
Quatro dicas para lidar com problemas financeiros e dívidas
Como lidar com sucesso com os sogros
Como reagir a um assédio sexual
Como parar de adiar as coisas
Entrevista com um bioquímico
Até o próximo artigo!!!
Olá novamente, antes do comando mostra mandei gravar na eepron com endereço 15, dados c0, com três controles ele só grava 4c, creio que o asm não esta incrementando o endereço do addwf,pcl,f.
Olá Adriano! Realmente, voce terá que acrescentar linha adicionais logo após o pedaço de código abaixo:
;SALTO GOTO
MOSTRA
MOVFW C0
SUBLW .4
BTFSS STATUS,C ;LIMITA DE 1 A 4
RETURN
BCF STATUS,C
RLF C0,W ;MULTIPLICA POR 2
ADDWF PCL,F
NOP
RETURN
BCF LED1 ;LED1 ACENDE
RETURN
BCF LED2 ;LED2 ACENDE
RETURN
BCF LED3 ;LED3 ACENDE
RETURN
BCF LED4 ;LED4 ACENDE
RETURN
nop
goto faz_1_coisa
nop
goto faz_2_coisa
;mesmo numero de controles que for necessários
;suas novas rotinas com return no final
faz_1_coisa
;seu código
return
faz_2_coisa
;seu código
return
Ou , se for melhor, alterar toda a maneira de acessar o resultado (que nem bombril, 1000 jeito diferente de fazer).
Claudio
Olá Claudio, vamos lá, desliguei a alimentação dos leds, somente a saida 0 fica com 5 volts as outras com zero,
MOVFW C0
SUBLW .8
BTFSS STATUS,C ;LIMITA DE 1 A 4
RETURN
BCF STATUS,C
RLF C0,W ;MULTIPLICA POR 2
ADDWF PCL,F
NOP
RETURN
BCF LED4 ;LED1 ACENDE
nessa linha, troquei a saida, mas só aciona o gpio 0, mesmo o hex esta igual, uso o 12f675, creio que a linha mostra é que aciona os leds. já tentei desligar os comandos para os gpios virarem entrada, mas não mudos os leds, não sei onde esta o erro, mas estou tentando. grato
Adriano
Olá Adriano! Você está usando pic 12f675 ao invés do pic 12f629, certo? Pois o código para 675 tem que ter uma pequena diferença. Como ele trabalha com um conversor analógico para digital, o registrador ‘ANSEL’ (NÃO TEM NO 629) tem que ser resetado (zerado) para liberar a GPIO como I/O digital. Senão, em reset, se tornam entradas analógicas e voce NUNCA acionará leds com ela. Veja o datasheet pic12f675 pagina 44. Experimente adicionar esta linha marcada no pedaço de código abaixo:
;================================================================================
;CONFIGURAÇÕES DE PORTAS E INICIALIZAÇÃO DE TEMPORIZADORES
START:
MOVLW 0X07
MOVWF CMCON ;DESLIGA COMPARADORES
MOVLW 0XFF ;APAGAR LEDS
BANK1
MOVLW B’00101000′ ;TUDO SAÍDA EXCETO RB3 COMO ENTRADA ‘RFIN’ E ‘SW LEARN’
MOVWF TRISIO
CLRF ANSEL ; ESTA A LINHA É SOMENTE PARA O 12F675 <--------------------------------------------------------------ACRESCENTAR AQUI BANK0 TAMBÉM, NÃO ESQUEÇA DE ALTERAR O CABEÇALHO DE : ; OSCILADOR INTERNO DE 4MHZ #INCLUDE P12F629.INC ; ARQUIVO PADRAO __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT ERRORLEVEL -302 ;SUPRESSÃO DE MENSAGEM DE ERRO PARA ESTE AQUI: ; OSCILADOR INTERNO DE 4MHZ #INCLUDE P12F675.INC ; ARQUIVO PADRAO <--------------------------------------------MUDAR O MICROCONTROLADOR __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT ERRORLEVEL -302 ;SUPRESSÃO DE MENSAGEM DE ERRO Quem sabe, assim , vai funcionar. Cláudio
um comentário, trocando o led no mostra, ele continua acendendo somente o 1 led.
grato
Olá Adriano!
Tudo bem? No seu comentário de 25-01-13, as 10:15 h , voce citou que “seu chama atendente é o primeiro que funciona em 04 anos tentando, agradeço deixar disponivel”, mas que no seu ver tinha um bug :”meus leds ficam aceso fracos, com o codigo ele acende forte” . De repente, parece que não funciona mais, pois , no dia 26-01-13, as 12:12h , você citou que “ESTOU FAZENDO UM RECEPTOR PARA ALARME, AS 08 SAÍDAS SERIA PARA RECEBER SENSOR SEM FIO, EU VOU MULTIPLEXAR OS PINOS DO 12F NA FORMA DE SERIAL.VOU USAR UM 16F PARA FAZER O ALARME, JÁ QUE USO O SOFTWARE PROTON IDE.” Você já fez alterações no código asm? Também, não entendi o que voce quer dizer com “trocando o led no mostra”? Montei no protoboard com o esquema acima e com o hex fornecido neste blog e funcionou perfeitamente com 4 controles programados. Por favor, me de mais detalhes, com um bom descritivo, para que eu possa tentar ajudar.
Claudio
boa tarde, os três controles que tenho, todos reconhecem somente a saida 01, não comanda as outras.
quero aproveitar para solicitar linhas para grava mais controles sem comandar leds
Olá Adriano! Muito estranho este comportamento. É como se estivesse gravando apenas um controle. Quanto a gravar mais controles, no inicio do programa tem as ‘equates’ como segue:
;=================================================================================================
;QUANTIDADE DE CONTROLES A SER USADO:
N_CONTROL EQU 4 ;NÚMERO MÁXIMO DE CONTROLES (APENAS 4 LEDS)
;==================================================================================================
A variavel ‘4’ pode ser trocado por outros valores, cujos controles aprendidos deverão ser tratados com novas linhas de código que dependerá de seu objetivos. Assim, os primeiros 4 controles acenderão led 1,2,3 e 4 e o restante não fará isto. Quanto a sua dificuldade, terei que montar no protoboard com o hex do blog para ver se não teve algum ‘gato no telhado’. Aguarde..
Cláudio
estou testando outros controles, so aciona o primeiro led, na epron grava 02 dois, mas os led não.
Olá Adriano! A idéia é que cada controle (não importa qual dos 2 ou 3 botões forem apertados) acione apenas um led. Grave mais 3 controles diferentes na sequencia e acione para ver se acende os outros 3 leds (Lembre-se que para apagar o led tem que apertar o botão correspondente no receptor).
Claudio