Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <ESP8266WebServer.h>
- #include <EEPROM.h>
- ESP8266WebServer server(80);
- const char* ssid = "test12345"; //accespoint naam
- const char* passphrase = "test12345"; // code accespoint
- String st;
- String content;
- int statusCode;
- String versie = "inofile = waterproofUltrasoonNodemcu2";
- String esid = "";
- String epass = "";
- String qsid = "";
- String qpass = "";
- //ultrasoon items
- #define echoPin 4 // Echo Pin van de ultrasoon hr-04 module
- #define trigPin 5 // Trigger Pin
- long duration, distance , vorigedistance ; // Duration used to calculate distance
- void setup() {
- delay(10);
- Serial.begin(115200);
- delay(200);
- EEPROM.begin(512);
- delay(200);
- Serial.println();
- Serial.println(versie);
- Serial.println("Startup");
- //ultasoon
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin, INPUT);
- // Serial.println("Reading EEPROM ");
- // for (int i = 0; i < 512; i++)
- // {
- // char value = EEPROM.read(i);
- // Serial.print(i);
- // Serial.print("\t");
- // // Serial.print(value, DEC);
- // Serial.println(value);
- // delay(40);
- // }
- // read eeprom for ssid and pass
- Serial.println("Reading EEPROM ssid");
- esid = "";
- for (int i = 0; i < 32; ++i)
- {
- esid += char(EEPROM.read(i));
- Serial.println(esid);
- Serial.println(i);
- }
- Serial.print("SSID: ");
- Serial.println(esid);
- Serial.println("Reading EEPROM pass");
- epass = "";
- for (int i = 32; i < 96; ++i)
- {
- epass += char(EEPROM.read(i));
- Serial.println(epass);
- Serial.println(i);
- }
- Serial.print("PASS: ");
- Serial.println(epass);
- Serial.println("debug esid: ");
- Serial.println(esid.c_str());
- Serial.println(epass.c_str());
- if ( esid.length() > 1 ) {
- Serial.println("debug2: ");
- Serial.println(esid.c_str());
- Serial.println(epass.c_str());
- WiFi.begin(esid.c_str(), epass.c_str());
- if (testWifi()) {
- launchWeb(0);
- return;
- }
- }
- setupAP();
- }
- bool testWifi(void) {
- int c = 0;
- Serial.println("Waiting for Wifi to connect");
- while ( c < 20 ) {
- if (WiFi.status() == WL_CONNECTED) {
- return true;
- }
- delay(500);
- Serial.print(WiFi.status());
- c++;
- }
- Serial.println("");
- Serial.println("Connect timed out, opening AP");
- return false;
- }
- void launchWeb(int webtype) {
- Serial.println("");
- Serial.println("WiFi connected");
- Serial.print("Local IP: ");
- Serial.println(WiFi.localIP());
- Serial.print("gekoppelde ssid: ");
- Serial.println(WiFi.SSID());
- Serial.print("SoftAP IP: ");
- Serial.println(WiFi.softAPIP());
- if (webtype == 1) {
- Serial.println ("geen wifi gekend in eeprom , fabrieksreset");
- }
- if (webtype == 0) {
- Serial.println ("wifi gekend in wifimodule");
- }
- createWebServer(webtype);
- // Start the server
- server.begin();
- Serial.println("Server started");
- }
- void setupAP(void) {
- WiFi.mode(WIFI_STA);
- WiFi.disconnect();
- delay(100);
- int n = WiFi.scanNetworks();
- Serial.println("scan done");
- if (n == 0)
- Serial.println("no networks found");
- else
- {
- Serial.print(n);
- Serial.println(" networks found");
- for (int i = 0; i < n; ++i)
- {
- // Print SSID and RSSI for each network found
- Serial.print(i + 1);
- Serial.print(": ");
- Serial.print(WiFi.SSID(i));
- Serial.print(" (");
- Serial.print(WiFi.RSSI(i));
- Serial.print(")");
- Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
- delay(10);
- }
- }
- Serial.println("");
- st = "<ol>";
- for (int i = 0; i < n; ++i)
- {
- // Print SSID and RSSI for each network found
- st += "<li>";
- st += WiFi.SSID(i);
- st += " (";
- st += WiFi.RSSI(i);
- st += ")";
- st += (WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*";
- st += "</li>";
- }
- st += "</ol>";
- delay(100);
- WiFi.softAP(ssid, passphrase, 6);
- Serial.println("softap");
- launchWeb(1);
- //Serial.println("over");
- }
- void createWebServer(int webtype)
- {
- if ( webtype == 1 ) {
- server.on("/", []() {
- IPAddress ip = WiFi.softAPIP();
- String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
- content = "<!DOCTYPE HTML>\r\n<html>Hello from ESP8266 at accespoint ";
- content += ipStr;
- content += "<p>";
- content += "<br>";
- content += versie;
- content += "<br>";
- content += "<br> ultrasoon = ";
- content += distance;
- content += "<br>";
- content += " <a href=""";
- content += "/ultrasoonmeting";
- content += """ target=""_blank""> live meting ultrasoon</a> " ;
- content += " <a href=""";
- content += "/cleareeprom";
- content += """ target=""_blank""> clear de eprom</a> " ;
- content += st;
- content += "</p><form method='get' action='setting'><label>SSID: </label><input name='ssid' length=32><input name='pass' length=64><input type='submit'></form>";
- content += "</html>";
- server.send(200, "text/html", content);
- });
- server.on("/setting", []() {
- qsid = server.arg("ssid");
- qpass = server.arg("pass");
- if (qsid.length() > 0 && qpass.length() > 0) {
- Serial.println("clearing eeprom");
- for (int i = 0; i < 96; ++i)
- {
- EEPROM.write(i, 0);
- }
- Serial.println(qsid);
- Serial.println("");
- Serial.println(qpass);
- Serial.println("");
- Serial.println("writing eeprom ssid:");
- for (int i = 0; i < qsid.length(); ++i)
- {
- EEPROM.write(i, qsid[i]);
- Serial.print("Wrote: ");
- Serial.println(qsid[i]);
- }
- Serial.println("writing eeprom pass:");
- for (int i = 0; i < qpass.length(); ++i)
- {
- EEPROM.write(32 + i, qpass[i]);
- Serial.print("Wrote: ");
- Serial.println(qpass[i]);
- }
- EEPROM.commit();
- content = "{\"Success\":\"saved to eeprom... reset to boot into new wifi\"}";
- statusCode = 200;
- } else {
- content = "{\"Error\":\"404 not found\"}";
- statusCode = 404;
- Serial.println("Sending 404");
- }
- server.send(statusCode, "application/json", content);
- });
- }
- else if (webtype == 0) {
- server.on("/", []() {
- IPAddress ip = WiFi.localIP();
- String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
- content = "<!DOCTYPE HTML>\r\n<html>Hello from ESP8266 at client verbonden met router";
- content += ipStr;
- content += "<p>";
- content += "<br> ultrasoon = ";
- content += distance;
- content += "<br>";
- content += "<br>";
- content += versie;
- content += "<br>";
- content += st;
- content += " <a href=""";
- content += "/cleareeprom";
- content += """ target=""_blank""> clear de eprom</a> " ;
- content += " <a href=""";
- content += "/ultrasoonmeting";
- content += """ target=""_blank""> live meting ultrasoon</a> " ;
- content += "</p><form method='get' action='setting'><label>SSID: </label><input name='ssid' length=32><input name='pass' length=64><input type='submit'></form>";
- content += "</html>";
- server.send(200, "text/html", content);
- });
- server.on("/setting", []() {
- String qsid = server.arg("ssid");
- String qpass = server.arg("pass");
- if (qsid.length() > 0 && qpass.length() > 0) {
- Serial.println("clearing eeprom");
- for (int i = 0; i < 96; ++i) {
- EEPROM.write(i, 0);
- }
- Serial.println(qsid);
- Serial.println("");
- Serial.println(qpass);
- Serial.println("");
- Serial.println("writing eeprom ssid:");
- for (int i = 0; i < qsid.length(); ++i)
- {
- EEPROM.write(i, qsid[i]);
- Serial.print("Wrote: ");
- Serial.println(qsid[i]);
- }
- Serial.println("writing eeprom pass:");
- for (int i = 0; i < qpass.length(); ++i)
- {
- EEPROM.write(32 + i, qpass[i]);
- Serial.print("Wrote: ");
- Serial.println(qpass[i]);
- }
- EEPROM.commit();
- content = "{\"Success\":\"saved to eeprom... reset to boot into new wifi\"}";
- statusCode = 200;
- } else {
- content = "{\"Error\":\"404 not found\"}";
- statusCode = 404;
- Serial.println("Sending 404");
- }
- server.send(statusCode, "application/json", content);
- });
- //////////////
- server.on("/ultrasoonmeting", []() {
- content = "<!DOCTYPE HTML>\r\n<html>meting ultrasoon";
- content = "<!DOCTYPE html PUBLIC ""-//W3C//DTD HTML 3.2//EN""> " ;
- content += "<html>" ;
- content += " <body> " ;
- content += " <script> " ;
- content += " setTimeout(function(){ location.reload() }, 1000); " ;
- content += " </script> " ;
- content += "<br>";
- content += versie;
- content += "<br>";
- content += "<p>";
- content += "<br> (elke sec word pagina herladen : ultrasoon = ";
- content += distance;
- content += "<br>";
- content += "waternivo:<progress value=\"";
- content += distance ;
- content += "\" max=\"400\"></progress>";
- content += "<p><strong>Note:</strong> The progress tag is not supported in Internet Explorer 9 and earlier versions.</p>";
- long verschil = 400 - distance;
- content += "waternivo:<progress value=\"" + String(verschil) + "\" max=\"400\"></progress>";
- // content += "</p><form method='get' action='setting'><label>SSID: </label><input name='ssid' length=32><input name='pass' length=64><input type='submit'></form>";
- content += " </body> " ;
- content += " </html> " ;
- server.send(200, "text/html", content);
- });
- ///////////////
- server.on("/cleareeprom", []() {
- content = "<!DOCTYPE HTML>\r\n<html>";
- content += "<p>Clearing the EEPROM</p></html>";
- server.send(200, "text/html", content);
- Serial.println("clearing eeprom");
- qsid = "vermoost";
- qpass = "kapot"; // anders onthoud hij de oude string locate en kan je niet resetten
- Serial.println("manueel vith wiss eeprom ssid:");
- for (int i = 0; i < qsid.length(); ++i)
- {
- EEPROM.write(i, qsid[i]);
- Serial.print("Wrote: ");
- Serial.println(qsid[i]);
- }
- Serial.println("manueel wis vith writing eeprom pass:");
- for (int i = 0; i < qpass.length(); ++i)
- {
- EEPROM.write(32 + i, qpass[i]);
- Serial.print("Wrote: ");
- Serial.println(qpass[i]);
- }
- EEPROM.commit();
- });
- }
- }
- void loop() {
- server.handleClient();
- delay(500);
- meetultrasoon();
- delay(500);
- }
- ////////////
- void meetultrasoon() {
- /* The following trigPin/echoPin cycle is used to determine the
- distance of the nearest object by bouncing soundwaves off of it. */
- // digitalWrite(trigPin, LOW);
- // delayMicroseconds(20);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(40);
- digitalWrite(trigPin, LOW);
- duration = pulseIn(echoPin, HIGH);
- //Calculate the distance (in cm) based on the speed of sound.
- distance = duration / 58.2;
- long verschil = abs(distance - vorigedistance); //absolute waarde verschil + of -
- // Serial.print("verschil = ");
- // Serial.println(verschil);
- if (verschil > 5) {
- //hermeet als je teveel verschil hebt met de vorige meting
- delay(500);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(40);
- digitalWrite(trigPin, LOW);
- duration = pulseIn(echoPin, HIGH);
- distance = duration / 58.2; //nieuwe meting
- Serial.println("hermeting gedaan wegens plots een verschil van meer dan 5cm");
- }
- vorigedistance = distance ; // opslaan oude waarde
- if (distance == 0)
- {
- //onze seconden wachter moet op 15staan eer we naaar de cloud sturen
- distance = vorigedistance; //de vorige waarde hergebruiken
- Serial.println ("error0 ");
- }
- //volgens datasheet zien we maar tot 400cm ver , maar bij storing krijgen we soms waardes als 5645 , alles meer dan 400 smijten we weg
- if (distance > 400)
- {
- //onze seconden wachter moet op 15staan eer we naaar de cloud sturen
- distance = vorigedistance; //de vorige waarde hergebruiken
- Serial.println ("error400");
- }
- Serial.print(distance);
- Serial.println (" cm");
- }
- ///////////////
Advertisement
Add Comment
Please, Sign In to add comment