#ifndef __CC3200R1M1RGC__
#include <SPI.h>
#endif
#include <WiFi.h>
#include <Wire.h>
#include "Adafruit_TMP006.h"
#include <stdlib.h>
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "LN531UWIR5RRSZCL";
const int updateThingSpeakInterval = 16 * 1000;
char buffer[25];
char ssid[] = "R2C";
char password[] = "r2cudt@2021";
WiFiClient client;
unsigned long lastConnectionTime = 0;
boolean lastConnected = false;
const unsigned long postingInterval = 10*1000;
int failedCounter = 0;
Adafruit_TMP006 tmp006(0x41);
void setup()
{
Serial.begin(115200);
pinMode(2,INPUT);
pinMode(10,OUTPUT);
pinMode(29,OUTPUT);
Serial.print("Attempting to connect to Network named: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);
}
if (! tmp006.begin())
{
Serial.println("No sensor found");
while (1);
}
Serial.println("\nYou're connected to the network");
Serial.println("Waiting for an ip address");
while (WiFi.localIP() == INADDR_NONE)
{
Serial.print(".");
delay(300);
}
Serial.println("\nIP Address obtained");
printWifiStatus();
}
void loop()
{
while (client.available())
{
char c = client.read();
Serial.print(c);
}
if (!client.connected() && lastConnected)
{
Serial.println();
Serial.println("disconnecting.");
client.stop();
}
/////////////////////////////////// solar Tracker System ///////////////////////////////////
if (!client.connected() && (millis() - lastConnectionTime > postingInterval))
{
int solarpanel= analogRead(6);
int solarstatus=0;
int volt=0;
if (solarpanel<200)
{
digitalWrite(9,LOW);
digitalWrite(10,LOW);
solarstatus=1;
}
else
{
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
delay(400); // TRACKING FOR POSITION
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
solarstatus=0;
}
Serial.print("SOLAR TRACKING STATUS");
if(solarpanel>200)
{
volt=solarpanel*(3.0/4096.0);
Serial.print(solarpanel);
Serial.print(" V");
}
else
{
Serial.print("voltage not produced");
}
String sir = dtostrf(volt,3,3,buffer);
Serial.print(sir);
Serial.print(" V");
String st= dtostrf(solarstatus,3,3,buffer);
Serial.print(st);
updateThingSpeak("field1=" + sir+"&field2=" + st);
}
lastConnected = client.connected();
}
void updateThingSpeak(String tsData)
{
if (client.connect(thingSpeakAddress, 80))
{
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(tsData.length());
Serial.println(">>TSDATALength=" + tsData.length());
client.print("\n\n");
client.print(tsData);
Serial.println(">>TSDATA=" + tsData);
lastConnectionTime = millis();
if (client.connected())
{
Serial.println("Connecting to ThingSpeak...");
Serial.println();
failedCounter = 0;
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");
Serial.println();
}
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");
Serial.println();
lastConnectionTime = millis();
}
}
int getLength(int someValue)
{
int digits = 1;
int dividend = someValue / 10;
while (dividend > 0)
{
dividend = dividend / 10;
digits++;
}
return digits;
}
void printWifiStatus()
{
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}