Skip to content

caseyWebb/mayfly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mayfly

Low-power IOT Environmental Monitoring with CircuitPython and the ESP32-S2 RISC-V ULP

This project collects various sensor readings, shows them on an e-paper display, and records to ThingSpeak. It's intended to be used in aquaculture and hydroponics, but it could be used for any application where you want to monitor, display, and record values with a battery-powered device.

flowchart TD
    INIT_ULP --> ULP_BOOT
    subgraph Shared Memory
    RTC_MEMORY[(RTC Memory)]
    end
    subgraph Main Processor
    MAIN_BOOT(Boot)
    ULP_WAKE{ULP wake?}
    INIT_WIFI[Initialize Wifi]
    INIT_TIME[Initialize Time]
    INIT_ULP[Start ULP]
    MAIN_SLEEP(Sleep)
    READ_RTC[Get Sensor Readings]
    UPDATE_DISPLAY[Update Display]
    MAIN_BOOT --> ULP_WAKE
    ULP_WAKE -->|Yes| INIT_WIFI --> INIT_TIME --> INIT_ULP --> MAIN_SLEEP
    ULP_WAKE -->|No| READ_RTC --> UPDATE_DISPLAY --> MAIN_SLEEP
    RTC_MEMORY --> READ_RTC
    end
    subgraph ULP
    ULP_BOOT(Boot)
    READ_SENSORS[Read Sensors]
    SENSOR_DIFF{Values changed?}
    UPDATE_RTC_MEMORY[Store Sensor Readings]
    SET_ULP_WAKE_TIMER[Set ULP Wake Timer]
    ULP_SHUTDOWN(ULP Shutdown)
    ULP_WAKE_TIMER[/ULP Wake Timer/]
    ULP_BOOT --> READ_SENSORS --> SENSOR_DIFF
    SENSOR_DIFF -->|Yes| UPDATE_RTC_MEMORY --> SET_ULP_WAKE_TIMER
    SENSOR_DIFF -->|No| SET_ULP_WAKE_TIMER
    UPDATE_RTC_MEMORY --> RTC_MEMORY
    ULP_WAKE_TIMER --> ULP_BOOT
    SET_ULP_WAKE_TIMER --> ULP_WAKE_TIMER
    SET_ULP_WAKE_TIMER --> ULP_SHUTDOWN
    RTC_MEMORY --> SENSOR_DIFF
    end

Hardware