Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "SFE_TSL2561.h"
- #include "dht.h"
- #define DHTPIN D4
- #define SOUNDPIN A0
- #define PHPIN A1
- #define FLOATHIGHPIN A2
- #define FLOATLOWPIN A3
- #define DHTTYPE DHT11
- // Initialize sensor classes
- DHT dht(DHTPIN, DHTTYPE);
- SFE_TSL2561 tsl = SFE_TSL2561();
- // Initialize variables
- char eventinfo[64];
- unsigned int ms;
- int publishdelay = 60 * 1000;
- // Initialize PH Sensor
- void InitializePHSensor(){
- pinMode(PHPIN, INPUT);
- }
- // Initialize Tank Monitor
- void InitializeTankLevel(){
- pinMode(FLOATLOWPIN, INPUT);
- pinMode(FLOATHIGHPIN, INPUT);
- }
- // Initialize DHT
- void InitializeDHT(){
- dht.begin();
- }
- // Initialize TSL2561
- void InitializeTSL2561(){
- unsigned char id;
- tsl.begin();
- tsl.getID(id);
- tsl.setTiming(0, 2, ms);
- tsl.setPowerUp();
- }
- // Initialize Sound Sensor
- void InitializeSoundSensor(){
- pinMode(SOUNDPIN, INPUT);
- }
- // Publish PH info
- void PublishPHInfo(){
- int sensorValue = analogRead(PHPIN);
- int pH = (0.0178 * sensorValue - 1.889);
- sprintf(eventinfo, "pH=%.2f|pH", pH);
- Publish(eventinfo);
- }
- // Publish Temperature, Humidity, Dew Point
- void PublishDHTInfo(){
- float h = dht.readHumidity();
- float t = dht.readTemperature();
- float d = dht.dewPoint(t, h);
- sprintf(eventinfo, "Temperature=%.2f|�C,Humidity=%.2f|%%,Dew Point=%.2f|�C", t, h, d);
- Publish(eventinfo);
- }
- // Publish Tank Level
- void PublishTankLevelInfo(){
- int levelHigh = LOW;
- int levelLow = LOW;
- levelHigh = digitalRead(FLOATHIGHPIN);
- levelLow = digitalRead(FLOATLOWPIN);
- if(levelHigh == LOW){
- sprintf(eventinfo, "Tank Level= (HalfFull)|");
- }
- else if(levelLow == LOW){
- sprintf(eventinfo, "Tank Level= (Fill Now!)|");
- }
- else{
- sprintf(eventinfo, "Tank Level= (Full)|");
- }
- Publish(eventinfo);
- }
- // Publish luminosity
- void PublishTSL2561Info(){
- unsigned int data1;
- unsigned int data2;
- bool gain;
- tsl.getData(data1, data2);
- double lux;
- tsl.getLux(gain,ms,data1,data2,lux);
- sprintf(eventinfo, "Lux=%.2f|Lux", lux);
- Publish(eventinfo);
- }
- // Publish sound info
- void PublishSoundInfo(){
- // map analog reading (0-4095) to (0-100)
- int level = map(analogRead(SOUNDPIN), 0, 4095, 0, 100);
- // Just some arbitrary values
- if(level > 60){
- sprintf(eventinfo, "Sound Level=%d (High)|", level);
- }
- else if(level > 30){
- sprintf(eventinfo, "Sound Level=%d (Medium)|", level);
- }
- else{
- sprintf(eventinfo, "Sound Level=%d (Low)|", level);
- }
- Publish(eventinfo);
- }
- // Publush event
- void Publish(char* szEventInfo){
- Spark.publish("Current Conditions", szEventInfo);
- }
- // Initialize applicaiton
- void InitializeApplication(){
- Serial.begin(9600);
- pinMode(D7, OUTPUT);
- }
- // Blink LED and wait for some time
- void BlinkLED(){
- digitalWrite(D7, HIGH);
- delay(500);
- digitalWrite(D7, LOW);
- delay(500);
- delay(publishdelay);
- }
- void setup(){
- InitializeApplication();
- Serial.println("Initializing sensors...");
- InitializePHSensor();
- InitializeDHT();
- InitializeTSL2561();
- InitializeSoundSensor();
- InitializeTankLevel();
- }
- void loop()
- {
- // Publish events. Wait for 2 second between publishes
- PublishDHTInfo();
- delay(2000);
- PublishPHInfo();
- delay(2000);
- PublishTankLevelInfo();
- delay(2000);
- PublishTSL2561Info();
- delay(2000);
- PublishSoundInfo();
- delay(2000);
- BlinkLED();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement