Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 104 additions & 4 deletions CODE REVIEW/ARDUINO_COMPILATION_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

This guide helps ensure Arduino sketches compile successfully in the CI workflow and locally.

## Quick Verification
## Quick Verification - 092025 (MKR NB 1500)

To verify your changes compile correctly before committing:

Expand All @@ -25,6 +25,33 @@ arduino-cli compile --fqbn arduino:samd:mkrnb1500 \
TankAlarm-092025-Server-Hologram/TankAlarm-092025-Server-Hologram.ino
```

## Quick Verification - 112025 (Arduino Opta)

To verify the 112025 sketches compile:

```bash
# Install Arduino CLI (if not already installed)
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
export PATH="$PWD/bin:$PATH"

# Setup cores and libraries for Arduino Opta
arduino-cli core update-index
arduino-cli core install arduino:mbed_opta
arduino-cli lib install "[email protected]"
arduino-cli lib install "Blues Wireless Notecard"
arduino-cli lib install "Ethernet"

# Compile Client sketch
arduino-cli compile --fqbn arduino:mbed_opta:opta \
TankAlarm-112025-Client-BluesOpta/TankAlarm-112025-Client-BluesOpta.ino

# Compile Server sketch
arduino-cli compile --fqbn arduino:mbed_opta:opta \
TankAlarm-112025-Server-BluesOpta/TankAlarm-112025-Server-BluesOpta.ino
```

**Note:** LittleFS and Wire libraries are built into the Arduino Mbed OS core and don't need separate installation.

## Common Compilation Issues

### 1. Type Name Errors
Expand Down Expand Up @@ -103,18 +130,32 @@ Keep resource usage reasonable:

## Configuration Files

### Client Configuration
### 092025 Configuration (MKR NB 1500)

**Client Configuration:**
- **Template:** `TankAlarm-092025-Client-Hologram/config_template.h`
- **Active:** Include `config_template.h` for compilation (users create their own `config.h`)
- **Tracked:** Only `config_template.h` is in git (config.h is .gitignored)

### Server Configuration

**Server Configuration:**
- **Hardware Config:** `TankAlarm-092025-Server-Hologram/server_config.h` (compile-time hardware constants)
- **SD Card Config:** `TankAlarm-092025-Server-Hologram/server_config.txt` (runtime user configuration)
- **Tracked:** Hardware config.h is in git; SD card .txt template is tracked

### 112025 Configuration (Arduino Opta)

**Client Configuration:**
- **Runtime Config:** `/client_config.json` stored in LittleFS (internal flash)
- **Default config created automatically** on first boot
- **Product UID:** Update `PRODUCT_UID` define in `.ino` file to match Blues Notehub project
- **No SD card required**

**Server Configuration:**
- **Runtime Config:** `/server_config.json` stored in LittleFS (internal flash)
- **Default config created automatically** on first boot
- **Product UID:** Update `SERVER_PRODUCT_UID` define in `.ino` file to match Blues Notehub project
- **No SD card required**

## Troubleshooting

### Local Compilation Works but CI Fails
Expand All @@ -130,6 +171,54 @@ Keep resource usage reasonable:
2. Missing hardware-specific libraries
3. Different board variant (check FQBN)

## Common Compilation Issues - 112025 (Arduino Opta)

### 1. ArduinoJson Version Mismatch

**Problem:** `no matching function for call to 'JsonDocument::JsonDocument(int)'`

**Solution:** Ensure you have ArduinoJson version 7.x or later:
- ArduinoJson 7.x uses `JsonDocument` instead of `DynamicJsonDocument`
- Install via Library Manager: Search "ArduinoJson" and install version 7.2.0 or later
- Version 6.x will not work with the 112025 code

### 2. Notecard Library Missing

**Problem:** `Notecard.h: No such file or directory`

**Solution:** Install Blues Wireless Notecard library:
- Open Library Manager
- Search: "Notecard"
- Install: "Blues Wireless Notecard by Blues Inc."

### 3. LittleFS Not Found

**Problem:** `LittleFS.h: No such file or directory`

**Solution:** LittleFS is built into Arduino Mbed OS core:
- Go to **Tools → Board → Boards Manager**
- Search: "Arduino Mbed OS Opta Boards"
- Install the package
- LittleFS will be automatically available

### 4. Wrong Board Selected

**Problem:** `#error "This sketch is designed for Arduino Opta"`

**Solution:** Ensure correct board is selected:
- Go to **Tools → Board → Arduino Mbed OS Opta Boards**
- Select **Arduino Opta**
- FQBN should be: `arduino:mbed_opta:opta`

### 5. Ethernet Library Issues

**Problem:** Ethernet-related compilation errors (server only)

**Solution:**
- Ethernet library should be built-in
- If missing, install via Library Manager: "Ethernet by Arduino"
- Ensure you're compiling the server, not the client (client doesn't use Ethernet)

## Best Practices

1. **Always test locally** before pushing
Expand All @@ -139,9 +228,20 @@ Keep resource usage reasonable:
5. **Check resource usage** after adding features
6. **Verify closing braces** match opening ones
7. **Keep sketches modular** with clear function separation
8. **For 112025:** Ensure ArduinoJson 7.x is installed (not 6.x)
9. **For 112025:** Verify Mbed OS Opta core is installed for LittleFS support

