diff --git a/ESP32_ESP-IDF/.clangd b/ESP32_ESP-IDF/.clangd new file mode 100644 index 0000000..437f255 --- /dev/null +++ b/ESP32_ESP-IDF/.clangd @@ -0,0 +1,2 @@ +CompileFlags: + Remove: [-f*, -m*] diff --git a/ESP32_ESP-IDF/CMakeLists.txt b/ESP32_ESP-IDF/CMakeLists.txt new file mode 100644 index 0000000..36aae95 --- /dev/null +++ b/ESP32_ESP-IDF/CMakeLists.txt @@ -0,0 +1,8 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.22) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +# "Trim" the build. Include the minimal set of components, main, and anything it depends on. +idf_build_set_property(MINIMAL_BUILD ON) +project(ESP32_ESP-IDF) diff --git a/ESP32_ESP-IDF/README.md b/ESP32_ESP-IDF/README.md new file mode 100644 index 0000000..f3aa0c5 --- /dev/null +++ b/ESP32_ESP-IDF/README.md @@ -0,0 +1,53 @@ +| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-P4 | ESP32-S2 | ESP32-S3 | Linux | +| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | --------- | -------- | -------- | -------- | -------- | ----- | + +# Hello World Example + +Starts a FreeRTOS task to print "Hello World". + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## How to use example + +Follow detailed instructions provided specifically for this example. + +Select the instructions depending on Espressif chip installed on your development board: + +- [ESP32 Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/stable/get-started/index.html) +- [ESP32-S2 Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) + + +## Example folder contents + +The project **hello_world** contains one source file in C language [hello_world_main.c](main/hello_world_main.c). The file is located in folder [main](main). + +ESP-IDF projects are built using CMake. The project build configuration is contained in `CMakeLists.txt` files that provide set of directives and instructions describing the project's source files and targets (executable, library, or both). + +Below is short explanation of remaining files in the project folder. + +``` +├── CMakeLists.txt +├── pytest_hello_world.py Python script used for automated testing +├── main +│ ├── CMakeLists.txt +│ └── hello_world_main.c +└── README.md This is the file you are currently reading +``` + +For more information on structure and contents of ESP-IDF projects, please refer to Section [Build System](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html) of the ESP-IDF Programming Guide. + +## Troubleshooting + +* Program upload failure + + * Hardware connection is not correct: run `idf.py -p PORT monitor`, and reboot your board to see if there are any output logs. + * The baud rate for downloading is too high: lower your baud rate in the `menuconfig` menu, and try again. + +## Technical support and feedback + +Please use the following feedback channels: + +* For technical queries, go to the [esp32.com](https://esp32.com/) forum +* For a feature request or bug report, create a [GitHub issue](https://github.com/espressif/esp-idf/issues) + +We will get back to you as soon as possible. diff --git a/ESP32_ESP-IDF/main/CMakeLists.txt b/ESP32_ESP-IDF/main/CMakeLists.txt new file mode 100644 index 0000000..6cba8cc --- /dev/null +++ b/ESP32_ESP-IDF/main/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "main.cpp" + PRIV_REQUIRES spi_flash + INCLUDE_DIRS "") diff --git a/ESP32_ESP-IDF/main/can_task.cpp b/ESP32_ESP-IDF/main/can_task.cpp new file mode 100644 index 0000000..09ff96b --- /dev/null +++ b/ESP32_ESP-IDF/main/can_task.cpp @@ -0,0 +1,15 @@ +#include "can_receiver.hpp" +#include "mqtt_client.hpp" + +void CANTask(void*) +{ + uint16_t ppm; + + while(true) + { + if(CANReceiver::Read(ppm)) + { + MQTTClient::PublishCO2(ppm); + } + } +} \ No newline at end of file diff --git a/ESP32_ESP-IDF/main/co2_data.hpp b/ESP32_ESP-IDF/main/co2_data.hpp new file mode 100644 index 0000000..f2be30a --- /dev/null +++ b/ESP32_ESP-IDF/main/co2_data.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include + +struct CO2Data +{ + uint16_t ppm; + uint32_t timestamp; +}; \ No newline at end of file diff --git a/ESP32_ESP-IDF/main/main.cpp b/ESP32_ESP-IDF/main/main.cpp new file mode 100644 index 0000000..4429393 --- /dev/null +++ b/ESP32_ESP-IDF/main/main.cpp @@ -0,0 +1,23 @@ +#include "wifi_manager.hpp" +#include "mqtt_client.hpp" +#include "can_receiver.hpp" + +extern "C" void app_main() +{ + WifiManager::Init(); + + vTaskDelay(pdMS_TO_TICKS(5000)); + + MQTTClient::Init(); + + CANReceiver::Init(); + + xTaskCreate( + CANTask, + "CAN", + 4096, + nullptr, + 5, + nullptr + ); +} \ No newline at end of file diff --git a/ESP32_ESP-IDF/sdkconfig.ci b/ESP32_ESP-IDF/sdkconfig.ci new file mode 100644 index 0000000..e69de29