Integration of multiple sensors with ROS Serial
Dependencies: mbed HCSR04 VEML7700
main.cpp@4:69cd9240fd74, 2021-10-23 (annotated)
- Committer:
- zillkhan
- Date:
- Sat Oct 23 07:49:00 2021 +0000
- Revision:
- 4:69cd9240fd74
- Parent:
- 3:c23614e6262f
Adding BME680 driver
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zillkhan | 0:d409714cebbf | 1 | #include <ros.h> |
zillkhan | 0:d409714cebbf | 2 | #include <std_msgs/Float32.h> |
zillkhan | 0:d409714cebbf | 3 | #include <std_msgs/String.h> |
zillkhan | 3:c23614e6262f | 4 | #include <std_msgs/Int16.h> |
zillkhan | 0:d409714cebbf | 5 | #include "SHARPIR.h" |
zillkhan | 2:b847309a754d | 6 | #include "hcsr04.h" |
zillkhan | 3:c23614e6262f | 7 | #include "VEML7700.h" |
zillkhan | 4:69cd9240fd74 | 8 | #include "mbed_bme680.h" |
zillkhan | 0:d409714cebbf | 9 | |
zillkhan | 3:c23614e6262f | 10 | #ifndef MSU_VEML7700_I2C_ADDRESS |
zillkhan | 3:c23614e6262f | 11 | #define MSU_VEML7700_I2C_ADDRESS 0x10 |
zillkhan | 3:c23614e6262f | 12 | #endif |
zillkhan | 3:c23614e6262f | 13 | |
zillkhan | 3:c23614e6262f | 14 | #define PIN_SCL D15 |
zillkhan | 3:c23614e6262f | 15 | #define PIN_SDA D14 |
zillkhan | 0:d409714cebbf | 16 | |
zillkhan | 1:3a7e10c8a325 | 17 | //Sharp IR sensor analog pin defination |
zillkhan | 1:3a7e10c8a325 | 18 | SHARPIR Sensor(A0); |
zillkhan | 1:3a7e10c8a325 | 19 | |
zillkhan | 2:b847309a754d | 20 | //Ultrasonic sensor pin defination |
zillkhan | 2:b847309a754d | 21 | //D8 TRIGGER D9 ECHO |
zillkhan | 2:b847309a754d | 22 | HCSR04 sensor(D8, D9); |
zillkhan | 2:b847309a754d | 23 | |
zillkhan | 4:69cd9240fd74 | 24 | // BME680 pin defination |
zillkhan | 4:69cd9240fd74 | 25 | I2C i2c(PIN_SDA, PIN_SCL); |
zillkhan | 4:69cd9240fd74 | 26 | BME680 bme680(0xEE); //I2C address for BME680 |
zillkhan | 4:69cd9240fd74 | 27 | |
zillkhan | 0:d409714cebbf | 28 | ros::NodeHandle nh; |
zillkhan | 0:d409714cebbf | 29 | |
zillkhan | 1:3a7e10c8a325 | 30 | //SharpIR publisher initialization |
zillkhan | 2:b847309a754d | 31 | std_msgs::Float32 data_ir; |
zillkhan | 2:b847309a754d | 32 | ros::Publisher sharpir("sharpir", &data_ir); |
zillkhan | 0:d409714cebbf | 33 | |
zillkhan | 2:b847309a754d | 34 | //Ultrasonic sensor publisher initialization |
zillkhan | 2:b847309a754d | 35 | std_msgs::String data_ul; |
zillkhan | 2:b847309a754d | 36 | ros::Publisher ultrasonic("ultrasonic", &data_ul); |
zillkhan | 0:d409714cebbf | 37 | |
zillkhan | 3:c23614e6262f | 38 | //Ambient Light sensor publisher initialization |
zillkhan | 3:c23614e6262f | 39 | std_msgs::Int16 data_als; |
zillkhan | 3:c23614e6262f | 40 | ros::Publisher ALS("ALS", &data_als); |
zillkhan | 3:c23614e6262f | 41 | |
zillkhan | 4:69cd9240fd74 | 42 | //BME680 publisher initialization |
zillkhan | 4:69cd9240fd74 | 43 | std_msgs::String msg; |
zillkhan | 4:69cd9240fd74 | 44 | ros::Publisher sensor_bme("sensor_bme", &msg); |
zillkhan | 4:69cd9240fd74 | 45 | |
zillkhan | 3:c23614e6262f | 46 | VEML7700 *veml7700 = 0 ; |
zillkhan | 3:c23614e6262f | 47 | |
zillkhan | 0:d409714cebbf | 48 | int main() { |
zillkhan | 1:3a7e10c8a325 | 49 | float DistanceCM; //Variable to store distance in CM from SharpIR sensor |
zillkhan | 2:b847309a754d | 50 | char buffer[50]; // buffer for Ultrasonic sensor values |
zillkhan | 4:69cd9240fd74 | 51 | char buff_bme[50]; // buffer for bme690 sensor values |
zillkhan | 0:d409714cebbf | 52 | |
zillkhan | 3:c23614e6262f | 53 | //Initialization of Ambient light sensor |
zillkhan | 3:c23614e6262f | 54 | uint16_t als ; |
zillkhan | 3:c23614e6262f | 55 | veml7700 = new VEML7700(PIN_SDA, PIN_SCL, MSU_VEML7700_I2C_ADDRESS) ; |
zillkhan | 3:c23614e6262f | 56 | veml7700->setALSConf(0x0000) ; |
zillkhan | 3:c23614e6262f | 57 | veml7700->setPowerSaving(0x0000) ; |
zillkhan | 3:c23614e6262f | 58 | |
zillkhan | 4:69cd9240fd74 | 59 | //Initalization of BME680 |
zillkhan | 4:69cd9240fd74 | 60 | if (!bme680.begin()) { |
zillkhan | 4:69cd9240fd74 | 61 | printf("BME680 Begin failed \r\n"); |
zillkhan | 4:69cd9240fd74 | 62 | return 1; |
zillkhan | 4:69cd9240fd74 | 63 | } |
zillkhan | 4:69cd9240fd74 | 64 | |
zillkhan | 1:3a7e10c8a325 | 65 | //Initalizing and advertising topics |
zillkhan | 0:d409714cebbf | 66 | nh.initNode(); |
zillkhan | 2:b847309a754d | 67 | nh.advertise(sharpir); //SharpIR sensor |
zillkhan | 2:b847309a754d | 68 | nh.advertise(ultrasonic); //Ultrasonic Sensor |
zillkhan | 3:c23614e6262f | 69 | nh.advertise(ALS); //Ambient Light Sensor |
zillkhan | 4:69cd9240fd74 | 70 | nh.advertise(sensor_bme); //bme680 sensor |
zillkhan | 0:d409714cebbf | 71 | |
zillkhan | 0:d409714cebbf | 72 | while (1) { //creates an eternal loop |
zillkhan | 0:d409714cebbf | 73 | |
zillkhan | 2:b847309a754d | 74 | DistanceCM=Sensor.cm(); //Reading SharpIR sensor value from analog pin |
zillkhan | 4:69cd9240fd74 | 75 | wait_ms(500); |
zillkhan | 3:c23614e6262f | 76 | |
zillkhan | 2:b847309a754d | 77 | long distance = sensor.distance(); //Reading ultrasonic sensor value |
zillkhan | 2:b847309a754d | 78 | sprintf (buffer, "%d", distance); //converting value into string |
zillkhan | 4:69cd9240fd74 | 79 | wait_ms(500); |
zillkhan | 0:d409714cebbf | 80 | |
zillkhan | 3:c23614e6262f | 81 | als = veml7700->getALS(); //Readinng ALS sensor value |
zillkhan | 4:69cd9240fd74 | 82 | wait_ms(500); |
zillkhan | 4:69cd9240fd74 | 83 | |
zillkhan | 4:69cd9240fd74 | 84 | bme680.performReading(); //Reading bme680 value |
zillkhan | 4:69cd9240fd74 | 85 | sprintf (buff_bme, "Temp: %0.2f degC,Humi: %0.2f %%,Pres: %0.2f hPa,VOC: %0.2f KOhms", bme680.getTemperature(),bme680.getHumidity(),(bme680.getPressure() / 100.0),(bme680.getGasResistance() / 1000.0)); |
zillkhan | 4:69cd9240fd74 | 86 | wait_ms(500); |
zillkhan | 3:c23614e6262f | 87 | |
zillkhan | 2:b847309a754d | 88 | data_ir.data = DistanceCM; |
zillkhan | 2:b847309a754d | 89 | sharpir.publish( &data_ir ); |
zillkhan | 2:b847309a754d | 90 | |
zillkhan | 2:b847309a754d | 91 | data_ul.data = buffer; |
zillkhan | 2:b847309a754d | 92 | ultrasonic.publish( &data_ul ); |
zillkhan | 0:d409714cebbf | 93 | |
zillkhan | 3:c23614e6262f | 94 | data_als.data = als; |
zillkhan | 3:c23614e6262f | 95 | ALS.publish( &data_als ); |
zillkhan | 3:c23614e6262f | 96 | |
zillkhan | 4:69cd9240fd74 | 97 | msg.data = buffer; |
zillkhan | 4:69cd9240fd74 | 98 | sensor_bme.publish(&msg); |
zillkhan | 4:69cd9240fd74 | 99 | |
zillkhan | 0:d409714cebbf | 100 | nh.spinOnce(); |
zillkhan | 0:d409714cebbf | 101 | wait_ms(1000); |
zillkhan | 0:d409714cebbf | 102 | } |
zillkhan | 0:d409714cebbf | 103 | } |