disable sensor detection - temporary solution
This commit is contained in:
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"C_Cpp.intelliSenseEngine": "default",
|
||||
"idf.espIdfPath": "/home/bruno/esp/master/esp-idf",
|
||||
"idf.espIdfPath": "/home/bruno/esp/v5.4.1/esp-idf",
|
||||
"idf.pythonInstallPath": "/usr/bin/python",
|
||||
"idf.openOcdConfigs": [
|
||||
"board/esp32s3-builtin.cfg"
|
||||
|
@@ -2,7 +2,7 @@ dependencies:
|
||||
idf:
|
||||
source:
|
||||
type: idf
|
||||
version: 5.5.0
|
||||
version: 5.4.1
|
||||
k0i05/esp_bme680:
|
||||
component_hash: 2df0cb14d4425565a8745d4a96bfaa8ff7e90bbec3e208a073821406dded23c8
|
||||
dependencies:
|
||||
|
@@ -191,7 +191,7 @@ void process_uplink_packet(uint8_t *data, uint8_t len, uint64_t missionTimer)
|
||||
return;
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "Got uplink packet of type %d, index %d", uplinkPacket.packetType, uplinkPacket.packetIndex);
|
||||
ESP_LOGI(TAG, "Got uplink packet of type %d, index %ld", uplinkPacket.packetType, uplinkPacket.packetIndex);
|
||||
|
||||
uint8_t *payload = data + sizeof(UplinkPacket);
|
||||
|
||||
@@ -200,13 +200,13 @@ void process_uplink_packet(uint8_t *data, uint8_t len, uint64_t missionTimer)
|
||||
uint32_t crc = esp_rom_crc32_le(0, payload, payloadRXLen);
|
||||
|
||||
if (crc != uplinkPacket.CRCCheck) {
|
||||
ESP_LOGE(TAG, "Received BAD CRC for packet %d, crc is %ld, should be %ld", uplinkPacket.packetIndex, crc, uplinkPacket.CRCCheck);
|
||||
ESP_LOGE(TAG, "Received BAD CRC for packet %ld, crc is %ld, should be %ld", uplinkPacket.packetIndex, crc, uplinkPacket.CRCCheck);
|
||||
return;
|
||||
}
|
||||
|
||||
if (uplinkPacket.packetType == UplinkPacketType_ACK)
|
||||
{
|
||||
ESP_LOGI(TAG, "Received ACK for packet %d", uplinkPacket.packetIndex);
|
||||
ESP_LOGI(TAG, "Received ACK for packet %ld", uplinkPacket.packetIndex);
|
||||
ackReceived = true;
|
||||
lastAckIndex = uplinkPacket.packetIndex;
|
||||
return;
|
||||
@@ -247,12 +247,12 @@ void process_uplink_packet(uint8_t *data, uint8_t len, uint64_t missionTimer)
|
||||
}
|
||||
else if (uplinkPacket.packetIndex > packetIndexRX + 1)
|
||||
{
|
||||
ESP_LOGW(TAG, "Skipped %d packets", uplinkPacket.packetIndex - (packetIndexRX + 1));
|
||||
ESP_LOGW(TAG, "Skipped %ld packets", uplinkPacket.packetIndex - (packetIndexRX + 1));
|
||||
packetIndexRX = uplinkPacket.packetIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
ESP_LOGW(TAG, "Duplicate packet: %d", (packetIndexRX + 1) - uplinkPacket.packetIndex);
|
||||
ESP_LOGW(TAG, "Duplicate packet: %ld", (packetIndexRX + 1) - uplinkPacket.packetIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -289,9 +289,9 @@ void lora_comms_task(void *pvParameters)
|
||||
|
||||
ESP_LOGI(TAG, "lora_comms_task started");
|
||||
|
||||
while (foundDevices[0] != 2) {
|
||||
vTaskDelay(10);
|
||||
}
|
||||
// while (foundDevices[0] != 2) {
|
||||
// vTaskDelay(10);
|
||||
// }
|
||||
|
||||
// Initialize the semaphore for radio access (binary semaphore, 1 = available)
|
||||
loraRadioMutex = xSemaphoreCreateMutex();
|
||||
|
@@ -59,11 +59,14 @@ void setPowerMode(uint8_t powerModeIn)
|
||||
powerMode = powerModeIn;
|
||||
if (foundDevices[0] == 2)
|
||||
{
|
||||
if (powerMode == HIGH_POWER_MODE) {
|
||||
if (powerMode == HIGH_POWER_MODE)
|
||||
{
|
||||
mcp23018_set_pin(MCP23018_DEV_HANDLE, MCP_CCS811_WAKE, 0);
|
||||
mcp23018_set_pin(MCP23018_DEV_HANDLE, MCP_CCS811_POWER, 1);
|
||||
mcp23018_set_pin(MCP23018_DEV_HANDLE, MCP_MICS_POWER, 1);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
mcp23018_set_pin(MCP23018_DEV_HANDLE, MCP_CCS811_WAKE, 1);
|
||||
mcp23018_set_pin(MCP23018_DEV_HANDLE, MCP_CCS811_POWER, 0);
|
||||
mcp23018_set_pin(MCP23018_DEV_HANDLE, MCP_MICS_POWER, 0);
|
||||
@@ -136,13 +139,13 @@ void i2c_sensors_task(void *pvParameters)
|
||||
memset(foundDevices, 0, sizeof(foundDevices));
|
||||
memset(prevDevices, 0, sizeof(prevDevices));
|
||||
|
||||
// bme680b_init();
|
||||
// mpu9250_init();
|
||||
// ccs811_init();
|
||||
// ina260_init();
|
||||
bme680b_init();
|
||||
mpu9250_init();
|
||||
ccs811_init();
|
||||
ina260_init();
|
||||
|
||||
update_devices();
|
||||
init_connected();
|
||||
// update_devices();
|
||||
// init_connected();
|
||||
// initialize the xLastWakeTime variable with the current time.
|
||||
const int64_t interval_us = 50000; // 50 ms
|
||||
int64_t start_time, end_time, elapsed;
|
||||
@@ -172,16 +175,13 @@ void i2c_sensors_task(void *pvParameters)
|
||||
{
|
||||
start_time = esp_timer_get_time(); // µs since boot
|
||||
|
||||
uint8_t presentDevices = 0;
|
||||
update_devices();
|
||||
init_connected();
|
||||
uint8_t presentDevices = 0xFF;
|
||||
// update_devices();
|
||||
// init_connected();
|
||||
|
||||
//
|
||||
// handle sensor
|
||||
|
||||
if (foundDevices[BME680_ADDRESS] == 2)
|
||||
{
|
||||
|
||||
presentDevices |= BME680_PRESENT_BIT;
|
||||
|
||||
if (BME680_DEV_HANDLE)
|
||||
@@ -207,18 +207,11 @@ void i2c_sensors_task(void *pvParameters)
|
||||
{
|
||||
bme680b_init();
|
||||
}
|
||||
}
|
||||
|
||||
if (foundDevices[CCS811_ADDRESS] == 2)
|
||||
{
|
||||
presentDevices |= CCS811_PRESENT_BIT;
|
||||
ccs811_get_data(&eCO2, &tvoc, ¤tCCS, &rawData);
|
||||
ESP_LOGI(TAG_CCS, "eCO₂: %d ppm, TVOC: %d ppb", eCO2, tvoc);
|
||||
ESP_LOGI(TAG_CCS, "Current: %d μA, Raw voltage: %d V", currentCCS, rawData);
|
||||
}
|
||||
|
||||
if (foundDevices[MPU9250_ADDRESS] == 2)
|
||||
{
|
||||
|
||||
presentDevices |= MPU9250_PRESENT_BIT;
|
||||
if (mpu9250_read_sensor_data(MPU9250_DEV_HANDLE, accel, gyro, &temp, magnet) == ESP_OK)
|
||||
@@ -234,24 +227,16 @@ void i2c_sensors_task(void *pvParameters)
|
||||
{
|
||||
ESP_LOGE(TAG_MPU, "Failed to read sensor data");
|
||||
}
|
||||
}
|
||||
|
||||
if (foundDevices[INA260_ADDRESS] == 2)
|
||||
{
|
||||
|
||||
presentDevices |= INA260_PRESENT_BIT;
|
||||
ina260_readParams(&volts, ¤t, &power);
|
||||
ina260_printParams(volts, current, power);
|
||||
}
|
||||
|
||||
if (foundDevices[MCP23018_ADDRESS] == 2)
|
||||
{
|
||||
presentDevices |= MCP23018_PRESENT_BIT;
|
||||
float VREFVoltage = 2.5;
|
||||
ADCData = mcp3550_read_all(VREFVoltage);
|
||||
|
||||
log_mics_adc_values(&ADCData);
|
||||
}
|
||||
|
||||
if (packetReadiness == 0)
|
||||
{
|
||||
|
@@ -49,7 +49,7 @@ void gps_task(void *arg)
|
||||
line[line_pos] = '\0';
|
||||
|
||||
if (line[0] == '$') {
|
||||
ESP_LOGV(TAG, "Received NMEA: %s", line);
|
||||
ESP_LOGI(TAG, "Received NMEA: %s", line);
|
||||
|
||||
if (strstr(line, "$GPGGA") == line) {
|
||||
parse_gpgga(line);
|
||||
@@ -72,8 +72,7 @@ void gps_task(void *arg)
|
||||
}
|
||||
}
|
||||
|
||||
void parse_gpgga(const char *nmea)
|
||||
{
|
||||
void parse_gpgga(const char *nmea) {
|
||||
char *fields[15];
|
||||
char temp[GPS_LINE_MAX_LEN];
|
||||
strncpy(temp, nmea, GPS_LINE_MAX_LEN);
|
||||
@@ -108,12 +107,11 @@ void parse_gpgga(const char *nmea)
|
||||
// Altitude
|
||||
const char *altitude = fields[9];
|
||||
|
||||
ESP_LOGI(TAG, "[GPGGA] Time: %s, Lat: %s %s, Lon: %s %s, Fix: %s, Sats: %s, Alt: %sm",
|
||||
printf("[GPGGA] Time: %s, Lat: %s %s, Lon: %s %s, Fix: %s, Sats: %s, Alt: %sm\n",
|
||||
utc_time, lat, lat_dir, lon, lon_dir, fix_quality, num_satellites, altitude);
|
||||
}
|
||||
|
||||
void parse_gprmc(const char *nmea)
|
||||
{
|
||||
void parse_gprmc(const char *nmea) {
|
||||
char *fields[13];
|
||||
char temp[GPS_LINE_MAX_LEN];
|
||||
strncpy(temp, nmea, GPS_LINE_MAX_LEN);
|
||||
@@ -137,7 +135,7 @@ void parse_gprmc(const char *nmea)
|
||||
const char *speed_knots = fields[7];
|
||||
const char *date = fields[9];
|
||||
|
||||
ESP_LOGI(TAG, "[GPRMC] Date: %s, Time: %s, Lat: %s %s, Lon: %s %s, Speed: %s knots, Status: %s",
|
||||
printf("[GPRMC] Date: %s, Time: %s, Lat: %s %s, Lon: %s %s, Speed: %s knots, Status: %s\n",
|
||||
date, utc_time, lat, lat_dir, lon, lon_dir, speed_knots, status);
|
||||
}
|
||||
|
||||
@@ -154,17 +152,22 @@ static uint32_t time_to_seconds_struct(const char *time_str) {
|
||||
// Function to convert DMS (degrees minutes.decimalminutes) to centi-degrees
|
||||
static int32_t dms_to_centi_degrees_struct(const char *dms_str, const char *direction) {
|
||||
if (dms_str == NULL || direction == NULL || strlen(dms_str) < 7) return 0;
|
||||
char degrees_str[4] = {0};
|
||||
char minutes_decimal_str[10] = {0};
|
||||
strncpy(degrees_str, dms_str, 2);
|
||||
strncpy(minutes_decimal_str, dms_str + 2, strlen(dms_str) - 2);
|
||||
double degrees = atof(degrees_str);
|
||||
double minutes = atof(minutes_decimal_str);
|
||||
double decimal_degrees = degrees + (minutes / 60.0);
|
||||
if (direction[0] == 'S' || direction[0] == 'W') {
|
||||
decimal_degrees *= -1.0;
|
||||
char data_str[20] = {0};
|
||||
char *dataStr = data_str;
|
||||
for (int i = 0; i < 20; i++) {
|
||||
if (dms_str[i] == 0) {
|
||||
break;
|
||||
}
|
||||
return (int32_t)(decimal_degrees * 10000);
|
||||
if (dms_str[i] == '.') {
|
||||
continue;
|
||||
}
|
||||
*(dataStr++) = dms_str[i];
|
||||
}
|
||||
int32_t degrees = atoi(data_str);
|
||||
if (direction[0] == 'S' || direction[0] == 'W') {
|
||||
degrees *= -1;
|
||||
}
|
||||
return degrees;
|
||||
}
|
||||
|
||||
// Function to convert altitude string to centi-meters
|
||||
@@ -190,8 +193,7 @@ static uint16_t date_to_yyddmm_struct(const char *date_str) {
|
||||
}
|
||||
|
||||
// Function to parse GPGGA NMEA string and return the struct
|
||||
void parse_gpgga_to_struct(const char *nmea, gps_binary_struct_t *data)
|
||||
{
|
||||
void parse_gpgga_to_struct(const char *nmea, gps_binary_struct_t *data) {
|
||||
char *fields[15];
|
||||
char temp[GPS_LINE_MAX_LEN];
|
||||
strncpy(temp, nmea, GPS_LINE_MAX_LEN);
|
||||
@@ -212,13 +214,12 @@ void parse_gpgga_to_struct(const char *nmea, gps_binary_struct_t *data)
|
||||
data->num_satellites = atoi(fields[7]);
|
||||
data->altitude_centi_meters = altitude_to_centi_meters_struct(fields[9]);
|
||||
} else {
|
||||
ESP_LOGW(TAG, "GPGGA: Not enough fields to parse struct");
|
||||
printf("GPGGA: Not enough fields to parse struct");
|
||||
}
|
||||
}
|
||||
|
||||
// Function to parse GPRMC NMEA string and return the struct
|
||||
void parse_gprmc_to_struct(const char *nmea, gps_binary_struct_t *data)
|
||||
{
|
||||
void parse_gprmc_to_struct(const char *nmea, gps_binary_struct_t *data) {
|
||||
char *fields[13];
|
||||
char temp[GPS_LINE_MAX_LEN];
|
||||
strncpy(temp, nmea, GPS_LINE_MAX_LEN);
|
||||
@@ -239,6 +240,6 @@ void parse_gprmc_to_struct(const char *nmea, gps_binary_struct_t *data)
|
||||
data->speed_centi_knots = speed_to_centi_knots_struct(fields[7]);
|
||||
// Fix quality and num_satellites are typically in GPGGA, so they might be 0 here.
|
||||
} else {
|
||||
ESP_LOGW(TAG, "GPRMC: Not enough fields to parse struct");
|
||||
printf("GPRMC: Not enough fields to parse struct");
|
||||
}
|
||||
}
|
@@ -62,6 +62,8 @@ void app_main(void)
|
||||
/* scan i2c devices on i2c master bus 0 and print results */
|
||||
ESP_ERROR_CHECK(i2c_master_bus_detect_devices(i2c0_bus_hdl));
|
||||
|
||||
mcp23018_init();
|
||||
|
||||
void servoControllerInit();
|
||||
|
||||
ESP_LOGI(TAG, "BEGIN ESP TASKS");
|
||||
|
Reference in New Issue
Block a user