I spent 6 months manually coding IoT sensors until I discovered AI could generate 80% of my device code in minutes.
What you'll build: Working IoT sensor with WiFi, data logging, and web dashboard
Time needed: 45 minutes (vs 6 hours manually)
Difficulty: You need basic Arduino knowledge
My ESP32 temperature sensor went from idea to working prototype in under an hour instead of my usual weekend-long coding sessions.
Why I Started Using AI for IoT Code
I was building my fifth home automation sensor and realized I was writing the same WiFi connection code, JSON parsing, and sensor reading logic over and over.
My setup:
- ESP32-DevKitC boards for prototyping
- Arduino IDE for quick uploads
- Home Assistant for device integration
- Constant deadline pressure from client projects
What didn't work:
- Copy-pasting old projects (always broke something)
- Arduino forum code snippets (never quite fit my use case)
- Starting from scratch every time (burned 6+ hours per device)
I lost an entire weekend fighting with WiFi reconnection logic that AI generated perfectly in 3 minutes.
Step 1: Set Up Your AI Coding Environment
The problem: Most AI tools don't understand IoT hardware constraints
My solution: Use AI tools that know Arduino libraries and ESP32 limitations
Time this saves: 2 hours of research and setup
Install Cursor IDE with AI Integration
Cursor IDE gives you AI code completion specifically trained on Arduino libraries.
# Download Cursor IDE from cursor.sh
# Install and open your ESP32 project folder
What this does: Provides AI suggestions that actually compile for ESP32
Expected output: IDE with AI autocomplete active
My actual Cursor setup - ESP32 board selected, AI enabled in bottom right
Personal tip: Enable "Arduino IntelliSense" in Cursor settings or you'll get generic C++ suggestions that won't work.
Configure ChatGPT with IoT Context
Create a custom GPT instruction that understands your hardware setup.
You are an expert ESP32 developer. Always:
- Use Arduino framework syntax
- Include WiFi connection handling
- Add error checking for sensor failures
- Generate code for ESP32-DevKitC pinout
- Use standard Arduino libraries only
Personal tip: Save this as a ChatGPT custom instruction. I wasted hours getting Python code when I needed Arduino C++.
Step 2: Generate Your Core Device Logic
The problem: AI generates code that looks good but crashes on real hardware
My solution: Start with a proven template and let AI fill the specifics
Time this saves: 3 hours of debugging basic setup
Create the Prompt Template
Here's my exact prompt that generates working IoT code:
Generate Arduino C++ code for ESP32-DevKitC that:
Hardware specs:
- ESP32-DevKitC board
- DHT22 sensor on GPIO pin 4
- 3.3V power supply
- Built-in LED for status
Requirements:
- Connect to WiFi network "HomeNetwork"
- Read temperature/humidity every 30 seconds
- Send data to HTTP endpoint http://192.168.1.100:8080/data
- Handle WiFi disconnections gracefully
- Include watchdog timer for stability
Code style:
- Use meaningful variable names
- Add error handling for each sensor read
- Include debug Serial output
- Separate functions for each major task
What this does: Gives AI all the context it needs for working code
Expected output: Complete Arduino sketch ready to compile
AI output using my template - notice the complete setup() and loop() functions
Personal tip: Always specify your exact GPIO pins and board model. Generic "Arduino" prompts generate code that won't compile.
Test the Generated Code Structure
Copy the AI code into Arduino IDE and check for compilation errors.
// AI-generated code structure looks like this:
#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
#define DHT_PIN 4
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
WiFiClient client;
void setup() {
Serial.begin(115200);
dht.begin();
connectWiFi();
Serial.println("ESP32 sensor ready");
}
void connectWiFi() {
WiFi.begin("HomeNetwork", "your_password");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("WiFi connected");
}
Personal tip: AI sometimes forgets the #include statements. Always check the top of your file first.
Step 3: Add Robust Error Handling
The problem: AI code works perfectly in simulation but fails randomly on real devices
My solution: Prompt AI to add specific error scenarios I've encountered
Time this saves: 4 hours of field debugging
Generate Error Handling Code
Use this follow-up prompt to make your code production-ready:
Modify the ESP32 code to handle these real-world issues:
- WiFi connection drops during operation
- HTTP server temporarily unavailable
- Sensor returns NaN readings
- Power brownouts causing ESP32 resets
- Memory leaks from string concatenation
Add automatic recovery for each failure mode.
Include exponential backoff for HTTP retries.
Log all errors to Serial with timestamps.
Expected output: Bulletproof code that handles device failures
My ESP32 handling WiFi reconnection automatically - no manual reset needed
Personal tip: AI often generates infinite retry loops. Always ask for timeout limits and maximum retry counts.
Step 4: Generate Device-Specific Features
The problem: Generic IoT code doesn't match your exact project needs
My solution: Chain multiple AI prompts to build custom features
Time this saves: 5 hours of custom coding
Add Over-the-Air Updates
Add OTA (Over-The-Air) update capability to the ESP32 code:
- Check for updates every 24 hours
- Download from http://192.168.1.100:8080/firmware
- Verify firmware signature before installing
- Rollback on failed update
- Blink LED during update process
Generate Web Configuration Interface
Create a WiFi configuration web page for the ESP32:
- Start as Access Point when no WiFi credentials stored
- Serve HTML form for network setup
- Save credentials to SPIFFS
- Restart with new network settings
- Include device status dashboard
Personal tip: Break complex features into separate prompts. I tried asking for everything at once and got messy, uncommented code.
Step 5: Optimize for Production Deployment
The problem: AI code works great for one device but falls apart at scale
My solution: Generate monitoring and fleet management features
Time this saves: 8 hours of production debugging
Add Device Health Monitoring
Generate ESP32 monitoring code that reports:
- Free heap memory every minute
- WiFi signal strength (RSSI)
- CPU temperature from internal sensor
- Uptime since last restart
- Sensor accuracy/calibration status
Send to MQTT broker at 192.168.1.100:1883
Topic: devices/{device_id}/health
Include device MAC address as unique ID
Expected output: Production-ready monitoring system
My Home Assistant dashboard with 12 ESP32 devices reporting health status
Personal tip: Always include the device MAC address in your monitoring data. Trust me, you'll need it when debugging field deployments.
What You Just Built
A complete IoT device development workflow that generates production-ready ESP32 code in 45 minutes instead of 6+ hours.
Key Takeaways (Save These)
- Context is everything: Specific hardware details get better AI code than generic requests
- Chain your prompts: Start with basic functionality, then add error handling, then production features
- Test immediately: Compile and upload after each AI generation to catch issues early
Tools I Actually Use
- Cursor IDE: Best AI code completion for Arduino projects (cursor.sh)
- ChatGPT Plus: Most reliable for complex IoT prompts (openai.com)
- Arduino IDE 2.0: Still the fastest for uploads and testing (arduino.cc)
- ESP32 Documentation: When AI gets the pinouts wrong (espressif.com)