save some implementation

This commit is contained in:
2025-04-22 14:27:07 +02:00
parent 35a11734e2
commit 9104869ecf
27 changed files with 1789 additions and 1734 deletions

View File

207
main/components/radio.c Normal file
View File

@@ -0,0 +1,207 @@
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "../hw/sx1262.h"
#include "radio.h"
const char *msg = "Testing 123 test why is this not on air";
void lora_comms_task(void *pvParameters)
{
sx1262_init();
sx1262_resetStats();
ESP_LOGI(TAG_RADIO, "Setting standby RC");
sx1262_setStandby(SX1262_STANDBY_RC);
ESP_LOGI(TAG_RADIO, "Getting version");
unsigned char versDat[16];
sx1262_readRegister(0x0320, versDat, 16);
ESP_LOGI(TAG_RADIO, "Version: %s", versDat);
sx1262_get_status();
// Read status
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting TCXO");
sx1262_setDIO3AsTCXOCtrl(SX1262_TCXO_VOLTAGE22dV, 320);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting Buffer base address");
sx1262_setBufferBaseAddress(0, 0);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting packet Type");
sx1262_setPacketType(SX1262_PACKET_TYPE_LORA);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting RXTX fallback mode");
sx1262_setRxTXFallbackMode(SX1262_FALLBACK_RC);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting CAD params");
sx1262_setCadParams(0x03, 0x16, 0x0A, 0, 0);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Clearing IRQ status");
sx1262_clearIrqStatus(0x43FF);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting Image rejection");
sx1262_calibrateImage(0xD7, 0xDB);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Calibrating Image rejection");
sx1262_calibrate(SX1262_CALIBRATION_ALL);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting regulator");
sx1262_setRegulatorMode(SX1262_REGULATOR_DC_DC_LDO);
sx1262_get_status();
uint8_t modType;
modType = sx1262_getPacketType();
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "ModType %d", modType);
sx1262_LoRaModulationParams_t loraModParams;
loraModParams.bandwidth = SX1262_LORA_BW_125;
loraModParams.codingRate = SX1262_LORA_CR_4_5;
loraModParams.lowDataRateOpt = 1;
loraModParams.spreadingFactor = SX1262_LORA_SF7;
ESP_LOGI(TAG_RADIO, "Setting modulation params");
sx1262_setLoRaModulationParams(&loraModParams);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting Sync word");
uint8_t syncWord[2] = {0x14, 0x24};
sx1262_writeRegister(SX1262_LORA_SYNC_WORD_MSB, syncWord, 2);
sx1262_get_status();
uint8_t ocpBuf[1] = {SX126X_OCP_LEVEL_SX1262};
ESP_LOGI(TAG_RADIO, "Setting overcurrent protection");
sx1262_writeRegister(SX126X_OCP_CONFIGURATION, ocpBuf, 1);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting RF Switch out");
sx1262_setDIO2AsRfSwitchCtrl(1);
sx1262_get_status();
sx1262_LoRaPacketParams_t loraPacketParams;
loraPacketParams.preambleLength = 10;
loraPacketParams.crcType = SX1262_CRC_ON;
loraPacketParams.headerType = SX1262_HEADER_TYPE_VARIABLE;
loraPacketParams.invertIQ = SX1262_STANDARD_IQ;
loraPacketParams.payloadLength = sizeof(msg);
ESP_LOGI(TAG_RADIO, "Setting packet params");
sx1262_setLoRaPacketParams(&loraPacketParams);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting frequency");
sx1262_setFrequency(869525000);
uint8_t clampConfig[1] = {0xDE};
ESP_LOGI(TAG_RADIO, "Setting TX clamp");
sx1262_writeRegister(SX126X_TX_CLAMP_CONFIG, clampConfig, 1);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting TX power");
sx1262_configure_tx_power(0x04, 0x07, 0x01, LORA_TX_POWER, SX1262_Ramp_200U);
sx1262_get_status();
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting standby XOSC");
sx1262_setStandby(SX1262_STANDBY_XOSC);
sx1262_get_status();
sx1262_setDioIrqParams(SX1262_IRQ_ALL, SX1262_IRQ_TXDone, 0, 0);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Setting buffer base address");
sx1262_setBufferBaseAddress(0, 0);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Writing message");
sx1262_writeBuffer(0, (uint8_t *)msg, sizeof(msg));
ESP_LOGI(TAG_RADIO, "Clearing IRQs");
sx1262_clearIrqStatus(SX1262_IRQ_ALL);
// sx1262_setTxContinuousWave();
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Getting modulation type...");
modType = sx1262_getPacketType();
ESP_LOGI(TAG_RADIO, "ModType %d", modType);
sx1262_get_status();
// ESP_LOGI(TAG_RADIO, "Enabling CW...");
// sx1262_setTxContinuousWave();
// sx1262_get_status();
uint8_t txModulation[1] = {0x04};
ESP_LOGI(TAG_RADIO, "Setting modulation thing");
sx1262_writeRegister(SX126X_TX_MODULATION, txModulation, 1);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Clearing IRQs");
sx1262_clearIrqStatus(SX1262_IRQ_ALL);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Enabling TX...");
sx1262_setMode(SX1262_TRANSMIT_MODE, 0);
sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Waiting for TX finish");
while (1)
{
if (gpio_get_level(LORA_DIO1))
{
ESP_LOGI(TAG_RADIO, "Got IRQin");
uint16_t irqS = sx1262_getIrqStatus();
if (irqS & SX1262_IRQ_TXDone)
{
break;
}
}
vTaskDelay(pdMS_TO_TICKS(10));
}
// vTaskDelay(pdMS_TO_TICKS(2000));
// ESP_LOGI(TAG_RADIO, "Returning back to sleep");
// sx1262_setStandby(SX1262_STANDBY_XOSC);
// sx1262_get_status();
ESP_LOGI(TAG_RADIO, "Clearing IRQs");
sx1262_clearIrqStatus(SX1262_IRQ_TXDone);
sx1262_get_status();
while (1)
{
vTaskDelay(pdMS_TO_TICKS(1000));
}
// Set frequency to 868 MHz
// Set TX power to 22 dBm
// sx1262_setTxContinuousWave();
}

