How to install the solar flare alert software on the ESP32 board
Prerequisites
Install the required tools on your computer:
pip3 install esptool adafruit-ampy pyserial
Flashing MicroPython to ESP32
The ESP32 development board is available at various places, such as Bastelgarage, where you can easily find one near you.
Download the recent firmware from http://micropython.org/download#esp32
Find your ESP32 port by running
ls /dev/cu.*in the terminalErase the flash:
esptool.py --chip esp32 --port /dev/cu.usbserial-0001 erase_flashFlash the firmware:
esptool.py --chip esp32 --port /dev/cu.usbserial-0001 --baud 460800 write_flash -z 0x1000 <DOWNLOADED_FIRMWARE>.binOpen a serial terminal to check if you get a Python shell:
screen /dev/cu.usbserial-0001 115200
On Mac, the port is typically /dev/cu.usbserial-0001 (M1/Apple Silicon) or
/dev/cu.SLAB_USBtoUART (older Macs). If you don’t see the device, try a
different USB cable (must be a data cable, not just charging).
ESP32 MicroPython tutorial
See https://docs.micropython.org/en/latest/esp32/quickref.html
Upload code
All the code for this project is on GitHub in the micropython/ directory.
The following files need to be uploaded to the ESP32:
wifi.dat– WiFi credentials (upload first)solar_flare_alert.py– main programwifi_manager.py– WiFi connection managerrainbow2.py– color table for LED strip modeboot.py– auto-start on boot (upload last)
Uploading with ampy
Upload all files from the Cursor terminal (boot.py last):
cd micropython
ampy --port /dev/cu.usbserial-0001 put wifi.dat
ampy --port /dev/cu.usbserial-0001 put solar_flare_alert.py
ampy --port /dev/cu.usbserial-0001 put wifi_manager.py
ampy --port /dev/cu.usbserial-0001 put rainbow2.py
ampy --port /dev/cu.usbserial-0001 put boot.py
Or as a single command:
cd micropython && ampy --port /dev/cu.usbserial-0001 put wifi.dat && ampy --port /dev/cu.usbserial-0001 put solar_flare_alert.py && ampy --port /dev/cu.usbserial-0001 put wifi_manager.py && ampy --port /dev/cu.usbserial-0001 put rainbow2.py && ampy --port /dev/cu.usbserial-0001 put boot.py
If the board is running the old program
If the old boot.py auto-starts the program, you need to stop it first:
Connect via screen:
screen /dev/cu.usbserial-0001 115200Press
Ctrl+C(maybe several times) to get the>>>REPL promptWipe boot.py:
f = open('boot.py', 'w'); f.write(''); f.close()Exit screen:
Ctrl+A, thenK, thenYNow upload files with ampy as described above
Verifying uploaded files
Connect to the REPL and check file names and sizes:
screen /dev/cu.usbserial-0001 115200
import os; [(f, os.stat(f)[6]) for f in os.listdir()]
Configuration
In solar_flare_alert.py, check if the options are correct, especially if the
LED pins are correct. The pin names on ESPs are a bit weird from time to time.
The boot.py file imports solar_flare_alert and calls _main() if
RUN = True. This makes the program start automatically when the board is powered.
Wiring
On our board the pins are labeled with IOxx so it is pretty straight forward. The pins deliver 3.3V and some sources say max 12mA, we use a 110 Ohm resistor.
For boards without a built-in status LED (e.g., ESP32-D), set
STATUS_LED = None in solar_flare_alert.py for auto-detection,
or STATUS_LED = False to disable it entirely.
Testing
In solar_flare_alert.py set RUN = False,
the program loop won’t run and you can test the functions from the REPL.
Connect to the REPL via screen /dev/cu.usbserial-0001 115200, then:
import solar_flare_alert
solar_flare_alert.test_goes_to_freq_duty() # LED brightness/blink test
For more details on the development workflow, see micropython/DEVELOPMENT.md.