I have gotten a prototype assembled and working. So far, I've got the following working:
- Connect and disconnect to devices advertising a specific service UUID
- Automatically connect if a known device UUID is found
- Read RESPONSE attribute (although it is not used for anything at the moment)
- Receive notifications when the RESPONSE attribute is updated
- Send commands by updating the COMMAND attribute
- Send commands to the MCU over serial USART when the COMMAND attribute is updated. (Only the command type is sent now – the sequence ID is not yet included.)
- Commands are also sent to the MCU when a client device connects or disconnects (which is ignored at the moment).
- Record an IR signal and store it in the EEPROM.
- Playback the IR signal stored in EEPROM (or a hardcoded test sequence).
- Write the stored IR signal to serial for debugging.
- Respond to commands received on the serial line and trigger recording, playback or one of the debugging commands.
And it works! I can switch my television on and off from my iPhone :)
Next step is to use both high-intensity and wide-angle IR LEDS and to drive them at much higher power (right now the one wide-angle LED is being driven directly by the MCU – which you should never do).
Here is a picture of the prototype in all its glory:
And here is another picture with the individual parts labelled: