This IOT research work is the working part of the program Change the Wi-Fi ssid and password and program STM32l475 board to see the result on the terminal (C# GUI)

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Files at this revision

API Documentation at this revision

Comitter:
saileshtimilsena
Date:
Tue Feb 23 20:03:58 2021 +0000
Parent:
36:2d0820b53217
Commit message:
Updated Version for the Research Work...; Change the Wi-Fi ssid and password and program STM32L475 board and see the result in GUI with graph

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Feb 19 16:16:56 2021 +0000
+++ b/main.cpp	Tue Feb 23 20:03:58 2021 +0000
@@ -20,24 +20,7 @@
 #include "mbed.h"
 #include "simple-mbed-cloud-client.h"
 #include "LittleFileSystem.h"
-
-#include "stdbool.h" //for stepper motor function
-
-#define STEPPER_PIN_1 PA_15  //ARD.D9-PWM PA15
-#define STEPPER_PIN_2 PA_2 //ARD.D10-PWM PA2
-#define STEPPER_PIN_3 PA_7 //ARD.D11-PWM PA7
-#define STEPPER_PIN_4 PA_6 //ARD.D12-PWM PA6
- 
-DigitalOut steeperOne(STEPPER_PIN_1);
-DigitalOut steeperTwo(STEPPER_PIN_2);
-DigitalOut steeperThree(STEPPER_PIN_3);
-DigitalOut steeperFour(STEPPER_PIN_4);
- 
-DigitalOut myIOs(PB_14); // review the results on PB_14
-DigitalOut myIOs2(PA_5); // review the results on PA_5
-int step_number=0;
-int open_flag=0;
-int close_flag=0;
+#include<math.h>
 
 // Default network interface object. Don't forget to change the WiFi SSID/password in mbed_app.json if you're using WiFi.
 NetworkInterface *net;
@@ -72,8 +55,9 @@
 static DevI2C devI2c(PB_11,PB_10);
 static HTS221Sensor sen_hum_temp(&devI2c);
 static LPS22HBSensor sen_press_temp(&devI2c);
+//static LSM6DSLSensor sen_acc_gyro(&devI2c,LSM6DSL_ACC_GYRO_I2C_ADDRESS_LOW,PD_11);
+
 static DigitalOut shutdown_pin(PC_6);
-//static VL53L0X sen_distance(&devI2c, &shutdown_pin, PC_7);
 
 // Temperature reading from microcontroller
 AnalogIn adc_temp(ADC_TEMP);
@@ -88,7 +72,9 @@
 #ifdef SEND_ALL_SENSORS
 MbedCloudClientResource *res_humidity;
 MbedCloudClientResource *res_pressure;
-MbedCloudClientResource *res_adc_temp;
+MbedCloudClientResource *res_temperature;
+
+
 #endif /* SEND_ALL_SENSORS */
 
 // An event queue is a very useful structure to debounce information between contexts (e.g. ISR and normal threads)
@@ -122,87 +108,21 @@
     }
     printf("\n");
 }
-//Serial port define for uart1 usb
-//pb7 rx
-//pb6 tx
-//Serial device(USBTX, USBRX);
-Serial device(PB_6, PB_7);  // tx, rx
-
 
 /**
  * Button function triggered by the physical button press.
  */
- 
- 
- 
- 
- void Tx_interrupt();
-void Rx_interrupt();
-void send_line();
-void read_line();
- 
- 
-// Circular buffers for serial TX and RX data - used by interrupt routines
-const int buffer_size = 255;
-// might need to increase buffer size for high baud rates
-char tx_buffer[buffer_size+1];
-char rx_buffer[buffer_size+1];
-// Circular buffer pointers
-// volatile makes read-modify-write atomic 
-volatile int tx_in=0;
-volatile int tx_out=0;
-volatile int rx_in=0;
-volatile int rx_out=0;
-// Line buffers for sprintf and sscanf
-char tx_line[80];
-char rx_line[80];
-
-     int i=0;
-    int rx_i=0;
-    device.baud(115200);
- 
-// Setup a serial interrupt function to receive data
-    device.attach(&Rx_interrupt, Serial::RxIrq);
-// Setup a serial interrupt function to transmit data
-    device.attach(&Tx_interrupt, Serial::TxIrq);
- 
- 
 void button_press() {
     int v = res_button->get_value_int() + 1;
     res_button->set_value(v);
     printf("*** Button clicked %d times                                 \n", v);
 }
