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:
parent
1bd06b3b2d
commit
a566789d42
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user