This firmware is for the spark strober, using an [STM32 F1 series micro-controller](http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1031). project ======= summary ------- The spark strober switches mains electricity. This allows to switch on a flood light or stroboscope for a short time to create a light pulse. technology ---------- components: - [blue pill](https://wiki.cuvoodoo.info/doku.php?id=stm32f1xx#blue_pill), based on a STM32F103C8T6: development board to control everything - HLK-PM01 power module: 100-240V AC to 5V DC power supply to power the board and other peripherals (protected with a 0.25A glass fuse) - VS1838b: 38 kHz infrared demodulator to receive the codes from a remote control (connected using a 3.5 mm TRS jack) - G3MB-202P: compact 240V AC 2A solid state relay to switch mains electricity (protected with a 2A fuse) - infrared remote control sending NEC codes (low power version salvages from a multimedia player, high power version from Jedi iDual) connections =========== Hi-Link HLK-PM01: - AC: 100-240V AC mains - +Vo: 5V - -Vo: ground Omron G3MB-202P: - 1: 100-240V AC mains line input - 2: 100-240V AC mains line output - 3: 5V with 330 Ohm resistor - 4: blue pill, PB6 VS1838b: - 1, OUT: 3.5 mm TRS jack plug, ring - 2, GND: ground - 3, VCC: 5V (with 100 nF decoupling capacitor) 3.5 mm TRS jack socket: - tip: 5V - ring: blue pill, PB8, TIM4_CH3 - sleeve: ground blue pill: - PB8, TIM4_CH3: IR demodulator OUT - PB6: SSR control - 5V: 5V - GND: ground code ==== control ------- Have a look at the `application.c` *ir_action* to changes the AC on/off switch animations and corresponding remote control code. dependencies ------------ The source code uses the [libopencm3](http://libopencm3.org/) library. The projects is already a git submodules. It will be initialized when compiling the firmware. Alternatively you can run once: `git submodule init` and `git submodule update`. firmware -------- To compile the firmware run `rake`. documentation ------------- To generate doxygen documentation run `rake doc`. flash ----- There are two firmware images: `bootloader` and `application`. The `bootloader` image allows to flash the `application` over USB using the DFU protocol. The `bootloader` is started first and immediately jumps to the `application` if it is valid and the DFU mode is not forced (i.e. by pressing the user button on the board or requesting a DFU detach in the `application`). The `application` image is the main application and is implemented in `application.c`. It is up to the application to advertise USB DFU support (i.e. as does the provided USB CDC ACM example). The `bootlaoder` image will be flashed using SWD (Serial Wire Debug). For that you need an SWD adapter. The `Makefile` uses a Black Magic Probe (per default), or a ST-Link V2 along OpenOCD software. To flash the `booltoader` using SWD run `rake flash_booloader`. Once the `bootloader` is flashed it is possible to flash the `application` over USB using the DFU protocol by running `rake flash`. To force the bootloader to start the DFU mode press the user button or short a pin, depending on the board. It is also possible to flash the `application` image using SWD by running `rake flash_application`. debug ----- SWD also allows to debug the code running on the micro-controller using GDB. To start the debugging session run `rake debug`. USB --- The firmware offers serial communication over USART1 and USB (using the CDC ACM device class).