- 
 // Called everytime a new character goes into
 // the RX buffer. Test that character for \n
 // Note, rxGetLastChar() gets the last char that
 // we received but it does NOT remove it from
 // the RX buffer.
-void read_line() {
-    int i;
-    i = 0;
-// Start Critical Section - don't interrupt while changing global buffer variables
-    NVIC_DisableIRQ(UART1_IRQn);
-// Loop reading rx buffer characters until end of line character
-    while ((i==0) || (rx_line[i-1] != '\r')) {
-// Wait if buffer empty
-        if (rx_in == rx_out) {
-// End Critical Section - need to allow rx interrupt to get new characters for buffer
-            NVIC_EnableIRQ(UART1_IRQn);
-            while (rx_in == rx_out) {
-            }
-// Start Critical Section - don't interrupt while changing global buffer variables
-            NVIC_DisableIRQ(UART1_IRQn);
-        }
-        rx_line[i] = rx_buffer[rx_out];
-        i++;
-        rx_out = (rx_out + 1) % buffer_size;
-    }
-// End Critical Section
-    NVIC_EnableIRQ(UART1_IRQn);
-    rx_line[i-1] = 0;
-    return;
-}
+
 /**
  * Notification callback handler
  * @param resource The resource that triggered the callback
@@ -221,82 +141,11 @@
     endpointInfo = endpoint;
 }
 
-/*
-    for one rotation when passed true or false in function OneStep(bool)
-*/
-void OneStep(bool dir){
-if(dir)
-{
-    switch(step_number){
-      case 0:
-          steeperOne =1;
-          steeperTwo =0;
-          steeperThree =0;
-          steeperFour =0;
-        break;
-      case 1:
-          steeperOne =0;
-          steeperTwo =1;
-          steeperThree =0;
-          steeperFour =0;
-        break;
-      case 2:
-          steeperOne =0;
-          steeperTwo =0;
-          steeperThree =1;
-          steeperFour =0;
-        break;
-      case 3:
-          steeperOne =0;
-          steeperTwo =0;
-          steeperThree =0;
-          steeperFour =1;
-         break;
-        }// end of switch 
-}// end of if
-  
-else
-{
-    switch(step_number){
-      case 0:
-          steeperOne =0;
-          steeperTwo =0;
-          steeperThree =0;
-          steeperFour =1;
-        break;
-      case 1:
-          steeperOne =0;
-          steeperTwo =0;
-          steeperThree =1;
-          steeperFour =0;
-        break;
-      case 2:
-          steeperOne =0;
-          steeperTwo =1;
-          steeperThree =0;
-          steeperFour =0;
-        break;
-      case 3:
-          steeperOne =1;
-          steeperTwo =0;
-          steeperThree =0;
-          steeperFour =0;
-        break;
- 
-  
-    }// end of switch
-  }// end of else
-step_number++;
-  if(step_number > 3){
-    step_number = 0;
-  }
-} // end of OneStep() function
 /**
  * Initialize sensors
  */
 void sensors_init() {
     uint8_t id1, id2;
-
     printf ("\nSensors configuration:\n");
     // Initialize sensors
     sen_hum_temp.init(NULL);
@@ -305,13 +154,12 @@
     /// Call sensors enable routines
     sen_hum_temp.enable();
     sen_press_temp.enable();
-
+    
     sen_hum_temp.read_id(&id1);
     sen_press_temp.read_id(&id2);
 
     printf("HTS221  humidity & temperature    = 0x%X\n", id1);
     printf("LPS22HB pressure & temperature    = 0x%X\n", id2);
-
     printf("\n"); ;
 }
 
