101 lines
4.7 KiB
Markdown
101 lines
4.7 KiB
Markdown
# W800_Smart_Watch
|
|
## Why this project :
|
|
I was interested in working on a bigger project with more challenges and which could be useful.
|
|
I am also quite unhappy with the smartwatches that are on the market (expensive, no access to the firmware, data collection and privacy issues), that's why I decided to try doing my own that I can fully customize. This is going to be a long adventure with a lot of discoveries along the way :).
|
|
I also wanted to test this W800 SOC more deeply and see what it could do and I think it perfectly fits the project.
|
|
So let's go !
|
|
|
|
## A Smart Watch project using the Chinese W800 SOC.
|
|
The W800 is a pretty interesting chip with impressive characteristics :
|
|
### Core :
|
|
* 32bit XT804 CPU
|
|
* 240 Mhz frequency
|
|
### Memory :
|
|
* 2 MB on chip flash
|
|
* 288 KB RAM
|
|
### Wireless connectivity :
|
|
* Bluetooth EDR(Classic) and BLE 4.2
|
|
* WiFi 2.4Ghz 802.11 b/g/n
|
|
|
|
|
|
## Sensors :
|
|
The goal is to embed the following sensors in the watch :
|
|
* An accelerometer (for wrist tilt detection, single and double tap detection , foot step counting and more)
|
|
Possible choices :
|
|
* ADXL345
|
|
* MPU6050
|
|
* BMI160
|
|
* LSM6DS3
|
|
* BMA456 <-- SELECTED i2c addr : 0x18 or 0x19 7 bit address, has the wrist tilt detection feature.
|
|
* A magnetometer (possible choices):
|
|
* HMC5883L <-- SELECTED i2c addr : 0x1E 7 bit address, better soldering footprint
|
|
* QMC5883L
|
|
* LSM303DLHC
|
|
* BMM150 <-- Package with balls, hard to handle
|
|
* An air pressure/temperature sensor (to display the altitude for example)
|
|
* BMP280 <-- SELECTED i2c addr : 0x76 or 0x77
|
|
|
|
## Actuators :
|
|
* A vibration motor to notify events to the user.
|
|
* A piezo buzzer.
|
|
|
|
## Power source :
|
|
* 1 cell lipo battery.
|
|
* A charge controller.
|
|
|
|
## Screen + touch element :
|
|
* Screen with touch : ~~STP240240_R130A1(T), SPI interface 240*240 px, ST7789V driver.~~ Tested the screen, failed to make it work, it uses a 3 line serial interface in 9 bit mode which is a pain when using DMA...
|
|
Still looking for a compatible round LCD screen with Touch Panel.
|
|
Requirements : 4 line serial interface in 8 bit mode with a dedicated Data/Command pin.
|
|
* Touch element i2c addr : 0x46, IT7257 I2C touch driver. (May change if I find an other screen)
|
|
|
|
|
|
## MCU Pin assignement table :
|
|
| Pin Number | Pin Name | Type | Function | Pull UP/DOWN| Connected to | Comment |
|
|
|------------|----------|------|----------|-------------|--------------|---------|
|
|
||PB_20|I/O|UART0_RX/PWM1/UART1_CTS/**I²C_SCL**|U/D|**USB/Serial TX pin** and **BMA456, Touch Panel, HMC5883L and BMP280 SCL pins**||
|
|
||PB_19|I/O|UART0_TX/PWM0/UART1_RTS/**I²C_SDA**|U/D|**USB/Serial RX pin** and **BMA456, Touch Panel, HMC5883L and BMP280 SDA pins**||
|
|
||WAKEUP|I|**External Wake Up Pin**|D|**BMA456 IRQ line** and **Touch Panel IRQ line**|The chip is waken up when the pin is HIGH|
|
|
||RESET|I|Reset Pin|D|**Micro switch** and **USB/Serial RTS pin**||
|
|
||XTAL_OUT|O|External crystal output||||
|
|
||XTAL_IN|I|External crystal input||||
|
|
||AVDD3V3|P|Chip power supply, 3.3V||||
|
|
||ANT|I/O|RF Antenna||||
|
|
||AVDD3V3|P|Chip power supply, 3.3V||||
|
|
||AVDD3V3|P|Chip power supply, 3.3V|||
|
|
||AVDD3V3_AUX|P|Chip power supply, 3.3V||||
|
|
||TEST|I|Test function configuration pin||||
|
|
||BOOTMODE|I/O|BOOTMODE and I²S_MCLK/LSPI_CS/PWM2/I²S_DO|U/D|||
|
|
||PA_1|I/O|JTAG_CK/I²C_SCL/PWM3/I²S_LRCK/**ADC0**|U/D|**Battery resistor voltage divider output**||
|
|
||PA_4|I/O|JTAG_SWO/I²C_SDA/**PWM4**/I²S_BCK/ADC1 |U/D|**Screen backlight N-MOSFET driver**||
|
|
||PA_7|I/O|PWM4/LSPI_MOSI/I²S_MCK/I²S_DI/Touch0|U/D|||
|
|
||VDD3V3IO|P|IO power supply, 3.3V||||
|
|
||PB_0|I/O|PWM0/LSPI_MISO/UART3_TX/PSRAM_CK/Touch3|U/D|||
|
|
||PB_1|I/O|PWM1/LSPI_CK/UART3_RX/PSRAM_CS/Touch4|U/D|||
|
|
||PB_2|I/O|PWM2/LSPI_CK/UART2_TX/PSRAM_D0/Touch5|U/D|||
|
|
||PB_3|I/O|PWM3/LSPI_MISO/UART2_RX/PSRAM_D1/Touch6|U/D|||
|
|
||PB_4|I/O|LSPI_CS/UART2_RTS/UART4_TX/PSRAM_D2/Touch7|U/D|||
|
|
||PB_5|I/O|LSPI_MOSI/UART2_CTS/UART4_RX/PSRAM_D3/Touch8|U/D|||
|
|
||VDD3V3IO|P|IO power supply, 3.3V||||
|
|
||CAP|I|External capacitor, 4.7µF||||
|
|
||PB_6|I/O|UART1_TX/**MMC_CLK**/HSPI_CK/SDIO_CK/Touch9|U/D|||
|
|
||PB_7|I/O|UART1_RX/**MMC_CMD**/HSPI_INT/SDIO_CMD/Touch10|U/D|||
|
|
||PB_8|I/O|I²S_BCK/MMC_D0/PWM_BREAK/SDIO_D0/Touch11|U/D|||
|
|
||PB_9|I/O|I²S_LRCK/MMC_D1/HSPI_CS/SDIO_D1/Touch12|U/D|||
|
|
||PB_10|I/O|I²S_DI/MMC_D2/HSPI_DI/SDIO_D2|U/D|||
|
|
||VDD3V3IO|P|IO power supply, 3.3V||||
|
|
||PB_11|I/O|I²S_DO/MMC_D3/HSPI_DO/SDIO_D3|U/D|||
|
|
||GND|P|Ground (Central Pad)||||
|
|
|
|
## What is done/working so far :
|
|
* LVGL 8.3.3 running on the SOC using DMA.
|
|
* Supported LCD drivers : ILI9341 with D/C pin and ST7789 with D/C pin
|
|
* Two screens designed and working with LVGL : 1 watch face based on a casio watch and a menu list with icons.
|
|
|
|
## To do :
|
|
* Write I2C drivers for the BMA456, BMP280 and HMC5883L.
|
|
* Finish to design the settings page.
|
|
* Test the charge circuit.
|
|
* Draw the schematic.
|
|
* Design the PCB.
|