MarketPulse is a smart, miniature IoT device based on the powerful ESP32-S3 microcontroller. It fetches live market prices (gold, coins, fiat currencies, and global commodities) via API and displays them simultaneously on a local OLED screen and a responsive web dashboard. The project features a Captive Portal for easy WiFi configuration and item selection without needing to modify the source code.
- 📡 Live Data Fetching: Supports over 40 different items (Gold, Coins, Currencies, Oil, Metals).
- 🖥️ Dual Display: Local OLED display + Responsive Web Dashboard.
- ⚙️ Advanced Web Settings: Adjust OLED brightness, refresh intervals, auto-cycling, and select your favorite items directly from the web UI.
- 👆 Touch Control: Short tap to change pages, long press to manually fetch new data.
- 📶 Captive Portal: Easy WiFi setup. Just connect to the
Ehsan_appAP on first boot. - 🕒 Live Clock: Displays real-time time alongside the WiFi signal strength icon on the OLED.
- 📈 Trend Indicators: Displays up/down arrows for price changes.
| Component | Details |
|---|---|
| Microcontroller | ESP32-S3-DevKitC-1 (16MB Flash, PSRAM enabled) |
| OLED Display | SSD1306 128x64 |
| Touch Sensor | Capacitive touch sensor module (e.g., TTP223) |
| Jumper Wires | For connections |
| Module | ESP32 Pin |
|---|---|
| OLED_CLK | 7 |
| OLED_DATA | 6 |
| OLED_CS | 5 |
| OLED_DC | 4 |
| OLED_RST | 8 |
| TOUCH_PIN | 11 |
-
Clone the repository:
git clone https://github.com/TssHack/MarketPulse-ESP32.git
-
Open the project in VS Code with the PlatformIO extension installed.
-
The project is pre-configured for the ESP32-S3. Your
platformio.inishould look like this:[env:esp32-s3-devkitc-1] platform = espressif32 board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200 upload_speed = 921600 board_upload.flash_size = 16MB board_build.flash_size = 16MB board_build.flash_mode = qio board_build.partitions = default_16MB.csv build_flags = -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DARDUINO_USB_CDC_ON_BOOT=1 lib_deps = olikraus/U8g2@^2.36.5 bblanchon/ArduinoJson@^7.3.1 mathieucarbou/AsyncTCP @ ^3.2.4 mathieucarbou/ESPAsyncWebServer @ ^3.1.5
-
Build and Upload: PlatformIO will automatically download the required libraries. Connect your ESP32-S3 and click "Upload".
-
First Boot Configuration:
- Connect to the WiFi network named
Ehsan_app(Password:12345678). - A captive portal will pop up. Select your home WiFi, enter the password, and choose up to 12 items to track.
- Save and wait for the device to reboot. You can now access the local dashboard via the IP address shown on the OLED or by navigating to
ehsanapp.local.
- Connect to the WiFi network named
- Backend/Firmware: C++ (Arduino Core for ESP32-S3)
- Web UI: HTML5, CSS3 (Glassmorphism Design), Vanilla JavaScript
- API: TGJu API (via catplus.ir)
- Web Server: ESPAsyncWebServer
- Toolchain: PlatformIO