@@ -320,55 +168,28 @@
  * This function is called periodically.
  */
 void sensors_update() {
-    float temp3_value, humid_value, pressure_value = 0.0;
-
-    sen_hum_temp.get_humidity(&humid_value);
-    sen_press_temp.get_pressure(&pressure_value);
-    temp3_value = adc_temp.read()*100;
-    
-    printf("%2.0f^%2.0f^%3.0f",temp3_value,humid_value,pressure_value);   
-    printf("\n");
-           
-   // printf ("%02d : %02d : %02d\n", temp3_value, hummitly, pressure);
+    float humid_value, pressure_value = 0.0;
+    float temp1_value = 0.0;
+    //float temp3_value = 0.0;
     
-// added a new code for stepper motor 
-// if temperature reading is higher, open motor
-    if(temp3_value > 30)
-    {
-       open_flag = 0;
-       while(open_flag==0){
-            OneStep(false);
-            wait(0.01);
-            bool btn_pressed = (button.read() == MBED_CONF_APP_BUTTON_PRESSED_STATE);
-            if (btn_pressed) {
-                printf("Door Opened...\n");
-                open_flag=1;
-                close_flag=0;
-            }//end of if(btn_pressed)
-     }// end of while
-    }// end of if(temp3_value>20)
-    // now we expect to close
+    sen_hum_temp.get_humidity(&humid_value);
+    sen_hum_temp.get_temperature(&temp1_value);
+    sen_press_temp.get_pressure(&pressure_value);
+    //temp3_value = adc_temp.read()*100;
+    //sen_acc_gyro.get_g_axes(g_axes);
+      
+    printf("%2.2f^%2.1f^%3.2f",temp1_value,humid_value,pressure_value);   
+    printf("\n");
     
-    if(temp3_value < 20)//door has to close
-    {
-        close_flag = 0;
-        while(close_flag==0){
-            OneStep(true);
-            wait(0.01);
-            bool btn_pressed = (button.read() == MBED_CONF_APP_BUTTON_PRESSED_STATE);
-            if (btn_pressed) {
-                printf("Door Closed...\n");
-                open_flag=0;
-                close_flag=1;
-            }//end of if(btn_pressed)
-     }// end of while     
-    }
-
+    wait_us(4000);//Wait until the loop_timer reaches 4000us (250Hz) before starting the next loop
+    
     if (endpointInfo) {
 #ifdef SEND_ALL_SENSORS
         res_humidity->set_value(humid_value);
+        res_temperature->set_value(temp1_value);
         res_pressure->set_value(pressure_value);
-        res_adc_temp->set_value(temp3_value);
+        //res_adc_temp->set_value(temp3_value);
+        
 #endif /* SEND_ALL_SENSORS */
     }
 }
@@ -444,26 +265,21 @@
 
 #ifdef SEND_ALL_SENSORS
     // Sensor resources
-/*    res_temperature = client.create_resource("3303/0/5700", "Temperature HTS221 (C)");
+    res_temperature = client.create_resource("3303/0/5700", "Temperature HTS221 (C)");
     res_temperature->set_value(0);
     res_temperature->methods(M2MMethod::GET);
-    res_temperature->observable(true);*/
+    res_temperature->observable(true);
 
     res_humidity = client.create_resource("3304/0/5700", "Humidity");
     res_humidity->set_value(0);
     res_humidity->methods(M2MMethod::GET);
     res_humidity->observable(true);
 
-    res_adc_temp = client.create_resource("3303/2/5700", "Temperature ADC (C)");
-    res_adc_temp->set_value(0);
-    res_adc_temp->methods(M2MMethod::GET);
-    res_adc_temp->observable(true);
-
     res_pressure = client.create_resource("3323/0/5700", "Pressure");
     res_pressure->set_value(0);
     res_pressure->methods(M2MMethod::GET);
     res_pressure->observable(true);
-
+    
 #endif /* SEND_ALL_SENSORS */
 
     printf("Initialized Pelion Client. Registering...\n");
@@ -478,7 +294,7 @@
     while (i-- > 0 && !client.is_client_registered()) {
         wait_ms(100);
     }
-
+    
     button.fall(eventQueue.event(&button_press));
 
     // The timer fires on an interrupt context, but debounces it to the eventqueue, so it's safe to do network operations