## Additional Resources

### 092025 (MKR NB 1500)
- [Arduino CLI Documentation](https://arduino.github.io/arduino-cli/)
- [MKRNB Library Reference](https://www.arduino.cc/reference/en/libraries/mkrnb/)
- [Arduino MKR NB 1500 Documentation](https://docs.arduino.cc/hardware/mkr-nb-1500)

### 112025 (Arduino Opta)
- [Arduino Opta Documentation](https://docs.arduino.cc/hardware/opta)
- [Blues Wireless Notecard Library](https://dev.blues.io/tools-and-sdks/firmware-libraries/arduino-library/)
- [ArduinoJson v7 Documentation](https://arduinojson.org/v7/)
- [Arduino Mbed OS Documentation](https://docs.arduino.cc/learn/programming/mbed-os-basics)
- [Client Installation Guide](../TankAlarm-112025-Client-BluesOpta/INSTALLATION.md)
- [Server Installation Guide](../TankAlarm-112025-Server-BluesOpta/INSTALLATION.md)
26 changes: 26 additions & 0 deletions QUICK_REFERENCE_FLEET_SETUP.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# Quick Reference: Fleet-Based vs Route-Based Setup

## Arduino IDE Setup (112025)

### Required Software
- **Arduino IDE** 2.0+ (recommended) or 1.8.x
- **Board Support:** Arduino Mbed OS Opta Boards (via Boards Manager)

### Required Libraries (Install via Library Manager)
1. **ArduinoJson** (version 7.x or later) - JSON parsing
2. **Blues Wireless Notecard** (latest) - Notecard communication
3. **Ethernet** (built-in) - Web server (server only)
4. **LittleFS** (built-in with Mbed core) - File system
5. **Wire** (built-in) - I2C communication

### Installation Steps
1. Install Arduino IDE from [arduino.cc/software](https://www.arduino.cc/en/software)
2. Open **Tools → Boards Manager** → Search "Arduino Mbed OS Opta Boards" → Install
3. Open **Tools → Manage Libraries** → Install libraries listed above
4. Open sketch (.ino file) for client or server
5. Select **Tools → Board → Arduino Opta**
6. Update `PRODUCT_UID` (client) or `SERVER_PRODUCT_UID` (server) to match your Blues Notehub project
7. Compile and upload

**📚 Detailed Instructions:**
- [Client Installation Guide](TankAlarm-112025-Client-BluesOpta/INSTALLATION.md)
- [Server Installation Guide](TankAlarm-112025-Server-BluesOpta/INSTALLATION.md)

## At a Glance

| Aspect | Route-Based (OLD) | Fleet-Based (NEW) ✅ |
Expand Down
38 changes: 37 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,43 @@ Arduino LTE cellular system that monitors tank levels and sends SMS alerts when

Arduino will check sensor data on a scheduled basis. If sensor data is over a set threshold, the arduino will send an SMS text message to defined phone numbers. It will also send a daily reading of the sensor data at a set time of day.

## Version 092025 (Current - Recommended)
## Version 112025 (Blues Wireless + Arduino Opta)

The 112025 version uses Arduino Opta with Blues Wireless Notecard for cellular connectivity. Features include:
- **Internal flash storage** (LittleFS) - No SD card required
- **Fleet-based communication** - Simplified device-to-device data exchange via Blues Notehub
- **Web-based configuration** - Update clients remotely from server dashboard
- **Intranet dashboard** - Real-time monitoring via Ethernet web interface

### Quick Links - 112025 Client (Tank Monitor)
- **[Installation Guide](TankAlarm-112025-Client-BluesOpta/INSTALLATION.md)** - Complete Arduino IDE setup with library installation
- **[Fleet Implementation Summary](TankAlarm-112025-Client-BluesOpta/FLEET_IMPLEMENTATION_SUMMARY.md)** - Architecture overview
- **[Migration Guide](TankAlarm-112025-Client-BluesOpta/MIGRATION_GUIDE.md)** - Upgrading from route-based setup

### Quick Links - 112025 Server (Data Aggregation)
- **[Installation Guide](TankAlarm-112025-Server-BluesOpta/INSTALLATION.md)** - Complete Arduino IDE setup with library installation
- **[Fleet Setup Guide](TankAlarm-112025-Server-BluesOpta/FLEET_SETUP.md)** - Blues Notehub fleet configuration

### Configuration Approach (112025)

The 112025 version uses a **simplified configuration system**:

1. **LittleFS Internal Storage** - Configuration persisted to device flash
- No SD card required
- Survives power cycles
- Automatic default config on first boot

2. **Remote Configuration** - Update clients via server web interface
- Push config changes from server to any client
- Changes routed through Blues Notehub
- No physical access needed for updates

3. **Fleet-Based Communication** - Simplified device-to-device routing
- Just assign devices to fleets in Blues Notehub
- No manual route configuration needed
- Easier scaling for multiple devices

## Version 092025 (Current - Recommended for MKR NB 1500)

The 092025 version is the latest implementation using Arduino MKR NB 1500 with Hologram.io cellular connectivity.

Expand Down
Loading
Loading