Initial release v1.1.0 — ESP32 automated telescope flat panel

Firmware (Arduino Nano ESP32 / PlatformIO):
- Native ASCOM Alpaca CoverCalibrator REST API on port 11111
- Alnitak serial protocol on USB at 9600 baud (simultaneous with WiFi)
- MG995 servo cover mechanism with non-blocking state machine (D9)
- LED brightness PWM via IRLZ44N MOSFET, LEDC channel 0 (D3)
- 12V dew heater PWM via IRLZ44N MOSFET, LEDC channel 1 (D5)
- mDNS + UDP Alpaca discovery, WiFi watchdog reconnect
- SERIAL_DEBUG flag to silence debug output in USB-only mode

INDI driver (C++ / libcurl / nlohmann-json):
- WiFi mode: HTTP Alpaca via libcurl
- USB mode: Alnitak serial via POSIX termios
- LightBoxInterface + DustCapInterface + dew heater number property

Python controller (PyQt6):
- Dark-themed desktop app for direct manual control
- AlpacaBackend (requests) + AlnitakBackend (pyserial)
- PollWorker QThread; cover, brightness, dew heater panels
- QSettings persistence; auto serial port discovery

Docs:
- system-diagram.svg, wiring-diagram.svg (browser-renderable SVG)
- BUILD_NOTES.md with BOM, LM2596 calibration, power-on checklist
- WIRING.md quick-reference, README.md, CHANGELOG.md
This commit is contained in:
Laurence 2026-05-17 08:51:29 +01:00
commit c32f00a2be
15 changed files with 3653 additions and 0 deletions

View file

@ -0,0 +1,39 @@
cmake_minimum_required(VERSION 3.16)
project(indi_esp32_flatpanel CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Find required packages
find_package(INDI REQUIRED)
find_package(CURL REQUIRED)
# nlohmann/json header-only, installed via `apt install nlohmann-json3-dev`
# or fetched automatically below if not found
find_package(nlohmann_json QUIET)
if(NOT nlohmann_json_FOUND)
include(FetchContent)
FetchContent_Declare(json
URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz)
FetchContent_MakeAvailable(json)
endif()
include_directories(${INDI_INCLUDE_DIR})
add_executable(indi_esp32_flatpanel
indi_esp32_flatpanel.cpp
)
target_link_libraries(indi_esp32_flatpanel
${INDI_LIBRARIES}
CURL::libcurl
nlohmann_json::nlohmann_json
pthread
)
# Install binary and XML descriptor
install(TARGETS indi_esp32_flatpanel
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
install(FILES indi_esp32_flatpanel.xml
DESTINATION ${INDI_DATA_DIR})