Created
August 11, 2015 07:46
-
-
Save jb1b84/a55d261b2583210ebc5c to your computer and use it in GitHub Desktop.
Arduino BBQ Sensor - MAX31855 K-Type Thermocouple
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Repeating Wifi Web client | |
This sketch connects to a a web server and makes a request | |
using an Arduino Wifi shield. | |
Circuit: | |
* Wifi shield attached to pins 10, 11, 12, 13 | |
created 23 April 2012 | |
modifide 31 May 2012 | |
by Tom Igoe | |
http://arduino.cc/en/Tutorial/WifiWebClientRepeating | |
This code is in the public domain. | |
*/ | |
#include <SPI.h> | |
#include <WiFi.h> | |
char ssid[] = "myhome"; // your network | |
char pass[] = "1234"; //your network password | |
int keyIndex = 0; // your network key Index number (needed only for WEP) | |
int status = WL_IDLE_STATUS; | |
// Initialize the Wifi client library | |
WiFiClient client; | |
// server address: | |
char server[] = "mydomain.com"; | |
//IPAddress server(64,131,82,241); | |
unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds | |
boolean lastConnected = false; // state of the connection last time through the main loop | |
const unsigned long postingInterval = 30*1000; // delay between updates, in milliseconds | |
//thermocouple pins | |
const int CH1 = 3; | |
const int mDataPin = 4; | |
const int mClockPin = 6; | |
const int deviceId = 1; | |
const int wStatusPin = 13; | |
const int resetPin = 2; | |
String tempF; | |
char tempHolder[10]; | |
void setup() { | |
//Initialize serial and wait for port to open: | |
Serial.begin(9600); | |
while (!Serial) { | |
; // wait for serial port to connect. Needed for Leonardo only | |
} | |
// check for the presence of the shield: | |
if (WiFi.status() == WL_NO_SHIELD) { | |
Serial.println("WiFi shield not present"); | |
// don't continue: | |
while(true); | |
} | |
// attempt to connect to Wifi network: | |
while ( status != WL_CONNECTED) { | |
Serial.print("Attempting to connect to SSID: "); | |
Serial.println(ssid); | |
// Connect to WPA/WPA2 network. Change this line if using open or WEP network: | |
status = WiFi.begin(ssid, pass); | |
// wait 10 seconds for connection: | |
delay(10000); | |
} | |
// you're connected now, so print out the status: | |
printWifiStatus(); | |
//initialize the thermocouple pins | |
pinMode(CH1, OUTPUT); | |
pinMode(mDataPin, INPUT); | |
pinMode(mClockPin, OUTPUT); | |
pinMode(wStatusPin, OUTPUT); | |
//pinMode(resetPin, OUTPUT); | |
digitalWrite(CH1, 1); | |
digitalWrite(mClockPin, 0); | |
digitalWrite(wStatusPin, HIGH); | |
//digitalWrite(resetPin, LOW); | |
} | |
void loop() { | |
// if there's incoming data from the net connection. | |
// send it out the serial port. This is for debugging | |
// purposes only: | |
while (client.available()) { | |
char c = client.read(); | |
Serial.write(c); | |
} | |
// if there's no net connection, but there was one last time | |
// through the loop, then stop the client: | |
if (!client.connected() && lastConnected) { | |
Serial.println(); | |
Serial.println("disconnecting."); | |
client.stop(); | |
} | |
// if you're not connected, and ten seconds have passed since | |
// your last connection, then connect again and send data: | |
if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) { | |
httpRequest(); | |
} | |
// store the state of the connection for next time through | |
// the loop: | |
lastConnected = client.connected(); | |
} | |
// this method makes a HTTP connection to the server: | |
void httpRequest() { | |
client.stop(); | |
// if there's a successful connection: | |
if (client.connect(server, 80)) { | |
//get the temp | |
dtostrf(getTemp(CH1), 1, 2, tempHolder); | |
tempF = String(tempHolder); | |
Serial.println("connecting..."); | |
// send the HTTP PUT request: | |
client.println("GET /bbq/log-temp/sir-smokealot/?temp=" + tempF + " HTTP/1.1"); | |
client.println("Host: mydomain.com"); | |
client.println("User-Agent: arduino-ethernet"); | |
client.println("Connection: close"); | |
client.println(); | |
Serial.println(tempF); | |
// note the time that the connection was made: | |
lastConnectionTime = millis(); | |
} | |
else { | |
// if you couldn't make a connection: | |
Serial.println("connection failed"); | |
Serial.println("disconnecting."); | |
client.stop(); | |
} | |
} | |
void printWifiStatus() { | |
// print the SSID of the network you're attached to: | |
Serial.print("SSID: "); | |
Serial.println(WiFi.SSID()); | |
// print your WiFi shield's IP address: | |
IPAddress ip = WiFi.localIP(); | |
Serial.print("IP Address: "); | |
Serial.println(ip); | |
// print the received signal strength: | |
long rssi = WiFi.RSSI(); | |
Serial.print("signal strength (RSSI):"); | |
Serial.print(rssi); | |
Serial.println(" dBm"); | |
} | |
float getTemp(int ch) { | |
unsigned long value = 0; | |
float temp = 0; | |
char bita; | |
digitalWrite(ch, 0); | |
for (int i = 0; i < 32; i++) { | |
digitalWrite(mClockPin, 1); | |
bita = digitalRead(mDataPin); | |
if (bita==1) value = value | 1; | |
digitalWrite(mClockPin, 0); | |
if (i != 31) value = value << 1; | |
} | |
digitalWrite(ch, 1); | |
value = value >> 18; | |
temp = (((value * 0.25) * 9) / 5) + 32; | |
return temp; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment