Uploading sensor data (voltage divider, MAX4172, INA219) over Ethernet to Thing Speak service. Uses old mbed revision that is compatible with NetServices library. I2C communication is made with I2CR library.

Dependencies:   C12832 I2CR INA219 NetServices mbed

Fork of NetServices_HelloWorld by Segundo Equipo

Revision:
6:ebbde59c5a1d
Parent:
5:1e77bdd1a639
Child:
7:1da0a084cd69
--- a/main.cpp	Wed Dec 15 18:03:19 2010 +0000
+++ b/main.cpp	Fri Nov 20 08:28:11 2015 +0000
@@ -1,96 +1,59 @@
 #include "mbed.h"
-#include "EthernetNetIf.h"
-#include "HTTPClient.h"
-#include "NTPClient.h"
-#include "HTTPServer.h"
-#include "RPCFunction.h"
+#include "iostream"
+#include "ThingSpeak.h"
+#include "Sensor.h"
+#include "C12832.h"
+#include "INA219.h"
 
-#define HOSTNAME "mbedSE"
 
-EthernetNetIf eth(HOSTNAME);
-HTTPClient http;
-NTPClient ntp;
-HTTPServer svr;
 
-DigitalOut led1(LED1, "led1");
-DigitalOut led2(LED2, "led2");
-DigitalOut led3(LED3, "led3");
-DigitalOut led4(LED4, "led4");
+    ThingSpeak ts("074MPWFODR7JHD1K", 6); 
+    C12832 lcd(p5, p7, p6, p8, p11);
+    Sensor current(p19,4);
+    Sensor voltage(p20,24);
+   
 
-void DoEcho(char* input, char* output);
-RPCFunction Echo(&DoEcho, "echo");
-
-void DoEcho(char* input, char* output) {
-    printf("%s\n", input);
-    strcpy(output, input);
-}
 
 int main() {
-
-    printf("\n\n/* Segundo Equipo NetServices library demonstration */\n");
-    printf("Try starting the program with the network disconnected and then connect after a few timeouts reported\n\n");
-    EthernetErr ethErr;
-    int count = 0;
-    do {
-        printf("Setting up %d...\n", ++count);
-        ethErr = eth.setup();
-        if (ethErr) printf("Timeout\n", ethErr);
-    } while (ethErr != ETH_OK);
-
-    printf("Connected OK\n");
-    const char* hwAddr = eth.getHwAddr();
-    printf("HW address : %02x:%02x:%02x:%02x:%02x:%02x\n",
-           hwAddr[0], hwAddr[1], hwAddr[2],
-           hwAddr[3], hwAddr[4], hwAddr[5]);
-
-    IpAddr ethIp = eth.getIp();
-    printf("IP address : %d.%d.%d.%d\n", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
-    printf("Check router DHCP table for name : %s\n", eth.getHostname());
-
-    printf("\nHTTPClient get...\n");
-    HTTPText txt;
-    HTTPResult r = http.get("http://mbed.org/media/uploads/donatien/hello.txt", &txt);
-    if (r==HTTP_OK) {
-        printf("Result ok : %s\n", txt.gets());
-    } else {
-        printf("Error %d\n", r);
-    }
-
-    time_t ctTime;
-    ctTime = time(NULL);
-    printf("\nCurrent time is (UTC): %d %s\n", ctTime, ctime(&ctTime));
-    printf("NTP setTime...\n");
-    Host server(IpAddr(), 123, "pool.ntp.org");
-    printf("Result : %d\n", ntp.setTime(server));
-
-    ctTime = time(NULL);
-    printf("\nTime is now (UTC): %d %s\n", ctTime, ctime(&ctTime));
-
-    printf("NTP setTime to a deliberately incorrect server...\n");
-    server.setName("www.google.com");
-    printf("Result : %d\n", ntp.setTime(server));
-
-    ctTime = time(NULL);
-    printf("\nTime should still be correct (UTC): %d %s\n", ctTime, ctime(&ctTime));
+    INA219 ina219;
+    float U, I, ina[3];
+    int i;
+    
+    lcd.cls();
+    lcd.locate(0,3);    
+    ts.connect();
+    lcd.printf("Ethernet Connected ! \n");
+    ts.getIP();
+    
+    wait(1);
     
-    char ip[16];
-    sprintf(ip, "%d.%d.%d.%d", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
-    
-#define PORT 80
-    svr.addHandler<RPCHandler>("/rpc");
-    svr.bind(PORT);
-    printf("Server listening (port %d)\n", PORT);
-    printf("- LED1 should flash\n");
-    printf("- type into browser to test url decode : %s/rpc/echo/run \"quoted string with <>\" or http://192.168.1.103/rpc/echo/run%%20%%22quoted%%20string%%20with%%20%%3C%%3E%%22\n", ip);
-
-    Timer tm;
-    tm.start();
-
-    while (true) {
-        Net::poll();
-        if (tm.read() > 0.5) {
-            led1 = !led1;
-            tm.start();
-        }
+    while(1){
+           
+        voltage.read();
+        current.read();           
+        U = voltage.calc();       
+        I = current.calc();
+        ina[0] = ina219.readRawReg(0x04); //* Current *//
+        ina[1] = ina219.readRawReg(0x02); //* Bus Voltage *//
+        ina[2] = ina219.readRawReg(0x03); //* Power *// 
+        
+        lcd.cls();
+        lcd.locate(0,3);
+        lcd.printf("V = %.2f V \n",U);
+        lcd.printf("I = %.2f A \n",I);
+        lcd.printf("P = %.2f W \n", U*I);
+        lcd.locate(0,14);        
+        lcd.printf("V = %.2f V \n",ina[1]);
+        lcd.printf("I = %.2f A \n",ina[0]);
+        lcd.printf("P = %.2f W \n",ina[2]);
+        
+        i = 1;
+        ts.setField(U, i++);
+        ts.setField(I, i++); 
+        for(int j = 0 ; j<= 3; j++)
+            ts.setField(ina[j], i++);
+            
+        ts.putUp();
+        wait(15);                    
     }
 }
\ No newline at end of file