|
|
- #include <math.h>
-
- //--- made by SKA ---
- //--- test EtherEncLib
- // adapted by Renato Aloi
- // May 2015
- // removed SD Card part for future implementation
-
- #include <SPI.h>
- #include <EtherEncLib.h>
- #if (ESP8266)
- #include <pgmspace.h>
- #else
- #include <avr/pgmspace.h>
- #endif
-
-
-
- static unsigned char ipaddr[] = { 192, 168, 1, 125 };
- static unsigned char macaddr[] = { 0x00, 0x11, 0x22, 0x44, 0x00, 0x25 };
-
- EtherEncLib eElib(80);
-
- const PROGMEM char resp200Txt[] = {"HTTP/1.0 200 OK\n\rContent-Type: text/html\n\rPragma: no-cache\n\r\n\r"};
-
- //sensor start
-
- int DustSensePin = 13;
- unsigned long duration;
- unsigned long starttime;
- unsigned long sampletime_ms = 30000;//sample 30s ;
- unsigned long lowpulseoccupancy = 0;
- float ratio = 0;
- float concentration = 0;
-
-
- void setup()
- {
- #if (ESP8266)
- Serial.begin(115200);
- pinMode(5,OUTPUT); //--- ? -- SS pin must be output # by Renato Aloi
- #else
- Serial.begin(9600);
- pinMode(8,OUTPUT); //--- ? -- SS pin must be output # by Renato Aloi
- #endif
-
- eElib.begin(ipaddr,macaddr);
- Serial.println(F("------ program start -----------"));
- //Serial.println(F("NO SDCARD version")); // by Renato Aloi
-
- pinMode(DustSensePin,INPUT);
- starttime = millis();//get the current time;
- }
-
- void loop() {
-
- duration = pulseIn(DustSensePin, LOW);
- lowpulseoccupancy = lowpulseoccupancy+duration;
-
- if ((millis()-starttime) > sampletime_ms)//if the sample time == 30s
- {
- ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100
-
- //float exponential power - DOESN"T BUILD
- //concentration = 1.1*powf(ratio,3)-3.8*powf(ratio,2)+520*ratio+0.62; // using spec sheet curve
-
- //leaner exponential power
- concentration = 1.1*ipow(ratio,3)-3.8*ipow(ratio,2)+520*ratio+0.62; // using spec sheet curve
- //Serial.print(lowpulseoccupancy);
- //Serial.print(",");
- //Serial.print(ratio);
- //Serial.print(",");
- //Serial.println(concentration);
- //lowpulseoccupancy = 0;
- starttime = millis();
- Serial.println("DataGet");
- }
-
- if ( eElib.available() )
- {
- Serial.println(eElib.getParams());
- eElib.print((char *)&resp200Txt[0],strlen_P(&resp200Txt[0]));
- if (eElib.isIndexHtml)
- {
- eElib.print("<HTML><body><H1>Hello World!</H1>");
- //eElib.print("<form method=POST>");
- eElib.print("<br>");
- eElib.print((int)lowpulseoccupancy);
- eElib.print("<br>");
- eElib.print((int)ratio);
- eElib.print("<br>");
- eElib.print((int)concentration);
- eElib.print("<br>");
- //eElib.print("</form></body>");
- eElib.print("</body></HTML>");
-
- //Serial.print(lowpulseoccupancy);
- //Serial.print(",");
- //Serial.print(ratio);
- //Serial.print(",");
- //Serial.println(concentration);
- }
- /*
- else if (eElib.isPost)
- {
- eElib.print("<HTML><body><H1>POST Params: ");
- eElib.print(eElib.getParams());
- eElib.print("</H1></body>");
- eElib.print("</HTML>");
- }
- else if (eElib.isGet)
- {
- eElib.print("<HTML><body><H1>GET Params: ");
- eElib.print(eElib.getParams());
- eElib.print("</H1></body>");
- eElib.print("</HTML>");
- }*/
- eElib.close();
- }
- }
-
- int ipow(int base, int exp)
- {
- int result = 1;
- for (;;)
- {
- if (exp & 1)
- result *= base;
- exp >>= 1;
- if (!exp)
- break;
- base *= base;
- }
-
- return result;
- }
|