1
0
mirror of https://github.com/peterantypas/maiana.git synced 2025-05-15 15:00:08 -07:00

Abandoning for now

This commit is contained in:
Peter Antypas 2023-04-25 15:43:27 -07:00
parent 1bd06b3b2d
commit a566789d42
3 changed files with 79 additions and 16 deletions

View File

@ -14,5 +14,6 @@ void bsp_set_uart_rx_cb(uart_rx_cb_t *cb);
void bsp_set_button_isr_cb(button_isr_cb_t *cb);
void bsp_set_timer_cb(timer_cb_t *cb);
void bsp_uart_write(const char *txt);
int bsp_read_vbat();
#endif

View File

@ -2,10 +2,14 @@
#include "nvs_flash.h"
#include "driver/uart.h"
#include "driver/gpio.h"
#include "driver/i2c.h"
#include "hal/gpio_hal.h"
#include <string.h>
#include "freertos/timers.h"
#include "esp_intr_alloc.h"
#include <esp_log.h>
#define TAG "bsp"
static uart_rx_cb_t *uart_cb = NULL;
static button_isr_cb_t *btn_cb = NULL;
@ -24,6 +28,10 @@ uint8_t dtmp[RD_BUF_SIZE];
#define GPIO_GREEN_LED GPIO_NUM_4
#define GPIO_STM32_RESET_N GPIO_NUM_12
#define GPIO_STM32_TX_EN GPIO_NUM_13
#define I2C_MASTER_SCL_IO GPIO_NUM_22
#define I2C_MASTER_SDA_IO GPIO_NUM_21
#define I2C_MASTER_FREQ_HZ 100000
#define I2C_ADC_ADDRESS 0x48
void uart_rx_task(void *params)
{
@ -106,15 +114,31 @@ void bsp_timer_init()
xTimerStart(timer_h, 0);
}
static esp_err_t i2c_master_init(void)
{
i2c_config_t conf =
{
.mode = I2C_MODE_MASTER,
.sda_io_num = I2C_MASTER_SDA_IO,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_io_num = I2C_MASTER_SCL_IO,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = I2C_MASTER_FREQ_HZ,
};
esp_err_t err = i2c_param_config(I2C_NUM_0, &conf);
if (err != ESP_OK)
{
return err;
}
return i2c_driver_install(I2C_NUM_0, I2C_MODE_MASTER, 0, 0, 0);
}
void bsp_hw_init()
{
bsp_uart_init();
//config_gpio(GPIO_TX_BUTTON, GPIO_MODE_INPUT, false, false);
//gpio_set_direction(GPIO_TX_BUTTON, GPIO_MODE_INPUT);
//gpio_set_intr_type(GPIO_TX_BUTTON, GPIO_INTR_NEGEDGE);
config_gpio(GPIO_RED_LED, GPIO_MODE_OUTPUT, false, false);
config_gpio(GPIO_GREEN_LED, GPIO_MODE_OUTPUT, false, false);
config_gpio(GPIO_STM32_RESET_N, GPIO_MODE_OUTPUT_OD, false, false);
@ -122,21 +146,15 @@ void bsp_hw_init()
config_gpio(GPIO_STM32_TX_EN, GPIO_MODE_OUTPUT_OD, false, false);
gpio_set_level(GPIO_STM32_TX_EN, 1);
// Force a reset of the STM32 just in case
gpio_set_level(GPIO_STM32_RESET_N, 0);
usleep(2000);
gpio_set_level(GPIO_STM32_RESET_N, 1);
#if 0
gpio_set_direction(GPIO_RED_LED, GPIO_MODE_OUTPUT);
gpio_set_direction(GPIO_GREEN_LED, GPIO_MODE_OUTPUT);
gpio_set_level(GPIO_RED_LED, 1);
gpio_set_level(GPIO_GREEN_LED, 1);
#endif
//gpio_install_isr_service(0);
//gpio_isr_handler_add(GPIO_TX_BUTTON, btn_isr, NULL);
bsp_timer_init();
if ( i2c_master_init() != ESP_OK )
ESP_LOGE(TAG, "Unable to initialize I2C master 0");
}
void bsp_reboot()
@ -144,3 +162,27 @@ void bsp_reboot()
esp_restart();
}
int bsp_read_vbat()
{
int sum = 0, cnt = 0;
for ( int i = 0; i < 16; ++i )
{
uint8_t result[2] = {0};
esp_err_t err = i2c_master_read_from_device(I2C_NUM_0, I2C_ADC_ADDRESS, result, sizeof(result), 100/portTICK_PERIOD_MS);
if ( err != ESP_OK )
{
ESP_LOGE(TAG, "Error reading from ADC: %s", esp_err_to_name(err));
return -1;
}
int mV = (result [0] << 8 | result[1]) * 3284 / 4095;
//ESP_LOGI(TAG, "ADC reading: %.2x %.2x", result[0], result[1]);
sum += mV;
++cnt;
}
int v = sum/cnt * 2; // Voltage is divided by two on the board
//return mV * 2;
return v;
}

View File

@ -18,6 +18,24 @@ void one_sec_timer()
esp_event_isr_post(MAIANA_EVENT, ONE_SEC_TIMER_EVENT, NULL, 0, NULL);
}
static int sec_count = 0;
static float voltage = 0.0f;
static float alpha = 0.1;
static void one_sec_handler(void *args, esp_event_base_t base, int32_t id, void *data)
{
float v = bsp_read_vbat() / 1000.0f;
if ( sec_count == 0 )
voltage = v;
else
voltage = alpha * v + (1.0 - alpha)*v;
++sec_count;
if ( sec_count % 10 == 0 )
ESP_LOGI("main", "Battery voltage: %.3f V", voltage);
}
void reboot_handler(void *args, esp_event_base_t base, int32_t id, void *data)
{
sleep(2);
@ -28,6 +46,8 @@ void app_main(void)
{
esp_event_loop_create_default();
esp_event_handler_register(MAIANA_EVENT, REBOOT_EVENT, reboot_handler, NULL);
esp_event_handler_register(MAIANA_EVENT, ONE_SEC_TIMER_EVENT, one_sec_handler, NULL);
//sleep(5);
config_init();
@ -36,10 +56,10 @@ void app_main(void)
bsp_set_timer_cb(one_sec_timer);
bsp_hw_init();
//bsp_read_vbat();
wifi_start();
start_httpd();
button_init();
//button_init();
nmea_gateway_start();