From 761184d6450fc25d4a32a91c07c79a8e76791405 Mon Sep 17 00:00:00 2001 From: Nicholas Kruzan Date: Mon, 8 May 2023 15:01:20 +0000 Subject: [PATCH] AP_HAL_ESP32: add board esp32nick --- libraries/AP_HAL_ESP32/boards/esp32nick.h | 124 ++++++++++++++++++ .../AP_HAL_ESP32/hwdef/esp32nick/README.MD | 44 +++++++ .../AP_HAL_ESP32/hwdef/esp32nick/hwdef.dat | 0 3 files changed, 168 insertions(+) create mode 100644 libraries/AP_HAL_ESP32/boards/esp32nick.h create mode 100644 libraries/AP_HAL_ESP32/hwdef/esp32nick/README.MD create mode 100644 libraries/AP_HAL_ESP32/hwdef/esp32nick/hwdef.dat diff --git a/libraries/AP_HAL_ESP32/boards/esp32nick.h b/libraries/AP_HAL_ESP32/boards/esp32nick.h new file mode 100644 index 0000000000..c429918981 --- /dev/null +++ b/libraries/AP_HAL_ESP32/boards/esp32nick.h @@ -0,0 +1,124 @@ +/* + * This file is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +#pragma once + +#define HAL_ESP32_BOARD_NAME "esp32-nick" +// CONFIG_HAL_BOARD_SUBTYPE HAL_BOARD_SUBTYPE_ESP32_NICK + +#define TRUE 1 +#define FALSE 0 + +// make sensor selection clearer +#define PROBE_IMU_I2C(driver, bus, addr, args ...) ADD_BACKEND(AP_InertialSensor_ ## driver::probe(*this,GET_I2C_DEVICE(bus, addr),##args)) +#define PROBE_IMU_SPI(driver, devname, args ...) ADD_BACKEND(AP_InertialSensor_ ## driver::probe(*this,hal.spi->get_device(devname),##args)) +#define PROBE_IMU_SPI2(driver, devname1, devname2, args ...) ADD_BACKEND(AP_InertialSensor_ ## driver::probe(*this,hal.spi->get_device(devname1),hal.spi->get_device(devname2),##args)) + +#define PROBE_BARO_I2C(driver, bus, addr, args ...) ADD_BACKEND(AP_Baro_ ## driver::probe(*this,std::move(GET_I2C_DEVICE(bus, addr)),##args)) +#define PROBE_BARO_SPI(driver, devname, args ...) ADD_BACKEND(AP_Baro_ ## driver::probe(*this,std::move(hal.spi->get_device(devname)),##args)) + +#define PROBE_MAG_I2C(driver, bus, addr, args ...) ADD_BACKEND(DRIVER_ ##driver, AP_Compass_ ## driver::probe(GET_I2C_DEVICE(bus, addr),##args)) +#define PROBE_MAG_SPI(driver, devname, args ...) ADD_BACKEND(DRIVER_ ##driver, AP_Compass_ ## driver::probe(hal.spi->get_device(devname),##args)) +#define PROBE_MAG_IMU(driver, imudev, imu_instance, args ...) ADD_BACKEND(DRIVER_ ##driver, AP_Compass_ ## driver::probe_ ## imudev(imu_instance,##args)) +#define PROBE_MAG_IMU_I2C(driver, imudev, bus, addr, args ...) ADD_BACKEND(DRIVER_ ##driver, AP_Compass_ ## driver::probe_ ## imudev(GET_I2C_DEVICE(bus,addr),##args)) +//------------------------------------ + +#define CONFIG_HAL_BOARD_SUBTYPE HAL_BOARD_SUBTYPE_ESP32_NICK + +//-----INS/IMU----- +#define HAL_INS_DEFAULT HAL_INS_MPU9250_SPI +#define HAL_INS_MPU9250_NAME "mpu9250" +#define HAL_INS_PROBE_LIST PROBE_IMU_SPI( Invensense, HAL_INS_MPU9250_NAME, ROTATION_NONE) + +// -----BARO----- +#define HAL_BARO_DEFAULT HAL_BARO_BMP280_SPI +#define HAL_BARO_BMP280_NAME "BMP280" +#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(BMP280, "bmp280") +// allow boot without a baro +#define HAL_BARO_ALLOW_INIT_NO_BARO 1 + +//-----ADC----- +#define HAL_USE_ADC TRUE + +// pin number, +// gain/multiplier, +// the ardupilot name for the pin in parameter/s. +#define HAL_ESP32_ADC_PINS {\ + {ADC1_GPIO35_CHANNEL, 11, 34},\ + {ADC1_GPIO34_CHANNEL, 11, 35},\ + {ADC1_GPIO39_CHANNEL, 11, 39},\ + {ADC1_GPIO36_CHANNEL, 11, 36}\ +} + +//-----COMPASS----- +#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE) +#define HAL_PROBE_EXTERNAL_I2C_COMPASSES 1 +#define ALLOW_ARM_NO_COMPASS 1 +#define AP_COMPASS_AK8963_ENABLED TRUE +//-----WIFI----- + +#define HAL_ESP32_WIFI 1 // 2 use udp, 1 use tcp +#define WIFI_SSID "ardupilot123" +#define WIFI_PWD "ardupilot123" + +//-----RCOUT----- +#define HAL_ESP32_RCOUT { \ + GPIO_NUM_21, \ + GPIO_NUM_22, \ + GPIO_NUM_27, \ + GPIO_NUM_25, \ + GPIO_NUM_32, \ + GPIO_NUM_33 } + +//-----SPIBUS----- +#define HAL_ESP32_SPI_BUSES \ + {.host=VSPI_HOST, .dma_ch=1, .mosi=GPIO_NUM_23, .miso=GPIO_NUM_19, .sclk=GPIO_NUM_18} + +//-----SPIDEVICES----- +#define HAL_ESP32_SPI_DEVICES \ + {.name="mpu9250", .bus=0, .device=1, .cs=GPIO_NUM_5, .mode = 0, .lspeed=2*MHZ, .hspeed=8*MHZ} + +//-----I2CBUS----- +#define HAL_ESP32_I2C_BUSES \ + {.port=I2C_NUM_0, .sda=GPIO_NUM_13, .scl=GPIO_NUM_12, .speed=400*KHZ, .internal=true} + +//-----RCIN----- +#define HAL_ESP32_RCIN GPIO_NUM_4 +//RMT pin number +#define HAL_ESP32_RMT_RX_PIN_NUMBER 4 +//-----UARTS----- +#define HAL_ESP32_UART_DEVICES \ + {.port=UART_NUM_0, .rx=GPIO_NUM_3, .tx=GPIO_NUM_1 } \ + ,{.port=UART_NUM_1, .rx=GPIO_NUM_16, .tx=GPIO_NUM_17 } + +//FILESYSTEM SUPPORT +#define HAVE_FILESYSTEM_SUPPORT 1 +#define HAL_OS_POSIX_IO 1 +#define HAL_BOARD_STORAGE_DIRECTORY "/SDCARD/APM/STORAGE" +#define HAL_ESP32_SDMMC 1 +#define HAL_ESP32_SDCARD 1 + +//LOGGING +#define HAL_BOARD_LOG_DIRECTORY "/SDCARD/APM/LOGS" +#define LOGGER_MAVLINK_SUPPORT 1 +#define HAL_LOGGING_BACKENDS_DEFAULT 1 +#define HAL_LOGGING_DATAFLASH_ENABLED 0 +#define HAL_LOGGING_MAVLINK_ENABLED 0 +//TERRAIN +#define HAL_BOARD_TERRAIN_DIRECTORY "/SDCARD/APM/TERRAIN" + +// see boards.py +#ifndef ENABLE_HEAP +#define ENABLE_HEAP 1 +#endif \ No newline at end of file diff --git a/libraries/AP_HAL_ESP32/hwdef/esp32nick/README.MD b/libraries/AP_HAL_ESP32/hwdef/esp32nick/README.MD new file mode 100644 index 0000000000..5976e8b8c2 --- /dev/null +++ b/libraries/AP_HAL_ESP32/hwdef/esp32nick/README.MD @@ -0,0 +1,44 @@ +IMU MPU9250 +NCS IO5 +SDA IO23 +ADO IO19 +SCL IO18 + +GPS W/COMPASS +TX IO17 +RX IO16 +SDA IO13 +SCL IO12 + +BARO BMP280 +SDA IO13 +SCL IO12 + +TELEM (UART0) +TX IO1 +RX IO3 + +TELEM (UART1) +WIFI TCP + +RCIN (PPM) +PPM IO4 + +SDMMC +CMD IO15 +CLK IO14 +D0 IO2 + +ANALOG IN +IO34 +IO35 +IO36 +IO39 + +PWMOUT +IO21 +IO22 +IO25 +IO27 +IO32 +IO33 \ No newline at end of file diff --git a/libraries/AP_HAL_ESP32/hwdef/esp32nick/hwdef.dat b/libraries/AP_HAL_ESP32/hwdef/esp32nick/hwdef.dat new file mode 100644 index 0000000000..e69de29bb2