14
main/components/radio.h Normal file
View File

@@ -0,0 +1,14 @@
#ifndef RADIO_COMPONENT
#define RADIO_COMPONENT
#define LORA_POWER_LOW 2
#define LORA_POWER_HIGH 20
#define LORA_POWER_MAX_MAYBE_UNSAFE 22
#define LORA_TX_POWER LORA_POWER_LOW
#define TAG_RADIO "RADIO"
void lora_comms_task(void *pvParameters);
#endif

View File

@@ -20,16 +20,20 @@ void i2c_sensors_task(void *pvParameters)
bme680b_init();
mpu9250_init();
mcp23018_init();
ina260_init();
ccs811_init();
mcp3550_spi_init();
configure_led();
int16_t accel[3], gyro[3], temp;
float accel_f[3], gyro_f[3], temp_f;
uint16_t eCO2;
uint16_t tvoc;
uint8_t currentCCS;
uint16_t rawData;
uint16_t volts;
uint16_t current;
uint16_t power;
@@ -51,19 +55,23 @@ void i2c_sensors_task(void *pvParameters)
else
{
data.barometric_pressure = data.barometric_pressure / 100;
// ESP_LOGI(TAG, "dewpoint temperature:%.2f °C", data.dewpoint_temperature);
ESP_LOGI(TAG_BME, "dewpoint temperature:%.2f °C", data.dewpoint_temperature);
ESP_LOGI(TAG_BME, "air temperature: %.2f °C", data.air_temperature);
ESP_LOGI(TAG_BME, "relative humidity: %.2f %%", data.relative_humidity);
ESP_LOGI(TAG_BME, "barometric pressure: %.2f hPa", data.barometric_pressure);
// ESP_LOGI(TAG, "gas resistance: %.2f kOhms", data.gas_resistance / 1000);
// ESP_LOGI(TAG, "iaq score: %u (%s)", data.iaq_score, bme680_air_quality_to_string(data.iaq_score));
ccs811_set_env_data(data.air_temperature, data.relative_humidity);
ESP_LOGI(TAG_BME, "gas resistance: %.2f kOhms", data.gas_resistance / 1000);
ESP_LOGI(TAG_BME, "iaq score: %u (%s)", data.iaq_score, bme680_air_quality_to_string(data.iaq_score));
}
} else {
}
else
{
bme680b_init();
}
ccs811_get_data(&eCO2, &tvoc);
ccs811_get_data(&eCO2, &tvoc, &currentCCS, &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 (mpu9250_read_sensor_data(MPU9250_DEV_HANDLE, accel, gyro, &temp) == ESP_OK)
{
@@ -81,6 +89,15 @@ void i2c_sensors_task(void *pvParameters)
ina260_readParams(&volts, &current, &power);
ina260_printParams(volts, current, power);
float VREFVoltage = volts * 1.25 / 1000; //Mame vobec nieco na VREFE? Na scheme su len medzi sebou prepojene
mics_adc_data_t ADCData = mcp3550_read_all(5.0); // vref = 5.0V
log_mics_adc_values(&ADCData);
ADCData = mcp3550_read_all(VREFVoltage);
log_mics_adc_values(&ADCData);
gpio_set_level(BLINK_GPIO, s_led_state);
/* Toggle the LED state */
s_led_state = !s_led_state;

View File

@@ -7,6 +7,8 @@
#include <bme680.h>
#include "esp_mac.h"
#include "../hw/mcp3550.h"
#include "../hw/bme680b.h"
#include "../hw/ccs811.h"
#include "../hw/i2cbrn.h"