2013-07-06 13:48:10 +02:00
|
|
|
/*
|
|
|
|
Temperature web interface
|
2013-10-21 09:58:40 +02:00
|
|
|
|
|
|
|
This example shows how to serve data from an analog input
|
2013-07-06 14:10:13 +02:00
|
|
|
via the Arduino Yún's built-in webserver using the Bridge library.
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2013-07-06 13:48:10 +02:00
|
|
|
The circuit:
|
|
|
|
* TMP36 temperature sensor on analog pin A1
|
|
|
|
* SD card attached to SD card slot of the Arduino Yún
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2014-07-08 09:34:22 +02:00
|
|
|
This sketch must be uploaded via wifi. REST API must be set to "open".
|
2014-07-08 09:32:22 +02:00
|
|
|
|
2013-10-21 09:58:40 +02:00
|
|
|
Prepare your SD card with an empty folder in the SD root
|
|
|
|
named "arduino" and a subfolder of that named "www".
|
|
|
|
This will ensure that the Yún will create a link
|
2013-07-06 13:48:10 +02:00
|
|
|
to the SD to the "/mnt/sd" path.
|
2013-10-21 09:58:40 +02:00
|
|
|
|
|
|
|
In this sketch folder is a basic webpage and a copy of zepto.js, a
|
2013-07-06 13:48:10 +02:00
|
|
|
minimized version of jQuery. When you upload your sketch, these files
|
|
|
|
will be placed in the /arduino/www/TemperatureWebPanel folder on your SD card.
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2013-07-06 13:48:10 +02:00
|
|
|
You can then go to http://arduino.local/sd/TemperatureWebPanel
|
|
|
|
to see the output of this sketch.
|
2013-10-21 09:58:40 +02:00
|
|
|
|
|
|
|
You can remove the SD card while the Linux and the
|
2013-07-06 13:48:10 +02:00
|
|
|
sketch are running but be careful not to remove it while
|
|
|
|
the system is writing to it.
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2013-07-06 13:48:10 +02:00
|
|
|
created 6 July 2013
|
|
|
|
by Tom Igoe
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2013-07-06 13:48:10 +02:00
|
|
|
This example code is in the public domain.
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2013-09-10 10:23:29 +02:00
|
|
|
http://arduino.cc/en/Tutorial/TemperatureWebPanel
|
2013-10-21 09:58:40 +02:00
|
|
|
|
2013-07-06 13:48:10 +02:00
|
|
|
*/
|
2013-09-09 20:56:15 +02:00
|
|
|
|
2013-07-06 13:48:10 +02:00
|
|
|
#include <Bridge.h>
|
|
|
|
#include <YunServer.h>
|
2013-10-21 09:58:40 +02:00
|
|
|
#include <YunClient.h>
|
2013-07-06 13:48:10 +02:00
|
|
|
|
2014-05-30 12:17:09 +02:00
|
|
|
// Listen on default port 5555, the webserver on the Yún
|
2013-07-06 13:48:10 +02:00
|
|
|
// will forward there all the HTTP requests for us.
|
|
|
|
YunServer server;
|
2013-07-06 14:10:13 +02:00
|
|
|
String startString;
|
2013-07-06 14:20:02 +02:00
|
|
|
long hits = 0;
|
2013-07-06 13:48:10 +02:00
|
|
|
|
|
|
|
void setup() {
|
|
|
|
Serial.begin(9600);
|
|
|
|
|
|
|
|
// Bridge startup
|
2013-10-21 09:58:40 +02:00
|
|
|
pinMode(13, OUTPUT);
|
2013-07-06 13:48:10 +02:00
|
|
|
digitalWrite(13, LOW);
|
|
|
|
Bridge.begin();
|
|
|
|
digitalWrite(13, HIGH);
|
|
|
|
|
|
|
|
// using A0 and A2 as vcc and gnd for the TMP36 sensor:
|
|
|
|
pinMode(A0, OUTPUT);
|
|
|
|
pinMode(A2, OUTPUT);
|
|
|
|
digitalWrite(A0, HIGH);
|
|
|
|
digitalWrite(A2, LOW);
|
|
|
|
|
|
|
|
// Listen for incoming connection only from localhost
|
|
|
|
// (no one from the external network could connect)
|
|
|
|
server.listenOnLocalhost();
|
|
|
|
server.begin();
|
2013-07-06 14:10:13 +02:00
|
|
|
|
|
|
|
// get the time that this sketch started:
|
|
|
|
Process startTime;
|
|
|
|
startTime.runShellCommand("date");
|
2013-10-21 09:58:40 +02:00
|
|
|
while (startTime.available()) {
|
2013-07-06 14:10:13 +02:00
|
|
|
char c = startTime.read();
|
|
|
|
startString += c;
|
|
|
|
}
|
2013-07-06 13:48:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void loop() {
|
|
|
|
// Get clients coming from server
|
|
|
|
YunClient client = server.accept();
|
|
|
|
|
|
|
|
// There is a new client?
|
|
|
|
if (client) {
|
|
|
|
// read the command
|
|
|
|
String command = client.readString();
|
|
|
|
command.trim(); //kill whitespace
|
|
|
|
Serial.println(command);
|
|
|
|
// is "temperature" command?
|
|
|
|
if (command == "temperature") {
|
2013-07-06 14:10:13 +02:00
|
|
|
|
|
|
|
// get the time from the server:
|
|
|
|
Process time;
|
|
|
|
time.runShellCommand("date");
|
|
|
|
String timeString = "";
|
2013-10-21 09:58:40 +02:00
|
|
|
while (time.available()) {
|
2013-07-06 14:10:13 +02:00
|
|
|
char c = time.read();
|
|
|
|
timeString += c;
|
|
|
|
}
|
|
|
|
Serial.println(timeString);
|
2013-07-06 13:48:10 +02:00
|
|
|
int sensorValue = analogRead(A1);
|
|
|
|
// convert the reading to millivolts:
|
2013-10-21 09:58:40 +02:00
|
|
|
float voltage = sensorValue * (5000 / 1024);
|
2013-07-06 13:48:10 +02:00
|
|
|
// convert the millivolts to temperature celsius:
|
2013-10-21 09:58:40 +02:00
|
|
|
float temperature = (voltage - 500) / 10;
|
2013-07-06 13:48:10 +02:00
|
|
|
// print the temperature:
|
2015-03-02 23:27:55 +01:00
|
|
|
client.print("Current time on the Yún: ");
|
2013-07-06 14:10:13 +02:00
|
|
|
client.println(timeString);
|
|
|
|
client.print("<br>Current temperature: ");
|
2013-07-06 13:48:10 +02:00
|
|
|
client.print(temperature);
|
2015-03-02 23:27:55 +01:00
|
|
|
client.print(" °C");
|
2013-07-06 14:10:13 +02:00
|
|
|
client.print("<br>This sketch has been running since ");
|
|
|
|
client.print(startString);
|
2013-07-06 14:20:02 +02:00
|
|
|
client.print("<br>Hits so far: ");
|
|
|
|
client.print(hits);
|
2013-07-06 13:48:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Close connection and free resources.
|
|
|
|
client.stop();
|
2013-07-06 14:20:02 +02:00
|
|
|
hits++;
|
2013-07-06 13:48:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
delay(50); // Poll every 50ms
|
|
|
|
}
|
|
|
|
|
2013-07-06 14:10:13 +02:00
|
|
|
|
|
|
|
|