Client Overview
Client: Independent builder exploring a new company in agriculture
Industry: Agritech
Problem: Build a low-cost ESP32-based camera fleet that takes periodic crop photos and stores them in the cloud automatically.
The Challenge
The client needed a MicroPython-based solution that could run natively on the ESP32-CAM. However, no available firmware supported camera drivers cleanly, and bootloading compatible firmware was a constant blocker. The client also wanted full handoff documentation so they could expand or modify the solution on their own after delivery.
Our Approach
We researched firmware variants that included camera support, tested uploadability on multiple ESP32 boards, and selected a version that could be modified for this use case. Then we designed a lightweight NodeJS server to handle image uploads securely, giving the MicroPython ESP32 a simple endpoint for pushing photos.
Technologies, Tools, and Platforms Used
- ESP32-CAM running MicroPython
- NodeJS middleware
- AWS EC2
- Amazon S3 for image storage
We chose NodeJS as the middleware because ESP32s can't natively authenticate with AWS S3. By handling authentication and upload on a lightweight EC2 instance, the ESP32s stayed lean, secure, and focused only on image capture and transmission.
The Solution
- Found and tested a semi-compatible MicroPython firmware with camera support
- Modified and flashed firmware onto the ESP32-CAM successfully
- Wrote MicroPython code to capture images every 5 seconds and send them to the NodeJS middleware
- Created NodeJS server to receive and upload images to an AWS S3 bucket
- Added automation and error handling to run the ESP32s continuously without needing manual intervention or replugging
The Outcome
The system ran successfully, capturing and uploading high-resolution photos to AWS S3 every 5 seconds. The client was able to monitor image flows in real-time and confirmed the full pipeline met their goals. The final setup was well-documented and easy to scale.
Client Feedback
The client found the architecture easy to understand and confirmed they could continue building on it without further support.
Impact
The total cost to run the system for 10 devices was under $3 per month on AWS. This proved the system could scale affordably and was ideal for early-stage agritech experimentation.