...
Sending Temperatures to the Receiver
In an effort to send our own temperatures to the receiver, we put together a program running on an ESP8266 (Wemos mini) connected with RF transmitter.
Code
Code Block |
---|
const int TX_PIN = 4; // ESP8266 pin D2
typedef struct {
boolean power;
int duration; // micro seconds
} signal;
const signal SHORT_ON { true, 500 };
const signal SHORT_OFF { false, 2000 };
const signal LONG_ON { true, 850 }; // not used
const signal LONG_OFF { false, 4000 };
const signal STOP_OFF { false, 500 };
const int REST = 9000; // 9 ms gap
// Here's a temperature of 24.5 forever...
//
signal sig_1 [] {
SHORT_ON, // start bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
LONG_OFF, SHORT_ON, // a one (1) bit
LONG_OFF, SHORT_ON, // a one (1) bit
LONG_OFF, SHORT_ON, // a one (1) bit
LONG_OFF, SHORT_ON, // a one (1) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
LONG_OFF, SHORT_ON, // a one (1) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
// LONG_OFF, SHORT_ON, // a one (1) bit
LONG_OFF, SHORT_ON, // a one (1) bit
LONG_OFF, SHORT_ON, // a one (1) bit
LONG_OFF, SHORT_ON, // a one (1) bit
LONG_OFF, SHORT_ON, // a one (1) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
LONG_OFF, SHORT_ON, // a one (1) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
LONG_OFF, SHORT_ON, // a one (1) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
LONG_OFF, SHORT_ON, // a one (1) bit
LONG_OFF, SHORT_ON, // a one (1) bit
LONG_OFF, SHORT_ON, // a one (1) bit
SHORT_OFF, SHORT_ON, // a zero (0) bit
STOP_OFF, SHORT_ON // stop bit
};
void doTransmission(signal array[67]) {
Serial.println("Doing transmission...");
for (int burst = 1; burst <= 7; burst++) {
for (int idx = 0; idx < 66; ++idx ) { // payload
digitalWrite(TX_PIN, array[idx].power);
delayMicroseconds( array[idx].duration );
}
delayMicroseconds(REST); // rest between bursts
}
}
void setup ( void ) {
pinMode(TX_PIN, OUTPUT);
Serial.begin ( 115200 );
}
void loop ( void ) {
Serial.println("Sending...");
doTransmission(sig_1);
delay(10000);
} |
References
Reference | URL |
---|---|
FCC Info | https://fccid.io/RNE606TXA1 |
RF Protocol | http://www.osengr.org/WxShield/Downloads/Weather-Sensor-RF-Protocols.pdf |
On Off Keying | https://www.youtube.com/watch?v=w6V9NyXwohI |
...