Files
arduino/docs/howto-compile.md

94 lines
3.5 KiB
Markdown
Raw Normal View History

2025-02-24 14:53:47 +07:00
# How to compile AirGradient firmware on Arduino IDE
## Prequisite
2025-02-26 14:37:31 +07:00
Arduino IDE version 2.x ([download](https://www.arduino.cc/en/software))
2025-02-24 14:53:47 +07:00
> For AirGradient model ONE and Open Air, the codebase **WILL NOT** work on the latest major version of arduino-esp32 which is *3.x* . This related to when installing "esp32 by Espressif Systems" in board manager. Instead use version **2.0.17**, please follow the first step carefully.
2025-02-24 21:42:14 +07:00
## Steps for ESP32C3 based board (ONE and Open Air Model)
2025-02-24 14:53:47 +07:00
2025-02-26 14:37:31 +07:00
1. Install "esp32 by Espressif Systems" in board manager with version **2.0.17** (Tools ➝ Board ➝ Boards Manager ➝ search for `"espressif"`)
2025-02-24 14:53:47 +07:00
![board manager](images/esp32-board.png)
2025-02-26 14:37:31 +07:00
2. Install AirGradient library on library manager using the latest version (Tools ➝ Manage Libraries... ➝ search for `"airgradient"`)
2025-02-24 14:53:47 +07:00
![Aigradient Library](images/ag-lib.png)
2025-02-24 21:42:14 +07:00
3. On tools tab, follow settings below
2025-02-24 14:53:47 +07:00
```
Board ➝ ESP32C3 Dev Module
USB CDC On Boot ➝ Enabled
CPU Frequency ➝ 160MHz (WiFi)
Core Debug Level ➝ None (or choose as needed)
Erase All Flash Before Sketch Upload ➝ Enabled (or choose as needed)
Flash Frequency ➝ 80MHz
Flash Mode ➝ QIO
2025-02-26 14:37:31 +07:00
Flash Size ➝ 4MB (32Mb)
2025-02-24 14:53:47 +07:00
JTAG Adapter ➝ Disabled
Partition Scheme ➝ Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
Upload Speed ➝ 921600
```
![Compile Settings](images/settings.png)
2025-02-26 14:37:31 +07:00
4. Open sketch to compile (File ➝ Examples ➝ AirGradient Air Quality Sensor ➝ OneOpenAir). This sketch for AirGradient ONE and Open Air monitor model
5. Compile
![compiled esp32](images/compiled.png)
2025-02-24 14:53:47 +07:00
## Steps for ESP8266 based board (DIY model)
2025-02-26 14:37:31 +07:00
1. Add esp8266 board by adding http://arduino.esp8266.com/stable/package_esp8266com_index.json into Additional Board Manager URLs field (File ➝ Preferences ➝ Additional boards manager URLs)
![additional-board](images/additional-board.png)
2. Install esp8266 board on board manager with version **3.1.2** (Tools ➝ Board ➝ Boards Manager ➝ search for `"esp8266"`)
2025-02-24 14:53:47 +07:00
![board manager](images/esp8266-board.png)
3. Install AirGradient library on library manager using the latest version (Tools ➝ Manage Libraries... ➝ search for `"airgradient"`)
![Aigradient Library](images/ag-lib.png)
4. On tools tab, set board to `LOLIN(WEMOS) D1 R2 & mini`, and let other settings to default
2025-02-26 14:37:31 +07:00
![settings esp8266](images/settings-esp8266.png)
5. Open sketch to compile (File ➝ Examples ➝ AirGradient Air Quality Sensor ➝ `<Model Option>`). Depends on the DIY model, either `BASIC`, `DiyProIndoorV3_3` and `DiyProIndoorV4_2`
6. Compile
2025-02-26 14:37:31 +07:00
![compiled esp8266](images/compiled-esp8266.png)
2025-02-24 14:53:47 +07:00
**Notes**
To modify codes from examples
2025-02-24 14:53:47 +07:00
## Possible Issues
### Linux (Debian)
ModuleNotFoundError: No module named serial
![Linux Failed](images/linux-failed.png)
2025-02-24 14:53:47 +07:00
Make sure python pyserial module installed globally in the environment by executing:
`$ sudo apt install -y python3-pyserial`
or
`$ pip install pyserial`
Choose based on how python installed on your machine. But most user, using `apt` is better.
## How to contribute
Please follow github [contributing to a project](https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project) tutorial to contribute to this project.
There are 2 environment options to compile this project, PlatformIO and ArduinoIDE.
- For PlatformIO, it should work out of the box
- For arduino, files in `src` folder and also from `Examples` can be modified at `Documents/Arduino/libraries` for windows and mac, and `~/Arduino/Libraries` for linux