Created
July 25, 2019 15:25
-
-
Save mpfeil/3ddfd9b9a42eb97b673fd1122b3919f1 to your computer and use it in GitHub Desktop.
Arduino Sketch for senseBox:edu containing a webserver that displays data from a sd card.
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
/* | |
WiFi Web Server Read SD Card | |
A simple web server that reads data from a SD card and displays | |
it. | |
This example combines the following Arduino examples and is | |
for a senseBox:edu with WiFi and SDCard Bee. | |
https://www.arduino.cc/en/Tutorial/Wifi101WiFiWebServer | |
https://www.arduino.cc/en/Tutorial/ReadWrite | |
*/ | |
#include <SPI.h> | |
#include <WiFi101.h> | |
#include <SD.h> | |
#include "SenseBoxMCU.h" | |
//#include "arduino_secrets.h" | |
///////please enter your sensitive data in the Secret tab/arduino_secrets.h | |
char ssid[] = "DEINE_SSID"; // your network SSID (name) | |
char pass[] = "DEIN_PASSWORD"; // your network password (use for WPA, or use as key for WEP) | |
int keyIndex = 0; // your network key Index number (needed only for WEP) | |
int status = WL_IDLE_STATUS; | |
WiFiServer server(80); | |
File myFile; | |
// Name der Datei auf der SD-Karte | |
// Achte darauf, dass dieser Name (ohne Dateiendung) nicht länger als 8 Buchstaben lang sein darf! | |
String fileName = "SenseBox.txt"; | |
void setup() { | |
//Initialize serial and wait for port to open: | |
Serial.begin(9600); | |
while (!Serial) { | |
; // wait for serial port to connect. Needed for native USB port 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); | |
} | |
server.begin(); | |
// you're connected now, so print out the status: | |
printWiFiStatus(); | |
Serial.print("Initializing SD card..."); | |
if (!SD.begin(28)) { | |
Serial.println("initialization failed!"); | |
while (1); | |
} | |
Serial.println("initialization done."); | |
// open the file. note that only one file can be open at a time, | |
// so you have to close this one before opening another. | |
myFile = SD.open(fileName, FILE_WRITE); | |
// if the file opened okay, write to it: | |
if (myFile) { | |
Serial.print("Writing to test.txt..."); | |
myFile.println("testing 1, 2, 3."); | |
// close the file: | |
myFile.close(); | |
Serial.println("done."); | |
} else { | |
// if the file didn't open, print an error: | |
Serial.println("error opening test.txt"); | |
} | |
} | |
void loop() { | |
// listen for incoming clients | |
WiFiClient client = server.available(); | |
if (client) { | |
Serial.println("new client"); | |
// an http request ends with a blank line | |
bool currentLineIsBlank = true; | |
while (client.connected()) { | |
if (client.available()) { | |
char c = client.read(); | |
Serial.write(c); | |
// if you've gotten to the end of the line (received a newline | |
// character) and the line is blank, the http request has ended, | |
// so you can send a reply | |
if (c == '\n' && currentLineIsBlank) { | |
// send a standard http response header | |
client.println("HTTP/1.1 200 OK"); | |
client.println("Content-Type: text/html"); | |
client.println("Connection: close"); // the connection will be closed after completion of the response | |
client.println("Refresh: 5"); // refresh the page automatically every 5 sec | |
client.println(); | |
client.println("<!DOCTYPE HTML>"); | |
client.println("<html>"); | |
// output the value of each analog input pin | |
myFile = SD.open(fileName); | |
if (myFile) { | |
while (myFile.available()) { | |
client.write(myFile.read()); | |
} | |
client.println("<br />"); | |
myFile.close(); | |
} else { | |
client.print("error opening file from SD Card"); | |
client.println("</br>"); | |
} | |
client.println("</html>"); | |
break; | |
} | |
if (c == '\n') { | |
// you're starting a new line | |
currentLineIsBlank = true; | |
} | |
else if (c != '\r') { | |
// you've gotten a character on the current line | |
currentLineIsBlank = false; | |
} | |
} | |
} | |
// give the web browser time to receive the data | |
delay(1); | |
// close the connection: | |
client.stop(); | |
Serial.println("client disconnected"); | |
} | |
} | |
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"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment