0527

Dependencies:   MQTT

Revision:
60:c0c04325453c
Parent:
59:9bbcc1b368ba
--- a/main.cpp	Tue Apr 23 09:45:23 2019 +0000
+++ b/main.cpp	Mon May 27 05:38:15 2019 +0000
@@ -1,19 +1,3 @@
-/* WiFi Example
- * Copyright (c) 2018 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
 //MQTT+WIFI
 
 
@@ -30,7 +14,8 @@
 
 #include "mbed.h"
 #include "TCPSocket.h"
-
+#include "VL53L1X.h"
+#include <string> 
 #define WIFI_IDW0XX1    2
 
 #if (defined(TARGET_DISCO_L475VG_IOT01A) || defined(TARGET_DISCO_F413ZH))
@@ -52,7 +37,7 @@
     MQTT::Message &message = md.message;
     logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
     logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
-    ++arrivedcount;
+    //++arrivedcount;
 }
 
 
@@ -146,14 +131,205 @@
     // Close the socket to return its memory and bring down the network interface
     socket.close();
 }
+bool s1_init = true;
+bool s2_init = true;
+bool s3_init = true;
+bool s4_init = true;
+VL53L1X sensor1(PC_1,PC_0, PC_2);
+VL53L1X sensor2(PC_1,PC_0, PC_3);
+VL53L1X sensor3(PC_1,PC_0, PC_4);
+VL53L1X sensor4(PC_1,PC_0, PC_5);
+SPI acc (PA_7,PA_6,PA_5);
+DigitalOut cs(PB_8);
+char buffer[6];
+int16_t data[3];
+float x,y,z,w;
+Timer t; 
+AnalogIn analog_value1(PA_2);
+AnalogIn analog_value2(PA_4);
+AnalogIn analog_value3(PB_1);
+AnalogIn analog_value4(PA_3);
+AnalogIn analog_value5(PB_0);
+Serial pc(USBTX,USBRX);
+
+void sensor(void)
+{
+     double meas_a;
+     double meas_a1;
+     double meas_b;
+     double meas_b1;
+     double meas_c;
+     double meas_c1;
+     double meas_d;
+     double meas_d1;
+     double meas_e;
+     double meas_e1;
+     double outputv;
+     
+     double D1;    
+     double D2;  
+     double D3;  
+     double D4;  
+     
+     
+     
+     
+    sensor1.initReading(0x52,50000);
+    sensor2.initReading(0x27,50000);
+    sensor3.initReading(0x35,50000);
+    sensor4.initReading(0x37,50000);
+     sensor1.setDistanceMode(VL53L1X::Short);
+     sensor2.setDistanceMode(VL53L1X::Short);
+     sensor3.setDistanceMode(VL53L1X::Short);
+     sensor4.setDistanceMode(VL53L1X::Short);
+     cs=1;
+     acc.format(8,3);
+     acc.frequency(2000000);
+     cs=0;
+     acc.write(0x31);
+     acc.write(0x0B);
+     cs=1;
+     cs=0;
+     acc.write(0x2D);
+     acc.write(0x08);
+     cs=1;
+        
+       D1 = sensor1.readFromOneSensor();
+       wait(0.1);
+       D2 = sensor2.readFromOneSensor();
+       wait(0.1);
+       D3 = sensor3.readFromOneSensor();
+       wait(0.1);
+       D4 = sensor4.readFromOneSensor();
+       wait(0.1);
+      
+      cs=0;
+      acc.write(0x80|0x40|0x32);
+      for (int i=0;i<=5;i++)
+      {
+      buffer[i]=acc.write(0x00);
+      }
+      cs= 1;   
+      data[0]=buffer[1]<<8|buffer[0];
+      data[1]=buffer[3]<<8|buffer[2];
+      data[2]=buffer[5]<<8|buffer[4];
+      x=0.004*data[0];
+      wait(0.1);
+      y=0.004*data[1];
+      wait(0.1);
+      z=0.004*data[2];
+      wait(0.1);
+      w=atan2(x,y)*(57.4);
+      wait(0.1);
+      meas_a = analog_value1.read(); 
+      meas_a1 = meas_a * 3*25; 
+      meas_b = analog_value2.read(); 
+      meas_b1 = meas_b * 3*25; 
+      meas_c = analog_value3.read(); 
+      meas_c1 = meas_c * 3*25; 
+      meas_d = analog_value4.read(); 
+      meas_d1 = meas_d * 3*25; 
+      meas_e = analog_value5.read(); 
+      meas_e1 = meas_e * 3*25; 
+      
+      
+    
+    
+    }
+
 
 int main()
-{
+{      
+
+                   
+    pc.baud (115200) ;
+     
+     double meas_a;
+     double meas_a1;
+     double meas_b;
+     double meas_b1;
+     double meas_c;
+     double meas_c1;
+     double meas_d;
+     double meas_d1;
+     double meas_e;
+     double meas_e1;
+     double outputv;
+     
+     double D1;    
+     double D2;  
+     double D3;  
+     double D4;  
+     
+     
+     
+     
+    sensor1.initReading(0x52,50000);
+    sensor2.initReading(0x27,50000);
+    sensor3.initReading(0x35,50000);
+    sensor4.initReading(0x37,50000);
+     sensor1.setDistanceMode(VL53L1X::Short);
+     sensor2.setDistanceMode(VL53L1X::Short);
+     sensor3.setDistanceMode(VL53L1X::Short);
+     sensor4.setDistanceMode(VL53L1X::Short);
+     cs=1;
+     acc.format(8,3);
+     acc.frequency(2000000);
+     cs=0;
+     acc.write(0x31);
+     acc.write(0x0B);
+     cs=1;
+     cs=0;
+     acc.write(0x2D);
+     acc.write(0x08);
+     cs=1;
+        
+       D1 = sensor1.readFromOneSensor();
+       wait(0.1);
+       D2 = sensor2.readFromOneSensor();
+       wait(0.1);
+       D3 = sensor3.readFromOneSensor();
+       wait(0.1);
+       D4 = sensor4.readFromOneSensor();
+       wait(0.1);
+      
+      cs=0;
+      acc.write(0x80|0x40|0x32);
+      for (int i=0;i<=5;i++)
+      {
+      buffer[i]=acc.write(0x00);
+      }
+      cs= 1;   
+      data[0]=buffer[1]<<8|buffer[0];
+      data[1]=buffer[3]<<8|buffer[2];
+      data[2]=buffer[5]<<8|buffer[4];
+      x=0.004*data[0];
+      wait(0.1);
+      y=0.004*data[1];
+      wait(0.1);
+      z=0.004*data[2];
+      wait(0.1);
+      w=atan2(x,y)*(57.4);
+      wait(0.1);
+      meas_a = analog_value1.read(); 
+      meas_a1 = meas_a * 3*25; 
+      meas_b = analog_value2.read(); 
+      meas_b1 = meas_b * 3*25; 
+      meas_c = analog_value3.read(); 
+      meas_c1 = meas_c * 3*25; 
+      meas_d = analog_value4.read(); 
+      meas_d1 = meas_d * 3*25; 
+      meas_e = analog_value5.read(); 
+      meas_e1 = meas_e * 3*25;  
+     
+         
+                     
     int count = 0;
 
     printf("WiFi example\n\n");
 
     count = scan_demo(&wifi);
+    
     if (count == 0) {
         printf("No WIFI APNs found - can't continue further.\n");
         return -1;
@@ -182,7 +358,7 @@
     
     // MQTT Example Start
     float version = 0.6;
-    char* topic = "test1";
+    char* topic = "192.168.0.164";
 
     logMessage("HelloMQTT: version is %.2f\r\n", version);
 
@@ -195,7 +371,7 @@
 
     MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
 
-    const char* hostname = "192.168.0.120";
+    const char* hostname = "192.168.0.164";
     int port = 1883;
     logMessage("Connecting to %s:%d\r\n", hostname, port);
     int rc = mqttNetwork.connect(hostname, port);
@@ -212,48 +388,33 @@
 
     if ((rc = client.subscribe(topic, MQTT::QOS2, messageArrived)) != 0)
         logMessage("rc from MQTT subscribe is %d\r\n", rc);
-
+    
     MQTT::Message message;
-
+    //pc.printf("%d,%d,%d,%d,%+1.2f,%+1.2f,%+1.2f,%+1.2f,%1.0f,%1.0f,%1.0f,%1.0f,%1.0f\n\r", 
+//sensor1.readFromOneSensor(), sensor2.readFromOneSensor(), sensor3.readFromOneSensor(), sensor4.readFromOneSensor(),
+//x,y,z,w, meas_a1, meas_b1, meas_c1, meas_d1, meas_e1);
     // QoS 0
+      
     char buf[100];
-    sprintf(buf, "Hello World!  QoS 0 message from app version %f\r\n", version);
-    message.qos = MQTT::QOS0;
+     sprintf(buf, "100");
+     
+     
+      //sprintf(buf, "%d,%d,%d,%d,%+1.2f,%+1.2f,%+1.2f,%+1.2f,%1.0f,%1.0f,%1.0f,%1.0f,%1.0f\n\r", 
+//sensor1.readFromOneSensor(), sensor2.readFromOneSensor(), sensor3.readFromOneSensor(), sensor4.readFromOneSensor(),
+//x,y,z,w, meas_a1, meas_b1, meas_c1, meas_d1, meas_e1);
+
+
+
+    message.qos = MQTT::QOS1;
     message.retained = false;
     message.dup = false;
     message.payload = (void*)buf;
     message.payloadlen = strlen(buf)+1;
     rc = client.publish(topic, message);
-    while (arrivedcount < 1)
-        client.yield(100);
-
-    // QoS 1
-    sprintf(buf, "Hello World!  QoS 1 message from app version %f\r\n", version);
-    message.qos = MQTT::QOS1;
-    message.payloadlen = strlen(buf)+1;
-    rc = client.publish(topic, message);
-    while (arrivedcount < 2)
-        client.yield(100);
-
-    // QoS 2
-    sprintf(buf, "Hello World!  QoS 2 message from app version %f\r\n", version);
-    message.qos = MQTT::QOS2;
-    message.payloadlen = strlen(buf)+1;
-    rc = client.publish(topic, message);
-    while (arrivedcount < 3)
-        client.yield(100);
-
-    if ((rc = client.unsubscribe(topic)) != 0)
-        logMessage("rc from unsubscribe was %d\r\n", rc);
-
-    if ((rc = client.disconnect()) != 0)
-        logMessage("rc from disconnect was %d\r\n", rc);
-
-    mqttNetwork.disconnect();
-
-    logMessage("Version %.2f: finish %d msgs\r\n", version, arrivedcount);
-
-    return 0;
-    
-    
+    client.yield(100);
+ 
+ 
+ 
+       
+   
 }