You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.4 KiB
123 lines
3.4 KiB
5 years ago
|
/*
|
||
|
Temperature web interface
|
||
|
|
||
|
This example shows how to serve data from an analog input
|
||
|
via the YunShield/Yún built-in webserver using the Bridge library.
|
||
|
|
||
|
The circuit:
|
||
|
* TMP36 temperature sensor on analog pin A1
|
||
|
* SD card attached to SD card slot of the YunShield/Yún
|
||
|
|
||
|
This sketch must be uploaded via wifi. REST API must be set to "open".
|
||
|
|
||
|
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
|
||
|
to the SD to the "/mnt/sd" path.
|
||
|
|
||
|
In this sketch folder is a basic webpage and a copy of zepto.js, a
|
||
|
minimized version of jQuery. When you upload your sketch, these files
|
||
|
will be placed in the /arduino/www/TemperatureWebPanel folder on your SD card.
|
||
|
|
||
|
You can then go to http://arduino.local/sd/TemperatureWebPanel
|
||
|
to see the output of this sketch.
|
||
|
|
||
|
You can remove the SD card while the Linux and the
|
||
|
sketch are running but be careful not to remove it while
|
||
|
the system is writing to it.
|
||
|
|
||
|
created 6 July 2013
|
||
|
by Tom Igoe
|
||
|
|
||
|
This example code is in the public domain.
|
||
|
|
||
|
http://www.arduino.cc/en/Tutorial/TemperatureWebPanel
|
||
|
|
||
|
*/
|
||
|
|
||
|
#include <Bridge.h>
|
||
|
#include <BridgeServer.h>
|
||
|
#include <BridgeClient.h>
|
||
|
|
||
|
// Listen on default port 5555, the webserver on the Yún
|
||
|
// will forward there all the HTTP requests for us.
|
||
|
BridgeServer server;
|
||
|
String startString;
|
||
|
long hits = 0;
|
||
|
|
||
|
void setup() {
|
||
|
SerialUSB.begin(9600);
|
||
|
|
||
|
// Bridge startup
|
||
|
pinMode(13, OUTPUT);
|
||
|
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();
|
||
|
|
||
|
// get the time that this sketch started:
|
||
|
Process startTime;
|
||
|
startTime.runShellCommand("date");
|
||
|
while (startTime.available()) {
|
||
|
char c = startTime.read();
|
||
|
startString += c;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void loop() {
|
||
|
// Get clients coming from server
|
||
|
BridgeClient client = server.accept();
|
||
|
|
||
|
// There is a new client?
|
||
|
if (client) {
|
||
|
// read the command
|
||
|
String command = client.readString();
|
||
|
command.trim(); //kill whitespace
|
||
|
SerialUSB.println(command);
|
||
|
// is "temperature" command?
|
||
|
if (command == "temperature") {
|
||
|
|
||
|
// get the time from the server:
|
||
|
Process time;
|
||
|
time.runShellCommand("date");
|
||
|
String timeString = "";
|
||
|
while (time.available()) {
|
||
|
char c = time.read();
|
||
|
timeString += c;
|
||
|
}
|
||
|
SerialUSB.println(timeString);
|
||
|
int sensorValue = analogRead(A1);
|
||
|
// convert the reading to millivolts:
|
||
|
float voltage = sensorValue * (5000.0f / 1024.0f);
|
||
|
// convert the millivolts to temperature celsius:
|
||
|
float temperature = (voltage - 500.0f) / 10.0f;
|
||
|
// print the temperature:
|
||
|
client.print("Current time on the Yún: ");
|
||
|
client.println(timeString);
|
||
|
client.print("<br>Current temperature: ");
|
||
|
client.print(temperature);
|
||
|
client.print(" °C");
|
||
|
client.print("<br>This sketch has been running since ");
|
||
|
client.print(startString);
|
||
|
client.print("<br>Hits so far: ");
|
||
|
client.print(hits);
|
||
|
}
|
||
|
|
||
|
// Close connection and free resources.
|
||
|
client.stop();
|
||
|
hits++;
|
||
|
}
|
||
|
|
||
|
delay(50); // Poll every 50ms
|
||
|
}
|