Stap 9: ATmega328P-PU: Sensor afstandsbediening zender
Toezending van de sensorgegevens op de Raspberry Pi basis ontvanger.
Opmerking: als er geen sensoren, de fundamentele routine zal werken. Mits de nRF24L01 + aangesloten is geweest. Alle van de analoge pinnen zijn lezen en verzonden naar de Raspberry Pi. Analoge 0 is gedefinieerd als de weerstand van de foto, dus dat wordt geboekt naar de Google-formulier. De andere sensoren registreren een nul als er niets is aangesloten op de pinnen.
Bibliotheken
#include <SPI.h> #include <avr/sleep.h> #include "nRF24L01.h" #include "RF24.h" #include <printf.h> // Printf is used for debug #include <Adafruit_Sensor.h> #include <DHT.h> #include <DHT_U.h> #include <OneWire.h>
Lezen en opstellen van de gegevens, het merendeel van de routines van de sensor gegevens lezen in globale variabelen die worden doorgegeven aan de radio-nettolading. Er is veel ruimte voor verbetering met de programmering hier.
Het verkrijgen van de temperatuur en de vochtigheid van de DHT11 sensor en de temperatuur van de DS18B20 sensor.
getTemperatureHumidity(); getDS18B20();
Lees alle van de analoge pinnen
int Apin0 = analogRead(A0); // A0 is the photo resistor (light sensor) int Apin1 = analogRead(A1); int Apin2 = analogRead(A2); int Apin3 = analogRead(A3); int Apin4 = analogRead(A4); int Apin5 = analogRead(A5); int Apin6 = analogRead(A6); int Apin7 = analogRead(A7); thisTime = millis();
Maak de nettolading als een matrix van gehele getallen, elk item is twee bytes lang. Bestaande uit een lage byte en een hoge byte. Het resultaat van de definitieve geheel getal kan worden verkregen bij:
Lage byte + 256 * hoge byte
int send_payload[] = {Sensor, startTime, thisTime, Apin0, Apin1, Apin2, Apin3, Apin4, Apin5, Apin6, Apin7, temperatureC, humidity, DS18B20C};
De grootte van de lading voor dit generieke gegevenslading sensor is 28 bytes
int payload_size = sizeof send_payload; radio.stopListening();
vervolgens stuurt u deze
radio.write( send_payload , payload_size );
Download het schets-bestand en kopieer het naar de werkdirectory van de Arduino. Laden de schets in de Arduino IDE en flash het vervolgens naar de Arduino-sensor.