Raspberry Pi nRF24L01 + Data Collector använder Google former (9 / 11 steg)
Steg 9: ATmega328P-PU: fjärrsensor sändare
Överföra sensordata Raspberry Pi bas mottagaren.
Obs: om vi inte har någon sensorer, grundläggande rutin fungerar. Förutsatt att nRF24L01 + har anslutits. Alla analoga stiften är läsa och skickas till Raspberry Pi. Analog 0 definieras som foto motståndet, så som ska bokföras på Google Form. De andra sensorerna registrerar en nolla om ingenting är kopplad till stiften.
Bibliotek
#include < SPI.h >
#include < avr/sleep.h >
#include "nRF24L01.h"
#include "RF24.h"
#include < printf.h > / / Printf används för debug
#include < Adafruit_Sensor.h >
#include < DHT.h >
#include < DHT_U.h >
#include < OneWire.h >
Läsa och förbereda data, de flesta av rutinerna som sensor läsa data i globala variabler som ska skickas till radio nyttolasten. Det finns ett stort utrymme för förbättringar med programmering här.
Hämta temperaturen och luftfuktigheten från DHT11 sensor och temperatur från DS18B20 sensorn.
getTemperatureHumidity();
getDS18B20();
Läsa alla analoga stift
int Apin0 = analogRead(A0); A0 är foto motståndet (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();
Skapa nyttolasten som en matris av heltal, varje punkt är två byte långt. Bestående av en låg byte och en hög byte. Den slutliga heltalsresultat kan erhållas från:
Låg byte + 256 * övre byte
int send_payload [] = {Sensor, startTime, thisTime, Apin0, Apin1, Apin2, Apin3, Apin4, Apin5, Apin6, Apin7, temperatureC, fuktighet, DS18B20C};
Nyttolaststorlek för detta generiska data sensor nyttolasten är 28 bytes
int payload_size = sizeof send_payload;
radio.stopListening();
Skicka det
radio.write (send_payload, payload_size);
Hämta skiss-filen och kopiera den till den Arduino arbetskatalogen. Läsa in skiss till Arduino IDE och blinkar det till Arduino sensorn.