Boa noite pessoal, eu comprei há algum tempo o kit (transmissor e receptor) de radiofrequência de 315 Mhz, a finalidade da compra desse kit foi para acender e desligar essa lâmpada (da qual funciona a 315 mhz, diferente do anuncio do link).
Enfim, com o exemplo da biblioteca RC-Switch-master eu consegui adquirir o código do meu controle, que seria:
Decimal: 13176153 (24Bit)
Binary: 110010010000110101011001
PulseLength: 272 microseconds
Raw data: 8448,796,284,796,284,260,824,260,824,800,284,252,832,256,828,792,292,244,840,252,836,248,836,252,832,784,304,780,296,252,300,252,828,792,288,252,832,792,292,792,292,788,292,248,836,248,840,788,292,
Dai com o exemplo de enviar o código, eu tentei enviar ele RAW, via decimal e com binário, não funcionou, tentei colar o sensor ao lado do socket receptor e também não funcionou.
Ou seja, o receptor funciona e o emissor não, não consigo saber se o emissor está com problema porque não tenho outro arduino para fazer o teste entre o próprio emissor e receptor. Gostaria de saber se alguém consegue entender o porque isso está acontecendo.
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(10);
// Optional set pulse length.
// mySwitch.setPulseLength(320);
// Optional set protocol (default is 1, will work for most outlets)
// mySwitch.setProtocol(2);
// Optional set number of transmission repetitions.
// mySwitch.setRepeatTransmit(15);
}
void loop() {
/* See Example: TypeA_WithDIPSwitches */
mySwitch.switchOn("11111", "00010");
delay(1000);
mySwitch.switchOn("11111", "00010");
delay(1000);
/* Same switch as above, but using decimal code */
mySwitch.send(5393, 24);
delay(1000);
mySwitch.send(5396, 24);
delay(1000);
/* Same switch as above, but using binary code */
mySwitch.send("000000000001010100010001");
delay(1000);
mySwitch.send("000000000001010100010100");
delay(1000);
/* Same switch as above, but tri-state code */
mySwitch.sendTriState("00000FFF0F0F");
delay(1000);
mySwitch.sendTriState("00000FFF0FF0");
delay(1000);
delay(20000);
}
Este é o código base, lógico que substitui os sinais pelo que eu mencionei, porém mesmo assim não funcionou.
Tags:
José, eu medi muito rápido, estava saindo de casa, vi sua resposta e medi esses 4 pinos, o pino 1 e 3, na escala de 200k de 75, então seria 75k né? Ou 75kk? Rsrsrss
Mais informações importantes :
https://github.com/sui77/rc-switch/wiki/KnowHow_LineCoding
Foi aqui que me confundi ! O Pulso de preamble( sincronização) tem 1 pulso nivel alto e 31 pulsos nivel baixo de clock.
Entendi, e será que irei precisar transmitir esse pulso de sincronização para acender a luz?
Heitor , você viu esses projetos ? (traduzi com o Google Chrome)
https://github.com/sui77/rc-switch/wiki/List_OtherProjects
funkcontrol-over-net : Plug & Play webserver configurável completa e uma Interface Web para controlar tomadas eléctricas que funcionam em um Arduino Uno ou Arduino Ethernet.
homecontrol4.me : Controle os seus dispositivos com um Smartphone App
OpenplacOS : Openplacos é um projeto open source para automação residencial, aquariophily interiores e jardins que roda em Linux.
OpenPyro : Sistema OpenPyro ocorre transitória entre os sistemas profissionais maciças para espectáculos piromusicais e os vários sistemas de fogos de artifício amadores de baixo custo.
APDuino : projeto de automação de rede adaptado para monitorização de efeito estufa para os jardineiros de quintal DIY-entusiasta
ESP-Quadro : A Framework ESP oferece bibliotecas de base e componentes da Web para a plataforma ESP8266.
xkonni / framboesa-remote : Oferece um binário para facilitar o acesso de linha de comando e possui uma interface web para facilitar o acesso em dispositivos móveis ou de desktop.
Então José, dei uma olhada nesses projetos, porém a maioria é de projetos que não usam a RF, boa parte usa ethernet e wifi com outros sensores. E as bibliotecas de RF, como a 433Utils, eu já tentei usar e de nada funcionou.
Achei as definiçôes dos Protocolos dos Controle Remotos :
https://github.com/sui77/rc-switch/blob/master/RCSwitch.cpp
/* Format for protocol definitions:
* {pulselength, Sync bit, "0" bit, "1" bit}
*
* pulselength: pulse length in microseconds, e.g. 350
* Sync bit: {1, 31} means 1 high pulse and 31 low pulses
* (perceived as a 31*pulselength long pulse, total length of sync bit is
* 32*pulselength microseconds), i.e:
* _
* | |_______________________________ (don't count the vertical bars)
* "0" bit: waveform for a data bit of value "0", {1, 3} means 1 high pulse
* and 3 low pulses, total length (1+3)*pulselength, i.e:
* _
* | |___
* "1" bit: waveform for a data bit of value "1", e.g. {3,1}:
* ___
* | |_
*
* These are combined to form Tri-State bits when sending or receiving codes.
*/
#ifdef ESP8266
static const RCSwitch::Protocol proto[] = {
#else
static const RCSwitch::Protocol PROGMEM proto[] = {
#endif
{ 350, { 1, 31 }, { 1, 3 }, { 3, 1 }, false }, // protocol 1
{ 650, { 1, 10 }, { 1, 2 }, { 2, 1 }, false }, // protocol 2
{ 100, { 30, 71 }, { 4, 11 }, { 9, 6 }, false }, // protocol 3
{ 380, { 1, 6 }, { 1, 3 }, { 3, 1 }, false }, // protocol 4
{ 500, { 6, 14 }, { 1, 2 }, { 2, 1 }, false }, // protocol 5
{ 450, { 23, 1 }, { 1, 2 }, { 2, 1 }, true } // protocol 6 (HT6P20B)
};
Essa Biblioteca é fantástica ! Muito bem feita.
O formato do SC1527 deve ser esse :
/* Format for protocol definitions:
* {pulselength, Sync bit, "0" bit, "1" bit}
{ 350, { 1, 31 }, { 1, 3 }, { 3, 1 }, false }, // protocol 1
A largura do pulso esta como 350uS . Por isso será importante identificar o pulso de clock do SCL1527.
Será que é 500uS ? ( 500 é o mais usado)
Rode o programa de exemplo e ele te informará qual protocolo esta sendo usado :
ReceiveDemo_Simple.ino
https://github.com/sui77/rc-switch/blob/master/examples/ReceiveDemo...
Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );
José, fantástico, estou começando a entender sobre como funciona os pulses e como poderemos descobrir eles! Pena que não estou em casa, estou no trabalho, o protocolo eu tinha anotado, mas não consigo me recordar!! Eu acredito que era 1, isso é o que me passa pela cabeça...
Certo, me desculpe a ignorância, mas para que irá servir esse protocolo?
Protocolo é o formato usado na comunicação entre o transmissor e o receptor.
É o que você esta querendo identificar.
Vi nos posts anteriores que ele já identificou como Protocolo 1 :
Decimal: 13176148 (24Bit) Binary: 110010010000110101010100 Tri-State: not applicable PulseLength: 272 microseconds Protocol: 1
A largura do pulso esta como 350uS . Por isso será importante identificar o pulso de clock do SCL1527.
Será que é 500uS ? ( 500 é o mais usado)
Pode ser que a definição do clock esteja errada .
Entendi!! Então o problema provavelmente está no clock (como você disse anteriormente) e para que eu altere o clock é simplesmente alterando na biblioteca de:
{ 350, { 1, 31 }, { 1, 3 }, { 3, 1 }, false }
para
{ 350, { 1, 31 }, { 1, 3 }, { 3, 1 }, true }
Correto? Na verdade tentarei com todos os exemplos (500, 350 e etc).
Isso faz total sentido! Se meu próprio receptor identificar que o protocolo é o 1, não tem o porque minha biblioteca estar enviando o protocolo 6, estou ansioso para testar rsrsrs.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por