Updated README.md file

Updated current progress status in the README.md file + started to add a getting started section describing the steps required to build and flash the W800_Smart_Watch firmware
This commit is contained in:
Th3maz1ng 2023-02-27 17:27:06 +01:00
parent a5d1c3dc49
commit 655a37404d

View File

@ -5,14 +5,40 @@ I am also quite unhappy with the smartwatches that are on the market (expensive,
I also wanted to test this W800 SOC more deeply and see what it could do and I think it is a perfect fit for the project.
So let's go !
## Getting started :
### So, you'd like to try this project yourself ?
### Here are the steps to follow, to be able to build the firmware and flash the board :
#### On Windows :
1) Start by cloning the repository.
**Put it in a path that doesn't contain any spaces** ie : C:\Users\Bob\Desktop\projects for example.
2) Once cloning is done, you will need to install the [MSYS2](https://www.msys2.org/) tool/environment. This tool is need to compile the project using **Make**.
3) Open a terminal by clicking on the **MSYS2** icon and execute the following commands to install :
1) Update packages :
```bash
pacman -Syu
```
2) Install make :
```bash
pacman -S msys/make
```
3) Install automake :
```bash
pacman -S msys/automake
```
5) Install autoconf :
```bash
pacman -S msys/autoconf
```
## A Smart Watch project using the Chinese W800 SOC.
The W800 is a pretty interesting chip with impressive characteristics for its price (around 1$) :
### Core :
* 32bit XT804 CPU
* 240 Mhz frequency
* 240 Mhz max clock
### Memory :
* 2 MB on chip flash
* 288 KB RAM
* 288 KB RAM, ~130 KB available to the user
### Wireless connectivity :
* Bluetooth EDR(Classic) and BLE 4.2
* WiFi 2.4Ghz 802.11 b/g/n
@ -40,7 +66,7 @@ Possible choices :
* ~~A piezo buzzer~~ : dropped, maybe in next version.
## Power source :
* 1 cell lipo 450 mAh battery.
* A single 450 mAh cell lipo battery.
* A charge/discharge controller.
## Screen + touch element :
@ -89,49 +115,51 @@ using a magnetic 4 pin plug.
||PB_11|**I/O**|I²S_DO/MMC_D3/HSPI_DO/SDIO_D3|U/D|**BMA456 IRQ 2 line**||
||GND|P|Ground (Central Pad)||||
## What is done/working so far :
## What is done/working so far - HARDWARE :
* Schematic :
* First version of the schematic is done an available [here](design/Kicad/W800_Smart_Watch/W800_Smart_Watch.pdf).
* PCB version 1.0 design is done based on the schematic. Waiting for the PCBs from JLCPCB.
* Wake up interrupts handling :
* Wrist tilt MCU wake up working
* LCD touch wake up
* MCU sleep feature :
* Sleep and Standby modes working but implemented in a crude way.
Can and should be improved.
## What is done/working so far - SOFTWARE :
* LVGL 8.3.3 running on the SOC using DMA.
* Supported LCD drivers :
* ILI9341 in 4-line serial mode (8 bits) with D/C pin
* ST7789 in 4-line serial mode (8 bits) with D/C pin
* GC9A01 in 4-line serial mode (8 bits) with D/C pin
* Supported LCD touch screen :
* CST816D capacitive touch ic.
* Three screens designed and working with LVGL :
* CST816D I2C capacitive touch ic.
* Four screens designed and working with LVGL :
* 1 watch face based on a casio watch.
* 1 menu list screen with icons.
* 1 menu screen with a list of icons.
* 1 setting screen with basic settings (date and time + display brightness) (work in progress).
* 1 compass application using the QMC5883L.
* Debug UART on PB_2 (output only)
* Wake up interrupts handling :
* Wrist tilt MCU wake up working
* LCD touch wake up
* Sensors/Actuators :
* QMC5883L driver working
* BMA456 driver working
* BMP280 driver working (temperature + pressure)
* BMP280 driver working (temperature + pressure + altitude)
* Battery voltage sense using ADC is working
* Vibration motor controlled by PWM working
* Update the W800 SDK from version 1.00.08 to version 1.00.10 released in January of 2023.
## To do :
* Write I2C drivers for the :
* [X] BMA456
* [X] Wrist tilt detection
* [X] BMP280
* [X] Temperature
* [X] Pressure
* [X] QMC5883L
* [X] Write the init sequence for the GC9A01 LCD driver.
* [X] Make LCD display + touch work.
* [X] Design and test battery voltage sensing circuit -> voltage divider bridge because ADC input can sense 2.5V Max.
## To do - HARDWARE:
* [ ] Add the MAX30102 Heart Rate Monitor to the current design.
## To do - SOFTWARE
* [ ] Finish to design the settings page.
* [ ] Implement a good algorithm to handle adaptiv MCU clock to save power
* [X] Test the charge circuit.
* [X] Handle watch auto sleep feature with wake up on screen touch + wrist tilt (POC could be improved).
* Design and test the :
* [X] vibration motor circuit
* [X] Draw the schematic, the first revision of the schematic is available [here](design/Kicad/W800_Smart_Watch/W800_Smart_Watch.pdf).
* [X] Design the PCB (routing, placement etc..) on a 2 layer PCB - done.
* [ ] Update the W800 SDK from version 1.00.08 to version 1.00.10 released in January of 2023.
* [ ] Implement a good algorithm to handle adaptiv MCU clock
to save power
* Drivers:
* [] Write/port the MAX30102 Heart Rate Monitor driver to the project.
* [ ] Add a wake up alarm app (using the vibration motor).
## Achieved power consumption recap:
(Need to work on sleep current :-( )