Add Lilygo T-Impulse-Plus - #10497
Conversation
There was a problem hiding this comment.
Pull request overview
Adds support for the LilyGo T-Impulse-Plus (nRF52840) wristband: SSD1315 OLED, SX1262 LoRa, MIA-M10Q GPS, TTP223 touch button, vibration motor used as notification/haptic feedback, and the SGM41562 I²C charger for input-power/charge-status reporting. Also introduces a small reusable HapticFeedback driver and an SGM41562 charger driver that AnalogBatteryLevel consults for isVbusIn()/isCharging().
Changes:
- New nRF52840 variant (
variants/nrf52840/t-impulse-plus/) plus itsboards/t-impulse-plus.json, with a newHW_VENDORmapping insrc/platform/nrf52/architecture.h. - New
src/power/SGM41562.{h,cpp}charger driver, wired intosrc/Power.cppbehindHAS_SGM41562. - New
src/input/HapticFeedback.{h,cpp}withInputBrokerintegration that emits a short pulse on touch press and an armed long-press pulse onBACKfire.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| variants/nrf52840/t-impulse-plus/variant.h | Pin map, capabilities (display, GPS, SX1262, IMU, charger, haptic), I²C/SPI/QSPI wiring. |
| variants/nrf52840/t-impulse-plus/variant.cpp | g_ADigitalPinMap and initVariant() (QSPI CS high, battery sense enable, RT9080 LDO enable). |
| variants/nrf52840/t-impulse-plus/platformio.ini | New PlatformIO env extending nrf52840_base. Missing the customary custom_meshtastic_* metadata used elsewhere. |
| boards/t-impulse-plus.json | PlatformIO board definition. variant field and missing variants_dir need attention. |
| src/platform/nrf52/architecture.h | Maps the T_IMPULSE_PLUS build flag to HardwareModel_T_IMPULSE_PLUS. |
| src/power/SGM41562.{h,cpp} | I²C driver for the SGM41562 buck charger with cached refresh and ship-mode/charge-enable control. |
| src/Power.cpp | Calls initSGM41562 in Power::setup() and consults the charger for isVbusIn/isCharging. |
| src/input/HapticFeedback.{h,cpp} | Non-blocking GPIO motor pulser using OSThread, with delayed pulse arm/cancel. |
| src/input/InputBroker.cpp | Hooks the haptic driver into the touch button (press pulse + armed long-press pulse). |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Add Lilygo T-Impulse-Plus * Enable small screen layout 64x32 * trunk'd * Haptic Feedback (short and long press) * enable Charging Indicator * enable nrfutil uploads * trunk fmt * Add Lilygo T-Impulse-Plus * Enable small screen layout 64x32 * trunk'd * Haptic Feedback (short and long press) * enable Charging Indicator * enable nrfutil uploads * trunk fmt * enable proper device model * Dim the haptic duration a bit. * Fix GPS pins and speed. Module enable is active low, speed is 38400 * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * set correct geometry. * Add custom_meshtastic_* metadata to t-impulse-plus platformio.ini --------- Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com> Co-authored-by: Ben Meadors <benmmeadors@gmail.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Forward-port: Add Lilygo T-Impulse-Plus (#10497) to develop
* Add Lilygo T-Impulse-Plus * Enable small screen layout 64x32 * trunk'd * Haptic Feedback (short and long press) * enable Charging Indicator * enable nrfutil uploads * trunk fmt * Add Lilygo T-Impulse-Plus * Enable small screen layout 64x32 * trunk'd * Haptic Feedback (short and long press) * enable Charging Indicator * enable nrfutil uploads * trunk fmt * enable proper device model * Dim the haptic duration a bit. * Fix GPS pins and speed. Module enable is active low, speed is 38400 * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * set correct geometry. * Add custom_meshtastic_* metadata to t-impulse-plus platformio.ini --------- Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com> Co-authored-by: Ben Meadors <benmmeadors@gmail.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> (cherry picked from commit cb867cc)
|
It was reported by LilyGO R&D department that SGM41562 driver needs an update to match current revision(s) of the IC supplied with the T-Impulse Plus device
|
Adds support for Lilygo T-Impulse-Plus.
Changes Made
boards/t-impulse-plus.jsonvariants/nrf52840/t-impulse-plus/(variant.h, variant.cpp, platformio.ini)custom_meshtastic_*metadata tovariants/nrf52840/t-impulse-plus/platformio.iniso the variant is correctly picked up by the CI build matrix and device manifest generator (bin/platformio-custom.py):custom_meshtastic_hw_model = 135custom_meshtastic_hw_model_slug = T_IMPULSE_PLUScustom_meshtastic_architecture = nrf52840custom_meshtastic_actively_supported = truecustom_meshtastic_support_level = 1custom_meshtastic_display_name = LILYGO T-Impulse Pluscustom_meshtastic_tags = LilyGocustom_meshtastic_requires_dfu = trueboard_level = prsrc/platform/nrf52/architecture.hWorking
Not Working / Known Issues
OLED_TINYchanges. This will need some special consideration @HarukiToredaDependencies
🤝 Attestations