Hey guys, I'm working on an old project idea again and planning to build my components around Teensy as the "brains" since it incorporates all the hardware I need plus the (very nice) ability to encrypt source code. I know this question is very broad, apologies for that but we're early in the process so very few options are totally off the table.
Broadly speaking, I have two types of components: fancy switches and fancy load drivers. Each of these, and the ways they interact (as in mapping a fancy switch to a specific driver output) are all software-configurable. I'm trying to think through my options on how to get an interface in front of a user that lets them configure these options and save that configuration data to EEPROM. There is also likely to be a requirement to be able to flash updated firmware to the devices, though I may be able to avoid that.
I think these are my options, but curious if anyone here has done something (one of these or something different) that worked well for them, or alternatively if you've done something and had horrible experience, I'd love to hear more about it.
Option 1: Bluetooth
Concept: Use a simple phone app to connect to device(s), view current configuration settings, make changes
Advantages: simple, portable, graphical UI, no special user hardware required
Disadvantages: have to write both Android and iOS apps, have to add hardware to Teensy, user Bluetooth problems can become (in their mind) my technical problems, not sure if I could do firmware flash this way
Option 2: SD Card
Concept: Use website to offer user UI for generating configuration settings, save output to SD card, insert SD card, detect new settings, flash to EEPROM. Could also have SD card inserted with no new configuration file used for Teensy to write current config to SD card as a starting point
Advantages: good software support for testing if present/files exist/etc., can maintain encrypted firmware updates
Disadvantages: need micro-SD writing hardware on a computer, physical access can be problematic to get card in/out, computer file system compatibility concerns
Option 3: USB Drive
Concept: Enable USB Host on Teensy and watch for USB drive inserted. Can use similar config file concept as SD card (read/write)
Advantages: easy physical access, ubiquitous hardware, flexibility of read/write options over time
Disadvantages: hardware modification(s) to Teensy, eliminates any SD card availability, not sure if I can flash firmware successfully from USB drive
Option 4: Physical Screen
Concept: Attach a small screen and (if not touch screen) buttons to work through config menus
Advantages: Can see and change config in real-time without moving storage between hardware/PC, easy to make configuration changes any time (even when not near a computer), easy to keep hardware config menu and capabilities in sync (all one firmware)
Disadvantages: Physical space constraints for screen, incremental cost in components and connectivity, adds large new hardware failure point
Broadly speaking, I have two types of components: fancy switches and fancy load drivers. Each of these, and the ways they interact (as in mapping a fancy switch to a specific driver output) are all software-configurable. I'm trying to think through my options on how to get an interface in front of a user that lets them configure these options and save that configuration data to EEPROM. There is also likely to be a requirement to be able to flash updated firmware to the devices, though I may be able to avoid that.
I think these are my options, but curious if anyone here has done something (one of these or something different) that worked well for them, or alternatively if you've done something and had horrible experience, I'd love to hear more about it.
Option 1: Bluetooth
Concept: Use a simple phone app to connect to device(s), view current configuration settings, make changes
Advantages: simple, portable, graphical UI, no special user hardware required
Disadvantages: have to write both Android and iOS apps, have to add hardware to Teensy, user Bluetooth problems can become (in their mind) my technical problems, not sure if I could do firmware flash this way
Option 2: SD Card
Concept: Use website to offer user UI for generating configuration settings, save output to SD card, insert SD card, detect new settings, flash to EEPROM. Could also have SD card inserted with no new configuration file used for Teensy to write current config to SD card as a starting point
Advantages: good software support for testing if present/files exist/etc., can maintain encrypted firmware updates
Disadvantages: need micro-SD writing hardware on a computer, physical access can be problematic to get card in/out, computer file system compatibility concerns
Option 3: USB Drive
Concept: Enable USB Host on Teensy and watch for USB drive inserted. Can use similar config file concept as SD card (read/write)
Advantages: easy physical access, ubiquitous hardware, flexibility of read/write options over time
Disadvantages: hardware modification(s) to Teensy, eliminates any SD card availability, not sure if I can flash firmware successfully from USB drive
Option 4: Physical Screen
Concept: Attach a small screen and (if not touch screen) buttons to work through config menus
Advantages: Can see and change config in real-time without moving storage between hardware/PC, easy to make configuration changes any time (even when not near a computer), easy to keep hardware config menu and capabilities in sync (all one firmware)
Disadvantages: Physical space constraints for screen, incremental cost in components and connectivity, adds large new hardware failure point