Difference between revisions of "Thingspeak: Ethernet"
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
Onnowpurbo (talk | contribs)  | 
				Onnowpurbo (talk | contribs)   | 
				||
| Line 28: | Line 28: | ||
  #include <Ethernet.h>  |   #include <Ethernet.h>  | ||
  #include "secrets.h"  |   #include "secrets.h"  | ||
| + | |||
| + |  #include "DHT.h"  | ||
| + |  #define DHTPIN 2 // what digital pin we're connected to  | ||
| + |  // Uncomment whatever type you're using!  | ||
| + |  //#define DHTTYPE DHT11 // DHT 11  | ||
| + |  #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321  | ||
  byte mac[] = SECRET_MAC;  |   byte mac[] = SECRET_MAC;  | ||
| Line 72: | Line 78: | ||
    // give the Ethernet shield a second to initialize:  |     // give the Ethernet shield a second to initialize:  | ||
    delay(1000);  |     delay(1000);  | ||
| − | + | ||
| + |     dht.begin();    | ||
    ThingSpeak.begin(client);  // Initialize ThingSpeak  |     ThingSpeak.begin(client);  // Initialize ThingSpeak  | ||
  }     |   }     | ||
  void loop() {  |   void loop() {  | ||
| + | |||
| + |    float h = dht.readHumidity();  | ||
| + |    // Reading temperature or humidity takes about 250 milliseconds!  | ||
| + |    float t = dht.readTemperature();  | ||
| + |    // Read temperature as Celsius (the default)  | ||
| + |    if (isnan(h) || isnan(t) ) {  | ||
| + |       Serial.println("Failed to read from DHT sensor!");  | ||
| + |       return;  | ||
| + |    }  | ||
    // set the fields with the values  |     // set the fields with the values  | ||
| − |     ThingSpeak.setField(1,   | + |     ThingSpeak.setField(1, t);  | 
| − |     ThingSpeak.setField(2,   | + |     ThingSpeak.setField(2, h);  | 
| − | |||
| − | |||
| Line 93: | Line 107: | ||
      Serial.println("Problem updating channel. HTTP error code " + String(x));  |       Serial.println("Problem updating channel. HTTP error code " + String(x));  | ||
    }  |     }  | ||
| − | + | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
    delay(20000); // Wait 20 seconds to update the channel again  |     delay(20000); // Wait 20 seconds to update the channel again  | ||
  }  |   }  | ||
Latest revision as of 17:44, 21 September 2019
/* WriteMultipleFields Description: Writes values to fields 1,2,3 and 4 in a single ThingSpeak update every 20 seconds. Hardware: Arduino Ethernet !!! IMPORTANT - Modify the secrets.h file for this project with your network connection and ThingSpeak channel details. !!! Note: - Requires the Ethernet library ThingSpeak ( https://www.thingspeak.com ) is an analytic IoT platform service that allows you to aggregate, visualize, and analyze live data streams in the cloud. Visit https://www.thingspeak.com to sign up for a free account and create a channel. Documentation for the ThingSpeak Communication Library for Arduino is in the README.md folder where the library was installed. See https://www.mathworks.com/help/thingspeak/index.html for the full ThingSpeak documentation. For licensing information, see the accompanying license file. Copyright 2018, The MathWorks, Inc. */
#include "ThingSpeak.h" #include <Ethernet.h> #include "secrets.h"
#include "DHT.h"
#define DHTPIN 2 // what digital pin we're connected to
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
byte mac[] = SECRET_MAC;
// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192, 168, 0, 177);
IPAddress myDns(192, 168, 0, 1);
EthernetClient client; 
unsigned long myChannelNumber = SECRET_CH_ID;
const char * myWriteAPIKey = SECRET_WRITE_APIKEY; 
// Initialize our values
int number1 = 0;
int number2 = random(0,100);
int number3 = random(0,100);
int number4 = random(0,100);
void setup() {
  Ethernet.init(10);  // Most Arduino Ethernet hardware
  Serial.begin(115200);  //Initialize serial
    
  // start the Ethernet connection:
  Serial.println("Initialize Ethernet with DHCP:");
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // Check for Ethernet hardware present
    if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
      while (true) {
        delay(1); // do nothing, no point running without Ethernet hardware
      }
    }
    if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("Ethernet cable is not connected.");
    }
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip, myDns);
  } else {
    Serial.print("  DHCP assigned IP ");
    Serial.println(Ethernet.localIP());
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  dht.begin();  
  ThingSpeak.begin(client);  // Initialize ThingSpeak
}  
void loop() {
  
  float h = dht.readHumidity();
  // Reading temperature or humidity takes about 250 milliseconds!
  float t = dht.readTemperature();
  // Read temperature as Celsius (the default)
  if (isnan(h) || isnan(t) ) {
     Serial.println("Failed to read from DHT sensor!");
     return;
  }
  
  // set the fields with the values
  ThingSpeak.setField(1, t);
  ThingSpeak.setField(2, h);
  
  // write to the ThingSpeak channel 
  int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
  if(x == 200){
    Serial.println("Channel update successful.");
  }
  else{
    Serial.println("Problem updating channel. HTTP error code " + String(x));
  }
     
  delay(20000); // Wait 20 seconds to update the channel again
}
secret.h
/ Use this file to store all of the private credentials 
// and connection details 
// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
#define SECRET_MAC {0x02, 0xCA, 0xFF, 0xEE, 0xBA, 0xBE}
#define SECRET_CH_ID 000000	   // replace 0000000 with your channel number
#define SECRET_WRITE_APIKEY "XYZ" // replace XYZ with your channel write API Key