save some implementation
This commit is contained in:
0
main/components/packets.h
Normal file
0
main/components/packets.h
Normal file
207
main/components/radio.c
Normal file
207
main/components/radio.c
Normal 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
14
main/components/radio.h
Normal 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
|
@@ -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, ¤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 (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, ¤t, &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;
|
||||
|
@@ -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"
|
||||
|
Reference in New Issue
Block a user