Michiel Berckvens / Mbed 2 deprecated ProjectHTTP

Dependencies:   DS1307 TextLCD mbed

Committer:
Michielber
Date:
Thu Dec 04 10:43:33 2014 +0000
Revision:
1:691e8c893065
Parent:
0:f615d151a72c
Child:
2:6330f557c82e
Update 4/12/2014

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Michielber 0:f615d151a72c 1 #include "mbed.h"
Michielber 0:f615d151a72c 2 #include "TextLCD.h"
Michielber 0:f615d151a72c 3 #include "ds1307.h"
Michielber 0:f615d151a72c 4 #include "EthernetNetIf.h"
Michielber 0:f615d151a72c 5 //#include "HTTPClient.h"
Michielber 0:f615d151a72c 6 //#include "NTPClient.h"
Michielber 0:f615d151a72c 7 #include "HTTPServer.h"
Michielber 0:f615d151a72c 8 #include "RPCFunction.h"
Michielber 0:f615d151a72c 9
Michielber 0:f615d151a72c 10 TextLCD lcd(p21, p22, p23, p24, p27, p28); // rs, e, d4-d7
Michielber 0:f615d151a72c 11 AnalogIn LM35_1(p19); // Analoge ingang voor LM35 toewijzen op welke pin.
Michielber 0:f615d151a72c 12 AnalogIn LM35_2(p20); // Analoge ingang voor LM35 toewijzen op welke pin.
Michielber 0:f615d151a72c 13 Serial pc(USBTX, USBRX); //Zorgen dat we een seriele communicatie tussen computer en MBED kunnen opzetten.
Michielber 0:f615d151a72c 14 DigitalOut LEDJE1 (p6); // Uitgang voor LED op breadboard.
Michielber 0:f615d151a72c 15 DigitalOut LEDJE2 (p7); // Uitgang voor LED op breadboard.
Michielber 0:f615d151a72c 16 InterruptIn knopHOGER(p8); // Aanmaken van ingang voor drukknopje voor hogere temp
Michielber 0:f615d151a72c 17 InterruptIn knopLAGER(p30); // Aanmaken van ingang voor drukknopje voor lagere temp
Michielber 0:f615d151a72c 18 DigitalOut myled1(LED1); // Aanmaken van LED van MBED te gerbuiken voor hogere temp
Michielber 0:f615d151a72c 19 DigitalOut myled2(LED2); // Aanmaken van LED van MBED te gerbuiken voor lagere temp
Michielber 0:f615d151a72c 20 InterruptIn aanuitknop(p5);
Michielber 0:f615d151a72c 21 DigitalOut relais(p29);
Michielber 0:f615d151a72c 22 PwmOut motorout(p25);
Michielber 0:f615d151a72c 23 DS1307 my1307(p9,p10); // start DS1307 class and give it pins for connections of the DS1307 device
Michielber 0:f615d151a72c 24
Michielber 1:691e8c893065 25 LocalFileSystem fs("webfs"); //Instellingen voor HTTP
Michielber 1:691e8c893065 26 LocalFileSystem local("local"); //Instellingen voor HTTP, /local/Project.htm gaan we gebruiken
Michielber 0:f615d151a72c 27
Michielber 0:f615d151a72c 28 int c=0;
Michielber 0:f615d151a72c 29 float waarde = 25;
Michielber 0:f615d151a72c 30 float temp2;
Michielber 0:f615d151a72c 31 bool aanuit = 0;
Michielber 0:f615d151a72c 32 float temp1; // variable aanmaken voor temp van 1ste LM35 in te steken. // variable aanmaken voor temp van 2de LM35 in te steken.
Michielber 0:f615d151a72c 33 float afronden;
Michielber 0:f615d151a72c 34 float graden;
Michielber 0:f615d151a72c 35 float counter;
Michielber 0:f615d151a72c 36 float flaginstellen = 0;
Michielber 0:f615d151a72c 37 int sec = 0;
Michielber 0:f615d151a72c 38 int minuten = 0;
Michielber 0:f615d151a72c 39 int hours = 0;
Michielber 0:f615d151a72c 40 int day = 0;
Michielber 0:f615d151a72c 41 int date = 0;
Michielber 0:f615d151a72c 42 int month = 0;
Michielber 0:f615d151a72c 43 int year = 0;
Michielber 0:f615d151a72c 44 int junk = 0;
Michielber 0:f615d151a72c 45
Michielber 0:f615d151a72c 46 DigitalOut led1(LED1, "led1");
Michielber 0:f615d151a72c 47
Michielber 0:f615d151a72c 48
Michielber 1:691e8c893065 49 /* HTTP Instellingen */
Michielber 0:f615d151a72c 50
Michielber 0:f615d151a72c 51 EthernetNetIf eth(
Michielber 1:691e8c893065 52 IpAddr(192,168,1,2), //Ip adress toedienen
Michielber 1:691e8c893065 53 IpAddr(255,255,255,0), //Subnetmasker
Michielber 0:f615d151a72c 54 IpAddr(192,168,1,1),
Michielber 0:f615d151a72c 55 IpAddr(192,168,1,1));
Michielber 0:f615d151a72c 56 //HTTPClient http;
Michielber 0:f615d151a72c 57 //NTPClient ntp;
Michielber 0:f615d151a72c 58 HTTPServer svr;
Michielber 0:f615d151a72c 59
Michielber 0:f615d151a72c 60
Michielber 0:f615d151a72c 61 /* END HTTP */
Michielber 0:f615d151a72c 62
Michielber 1:691e8c893065 63 void Hoger(void) { //Interrupt voor de ingestelde waarde hoger te zetten
Michielber 1:691e8c893065 64 flaginstellen = 1; //Vlag voor instellen op 1 zetten
Michielber 1:691e8c893065 65 waarde += 0.5; //Waarde hoger zetten
Michielber 1:691e8c893065 66 counter = 0; //Insteltijd resetten
Michielber 0:f615d151a72c 67 wait(0.5);
Michielber 0:f615d151a72c 68
Michielber 0:f615d151a72c 69 }
Michielber 0:f615d151a72c 70
Michielber 1:691e8c893065 71 void Lager(void) { //Interrupt voor de ingestelde waarde hoger te zetten
Michielber 1:691e8c893065 72 flaginstellen = 1; //Vlag voor instellen op 1 zetten
Michielber 1:691e8c893065 73 waarde -= 0.5; //Waarde lager zetten
Michielber 1:691e8c893065 74 counter = 0; //Insteltijd resetten
Michielber 0:f615d151a72c 75 wait(0.5);
Michielber 0:f615d151a72c 76 }
Michielber 0:f615d151a72c 77
Michielber 0:f615d151a72c 78 void AanUit(void) {
Michielber 0:f615d151a72c 79
Michielber 0:f615d151a72c 80 if(aanuit == 0) {
Michielber 0:f615d151a72c 81
Michielber 0:f615d151a72c 82 aanuit = 1;
Michielber 0:f615d151a72c 83 lcd.cls();
Michielber 0:f615d151a72c 84 lcd.printf("Opstarten...");
Michielber 1:691e8c893065 85 motorout = (20 * 0.000511 + 0.026); //Motor op 20 graden zetten
Michielber 0:f615d151a72c 86 temp1 = (LM35_1 * 3.22*100); // omvormen van analoge waarde naar graden celcius
Michielber 0:f615d151a72c 87 afronden = 2*temp1;
Michielber 0:f615d151a72c 88 afronden = rint(afronden);
Michielber 0:f615d151a72c 89 waarde = afronden/2;
Michielber 0:f615d151a72c 90 wait(2);
Michielber 0:f615d151a72c 91 }else {
Michielber 0:f615d151a72c 92
Michielber 0:f615d151a72c 93 aanuit = 0;
Michielber 0:f615d151a72c 94 lcd.cls();
Michielber 0:f615d151a72c 95 lcd.printf("Uitschakelen...");
Michielber 1:691e8c893065 96 motorout = (20 * 0.000511 + 0.026); //Motor terug op 20 graden zetten
Michielber 0:f615d151a72c 97 wait(2);
Michielber 0:f615d151a72c 98 }
Michielber 0:f615d151a72c 99
Michielber 0:f615d151a72c 100 }
Michielber 0:f615d151a72c 101
Michielber 0:f615d151a72c 102 void temperatuurinlezen(void) {
Michielber 0:f615d151a72c 103 temp1 = (LM35_1 * 3.22*100); // omvormen van analoge waarde naar graden celcius
Michielber 0:f615d151a72c 104 afronden = 2*temp1;
Michielber 0:f615d151a72c 105 afronden = rint(afronden);
Michielber 1:691e8c893065 106 temp1 = afronden/2; //Temperatuur afronden op 0.5graden
Michielber 0:f615d151a72c 107
Michielber 0:f615d151a72c 108 temp2 = (LM35_2 * 3.22*100); // omvormen van analoge waarde naar grade celcius
Michielber 0:f615d151a72c 109 afronden = 2*temp2;
Michielber 1:691e8c893065 110 afronden = rint(afronden);
Michielber 1:691e8c893065 111 temp2 = afronden/2; //Temperatuur afronden op 0.5graden
Michielber 0:f615d151a72c 112 }
Michielber 0:f615d151a72c 113
Michielber 0:f615d151a72c 114 void temperatuuruitsturen(void) {
Michielber 0:f615d151a72c 115 if(temp1 > (waarde + 1)) { //Als de waarde van de eerste LM35 hoger is als de ingestelde waarde
Michielber 0:f615d151a72c 116 LEDJE1 = 1; // Lamp1 op breadboard aan.
Michielber 0:f615d151a72c 117 LEDJE2 = 0; // Lamp2 op breadboard uit.
Michielber 0:f615d151a72c 118 lcd.cls();
Michielber 1:691e8c893065 119 lcd.printf("BIN: %5.2f C",temp1); //Temperatuur binnen op LCD
Michielber 0:f615d151a72c 120 lcd.locate(0,1);
Michielber 1:691e8c893065 121 lcd.printf("BUI: %5.2f C",temp2); //Temperatuur buiten op LCD
Michielber 0:f615d151a72c 122 wait(0.3);
Michielber 0:f615d151a72c 123 relais = 0;
Michielber 0:f615d151a72c 124 // Een halve seconden wachten, zodat we onze temperatuur kunnen aflezen op het scherm.
Michielber 0:f615d151a72c 125 } else if(temp1 <= (waarde - 1) ) { //Als de waarde van de eerste LM35 lager is als de ingestelde waarde
Michielber 0:f615d151a72c 126 LEDJE1 = 0; // Lamp1 op breadboard uit.
Michielber 0:f615d151a72c 127 LEDJE2 = 1; // Lamp2 op breadboard aan.
Michielber 0:f615d151a72c 128 lcd.cls();
Michielber 0:f615d151a72c 129 lcd.printf("BIN: %5.2f C",temp1);
Michielber 0:f615d151a72c 130 lcd.locate(0,1);
Michielber 0:f615d151a72c 131 lcd.printf("BUI: %5.2f C",temp2);
Michielber 0:f615d151a72c 132 wait(0.3); // Een halve seconden wachten, zodat we onze temperatuur kunnen aflezen op het scherm.
Michielber 0:f615d151a72c 133 relais = 1;
Michielber 0:f615d151a72c 134 }
Michielber 0:f615d151a72c 135
Michielber 0:f615d151a72c 136 }
Michielber 0:f615d151a72c 137
Michielber 0:f615d151a72c 138 void motor(float graden) {
Michielber 0:f615d151a72c 139
Michielber 0:f615d151a72c 140 if ( (graden > 20) && (graden < 160) ) {
Michielber 0:f615d151a72c 141 motorout = (graden * 0.000511 + 0.026);
Michielber 0:f615d151a72c 142 }
Michielber 0:f615d151a72c 143 else if (graden >= 160){
Michielber 1:691e8c893065 144 motorout = (160 * 0.000511 + 0.026); //Beveiliging => niet boven 160graden
Michielber 0:f615d151a72c 145 }
Michielber 0:f615d151a72c 146 else {
Michielber 1:691e8c893065 147 motorout = (20 * 0.000511 + 0.026); //Beveiliging => niet onder 20 graden
Michielber 0:f615d151a72c 148 }
Michielber 0:f615d151a72c 149 return;
Michielber 0:f615d151a72c 150 }
Michielber 0:f615d151a72c 151
Michielber 0:f615d151a72c 152 void initHTTP(void) {
Michielber 0:f615d151a72c 153 printf("Start initialisatie HTTP\r\n");
Michielber 0:f615d151a72c 154 EthernetErr ethErr;
Michielber 0:f615d151a72c 155 int count = 0;
Michielber 0:f615d151a72c 156 do {
Michielber 0:f615d151a72c 157 printf("Setting up %d...\n\r", ++count);
Michielber 0:f615d151a72c 158 ethErr = eth.setup();
Michielber 0:f615d151a72c 159 if (ethErr) printf("Timeout\n\r", ethErr);
Michielber 0:f615d151a72c 160 } while (ethErr != ETH_OK);
Michielber 0:f615d151a72c 161
Michielber 0:f615d151a72c 162 printf("Connected OK\n\r");
Michielber 0:f615d151a72c 163 const char* hwAddr = eth.getHwAddr();
Michielber 0:f615d151a72c 164
Michielber 0:f615d151a72c 165 IpAddr ethIp = eth.getIp();
Michielber 0:f615d151a72c 166 printf("IP address : %d.%d.%d.%d\n\r", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
Michielber 0:f615d151a72c 167
Michielber 0:f615d151a72c 168 //LocalFileSystem fs("webfs");
Michielber 0:f615d151a72c 169
Michielber 0:f615d151a72c 170 svr.addHandler<SimpleHandler>("/hello");
Michielber 0:f615d151a72c 171 svr.addHandler<FSHandler>("");
Michielber 0:f615d151a72c 172
Michielber 0:f615d151a72c 173 svr.bind(80);
Michielber 0:f615d151a72c 174 printf("Server listening\n\r");
Michielber 0:f615d151a72c 175
Michielber 0:f615d151a72c 176 }
Michielber 0:f615d151a72c 177
Michielber 0:f615d151a72c 178 void klokophalen() {
Michielber 0:f615d151a72c 179 my1307.gettime(&sec, &minuten, &hours, &day, &date, &month, &year);
Michielber 0:f615d151a72c 180
Michielber 0:f615d151a72c 181
Michielber 0:f615d151a72c 182 }
Michielber 0:f615d151a72c 183
Michielber 0:f615d151a72c 184 void klokuitsturen() {
Michielber 0:f615d151a72c 185 klokophalen();
Michielber 0:f615d151a72c 186 lcd.cls();
Michielber 0:f615d151a72c 187 lcd.locate(0,0);
Michielber 0:f615d151a72c 188 lcd.printf("%d:%d:%d",hours,minuten,sec);
Michielber 0:f615d151a72c 189 lcd.locate(0,1);
Michielber 0:f615d151a72c 190 lcd.printf("%d/%d/%d",date,month,year);
Michielber 0:f615d151a72c 191
Michielber 0:f615d151a72c 192 junk = 0x39; // just a junk value do read and write test to DS1307 ram
Michielber 0:f615d151a72c 193 my1307.write( 0x20, junk); // this should write the value of junk to register 0x20 (a ram location) in the ds1307.
Michielber 0:f615d151a72c 194 junk = 0; // clear junk to show that when the register is read from the correct value is obtained
Michielber 0:f615d151a72c 195 my1307.read( 0x20, &junk); // this should read register 0x20
Michielber 0:f615d151a72c 196 }
Michielber 0:f615d151a72c 197
Michielber 0:f615d151a72c 198 int main(void)
Michielber 0:f615d151a72c 199 {
Michielber 0:f615d151a72c 200
Michielber 0:f615d151a72c 201
Michielber 0:f615d151a72c 202 /* START INITIALISATIE */
Michielber 0:f615d151a72c 203 knopHOGER.rise(&Hoger);
Michielber 0:f615d151a72c 204 knopLAGER.rise(&Lager);
Michielber 0:f615d151a72c 205 aanuitknop.rise(&AanUit);
Michielber 0:f615d151a72c 206 initHTTP();
Michielber 0:f615d151a72c 207 init = 1;
Michielber 0:f615d151a72c 208 Timer tm;
Michielber 0:f615d151a72c 209 tm.start();
Michielber 0:f615d151a72c 210
Michielber 0:f615d151a72c 211 /* STOP INITIALISATIE */
Michielber 0:f615d151a72c 212
Michielber 0:f615d151a72c 213 while(true) {
Michielber 0:f615d151a72c 214
Michielber 0:f615d151a72c 215
Michielber 0:f615d151a72c 216 if( (aanuit == 1) && (flaginstellen == 0) ) { //open if
Michielber 0:f615d151a72c 217
Michielber 0:f615d151a72c 218 temperatuurinlezen();
Michielber 0:f615d151a72c 219 temperatuuruitsturen();
Michielber 0:f615d151a72c 220 klokophalen();
Michielber 0:f615d151a72c 221
Michielber 0:f615d151a72c 222 /* START HTTP */
Michielber 0:f615d151a72c 223 printf("Net poll start\r\n");
Michielber 0:f615d151a72c 224 Net::poll();
Michielber 0:f615d151a72c 225 if (tm.read() > 0.5) {
Michielber 0:f615d151a72c 226 led1 = !led1;
Michielber 0:f615d151a72c 227 tm.start();
Michielber 0:f615d151a72c 228 c++;
Michielber 0:f615d151a72c 229 }
Michielber 0:f615d151a72c 230 printf("Net poll gedaan\r\n");
Michielber 0:f615d151a72c 231 if (c==1) {
Michielber 0:f615d151a72c 232 printf("Ik probeer nu de file te openen..\r\n");
Michielber 0:f615d151a72c 233 //FILE *fp = fopen("/webfs/mydata.htm","w");
Michielber 0:f615d151a72c 234 FILE *fp = fopen("/local/Project.htm", "w"); // Open "Test.htm" on the local file system for writing
Michielber 0:f615d151a72c 235 printf("File geopend!\r\n");
Michielber 0:f615d151a72c 236 fprintf(fp,"<HTML>\r\n");
Michielber 0:f615d151a72c 237 fprintf(fp,"<HEAD>\r\n");
Michielber 0:f615d151a72c 238 fprintf(fp,"</HEAD>\r\n");
Michielber 0:f615d151a72c 239 fprintf(fp,"<BODY>\r\n");
Michielber 0:f615d151a72c 240 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 241 printf("Variabelen printen\r\n");
Michielber 0:f615d151a72c 242 fprintf(fp,"De binnen temperatuur is %f\r\n",temp1);
Michielber 0:f615d151a72c 243 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 244 fprintf(fp,"De buiten temperatuur is %f\r\n",temp2);
Michielber 0:f615d151a72c 245 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 246 fprintf(fp,"De tijd is: %d:%d:%d",hours,minuten,sec);
Michielber 0:f615d151a72c 247 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 248 fprintf(fp,"De datum is: %d/%d/%d",date,month,year);
Michielber 0:f615d151a72c 249 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 250 fprintf(fp,"</BODY>\r\n");
Michielber 0:f615d151a72c 251 fprintf(fp,"</HTML>\r\n");
Michielber 0:f615d151a72c 252 printf("Sessie stoppen \r\n");
Michielber 0:f615d151a72c 253 fclose(fp);
Michielber 0:f615d151a72c 254 printf("staat online\r\n");
Michielber 0:f615d151a72c 255 c=0;
Michielber 0:f615d151a72c 256 }
Michielber 0:f615d151a72c 257 /* EINDE HTTP */
Michielber 0:f615d151a72c 258
Michielber 0:f615d151a72c 259
Michielber 0:f615d151a72c 260
Michielber 0:f615d151a72c 261 /* Motor sturing hier */
Michielber 0:f615d151a72c 262 graden = waarde - temp1;
Michielber 0:f615d151a72c 263 graden = 20 + (graden*5); //5 Graden per Graad celsius. (Max 28 graden)
Michielber 0:f615d151a72c 264 motor(graden); //Motor aansturen
Michielber 0:f615d151a72c 265
Michielber 0:f615d151a72c 266 /* Stop motor sturing hier */
Michielber 0:f615d151a72c 267
Michielber 0:f615d151a72c 268 } //sluit if
Michielber 0:f615d151a72c 269 else if( (aanuit == 1) && (flaginstellen == 1) ) { //open else if
Michielber 0:f615d151a72c 270 /* Programmatie instellen */
Michielber 0:f615d151a72c 271 printf("Programma instelmodus aan\r\n");
Michielber 0:f615d151a72c 272 while (counter <= 3) {
Michielber 0:f615d151a72c 273 lcd.cls();
Michielber 0:f615d151a72c 274 lcd.printf("BIN: %5.2f C",waarde);
Michielber 0:f615d151a72c 275 lcd.locate(0,1);
Michielber 0:f615d151a72c 276 lcd.printf("BUI: %5.2f C",temp2);
Michielber 0:f615d151a72c 277 wait(0.8);
Michielber 0:f615d151a72c 278 lcd.cls();
Michielber 0:f615d151a72c 279 lcd.printf("");
Michielber 0:f615d151a72c 280 lcd.locate(0,1);
Michielber 0:f615d151a72c 281 lcd.printf("BUI: %5.2f C",temp2);
Michielber 0:f615d151a72c 282 wait(0.2);
Michielber 0:f615d151a72c 283 counter++;
Michielber 0:f615d151a72c 284 }
Michielber 0:f615d151a72c 285
Michielber 0:f615d151a72c 286
Michielber 0:f615d151a72c 287
Michielber 0:f615d151a72c 288 flaginstellen = 0; //Instellen stoppen
Michielber 0:f615d151a72c 289 }
Michielber 0:f615d151a72c 290 else { //open else
Michielber 0:f615d151a72c 291 lcd.cls();
Michielber 0:f615d151a72c 292 klokuitsturen();
Michielber 0:f615d151a72c 293 printf("Staat uit\r\n");
Michielber 0:f615d151a72c 294 } //sluit else
Michielber 0:f615d151a72c 295
Michielber 0:f615d151a72c 296 }
Michielber 0:f615d151a72c 297 }
Michielber 0:f615d151a72c 298