WIZwiki-W7500_ADC + Flot Exemple interactivity + THING SPEAK
Dependencies: SDFileSystem STATIC_COLORS WIZnetInterface mbed
test durée de fonctionnement :
172 458 secondes ===> environs 48h
Diff: main.cpp
- Revision:
- 2:86f52ca432b8
- Parent:
- 1:4853006cf179
- Child:
- 4:0e09a4c5bd22
--- a/main.cpp Sat Jul 09 20:03:39 2016 +0000 +++ b/main.cpp Sat Jul 09 23:19:27 2016 +0000 @@ -63,37 +63,105 @@ #define __IP_LOCAL__ IP #define __hebergement__ "http://olivier.fournet.free.fr/" #define __Time_between_page_refresh__ "1" +//#include <hebergement.h> int refresh = 1; // 1 second refresh -#define NB_SAMPLES 10 -unsigned long int Sample = 0; -float adc_samples[NB_SAMPLES];// = { 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.01,1.02,1.03,1.04 }; -float time_samples[NB_SAMPLES];// = { -0.1,2,3,4,5,6,7,8,9,10,11,12,13,14 }; +#define NB_SAMPLES_GPH 10 +unsigned long int Sample_gph = 0; +float adc_samples[NB_SAMPLES_GPH];// = { 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.01,1.02,1.03,1.04 }; +float time_samples[NB_SAMPLES_GPH];// = { -0.1,2,3,4,5,6,7,8,9,10,11,12,13,14 }; float x_min = 0.0, x_max = 0.0; float y_min = 0.0, y_max = 0.0; float Seconds = 0.0; -float meas = 0.0; +//float meas = 0.0; //------------ #define __Time_tic_in_Second__ 0.1 Ticker time_tic; +//------------ + +#define FREQUENCE_SECTEUR 50 +#define NB_SAMPLES_PAR_OSCILLATION 100 +#define NB_SAMPLES 5000 // FREQUENCE_SECTEUR * NB_SAMPLES_PAR_OSCILLATION +#define TIME_SAMPLES_us 200 // 1000000 / NB_SAMPLES +unsigned long int Samples = 0; + +float time_between_two_measurement_ADC = 0.0; +float meas, meas_sum, meas_moy, meas_min, meas_max; +float vdc, vdc_min, vdc_max; +float vac, pow2_vac, sum_pow2_vac, veff; + +Ticker time_measurement_ADC; + +void measurement_ADC(void) +{ + float meas_moy_t, veff_t; // valeurs temporaires + + meas = 3.3 * ain0.read(); // Converts and read the analog input value (value from 0.0 to 1.0) + //wait_us(10); + meas_sum += meas; + if(meas_min > meas) meas_min = meas; + if(meas_max < meas) meas_max = meas; + + vac = meas - 1.650; // 0V AC = 3,3V/2 + pow2_vac = vac * vac; // valeur VAC au carré + sum_pow2_vac += pow2_vac; // somme des valeurs AC au carré + + Samples++; + + if( Samples == NB_SAMPLES ) + { + // VDC + meas_moy_t = meas_sum; + meas_moy = meas_moy_t / (float)NB_SAMPLES; + // VAC + veff_t = sum_pow2_vac; + veff_t = veff_t / (float)NB_SAMPLES; + veff = sqrt(veff_t); + + Samples = 0; + meas_sum = 0.0; + vdc_min = meas_min, vdc_max = meas_max; + meas_min = 3.3 , meas_max = 0.0; + sum_pow2_vac = 0.0; + } +} + +void init_ADC_sampling(void) +{ + //------------- + meas_moy = 0.0; + Samples = 0; + meas_sum = 0.0; + meas_min = 3.3 , meas_max = 0.0; + sum_pow2_vac = 0.0; + //----------------- + // 50 Hz --> 20ms + // 100 samples par oscillations = 20 / 100 = 0.2ms = 200µs + // 100 samples * 50 oscillations = 5000 samples au total par secondes + // interval: 200 micro seconds chaques samples + time_measurement_ADC.attach_us(&measurement_ADC, TIME_SAMPLES_us); +} +//------------ + void add_one_tic() { int i; Seconds = Seconds + (float)__Time_tic_in_Second__; - // mesures ADC + // mesures ADC --> measurement_ADC(); + /* meas = ain0.read(); // Converts and read the analog input value (value from 0.0 to 1.0) - meas = meas * 3300.0; // Change the value to be in the 0 to 3300 range - + meas = meas * 3.3; // Change the value to be in the 0 to 3300 range + */ x_min = x_max = Seconds; - y_min = y_max = meas; + y_min = y_max = meas_moy; //meas; - for(i = 1 ; i < NB_SAMPLES ; i++) + for(i = 1 ; i < NB_SAMPLES_GPH ; i++) { time_samples[i-1] = time_samples[i]; adc_samples[i-1] = adc_samples[i]; @@ -103,14 +171,13 @@ if( adc_samples[i] > y_max ) y_max = adc_samples[i]; } - adc_samples[NB_SAMPLES-1] = meas; - time_samples[NB_SAMPLES-1] = Seconds; + adc_samples[NB_SAMPLES_GPH-1] = meas_moy; //meas; + time_samples[NB_SAMPLES_GPH-1] = Seconds; } //------------ Ticker ledTick; -//char str[] = "This is a sample string"; char *pch; char ext[5]; char ext_gif[] = "gif"; @@ -132,11 +199,12 @@ client.send(http_send,strlen(http_send)); } +#include "WIZwiki_W7500_Interactivity_css.h" +#include "WIZwiki_W7500_Interactivity_js.h" + void variables(void) { printf_send_client("<SCRIPT script language=\"javascript\" type=\"text/javascript\">\r\n"); - /*sprintf(httpHeader,"<SCRIPT script language=\"javascript\" type=\"text/javascript\">\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ a0_f = ain0.read()*3.3; sprintf(httpHeader,"A0 = %3.3f;\r\n", a0_f); @@ -155,8 +223,6 @@ client.send(httpHeader,strlen(httpHeader)); printf_send_client("</SCRIPT>\r\n"); - /*sprintf(httpHeader,"</SCRIPT>\r\n"); - client.send(httpHeader,strlen(httpHeader)); */ } void ETAT(void) @@ -165,45 +231,32 @@ // httpHeader printf_send_client("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n"); - /*sprintf(httpHeader,"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ // Début page Web printf_send_client("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n"); - /*sprintf(httpHeader,"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ // meta_refresh - //sprintf(httpHeader,"%s",str_meta_refresh); sprintf(httpHeader,"<meta http-equiv=\"refresh\" content=\"" __Time_between_page_refresh__ ";url=http://%s/\">\r\n", eth.getIPAddress() ); //sprintf(httpHeader,"<meta http-equiv=\"refresh\" content=\"1;url=http://%s/\">\r\n", eth.getIPAddress() ); //sprintf(httpHeader,"<meta http-equiv=\"refresh\" content=\"%u;url=http://%s/\">\r\n", refresh, eth.getIPAddress() ); client.send(httpHeader,strlen(httpHeader)); printf_send_client("<html><head>\r\n"); - /*sprintf(httpHeader,"<html><head>\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ // title printf_send_client("<title>WIZwiki-W7500 - Flot Examples: Interactivity</title>\r\n"); - /*sprintf(httpHeader,"<title>WIZwiki-W7500 - Flot Examples: Interactivity</title>\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ - // JavaScript Interactivity - sprintf(httpHeader,"<script language=\"javascript\" type=\"text/javascript\" src=\"" __hebergement__ "electronique/e/WIZwiki-W7500/js/WIZwiki-W7500_Interactivity_init.js\"></script>\r\n"); + // CSS + CSS(); + // JavaScript Interactivity + init_WIZwiki_W7500_Interactivity_JS(); + WIZwiki_W7500_Interactivity_JS(); + /*sprintf(httpHeader,"<script language=\"javascript\" type=\"text/javascript\" src=\"" __hebergement__ "electronique/e/WIZwiki-W7500/js/WIZwiki-W7500_Interactivity_init.js\"></script>\r\n"); client.send(httpHeader,strlen(httpHeader)); - - printf_send_client("<script language=\"javascript\" type=\"text/javascript\">init_WIZwiki_W7500_Interactivity();</script>\r\n"); - /*sprintf(httpHeader,"<script language=\"javascript\" type=\"text/javascript\">init_WIZwiki_W7500_Interactivity();</script>\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ + */ + //printf_send_client("<script language=\"javascript\" type=\"text/javascript\">init_WIZwiki_W7500_Interactivity();</script>\r\n"); // Variables JavaScript printf_send_client("<script language=\"javascript\" type=\"text/javascript\">\r\n"); - /*sprintf(httpHeader,"<script language=\"javascript\" type=\"text/javascript\">\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ printf_send_client("var color_Y = \"#FF0000\";\r\n"); - /*sprintf(httpHeader,"var color_Y = \"#FF0000\";\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ - printf_send_client("var label_Y = \"Adc(mV)\";\r\n"); - /*sprintf(httpHeader,"var label_Y = \"Adc(mV)\";\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ + printf_send_client("var label_Y = \"Meas Moy (V)\";\r\n"); // sprintf(httpHeader, "var x_min = -0.5, x_max = 14.5, y_min = -0.5, y_max = 1.5;\r\n"); // TEST sprintf(httpHeader, "var x_min = %.1f, x_max = %.1f, y_min = %.1f, y_max = %.1f;\r\n", x_min, x_max, y_min, y_max); client.send(httpHeader,strlen(httpHeader)); @@ -211,81 +264,69 @@ // sprintf(httpHeader, "var array_value = [[-0.1,0.1],[2,0.2],[3,0.3],[4,0.4],[5,0.5],[6,0.6],[7,0.7],[8,0.8],[9,0.9],[10,1],[11,1.01],[12,1.02],[13,1.03],[14,1.04]];\r\n"); // TEST // client.send(httpHeader,strlen(httpHeader)); // TEST - if(Sample > NB_SAMPLES) + if(Sample_gph > NB_SAMPLES_GPH) { printf_send_client("var array_value = ["); - /*sprintf(httpHeader,"var array_value = ["); - client.send(httpHeader,strlen(httpHeader));*/ - for(i = 0 ; i < NB_SAMPLES ; i++) + + for(i = 0 ; i < NB_SAMPLES_GPH ; i++) { - if(i < NB_SAMPLES) sprintf(httpHeader, "[%.1f,%.1f],", time_samples[i], adc_samples[i]); + if(i < NB_SAMPLES_GPH-1) sprintf(httpHeader, "[%.1f,%.1f],", time_samples[i], adc_samples[i]); else sprintf(httpHeader, "[%.1f,%.1f]", time_samples[i], adc_samples[i]); client.send(httpHeader,strlen(httpHeader)); } printf_send_client("];\r\n"); - /*sprintf(httpHeader,"];\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ } - Sample++; + Sample_gph++; printf_send_client("</script>\r\n"); - /*sprintf(httpHeader,"</script>\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ // <SCRIPT> variables(); // <FIN SCRIPT> // Fin Variable JavaScript printf_send_client("</head><body><center>\r\n"); - /*sprintf(httpHeader,"</head><body><center>\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ sprintf(httpHeader,"<h2>WIZwiki-W7500 - mBED</h2> ( Compiled at : %s and %s )<p>\r\n", __DATE__ , __TIME__); - //sprintf(httpHeader,"<h2>WIZwiki-W7500 - mBED</h2><p>\r\n"); client.send(httpHeader,strlen(httpHeader)); - + printf_send_client("<p>(<a href=\"http://www.flotcharts.org/flot/examples/interacting/index.html\">Flot Examples: Interactivity</a>)<p>\r\n"); - /*sprintf(httpHeader,"<p>(<a href=\"http://www.flotcharts.org/flot/examples/interacting/index.html\">Flot Examples: Interactivity</a>)<p>\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ printf_send_client("ETAT :<p>\r\n"); - /*sprintf(httpHeader,"ETAT :<p>\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ sprintf(httpHeader,"IP: %s, MASK: %s, GW: %s<p>\r\n", eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); client.send(httpHeader,strlen(httpHeader)); - //sprintf(httpHeader,"˜A0 :<script>document.write(A0);</script>V<br>\r\n"); - sprintf(httpHeader,"˜A0 : %3.3fV<br>\r\n", a0_f); + sprintf(httpHeader,"˜A0 : %3.3fV , \r\n", a0_f); client.send(httpHeader,strlen(httpHeader)); - //sprintf(httpHeader,"˜A1 :<script>document.write(A1);</script>V<br>\r\n"); - sprintf(httpHeader,"˜A1 : %3.3fV<br>\r\n", a1_f); + sprintf(httpHeader,"˜A1 : %3.3fV , \r\n", a1_f); client.send(httpHeader,strlen(httpHeader)); - //sprintf(httpHeader,"˜A2 :<script>document.write(A2);</script>V<br>\r\n"); - sprintf(httpHeader,"˜A2 : %3.3fV<br>\r\n", a2_f); + sprintf(httpHeader,"˜A2 : %3.3fV , \r\n", a2_f); client.send(httpHeader,strlen(httpHeader)); - //sprintf(httpHeader,"˜A3 :<script>document.write(A3);</script>V<p>\r\n"); - sprintf(httpHeader,"˜A3 : %3.3fV<br>\r\n", a3_f); - client.send(httpHeader,strlen(httpHeader)); - - sprintf(httpHeader, "Time : %.1f Seconds - Sample : %u<p>\r\n", Seconds, Sample);// diplays the human readable Seconds + sprintf(httpHeader,"˜A3 : %3.3fV<p>\r\n", a3_f); client.send(httpHeader,strlen(httpHeader)); - printf_send_client("<p><script language=\"javascript\" type=\"text/javascript\">WIZwiki_W7500_Interactivity();</script><p>\r\n"); - /*sprintf(httpHeader,"<p><script language=\"javascript\" type=\"text/javascript\">WIZwiki_W7500_Interactivity();</script><p>\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ + sprintf(httpHeader, "ADC (A0) :<p>DC : %.3fVmoy ( sum : %.3f - Samples : %u )<br>\r\n", meas_moy, meas_sum, Samples); + client.send(httpHeader,strlen(httpHeader)); + + sprintf(httpHeader, "DC (0 à 3,3V) : %.3fVmin, %.3fVmax , Vdiff : %.0fmV<br>\r\n", vdc_min, vdc_max, 1000.0*(vdc_max - vdc_min)); + client.send(httpHeader,strlen(httpHeader)); + + sprintf(httpHeader, "AC (-1,65V à 1,65V) : %.3fVeff<p>\r\n", veff); + client.send(httpHeader,strlen(httpHeader)); - printf_send_client("<p><a href=\"..\">Root</a>\r\n"); - /*sprintf(httpHeader,"<p><a href=\"..\">Root</a>\r\n"); - client.send(httpHeader,strlen(httpHeader));*/ + sprintf(httpHeader, "Time : %.1f Seconds - Sample Graphique : %u<p>\r\n", Seconds, Sample_gph);// diplays the human readable Seconds + client.send(httpHeader,strlen(httpHeader)); - printf_send_client("</center></body></html>\r\n"); - /*sprintf(httpHeader,"</center></body></html>\r\n"); - client.send(httpHeader,strlen(httpHeader)); */ + WIZwiki_W7500_Interactivity_div(); + //printf_send_client("<p><script language=\"javascript\" type=\"text/javascript\">WIZwiki_W7500_Interactivity();</script><p>\r\n"); + + printf_send_client("<p><p><a href=\"..\">Root</a>\r\n"); + + printf_send_client("</center></body></html>\r\n"); } //-------------------------------------------- @@ -295,7 +336,10 @@ // initialisation des variables int i; - for(i = 0 ; i < NB_SAMPLES ; i++) + init_ADC_sampling(); + //----------------- + + for(i = 0 ; i < NB_SAMPLES_GPH ; i++) { time_samples[i] = 0; adc_samples[i] = 0.0;