Este post está em rascunho e pode mudar drasticamente de uma hora para outra.
Esta campainha existe em vários modelos e sub-modelos, muitas vezes difíceis de distinguir. Como eles não são identificados claramente pelo fabricante aqui eu vou denominar por minha conta para facilitar a identificação. Entre parênteses estão os modelos mais prováveis, obtidos comparando com embalagens novas. Aparentemente modelos que começam com “H” tem DIP switch e os que começam com “A” não tem.
Nos modelos que tem DIP switch o botão de troca de melodia está ausente, porque o transmissor tem um DIP switch de seleção da melodia. Infelizmente isso faz com que nesses modelos seja impossível para o consumidor comum fazer o mais básico teste do receptor sem o transmissor.
Modelos 1a e 1b (H-128E, A128E e H-128ES)
Modelos 2a e 2b (H-148C e A-158)
Modelos 3a e 3b (H-138CS, A-138C e F-138C)
Todas são alimentada com três pilhas, somando 4.5V. Mas a maior parte do circuito funciona com 3V de duas pilhas. A última pilha, que fica mais fundo no compartimento, só é usada para elevar a tensão para 4.5V para o circuito de som.
Como se pode ver pelas fotos acima, em metade dos submodelos você pode escolher o endereço facilmente através de um DIP switch, que também existe no transmissor. Na outra metade o endereço já vem definido de fábrica e você não pode mudá-lo facilmente.
O DIP switch de escolha de endereço tem sempre 6 posições, o que permite a escolha entre 64 endereços, mas como você verá mais adiante quando você dominar o funcionamento poderá escolher entre até 730 endereços.
Transmissores
Os cerca de 30 transmissores que testei são divididos em três modelos. Todos operam com 12V de uma bateria tamanho 23A.
AD015C01
O modelo AD015C01 é destinado a ser usado nos sub-modelos de campainha que tem DIP switch. É também o único onde você pode determinar e fixar a melodia. E por usar um cristal (SAW ressonator) é também o único que não precisa de ajuste. A inscrição no cristal “R315A” é uma indicação de que pelo menos este modelo opera a 315MHz, mas eu já determinei por experimentação que todos operam.
AD012-2
O modelo AD012-2 tem um endereço programado em fábrica que pode ser alterado mudando as pontes de solda que existem embaixo da placa. A melodia no receptor pode ser escolhida apertando o botão SW2
AD062
O modelo AD062 permite uma mudança mais “fácil” de endereço porque as pontes de solda estão facilmente acessíveis. Mas há uma diferença interessante: existe um bloco a mais de pontes que você pode usar para obter mais dois bits de endereçamento. Entretanto ainda não sei se os receptores tem essa funcionalidade. Você está vendo o transmissor pelo fundo então o botão que você vê é o de mudança de melodia pois o de acionamento está do outro lado da placa.
O exemplo abaixo mostra a correspondência entre as pontes de solda e os bytes do endereço. Destacada em vermelho está a parte fixa do endereço nos receptores (o endereço sempre termina em 1111). Esta área não existe no modelo AD012-2, como você pode conferir nas fotos anteriores.
Observando atentamente você poderá ver que o endereço é montado assim:
- 00: Ponte de solda para o negativo (a linha de ilhas que você vê embaixo);
- 01: sem conexão
- 11: ponte de solda para a ilha isolada mai próxima
Você pode usar esse transmissor para controlar uma campainha que tem DIP switch observando o seguinte:
- 00: equivale a uma posição ON do DIP switch
- 01: equivale a uma posição OFF do DIP switch
O protocolo de comunicação
Interceptar a transmissão é muito fácil quando você tem as ferramentas. Eu usei um arduino, um módulo receptor de 315Mhz e a biblioteca RCSwitch. Ao apertar o botão no transmissor algo assim é recebido:
Decimal: 5574400 (24Bit) Binary: 010101010000111100000000 Tri-State: FFFF00110000 PulseLength: 169 microseconds Protocol: 1
Traduzindo, o transmissor usa o que RCSwitch chama de “Protocolo 1” e envia um código de 24bits com largura de pulso de 169 microssegundos. As definições de protocolo podem ser vistas em RCSwitch.cpp, constante RCSwitch::Protocol.
Através de experimentação com as várias amostras que tenho aqui eu consegui determinar aproximadamente a função dos 24 bits:
- Os 12 primeiros bits tem o endereço;
- Os 4 bits seguintes são sempre “1111”;
- Os 8 bits seguintes definem a melodia.
A composição do endereço
Com 12 bits teríamos 4096 endereços, mas nem todas as combinações são permitidas. O chip decodificador no receptor usa apenas seis entradas de endereçamento (daí o tamanho do DIP switch) e o estado de cada uma dessas entradas corresponde a dois bits do endereço. Nos receptores com DIP switch só são possíveis duas combinações:
“01”: Switch ON (entrada ligada ao negativo da bateria)
“00”: Switch OFF (entrada “flutuando”)
Nos receptores sem DIP switch um terceiro estado pode ser configurado internamente com solda, que resulta na combinação “11”.
A combinação “10” nunca ocorre, então se minhas contas estiverem corretas o número de combinações (e endereços) não passa de 730.
A melodia
A composição do código da melodia segue regras similares às da composição do endereço. São oito bits dos quais os seis primeiros são sempre usados para escolha direta de uma melodia. Nos submodelos que usam DIP switch para a escolha só existem três posições, que limitam o número de melodias a 8. Mas transmitindo diretamente 27 combinações são possíveis. A partir daí a coisa complica um pouco. Os dois últimos bits tem um comportamento variável. Em alguns modelos transmitir “o1” faz com que o receptor ignore os seis primeiros bits e toque a próxima melodia. Em outros o valor desses dois bits é somado aos outros seis para escolher entre mais melodias.
Comportamento confirmado nos modelos 2b e 3a:
xxxxxx 00 -> toca primeiro conjunto de melodias
xxxxxx 01 -> toca segundo conjunto de melodias
111111 11 -> toca última melodia selecionada
111111 01 -> avança para próxima melodia
Caso você não queria, não saiba ou não possa usar um arduino para decodificar a transmissão, pode usar um receptor SDR. Comece usando o programa SDRSharp que mostra claramente a transmissão, mesmo sem usar antena, se você estiver a um metro do receptor. Serve também para determinar a exata (ou quase) frequência do transmissor.
Tendo determinado que o transmissor da campainha e o receptor SDR estão funcionando, você pode decodificar usando o programa rtl_433 (testado com a versão Windows) iniciado da seguinte forma:
rtl_433 -f 315430000 -a
Isso considera que você determinou no SDRSharp que o transmissor tem uma frequência de 315.430MHz. O parâmetro -a é necessário porque esse tipo de equipamento não está na lista de suportados. O programa vai exibir a recepção “raw” assim:
No exemplo acima o código 01111101 01011111 11111111 foi recebido 8 vezes. A quantidade depende de quanto tempo você demora com o dedo no transmissor.
Você pode baixar binários do rtl_433 para Windows aqui. Você não pode usar o SDRSharp e o rtl_433 ao mesmo tempo (eu não consegui).
No meu caso, usar o receptor SDR sem antena foi essencial. Com ela o programa rtl_433 não parava de acusar os erros “too many pulses detected” ou “pulse_FSK_detect(): Maximum number of pulses reached!”