Test program for HP03SA pressure and altitude sensor and for LM77 temperature sensor. Both devices use and I2C interface.

Dependencies:   HP03SA LM77 mbed

Files at this revision

API Documentation at this revision

Comitter:
wim
Date:
Sat Jan 10 19:16:46 2015 +0000
Commit message:
Test program for HP03SA pressure and altitude sensor and for LM77 temperature sensor. The devices use an I2C interface.

Changed in this revision

HP03SA.lib Show annotated file Show diff for this revision Revisions of this file
LM77.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r ab21c5466a81 HP03SA.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HP03SA.lib	Sat Jan 10 19:16:46 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/wim/code/HP03SA/#61bbd81782de
diff -r 000000000000 -r ab21c5466a81 LM77.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LM77.lib	Sat Jan 10 19:16:46 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/wim/code/LM77/#8e812deb9f66
diff -r 000000000000 -r ab21c5466a81 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Jan 10 19:16:46 2015 +0000
@@ -0,0 +1,166 @@
+/* mbed HP03SA I2C Pressure and Temperature sensor Test
+ *      LM77 Temperature sensor Test
+ *
+ * Copyright (c) 2015 Wim Huiskamp
+ * Released under the MIT License: http://mbed.org/license/mit
+ *
+ * version 0.1 Initial Release
+ */
+#define PCF8593_TST            0
+#define LM77_TST               1
+#define HP03SA_TST             1
+
+#include "mbed.h"
+
+#if (HP03SA_TST == 1)
+#include "HP03SA.h"
+#endif
+
+#if (LM77_TST == 1)
+#include "LM77.h"
+#endif
+ 
+//Pin Defines for I2C Bus
+#define D_SDA                  p9
+#define D_SCL                  p10
+//#define D_SDA                  p28
+//#define D_SCL                  p27
+I2C i2c(D_SDA, D_SCL);
+
+//Pin Defines for XCLR
+#define D_XCLR                 p11  
+
+//Host PC Baudrate (Virtual Com Port on USB)
+#define D_BAUDRATE            9600
+//#define D_BAUDRATE            57600
+
+// mbed Interface Hardware definitions
+DigitalOut myled1(LED1);
+DigitalOut myled2(LED2);
+DigitalOut myled3(LED3);
+DigitalOut heartbeatLED(LED4);
+
+// Host PC Communication channels
+Serial pc(USBTX, USBRX); // tx, rx
+
+#if (HP03SA_TST == 1)
+// Generate the 32kHz master clock for HP03SA
+PwmOut mclk(p21);
+
+// Instantiate HP03SA
+HP03SA hp03sa(&i2c, D_XCLR); // I2C bus, XCLK Pin
+#endif
+
+#if (LM77_TST == 1)
+// Instantiate LM77
+LM77 lm77(&i2c, LM77_SA0); // I2C bus, XCLK Pin
+#endif
+
+int main() {
+  pc.baud(D_BAUDRATE);
+  pc.printf("\r\n\r\n");  
+  pc.printf("Hello world\r\n");
+
+#if (PCF8593_TST == 1)
+  char buffer[8];
+  char status;
+
+  //Init PCF8593 RTC
+  buffer[0] = 0x00; //control reg
+  buffer[1] = 0x00; //control reg value (32Khz osc)
+  status = i2c.write(0xA2, buffer, 2);
+
+  if (status == 0) {
+    pc.printf("RTC status = Ok\n\r");
+  }
+  else {
+    pc.printf("RTC status = Not Ok\n\r");      
+  }  
+#endif
+
+#if (LM77_TST == 1)
+  if (lm77.getStatus()) {
+    pc.printf("LM77 status = Ok\n\r");   
+
+    pc.printf("Critical Alert temperature from LM77 is %.1f [C]\r\n", lm77.getCritAlertTemp());     
+    pc.printf("Low Alert temperature from LM77 is %.1f [C]\r\n", lm77.getLowAlertTemp());     
+    pc.printf("High Alert temperature from LM77 is %.1f [C]\r\n", lm77.getHighAlertTemp());             
+    pc.printf("Alert Hysteresis from LM77 is %.1f [C]\r\n", lm77.getAlertHyst());  
+    wait(1.0);
+
+#if(0)
+#define CA          95.0f     
+#define LA           8.0f     
+#define HA          15.0f     
+#define HY           3.0f     
+    lm77.setCritAlertTemp(CA);     
+    lm77.setLowAlertTemp(LA);         
+    lm77.setHighAlertTemp(HA);
+    lm77.setAlertHyst(HY);             
+    pc.printf("Critical Alert temperature set at %.1f [C]. Read from LM77 is %.1f [°C]\r\n", CA, lm77.getCritAlertTemp());     
+    pc.printf("Low Alert temperature set at %.1f [C]. Read from LM77 is %.1f [°C]\r\n", LA, lm77.getLowAlertTemp());     
+    pc.printf("High Alert temperature set at %.1f [C]. Read from LM77 is %.1f [°C]\r\n", HA, lm77.getHighAlertTemp());             
+    pc.printf("Alert Hysteresis set at %.1f [C]. Read from LM77 is %.1f [°C]\r\n", HY, lm77.getAlertHyst());  
+#endif                      
+  }
+  else {
+    pc.printf("LM77 status = not Ok\n\r");            
+  } 
+#endif
+
+#if (HP03SA_TST == 1)
+  //Init MCLK
+  mclk.period_us(30);       //32768 KHz
+  mclk.pulsewidth_us(15);   //32768 KHz
+    
+  if (hp03sa.getStatus()) {
+    pc.printf("HP03S status = Ok\n\r");    
+  }
+  else {
+    pc.printf("HP03S status = not Ok\n\r");            
+  }
+  
+  // Take reading from sensor before setting calibration value!
+  hp03sa.sample();
+
+  // Set QNH pressure. The Altitude reading will be 0 for the set pressure.
+//    hp03sa.setPressure(10247);  // MSL pressure at time of testing 1024.7 hPa
+//                                // Results in getAltitude() = 6m because it matches local MSL pressure
+    
+  // Set QNH altitude. The Altitude reading will be the set value at current pressure.
+  hp03sa.setAltitude(6);          // About right where I live..
+#endif
+  
+  while(1) {
+#if (HP03SA_TST == 1)    
+    // Take reading from sensor            
+    hp03sa.sample();
+    
+    // Show Pressure    
+    pc.printf("Absolute atmospheric pressure is %.1f [hPa]\r\n", (float) hp03sa.getAbsPressure() / 10.0f);
+    pc.printf("Sealevel atmospheric pressure is %.1f [hPa]\r\n", (float) hp03sa.getSeaPressure(6) / 10.0f); // About right where I live..
+    
+    // Show Temperature
+//    pc.printf("Ambient temperature is %.1f [°C]\r\n", (float) hp03sa.getTemperatureInt() / 10.0f);       
+    pc.printf("Ambient temperature is %.1f [C]\r\n", hp03sa.getTemperature());       
+    pc.printf("Ambient temperature is %.1f [F]\r\n", hp03sa.celsiusToFahrenheit(hp03sa.getTemperature()) );       
+        
+    // Show Altitude
+    pc.printf("Altitude estimated at %d [m]\r\n", hp03sa.getAltitude());       
+
+    // Show Altitude Ft
+    pc.printf("Altitude estimated at %d [ft]\r\n", hp03sa.getAltitudeFt());       
+#endif
+
+#if (LM77_TST == 1)
+    // Show Temperature LM77
+//    pc.printf("Ambient temperature from LM77 is %.1f [°C]\r\n", (float) lm77.getTemperatureInt() / 10.0f);       
+    pc.printf("Ambient temperature from LM77 is %.1f [C]\r\n", lm77.getTemperature());     
+#endif
+
+    wait(1.0);
+    myled1 = 1;
+    wait(0.2);    
+    myled1 = 0;    
+  }
+}
diff -r 000000000000 -r ab21c5466a81 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Jan 10 19:16:46 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/4fc01daae5a5
\ No newline at end of file