[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.
|
||||
|
||||
```bash
|
||||
github.com/shaunrd0/klips/
|
||||
shaunrd0/klips/
|
||||
├── ansible # Ansible roles, playbooks, and examples
|
||||
├── blockchain # Blockchain related project templates and examples
|
||||
├── cpp # C++ programs, datastructures, and other examples
|
||||
@ -12,6 +12,6 @@ github.com/shaunrd0/klips/
|
||||
├── figlet # Figlet fonts I like :)
|
||||
├── javascript # Javascript projects and examples
|
||||
├── 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
|
||||
|
||||
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.
|
||||
|
@ -1,5 +1,9 @@
|
||||
# 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/).
|
||||
|
@ -1,5 +1,9 @@
|
||||
# 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.
|
||||
|
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.
|
||||
├── 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.
|
||||
├── 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-dev-module.png
|
||||
└── 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).
|
||||
|
||||
The board selected in [Arduino IDE](https://www.arduino.cc/en/software) is ESP32 Dev Module -
|
||||
|
||||

|
||||
All examples after `04_esp-idf-arduino` are built with cmake and the [ESP-IDF](https://github.com/espressif/esp-idf).
|
||||
|
||||
[Arduino ESP32 GitHub](https://github.com/espressif/arduino-esp32) \
|
||||
[Arduino ESP32 API reference](https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html)
|
Loading…
x
Reference in New Issue
Block a user