--- title: ESP32 PlatformIO description: Microcontroller development project setup / template date: 2020-05-03 #tags: ["esp32", "project", "platformio", "microcontroller", "programming"] categories: ["tutorial"] author: hendrik license: WTFPL --- ![ESP32 Lora Board](esp-lora-board.jpg) ## Install PlatformIO ```shell apt install platformio platformio platform update ``` ## Project setup Choose your development board from the list. You can see all supported boards with the command: `platformio boards espressif32` Now create your new project: ```shell cd ~/Projects/esp32/ mkdir new_project cd new_project platformio project init --board esp-wrover-kit ``` ## Configuration #### platformio.ini: ```ini {linenos=table} [env:esp-wrover-kit] platform = espressif32 board = esp-wrover-kit framework = arduino monitor_speed = 115200 #build_flags = # -DBOARD_HAS_PSRAM # -mfix-esp32-psram-cache-issue # -DCONFIG_SPIRAM_CACHE_WORKAROUND # -DCORE_DEBUG_LEVEL=5 # #board_build.partitions = huge_app.csv # #lib_deps = # TFT_eSPI ``` ## Code #### src/main.cpp: ```c++ {linenos=table} /** * Blink * * Turns on an LED on for one second, * then off for one second, repeatedly. */ #include #ifndef LED_BUILTIN #define LED_BUILTIN 13 #endif void setup() { // initialize LED digital pin as an output. pinMode(LED_BUILTIN, OUTPUT); } void loop() { // turn the LED on (HIGH is the voltage level) digitalWrite(LED_BUILTIN, HIGH); // wait for a second delay(1000); // turn the LED off by making the voltage LOW digitalWrite(LED_BUILTIN, LOW); // wait for a second delay(1000); } ``` now compile and upload your program ```shell platformio run platformio run --target upload platformio device monitor ``` ## SPIFFS ```shell mkdir data/ ``` place your files in the directory `data/` ```shell platformio run --target uploadfs ``` ## Git #### .gitignore: ``` .pio ``` and push to your project on github or gitlab: ```shell touch README.md git init git commit -m "first commit" git remote add origin https://gitlab.com/username/new_project.git git push -u origin master ``` ## License #### LICENSE: ``` DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 Copyright (C) 2004 Sam Hocevar Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. You just DO WHAT THE FUCK YOU WANT TO. ``` ## Project structure ```text {hl_lines=["2-5",7]} new_project/ ├── README.md ├── LICENSE ├── platformio.ini ├── .gitignore ├── src │   └── main.cpp ├── data ├── include │   └── README ├── lib │   └── README └── test └── README ```