Stap 4: Sensorgegevens verzenden en ontvangen met Attiny85/45: DHT11 en LDR door Manchester-code
Verzendt een stationaire nummer is natuurlijk leuk op het eerste, maar niet veel gebruik. Hieronder is een meer praktisch voorbeeld van het verzenden van de stationaire waarde 1 en 3 variabele waarden via de ether.
/*LDR=A1 RF433=D0 DHT11=D4 LED=D3 */ // libraries #include <dht11.h> #include <Manchester.h> dht11 DHT11; #define DHT11PIN 4 #define TX_PIN 0 //pin where your transmitter is connected //variables float h=0; float t=0; int transmit_data = 2761; int transmit_t = 0; int transmit_h = 0; int light=0;
void setup() { man.setupTransmit(TX_PIN, MAN_1200);}
void loop() { int chk = DHT11.read(DHT11PIN); h=DHT11.humidity; t=DHT11.temperature; transmit_h=100*h; transmit_t=100*t; man.transmit(transmit_data); delay(200); man.transmit(transmit_h); delay(200); man.transmit(transmit_t); light= analogRead(A1); man.transmit(light); }
Het duurt 3194 bytes, zodat ik kon het compileren in een Attiny45.
De zender is verbonden met D0 (pin 5). De DHT11 sensor is
aangesloten op D4 (pin 3) en een LDR aangesloten op A1 (pin 7), met het andere uiteinde verbonden met grond of Vcc en bijbehorende pull up of een pull-down weerstand, afhankelijk van uw voorkeur,
Variabelen h en t zijn praalwagens die decimalen kunnen hebben. Zoals ik alleen geïnteresseerd in 2 decimale nauwkeurigheid ben, ik vermenigvuldig met 100 en zet ze in de gehele getallen. Ik verzend de id van een station '2716', gevolgd door 3 waarden: vochtigheid, temperatuur, licht. Het ontvangende station kan vervolgens identificeren waar het uit kwam en verwerken van de inkomende signalen (beginnen met hen te delen door 100 weer)