From 7079bfb8a40944d47da3548a9b0af91483c683f5 Mon Sep 17 00:00:00 2001 From: Mickyleitor Date: Tue, 12 Aug 2025 00:35:14 +0200 Subject: [PATCH 1/2] Add platformIO in all projects. Modify actions to compile with pio --- .github/workflows/build.yaml | 107 ++++++------------ Firmware_Arduino/.gitignore | 5 + Firmware_Arduino/platformio.ini | 16 +++ Firmware_ESP8266/.gitignore | 5 + .../platformio.ini | 17 ++- 5 files changed, 70 insertions(+), 80 deletions(-) create mode 100644 Firmware_Arduino/.gitignore create mode 100644 Firmware_Arduino/platformio.ini create mode 100644 Firmware_ESP8266/.gitignore rename platformio.ini => Firmware_ESP8266/platformio.ini (60%) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 1a15e2d..fd72fd0 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,83 +1,50 @@ -# This is the name of the workflow, visible on GitHub UI. name: build -# Here we tell GitHub to run the workflow when a commit -# is pushed or a Pull Request is opened. on: [push, pull_request] -# This is the list of jobs that will be run concurrently. -# Since we use a build matrix, the actual number of jobs -# started depends on how many configurations the matrix -# will produce. jobs: - # This is the name of the job - can be whatever. build: - - # Here we tell GitHub that the jobs must be determined - # dynamically depending on a matrix configuration. strategy: matrix: - # The matrix will produce one job for each configuration - # parameter of type `arduino-platform`, in this case a - # total of 2. - arduino-platform: ["arduino:avr","esp8266:esp8266"] - # This is usually optional but we need to statically define the - # FQBN of the boards we want to test for each platform. In the - # future the CLI might automatically detect and download the core - # needed to compile against a certain FQBN, at that point the - # following `include` section will be useless. - include: - # This works like this: when the platform is "arduino:samd", the - # variable `fqbn` is set to "arduino:samd:nano_33_iot". - - arduino-platform: "arduino:avr" - fqbn: "arduino:avr:pro:cpu=8MHzatmega328" - - arduino-platform: "arduino:avr" - libraries: "LowPower_LowPowerLab" - - arduino-platform: "arduino:avr" - project_dir: "Firmware_Arduino" - - - arduino-platform: "esp8266:esp8266" - fqbn: "esp8266:esp8266:generic" - - arduino-platform: "esp8266:esp8266" - libraries: "LiquidCrystal_PCF8574" - - arduino-platform: "esp8266:esp8266" - project_dir: "Firmware_ESP8266" - - # This is the platform GitHub will use to run our workflow, we - # pick Windows for no particular reason. - runs-on: windows-latest + project_dir: ["Firmware_Arduino", "Firmware_ESP8266"] + runs-on: ubuntu-latest - # This is the list of steps this job will run. steps: - # First of all, we clone the repo using the `checkout` action. - name: Checkout uses: actions/checkout@v4 - - # We use the `arduino/setup-arduino-cli` action to install and - # configure the Arduino CLI on the system. - - name: Setup Arduino CLI - uses: arduino/setup-arduino-cli@v1 - - # We then install the platform, which one will be determined - # dynamically by the build matrix. - - name: Install platform + with: + submodules: recursive + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Cache PlatformIO + uses: actions/cache@v4 + with: + path: ~/.platformio + key: pio-${{ runner.os }}-${{ hashFiles(format('{0}/platformio.ini', matrix.project_dir)) }} + restore-keys: | + pio-${{ runner.os }}- + + - name: Install PlatformIO Core + run: pip install -U platformio + + # Compila todos los entornos definidos en platformio.ini; usa -e si matrices de env + - name: Build ${{ matrix.project_dir }} + working-directory: ${{ matrix.project_dir }} run: | - arduino-cli core update-index --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json - arduino-cli core install ${{ matrix.arduino-platform }} --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json - - # We then install the platform, which one will be determined - # dynamically by the build matrix. - - name: Install libraries - run: | - arduino-cli lib install ${{ matrix.libraries }} - arduino-cli lib list - - # Update submodules - - name: Update submodules - run: | - git submodule update --init --recursive - - # Finally, we compile the sketch, using the FQBN that was set - # in the build matrix. - - name: Compile Sketches - run: arduino-cli compile --fqbn ${{ matrix.fqbn }} --build-path "${{ matrix.project_dir }}/build" ./${{ matrix.project_dir }} + pio run + # Si defines matriz de entornos: pio run -e ${{ matrix.env }} + + # Publica los artefactos generados; hex para AVR; bin para ESP8266 + - name: Upload artifacts + if: always() + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.project_dir }}-artifacts + path: | + ${{ matrix.project_dir }}/.pio/build/*/*.hex + ${{ matrix.project_dir }}/.pio/build/*/*.bin + ${{ matrix.project_dir }}/.pio/build/*/*.elf diff --git a/Firmware_Arduino/.gitignore b/Firmware_Arduino/.gitignore new file mode 100644 index 0000000..89cc49c --- /dev/null +++ b/Firmware_Arduino/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/Firmware_Arduino/platformio.ini b/Firmware_Arduino/platformio.ini new file mode 100644 index 0000000..441871b --- /dev/null +++ b/Firmware_Arduino/platformio.ini @@ -0,0 +1,16 @@ +[platformio] +src_dir = . + +[env:promini_8mhz] +platform = atmelavr +board = pro8MHzatmega328 +framework = arduino +upload_protocol = arduino + +build_src_filter = + +<**/*.ino> + +<**/*.cpp> + -<**/*.c> + +lib_deps = + rocketscream/Low-Power @ ^1.6.0 \ No newline at end of file diff --git a/Firmware_ESP8266/.gitignore b/Firmware_ESP8266/.gitignore new file mode 100644 index 0000000..89cc49c --- /dev/null +++ b/Firmware_ESP8266/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/platformio.ini b/Firmware_ESP8266/platformio.ini similarity index 60% rename from platformio.ini rename to Firmware_ESP8266/platformio.ini index c8797c3..7ad4d92 100644 --- a/platformio.ini +++ b/Firmware_ESP8266/platformio.ini @@ -1,29 +1,26 @@ [platformio] -default_envs = esp8266 -src_dir = Firmware_ESP8266 +src_dir = . [env:esp8266] platform = espressif8266 -board = esp12e ; generic ESP8266 module +board = esp12e framework = arduino board_build.flash_size = 4M1M board_build.flash_mode = dout board_build.f_cpu = 80000000L board_build.f_flash = 40000000L - upload_protocol = espota upload_port = RollerShutterControlPanel.local upload_resetmethod = ck upload_speed = 3000000 - check_tool = cppcheck -check_skip_packages = yes ; don’t scan framework/toolchain headers :contentReference[oaicite:0]{index=0} +check_skip_packages = yes build_src_filter = - +<*.ino> - +<*.cpp> - -<*.c> + +<**/*.ino> + +<**/*.cpp> + -<**/*.c> lib_deps = https://github.com/arduino-libraries/NTPClient.git#3.2.0 - https://github.com/mathertel/LiquidCrystal_PCF8574.git#2.2.0 + https://github.com/mathertel/LiquidCrystal_PCF8574.git#2.2.0 \ No newline at end of file From 19c9ea360e44c3a12aba569f3129bd26bdb3d835 Mon Sep 17 00:00:00 2001 From: Mickyleitor Date: Tue, 12 Aug 2025 00:40:17 +0200 Subject: [PATCH 2/2] Spanish to english comments --- .github/workflows/build.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index fd72fd0..011e451 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -31,14 +31,14 @@ jobs: - name: Install PlatformIO Core run: pip install -U platformio - # Compila todos los entornos definidos en platformio.ini; usa -e si matrices de env + # Builds all environments defined in platformio.ini; use -e for environment matrix - name: Build ${{ matrix.project_dir }} working-directory: ${{ matrix.project_dir }} run: | pio run - # Si defines matriz de entornos: pio run -e ${{ matrix.env }} + # If defining environment matrix: pio run -e ${{ matrix.env }} - # Publica los artefactos generados; hex para AVR; bin para ESP8266 + # Upload generated artifacts; hex for AVR; bin for ESP8266 - name: Upload artifacts if: always() uses: actions/upload-artifact@v4