Dust Sesnsor PMS5003
Dependencies: NetServices ThingSpeakEthernet mbed
Revision 9:07f9279c30f7, committed 2017-06-05
- Comitter:
- mpuric
- Date:
- Mon Jun 05 08:12:57 2017 +0000
- Parent:
- 8:9b35ac104ab7
- Child:
- 10:5ff1bf492439
- Commit message:
- Init commit
Changed in this revision
--- a/C12832.lib Sun Nov 29 14:26:32 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://developer.mbed.org/users/chris/code/C12832/#7de323fa46fe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DustSenzor.lib Mon Jun 05 08:12:57 2017 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/mpuric/code/DustSenzor/#fd42a3f8c7eb
--- a/I2CR.lib Sun Nov 29 14:26:32 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/ShockSoc/code/I2CR/#375ecd0ed73d
--- a/INA219.lib Sun Nov 29 14:26:32 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://developer.mbed.org/users/tsoic/code/INA219/#6b9f92e99dd7
--- a/Sensor.cpp Sun Nov 29 14:26:32 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#include "Sensor.h"
-#include "mbed.h"
-
-Sensor::Sensor(PinName sensorPin, float Koef) : sensorInput(sensorPin), K(Koef) {
-
-}
-
-float Sensor::read() {
- readVal[0] = sensorInput;
- realVal = readVal[0]; //* Računanje srednje vrijednosti
- return realVal *= K;
-
-}
-
--- a/Sensor.h Sun Nov 29 14:26:32 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-#ifndef _SENSOR_H
-#define SENSOR_H
-#include "mbed.h"
-
-/** Simple class for sensor with linear otuput. Made for later upgrading, to avarage values from ADC
- * Example:
- * @code
- * #include "mbed.h"
- * #include "Sensor.h"
- * #include "INA219_reg.h"
- *
- * Sensor voltageDivider(p20,5);
- * float value;
- *
- * int main() {
- * value = voltageDivider.read();
- * }
- * @endcode
-
-*/
-class Sensor {
-
- public:
- /**
- * @param: PinName of ADC to which sensor is connected
- * float value for multiplifing with raw value from ADC to get real value
- */
- Sensor(PinName, float);
- /** Read real messured value
- * return: float real messured value
- *
- **/
- float read();
-
- private:
-
- AnalogIn sensorInput;
- float readVal[], realVal, K;
-};
-
-#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Mon Jun 05 08:12:57 2017 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/mpuric/code/TextLCD/#29f59aab1561
--- a/ThingSpeak.cpp Sun Nov 29 14:26:32 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-#include "mbed.h"
-#include "EthernetNetIf.h"
-#include "HTTPClient.h"
-#include "ThingSpeak.h"
-
-Serial pc(USBTX, USBRX);
-
-ThingSpeak::ThingSpeak(char* Key) : thingSpeakKey(Key) {
- thingSpeakUrl = "https://api.thingspeak.com/update";
- urlBuffer[0] = 0;
- fieldBuffer[0] = 0;
-}
-
-void ThingSpeak::connect() {
- pc.printf("Setting up Ethernet...\r\n");
- EthernetErr ethErr = eth.setup();
- if(ethErr){
- pc.printf("Error %d in ethernet setup.\r\n", ethErr);
- connect();
- }
- pc.printf("Ethernet setup OK\r\n");
-}
-/*
-void ThingSpeak::getIP() {
-
-}
-*/
-void ThingSpeak::setField(float field, int i) {
- char fieldi;
- char fieldShortBuff[8];
- sprintf(fieldShortBuff, "%f", field);
- sprintf(&fieldi, "%i", i);
- strncat(fieldBuffer, "&field", 6 );
- strncat(fieldBuffer, &fieldi , 1);
- strncat(fieldBuffer, "=", 1);
- strncat(fieldBuffer, fieldShortBuff , 4);
-}
-
-void ThingSpeak::putUp() {
- sprintf(urlBuffer, "%s?key=%s%s", thingSpeakUrl, thingSpeakKey, fieldBuffer);
- pc.printf("URL Buffer request: %s ", urlBuffer);
- res = http.get(urlBuffer, &resp);
- if (res == HTTP_OK)
- pc.printf(" Result :\"%s\"\r\n", resp.gets());
- else
- pc.printf(" Error %d\r\n", res);
- fieldBuffer[0] = 0;
-}
\ No newline at end of file
--- a/ThingSpeak.h Sun Nov 29 14:26:32 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-#ifndef THINGSPEAK_H
-#define THINGSPEAK_H
-#define HOSTNAME "mbed"
-#include "mbed.h"
-#include "EthernetNetIf.h"
-#include "HTTPClient.h"
-
-/** Class for sending data to ThingSpeak over ethernet,
- * Class is using old mbed library revision and EthernetNetIf from
- * https://developer.mbed.org/users/okini3939/notebook/TCPSocket_jp/
- * Example:
- * @code
- * #include "mbed.h"
- * #include "ThingSpeak.h"
- *
- * ThingSpeak thingSpeak("XXXXXXXXXXXXXXXX");
- *
- * int main() {
- * int i = 1;
- * flot value = 3.14;
- * thingSpeak.connect();
- * thingSpeak.setField(value,i)
- * thingSpeak.putUp();
- * }
- * @endcode
-*/
-class ThingSpeak
-{
-
-public:
- /**
- * @param: write api key provided from ThingSpeak chanell
- */
- ThingSpeak(char*);
- /**
- * Establishing ethernet connection until connected
- *
- */
- void connect();
- /**
- * Should be added
- */
- /**
- * void getIP();
- */
- /**
- * Put up data to thing speak when all fields are set
- */
- void putUp();
- /**
- *Setting values to the field, they should be set in order.
- * It's not required to set them all (example: you can set 1, 2, 3 or 1, 3)
- * @param field value to store on
- * @param i number of a field
- */
- void setField(float field, int i);
-private:
-
- char* thingSpeakUrl;
- char* thingSpeakKey;
- char urlBuffer[511];
- char fieldBuffer[255];
- EthernetNetIf eth;
- EthernetErr ethErr;
- HTTPClient http;
- IpAddr ethIp;
- HTTPText resp;
- HTTPResult res;
-};
-
-#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ThingSpeak/ThingSpeak.cpp Mon Jun 05 08:12:57 2017 +0000
@@ -0,0 +1,62 @@
+#include "mbed.h"
+#include "EthernetNetIf.h"
+#include "HTTPClient.h"
+#include "ThingSpeak.h"
+
+Serial pc(USBTX, USBRX);
+
+ThingSpeak::ThingSpeak(char* Key) : thingSpeakKey(Key) {
+ thingSpeakUrl = "https://api.thingspeak.com/update";
+ thingSpeakRead = "https://api.thingspeak.com/channels/";
+ urlBuffer[0] = 0;
+ fieldBuffer[0] = 0;
+}
+ float ThingSpeak::pull(long int readKey, int field) {
+ sprintf(urlBuffer, "%s%d/fields/%d/last", thingSpeakRead, readKey, field );
+ pc.printf("URL Buffer request: %s ", urlBuffer);
+ res = http.get(urlBuffer, &resp);
+ if (res == HTTP_OK){
+ pc.printf(" Result :\"%s\"\r\n,", resp.gets(), res);
+ float resp2 = atoi(resp.gets());
+ return resp2;
+ }
+ else {
+ pc.printf(" Error %d\r\n", res);
+ return false;
+ }
+}
+void ThingSpeak::connect() {
+ pc.printf("Setting up Ethernet...\r\n");
+ EthernetErr ethErr = eth.setup();
+ if(ethErr){
+ pc.printf("Error %d in ethernet setup.\r\n", ethErr);
+ connect();
+ }
+ pc.printf("Ethernet setup OK\r\n");
+}
+/*
+void ThingSpeak::getIP() {
+
+}
+*/
+void ThingSpeak::setField(float field, int i) {
+ char fieldi;
+ char fieldShortBuff[8];
+ sprintf(fieldShortBuff, "%f", field);
+ sprintf(&fieldi, "%i", i);
+ strncat(fieldBuffer, "&field", 6 );
+ strncat(fieldBuffer, &fieldi , 1);
+ strncat(fieldBuffer, "=", 1);
+ strncat(fieldBuffer, fieldShortBuff , 6);
+}
+
+void ThingSpeak::putUp() {
+ sprintf(urlBuffer, "%s?key=%s%s", thingSpeakUrl, thingSpeakKey, fieldBuffer);
+ pc.printf("URL Buffer request: %s ", urlBuffer);
+ res = http.get(urlBuffer, &resp);
+ if (res == HTTP_OK)
+ pc.printf(" Result :\"%s\"\r\n", resp.gets());
+ else
+ pc.printf(" Error %d\r\n", res);
+ fieldBuffer[0] = 0;
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ThingSpeak/ThingSpeak.h Mon Jun 05 08:12:57 2017 +0000
@@ -0,0 +1,75 @@
+#ifndef THINGSPEAK_H
+#define THINGSPEAK_H
+#define HOSTNAME "mbed"
+#include "mbed.h"
+#include "EthernetNetIf.h"
+#include "HTTPClient.h"
+
+/** Class for sending data to ThingSpeak over ethernet,
+ * Class is using old mbed library revision and EthernetNetIf from
+ * https://developer.mbed.org/users/okini3939/notebook/TCPSocket_jp/
+ * Example:
+ * @code
+ * #include "mbed.h"
+ * #include "ThingSpeak.h"
+ *
+ * ThingSpeak thingSpeak("XXXXXXXXXXXXXXXX");
+ *
+ * int main() {
+ * int i = 1;
+ * flot value = 3.14;
+ * thingSpeak.connect();
+ * thingSpeak.setField(value,i)
+ * thingSpeak.putUp();
+ * }
+ * @endcode
+*/
+class ThingSpeak
+{
+
+public:
+ /**
+ * @param: write api key provided from ThingSpeak chanell
+ */
+ ThingSpeak(char*);
+ /**
+ * Establishing ethernet connection until connected
+ *
+ */
+ void connect();
+
+ float pull(long int, int);
+
+ /**
+ * Should be added
+ */
+ /**
+ * void getIP();
+ */
+ /**
+ * Put up data to thing speak when all fields are set
+ */
+ void putUp();
+ /**
+ *Setting values to the field, they should be set in order.
+ * It's not required to set them all (example: you can set 1, 2, 3 or 1, 3)
+ * @param field value to store on
+ * @param i number of a field
+ */
+ void setField(float field, int i);
+private:
+
+ char* thingSpeakUrl;
+ char* thingSpeakRead;
+ char* thingSpeakKey;
+ char urlBuffer[1023];
+ char fieldBuffer[1023];
+ EthernetNetIf eth;
+ EthernetErr ethErr;
+ HTTPClient http;
+ IpAddr ethIp;
+ HTTPText resp;
+ HTTPResult res;
+};
+
+#endif
\ No newline at end of file
--- a/main.cpp Sun Nov 29 14:26:32 2015 +0000
+++ b/main.cpp Mon Jun 05 08:12:57 2017 +0000
@@ -1,53 +1,49 @@
#include "mbed.h"
-#include "iostream"
#include "ThingSpeak.h"
-#include "Sensor.h"
-#include "C12832.h"
-#include "INA219.h"
+#include "TextLCD.h"
+#include "DustSenzor.h"
+
- ThingSpeak ts("074MPWFODR7JHD1K");
- C12832 lcd(p5, p7, p6, p8, p11);
- Sensor current(p19,4.65);
- Sensor voltage(p20,16.23);
-
-
+ThingSpeak ts("FI2NZGSOB8LSR8YX");
+DustSenzor ds(p5, p9, p10);
int main() {
- INA219 ina219;
- float U, I, ina[3];
- int i;
-
- lcd.cls();
- lcd.locate(0,3);
- lcd.printf("Ethernet Connecting ! \n");
- ts.connect();
- lcd.printf("Ethernet Connected ! \n");
- wait(1);
+ ds.stop();
+ float *ptr;
- while(1){
-
- U = voltage.read();
- I = current.read();
- 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",ina[1]);
- lcd.printf("I = %.2f A \n",ina[0]);
- lcd.printf("P = %.2f W \n",ina[2]);
+ ts.connect();
+ wait(1);
+ while(1){
+ float res = ts.pull(282724, 1);
+ if(res == 1){
+ ds.start();
+ }
+ while( res == 1){
+ ptr = ds.read();
+ for( int i = 0; i < 6; i++) {
+ ts.setField(*(ptr + i), i+1);
+ }
+ ts.putUp();
+ wait(15);
+ res = ts.pull(282724, 1);
+ }
+ ds.stop();
+ }
+}
- i = 1;
- ts.setField(U, i++);
- ts.setField(I, i++);
- ts.setField(I*U, i++);
- for(int j = 0 ; j<= 2; j++)
- ts.setField(ina[j], i++);
-
- ts.putUp();
- wait(15);
- }
-}
\ No newline at end of file
+
+
+/* void DustSenzor::modeSet(){
+ if(debounce.read_ms() > 250 && provjera==false) {
+ set=1;
+ debounce.reset();
+ provjera=true;
+ }
+ else if(debounce.read_ms() > 250 && provjera==true){
+ set=0;
+ debounce.reset();
+ provjera=false;
+ }
+ } */
\ No newline at end of file