[esp] Add ESP-IDF cmake example.
This commit is contained in:
parent
e6ba60da89
commit
17c559a31f
@ -3,7 +3,7 @@
|
|||||||
This repository is a collection of useful code snippets and configurations.
|
This repository is a collection of useful code snippets and configurations.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
github.com/shaunrd0/klips/
|
shaunrd0/klips/
|
||||||
├── ansible # Ansible roles, playbooks, and examples
|
├── ansible # Ansible roles, playbooks, and examples
|
||||||
├── blockchain # Blockchain related project templates and examples
|
├── blockchain # Blockchain related project templates and examples
|
||||||
├── cpp # C++ programs, datastructures, and other examples
|
├── cpp # C++ programs, datastructures, and other examples
|
||||||
@ -12,6 +12,6 @@ github.com/shaunrd0/klips/
|
|||||||
├── figlet # Figlet fonts I like :)
|
├── figlet # Figlet fonts I like :)
|
||||||
├── javascript # Javascript projects and examples
|
├── javascript # Javascript projects and examples
|
||||||
├── python # Python scripts and tools I've made
|
├── python # Python scripts and tools I've made
|
||||||
├── README.md
|
├── scripts # Bash scripts
|
||||||
└── scripts # Bash scripts
|
└── README.md
|
||||||
```
|
```
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
# 01_led-button
|
# 01_led-button
|
||||||
|
|
||||||
|
This example is largely adapted from those in [ESP32-basic-starter-kit.pdf](./ESP32-basic-starter-kit.pdf).
|
||||||
|
|
||||||
|
The APIs in the original examples paired with this PDF have changed, and I decided to do some different things with the code and/or circuits, but the original code can be [found here](https://www.dropbox.com/scl/fo/6znlij3eb23ih4jxcpv2w/AKvB1t9CCUgoVRVtGen8Yrw?rlkey=z84anl0hs940qf9fpl7l8q8q2&e=1&dl=0).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Simple LED controlled by an on-board button.
|
Simple LED controlled by an on-board button.
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
# 02_led-button-web
|
# 02_led-button-web
|
||||||
|
|
||||||
|
This example is largely adapted from those in [ESP32-basic-starter-kit.pdf](./ESP32-basic-starter-kit.pdf).
|
||||||
|
|
||||||
|
The APIs in the original examples paired with this PDF have changed, and I decided to do some different things with the code and/or circuits, but the original code can be [found here](https://www.dropbox.com/scl/fo/6znlij3eb23ih4jxcpv2w/AKvB1t9CCUgoVRVtGen8Yrw?rlkey=z84anl0hs940qf9fpl7l8q8q2&e=1&dl=0).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
This example uses the same schematic as [01_led-button](../01_led-button/).
|
This example uses the same schematic as [01_led-button](../01_led-button/).
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
# 03_temp-humidity-web
|
# 03_temp-humidity-web
|
||||||
|
|
||||||
|
This example is largely adapted from those in [ESP32-basic-starter-kit.pdf](./ESP32-basic-starter-kit.pdf).
|
||||||
|
|
||||||
|
The APIs in the original examples paired with this PDF have changed, and I decided to do some different things with the code and/or circuits, but the original code can be [found here](https://www.dropbox.com/scl/fo/6znlij3eb23ih4jxcpv2w/AKvB1t9CCUgoVRVtGen8Yrw?rlkey=z84anl0hs940qf9fpl7l8q8q2&e=1&dl=0).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Temperature and humidity sensor served on a web page within the local network.
|
Temperature and humidity sensor served on a web page within the local network.
|
||||||
|
4
esp/cpp/04_esp-idf-arduino/.gitignore
vendored
Normal file
4
esp/cpp/04_esp-idf-arduino/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
build
|
||||||
|
managed_components
|
||||||
|
dependencies.lock
|
||||||
|
sdkconfig.old
|
18
esp/cpp/04_esp-idf-arduino/CMakeLists.txt
Normal file
18
esp/cpp/04_esp-idf-arduino/CMakeLists.txt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# For more information about build system see
|
||||||
|
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
|
||||||
|
# The following five 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.26)
|
||||||
|
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
|
||||||
|
project(
|
||||||
|
#[[NAME]] esp-idf-arduino
|
||||||
|
VERSION 0.1
|
||||||
|
DESCRIPTION "Example ESP-IDF cmake project"
|
||||||
|
LANGUAGES CXX
|
||||||
|
)
|
||||||
|
|
||||||
|
# For writing pure cmake components, see the documentation
|
||||||
|
# https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components
|
||||||
|
idf_build_set_property(COMPILE_OPTIONS "-Wno-error" APPEND)
|
81
esp/cpp/04_esp-idf-arduino/README.md
Normal file
81
esp/cpp/04_esp-idf-arduino/README.md
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
# 04_esp-idf-arduino
|
||||||
|
|
||||||
|
There is no schematic for this example, it simply prints some output to the serial monitor at 115200.
|
||||||
|
This is more of a build system example for untethering yourself from the Arduino IDE.
|
||||||
|
|
||||||
|
To build this example you can run the following commands.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# See Dependencies section below for instructions.
|
||||||
|
source ~/path/to/esp-idf/export.sh
|
||||||
|
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make -j $(nproc)
|
||||||
|
|
||||||
|
# Flash the example to the ESP.
|
||||||
|
make flash
|
||||||
|
|
||||||
|
# Check the serial monitor for 'Hello world!' output.
|
||||||
|
idf.py monitor -b 115200
|
||||||
|
```
|
||||||
|
|
||||||
|
To flash to your ESP or access the `idf.py menuconfig` menu from the ESP-IDF you can run the same commands with `make`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make flash
|
||||||
|
make menuconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
If Ninja is preferred:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake .. -G Nina
|
||||||
|
ninja
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
Install the [ESP-IDF](https://github.com/espressif/esp-idf?tab=readme-ov-file#setup-build-environment)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# https://docs.espressif.com/projects/esp-idf/en/v5.3.2/esp32/get-started/linux-macos-setup.html#for-linux-users
|
||||||
|
sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
|
||||||
|
|
||||||
|
git clone -b v5.3.2 --recursive https://github.com/espressif/esp-idf
|
||||||
|
cd esp-idf
|
||||||
|
./install.sh
|
||||||
|
. ./export.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
In CLion there is an official [Serial Monitor](https://plugins.jetbrains.com/plugin/8031-serial-port-monitor) plugin, or use ESP-IDF -
|
||||||
|
|
||||||
|
```bash
|
||||||
|
idf.py monitor -b 115200
|
||||||
|
```
|
||||||
|
|
||||||
|
## Starting Over
|
||||||
|
|
||||||
|
To set up this project from scratch the following commands were used
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# My example project directory
|
||||||
|
cd ~/Code/klips/esp/cpp/04_esp-idf-arduino
|
||||||
|
idf.py set-target esp32
|
||||||
|
idf.py add-dependency "espressif/arduino-esp32^3.1.1"
|
||||||
|
|
||||||
|
# Autostart Arduino for use of `loop()` and `setup()` functions
|
||||||
|
# You can also use the esp-idf `app_main()` function if preferred
|
||||||
|
# https://docs.espressif.com/projects/arduino-esp32/en/latest/esp-idf_component.html#configuration
|
||||||
|
# You can alternatively do this in the GUI tool `idf.py menuconfig`
|
||||||
|
echo "CONFIG_AUTOSTART_ARDUINO=y" >> sdkconfig
|
||||||
|
sed -i -e 's/CONFIG_FREERTOS_HZ=100/CONFIG_FREERTOS_HZ=1000/' sdkconfig
|
||||||
|
|
||||||
|
# Build the project
|
||||||
|
idf.py build
|
||||||
|
```
|
||||||
|
|
||||||
|
To set this project up in CLion, see [JetBrains documentation](https://www.jetbrains.com/help/clion/esp-idf.html#env-vars).
|
4
esp/cpp/04_esp-idf-arduino/main/CMakeLists.txt
Normal file
4
esp/cpp/04_esp-idf-arduino/main/CMakeLists.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
idf_component_register(
|
||||||
|
SRCS "main.cpp"
|
||||||
|
INCLUDE_DIRS "."
|
||||||
|
)
|
17
esp/cpp/04_esp-idf-arduino/main/idf_component.yml
Normal file
17
esp/cpp/04_esp-idf-arduino/main/idf_component.yml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
## IDF Component Manager Manifest File
|
||||||
|
dependencies:
|
||||||
|
## Required IDF version
|
||||||
|
idf:
|
||||||
|
version: '>=4.1.0'
|
||||||
|
# # Put list of dependencies here
|
||||||
|
# # For components maintained by Espressif:
|
||||||
|
# component: "~1.0.0"
|
||||||
|
# # For 3rd party components:
|
||||||
|
# username/component: ">=1.0.0,<2.0.0"
|
||||||
|
# username2/component2:
|
||||||
|
# version: "~1.0.0"
|
||||||
|
# # For transient dependencies `public` flag can be set.
|
||||||
|
# # `public` flag doesn't have an effect dependencies of the `main` component.
|
||||||
|
# # All dependencies of `main` are public by default.
|
||||||
|
# public: true
|
||||||
|
espressif/arduino-esp32: ^3.1.1
|
10
esp/cpp/04_esp-idf-arduino/main/main.cpp
Normal file
10
esp/cpp/04_esp-idf-arduino/main/main.cpp
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
Serial.println("Hello world!");
|
||||||
|
delay(1000);
|
||||||
|
}
|
2405
esp/cpp/04_esp-idf-arduino/sdkconfig
Normal file
2405
esp/cpp/04_esp-idf-arduino/sdkconfig
Normal file
File diff suppressed because it is too large
Load Diff
@ -5,18 +5,15 @@ shaunrd0/klips/esp/
|
|||||||
├── 01_led-button # Simple LED circuit controlled by an on board button.
|
├── 01_led-button # Simple LED circuit controlled by an on board button.
|
||||||
├── 02_led-button-web # LED controlled by a button or within a web browser.
|
├── 02_led-button-web # LED controlled by a button or within a web browser.
|
||||||
├── 03_temp-humidity-web # Temperature and humidity sensor within a web browser.
|
├── 03_temp-humidity-web # Temperature and humidity sensor within a web browser.
|
||||||
|
├── 04_esp-idf-arduino # CMake example instead of Arduino IDE for ESP development.
|
||||||
├── ESP32-basic-starter-kit.pdf # PDF for tutorials in ESP32 starter kit.
|
├── ESP32-basic-starter-kit.pdf # PDF for tutorials in ESP32 starter kit.
|
||||||
├── ESP32-dev-module.png
|
├── ESP32-dev-module.png
|
||||||
└── README.md
|
└── README.md
|
||||||
```
|
```
|
||||||
|
|
||||||
This directory contains ESP32 projects largely adapted from the examples in [ESP32-basic-starter-kit.pdf](./ESP32-basic-starter-kit.pdf).
|
Examples 1-3 are built using the Arduino IDE.
|
||||||
|
|
||||||
The APIs in the original examples paired with this PDF have changed, and I decided to do some different things with the code and/or circuits, but the original code can be [found here](https://www.dropbox.com/scl/fo/6znlij3eb23ih4jxcpv2w/AKvB1t9CCUgoVRVtGen8Yrw?rlkey=z84anl0hs940qf9fpl7l8q8q2&e=1&dl=0).
|
All examples after `04_esp-idf-arduino` are built with cmake and the [ESP-IDF](https://github.com/espressif/esp-idf).
|
||||||
|
|
||||||
The board selected in [Arduino IDE](https://www.arduino.cc/en/software) is ESP32 Dev Module -
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
[Arduino ESP32 GitHub](https://github.com/espressif/arduino-esp32) \
|
[Arduino ESP32 GitHub](https://github.com/espressif/arduino-esp32) \
|
||||||
[Arduino ESP32 API reference](https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html)
|
[Arduino ESP32 API reference](https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html)
|
Loading…
x
Reference in New Issue
Block a user