Published © LGPL

IoT TH Sensing

IoT temperature and humidity sensing plus an Android app monitor.

IntermediateShowcase (no instructions)1,419
IoT TH Sensing

Things used in this project

Hardware components

Arduino Micro
Arduino Micro
×1
SparkFun WiFi Breakout - CC3000
×1
DHT11 Temperature & Humidity Sensor (4 pins)
DHT11 Temperature & Humidity Sensor (4 pins)
×1
Android device
Android device
×1

Software apps and online services

IoT For Arduino

Story

Read more

Schematics

Basic Schematic

Code

ATmega32u4_IoT_DTH

Arduino
/*
*	Author		  : Zavala Ortiz Vicente Arturo.
*	language	  : .ino
*	Created		  : 3/11/2015 11:56:57 AM
*	Name		    : ATmega32u4_IoT_DTH.ino
*	Description : wifi Socket Client
*/

#include <util/delay.h>
#include <stdlib.h>

#include "ATmega32u4_ADC.h"
#include "CC3000.h"
#include "CC3000_Client.h"
#include "AFMotor.h"
#include "common.h"
#include "DHT.h"

/*****		wifi Global Variables		*****/
// Connection info data lengths
#define MAX_MSG_LEN							100
#define DHT11_PIN							10

// Constants
char ap_ssid[]				    = "SSID";			    // SSID of network
char ap_password[]			  = "PASSWORD";		  // Password of network
unsigned int ap_security	= WLAN_SEC_WPA2;  // Security of network
unsigned long timeout	  	= 3000;	          // Milliseconds

// Global Variables
CC3000 wifi						    = CC3000();
CC3000_Client client			= CC3000_Client(wifi);

char out_message[MAX_MSG_LEN] 	= "?temperature=";

void flush_buffer(char *buffer);
bool http_gets(char *dest, const char *str, char *path);
void ftoa(long double data, char *str);

/*****		Other Global Variables		*****/
dht DHT;

char sensor_string[10];
static char data[20];

/*****		Motors Global Variables		*****/
Servo servo1;

void setup()
{
	/* add setup code here */

 	ConnectionInfo connection_info;
 
 	// Initialize CC3000 (configure SPI communications)
 	Serial.begin(115200);
 	 
 	// Initialize CC3000 (configure SPI communications)
 	if(!wifi.init(SS)) {
 		Serial.print("Initialize CC3000 FAIL!\n");
 		return;
 	}

	else {
		Serial.print("Initialize CC3000 OK\n");
	}

	if(!wifi.connect(ap_ssid, ap_security, ap_password, timeout)) {
		Serial.print("Error: Could not connect to AP!\n");
		return;
	}
			
	// Gather connection details and print IP address
	if(!wifi.getConnectionInfo(connection_info) )
	{
		Serial.print("Error: Could not obtain connection details\n");
		return;
	}
	
	else
	{	
		Serial.print("IP Address: ");
		printIPAddr(connection_info.ip_address);
	}

	_delay_ms(5000);
}

uint8_t i;

void loop()
{		
	/* add main program code here */
	IPAddress server_ip = IPAddress(0, 0, 0, 0); // Target Mobile IP Address
		
	// READ DATA
	int iResult;
	Serial.print("DHT11, \t");
	int chk = DHT.read11(DHT11_PIN);
			
	switch(chk)
	{
		case DHTLIB_OK: 
			Serial.print("OK,\t"); 
			// DISPLAY DATA
			Serial.print(DHT.humidity, DEC);
			Serial.print(",\t");
			Serial.println(DHT.temperature, DEC);
					
			flush_buffer(out_message);
			_delay_ms(1000);

			strcat(out_message, "?data_type=temperature&device_name=DTH11&device_data=");
			ftoa(DHT.temperature, sensor_string);
			strcat(out_message, sensor_string);
			Serial.println(out_message);
				
			iResult = client.writeto(server_ip, 6000, out_message, sizeof(out_message));
			Serial.println(iResult);
			client.close();						

			flush_buffer(out_message);
			_delay_ms(1000);

			strcat(out_message, "?data_type=humidity&device_name=DTH11&device_data=");
			ftoa(DHT.humidity, sensor_string);
			strcat(out_message, sensor_string);
			Serial.println(out_message);
				
			iResult = client.writeto(server_ip, 6000, out_message, sizeof(out_message));
			Serial.println(iResult);
			client.close();
		break;
			
		case DHTLIB_ERROR_CHECKSUM: Serial.print("Checksum error,\t"); break;
		case DHTLIB_ERROR_TIMEOUT: Serial.print("Time out error,\t"); break;
		case DHTLIB_ERROR_CONNECT: Serial.print("Connect error,\t"); break;
		case DHTLIB_ERROR_ACK_L: Serial.print("Ack Low error,\t"); break;
		case DHTLIB_ERROR_ACK_H: Serial.print("Ack High error,\t"); break;
		default: Serial.print("Unknown error,\t"); break;
	}
	

	_delay_ms(9000);
}

Credits

Comments