improve documentation

This commit is contained in:
King Kévin 2016-04-12 16:42:56 +02:00
parent 51ed093476
commit 08b1ea5d4f
1 changed files with 25 additions and 13 deletions

View File

@ -1,6 +1,11 @@
The LED clock is an add-on for round wall clocks.
LEDs need to be attached to the border of the clock.
The micro-controller will then show how much time of the day passed using light.
The purpose is to have LEDs on the circumference of the clock to show the progress of the time using colored light.
For that you will need:
* a WS2812b RGB LEDs strip (long enough to go around the clock)
* a development board with a STM32F103 micro-controller and 32.768 kHz oscillator for the Real Time Clock (such as the blue pill)
* a coin cell battery to keep the RTC running (optional)
* a GL5528 photo-resistor to adjust the LED brightness (optional)
project
=======
@ -8,14 +13,15 @@ project
summary
-------
The time will be shown as arc progress bars, instead of hands pointing at the current time.
The time will be shown as arc progress bars, in addition to the hands of the clock pointing at the current time.
The hours passed since the beginning of the midday are shown using blue LEDs.
The minutes passed sine the beginning of the hour are shown using green LEDs.
The (gamma corrected) brightness of the last LED shows how much of the hours or minutes has passed.
Whichever progress is higher will be shown on top of the other.
For example if it's 6:45, the first half of the circle will be blue, and an additional quarter will be green.
The seconds passed since the beginning of the minute are shown using a running red LED, similar to the seconds hand.
The red color might be added on top of the blue, or green color, then showing as violet or orange.
The (gamma corrected) brightness of the last LED shows how much of the hour, minute, or second has passed.
technology
----------
@ -23,12 +29,13 @@ technology
The LEDs are controlled using a [STM32 F1 series micro-controller](http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1031) (based on an ARM Cortex-M3 32-bit processor).
The board needs to include a 32.768 kHz oscillator for the Real-Time-Clock (RTC).
Preferably use a [blue pill](https://wiki.cuvoodoo.info/doku.php?id=stm32f1xx#blue_pill) board.
The board needs to be powered by an external 5 V power supply (e.g. using the USB port).
The board needs to be powered by an external 5 V power supply (e.g. through the USB port).
To set the time connect using serial over the USB port (providing the CDC ACM profile) or USART1 port (TX and RX are on pin PA9 and PA10) and enter "time HH:MM:SS".
Optionally connect a 3 V coin battery on the VBAT pin for the RTC to keep the correct time in case the main power supply gets disconnected.
To know the charge of the coin cell connect its positive terminal to ADC channel 1 on pin PA1.
The level of the battery will be shown on the LEDs just after a restart, and the voltage will be shown over serial.
To avoid the micro-controller to drain the battery trough the GPIO when un-powered use an NPN transistor, with the collector on the battery, the emitter on the pin, and the base to Vcc.
To avoid the micro-controller to drain the battery trough the GPIO when un-powered use an NPN transistor, with the collector on the battery, the emitter on the pin, and the base on Vcc.
If you don't want to use this feature connect PA1 to ground.
For the LEDs use a 1 meter LED strip with 60 red-green-blue WS2812b LEDs.
Tape the LED strip along the border/edge of the clock.
@ -40,14 +47,16 @@ SPI is used to efficiently shift out the LED color values to the WS2812b LEDs.
A custom clock is provided for this operation using channel 3 of timer 3 on pin PB0.
Simply connect this clock to the SPI CLK input on pin PA5.
The brightness of LEDs is dependant on the ambient luminosity.
To measure the ambient luminosity a 5528 photo-resistor is used.
The brightness of the LEDs is dependant on the ambient luminance.
To measure the ambient luminance a GL5528 photo-resistor is used.
Connect one leg of the photo-resistor to ADC channel 0 on pin PA0 and the other to ground.
Connect one leg of a 1 kOhm resistor to ADC channel 0 on pin PA0 and the other to a 3.3 V pin.
This voltage divider allows to measure the photo-sensor's resistance and determine the luminance.
If you don't want to use this feature, connect PA1 to ground for the highest brightness or Vcc for the lowest brightness.
If the board does not provide a 32.768 kHz oscillator for the internal RTC it is also possible to use an external RTC such as the Maxim DS1307.
The time is then read over I2C and incremented using the square wave output.
Working example code is under the `DS1307_4096Hz_timer` tag.
A working example code is under the `DS1307_4096Hz_timer` tag, but needs to be integrated in the latest code state.
board
=====
@ -62,7 +71,7 @@ The underlying template also supports following board:
**Which board is used is defined in the Makefile**.
This is required:
- for the linker script to know the memory layout (flash and RAM)
- map the user LEDs and buttons provided on the board
- map the user LED and button provided on the board
code
====
@ -90,7 +99,10 @@ flash
The firmware will be flashed using SWD (Serial Wire Debug).
For that you need an SWD adapter.
The `Makefile` uses a ST-Link V2, along with the OpenOCD software.
To flash using SWD run `make flash`
To flash using SWD run `make flash`.
debug
-----
SWD also allows to debug the code running on the micro-controller using GDB.
To start the debugging session run `make debug`.
@ -98,8 +110,8 @@ To start the debugging session run `make debug`.
USB
---
The firmware also offer serial communication over USB using the CDC ACM device class.
The firmware offers serial communication over USART1 and USB (using the CDC ACM device class).
You can also reset the board by setting the serial width to 5 bits.
You can also reset the board by setting the serial width to 5 bits over USB.
To reset the board run `make reset`.
This only works if the USB CDC ACM is running correctly and the micro-controller isn't stuck.