Giter VIP home page Giter VIP logo

watchx's Introduction

WatchX

开源智能手表, 高质量流畅(60FPS+)的动画效果, 易于扩展的系统框架.

演示视频:https://www.bilibili.com/video/BV1AK4y1b7Xd

UI框架

LittlevGL V6.1.2

硬件配置

  • 1.主控: STM32F411CEU6 (主频:100MHz RAM:128KB ROM:512KB)
  • 2.屏幕: ST7789 IPS 1.14inch SPI接口 135x240分辨率 100Hz刷新率
  • 3.输入设备: 按键x3
  • 4.RTC:MCU内置RTC时钟
  • 5.加速度计:MPU6050
  • 6.气压计:BMP180
  • 7.电源管理:TP4056 + TPS63070

功能

  • 1.时间显示
  • 2.温度显示
  • 3.气压显示
  • 4.海拔显示
  • 5.秒表
  • 6.亮度控制
  • 7.时间设置
  • 8.Arduboy/Arduboy2 Game System
  • 9.自动关机(5-300sec)
  • 10.待续...

成品展示

image

更多>>

watchx's People

Contributors

fastshift avatar trigger-cn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

watchx's Issues

Info Please

Hi,
This is a really cool project/product ! IMO it has a lot of scope and possibilities !

I am an embedded developer and amateur endurance athlete ( https://www.strava.com/athletes/12265248 ) and the prospect of being able to tinker with the wrist unit I use is very appealing to me even though it may not be sufficiently rugged for general use but for my purposes this is not a big problem.

Some questions,

  1. Can I buy one or two units, If so where from and how ?
  2. Do you have any plans to add Bluetooth and maybe WiFi to the hardware at some point ?
  3. I have been using LVGL for a few years now and generally use the IAR compiler.
    I am be willing to adapt the project to IAR for both IAR and Eclipse IDE's and in future VisualGDB ( https://visualgdb.com/ ) using either IAR and/Or GNU Compilers. I am also willing to migrate the source code for LVGL V7.x compatibility. Would you welcome collaboration in this regard ?

Looking forward to your response.

PageManager移植问题

您好,冒昧的打搅一下: 因为很喜欢watchX里面的pagemanager库。所以尝试把您的库集成到了之前自己的keil工程里面(stm32F429),并加上了--gnu选项。现在编译器报很多错误。您看可能是哪里的问题呢?感谢!
Build started: Project: NETWORK
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\PROGRAM\Keil\ARM\ARMCC\Bin'
Build target 'NETWORK'
compiling main.c...
..\LWIP\lwip-1.4.1\src\include\ipv4\lwip/ip_addr.h(53): warning: #3135-D: attribute does not apply to any entity
PACK_STRUCT_BEGIN
..\LWIP\lwip-1.4.1\src\include\ipv4\lwip/ip_addr.h(74): warning: #3135-D: attribute does not apply to any entity
PACK_STRUCT_BEGIN
..\GUI\DisplayPrivate.h(19): warning: #1295-D: Deprecated declaration DisplayError_Init - give arg types
void DisplayError_Init();
..\GUI\DisplayPrivate.h(20): warning: #1295-D: Deprecated declaration Display_Init - give arg types
void Display_Init();
..\GUI\DisplayPrivate.h(21): warning: #1295-D: Deprecated declaration Display_Update - give arg types
void Display_Update();
..\Libraries\PageManager\PageManager.h(44): error: #20: identifier "class" is undefined
class PageManager {
..\Libraries\PageManager\PageManager.h(44): error: #65: expected a ";"
class PageManager {
..\Libraries\PageManager\PageManager.h(65): warning: #12-D: parsing restarts here after previous syntax error
);
..\Libraries\PageManager\PageManager.h(68): warning: #1295-D: Deprecated declaration PagePop - give arg types
bool PagePop();
..\Libraries\PageManager\PageManager.h(71): warning: #1295-D: Deprecated declaration PageStackClear - give arg types
void PageStackClear();
..\Libraries\PageManager\PageManager.h(72): warning: #1295-D: Deprecated declaration Running - give arg types
void Running();
..\Libraries\PageManager\PageManager.h(73): warning: #77-D: this declaration has no storage class or type specifier
private:
..\Libraries\PageManager\PageManager.h(73): error: #65: expected a ";"
private:
..\Libraries\PageManager\PageManager.h(80): error: #169: expected a declaration
};
..\GUI\DisplayPrivate.h(42): error: #757: variable "PageManager" is not a type name
extern PageManager page;
..\GUI\DisplayPrivate.h(55): warning: #1295-D: Deprecated declaration lv_port_disp_init - give arg types
void lv_port_disp_init();
..\GUI\DisplayPrivate.h(67): error: #18: expected a ")"
uint16_t time = LV_ANIM_TIME_DEFAULT,
..\GUI\DisplayPrivate.h(70): warning: #12-D: parsing restarts here after previous syntax error
);
..\GUI\DisplayPrivate.h(84): warning: #1295-D: Deprecated declaration AppWindow_Create - give arg types
void AppWindow_Create();
..\GUI\DisplayPrivate.h(86): warning: #1295-D: Deprecated declaration AppWindow_GetHeight - give arg types
lv_coord_t AppWindow_GetHeight();
..\GUI\DisplayPrivate.h(87): warning: #1295-D: Deprecated declaration AppWindow_GetWidth - give arg types
lv_coord_t AppWindow_GetWidth();
main.c(212): warning: #223-D: function "W25QXX_Init" declared implicitly
W25QXX_Init(); //SPI W25Q128 init 32MByte
main.c(283): warning: #223-D: function "app_system_parameter_init" declared implicitly
if(app_system_parameter_init())
main.c(193): warning: #177-D: variable "res" was declared but never referenced
u8 res;
main.c(194): warning: #177-D: variable "dtsize" was declared but never referenced
u32 dtsize,dfsize;
main.c(194): warning: #177-D: variable "dfsize" was declared but never referenced
u32 dtsize,dfsize;
main.c(195): warning: #177-D: variable "stastr" was declared but never referenced
u8 stastr=0;
main.c(196): warning: #177-D: variable "version" was declared but never referenced
u8 version=0;
main.c(197): warning: #177-D: variable "verbuf" was declared but never referenced
u8 verbuf[12];
main.c(199): warning: #177-D: variable "icowidth" was declared but never referenced
u8 icowidth;
main.c(681): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[0].Temp = p1
ad[0].Rt
ad[0].Rtad[0].Rtad[0].Rt + p2ad[0].Rtad[0].Rtad[0].Rt + p3ad[0].Rtad[0].Rt + p4ad[0].Rt + p5;
main.c(681): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[0].Temp = p1ad[0].Rtad[0].Rtad[0].Rtad[0].Rt + p2ad[0].Rtad[0].Rtad[0].Rt + p3ad[0].Rtad[0].Rt + p4ad[0].Rt + p5;
main.c(681): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[0].Temp = p1ad[0].Rtad[0].Rtad[0].Rtad[0].Rt + p2ad[0].Rtad[0].Rtad[0].Rt + p3ad[0].Rtad[0].Rt + p4ad[0].Rt + p5;
main.c(725): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[1].Temp = p1ad[1].Rtad[1].Rtad[1].Rtad[1].Rt + p2ad[1].Rtad[1].Rtad[1].Rt + p3ad[1].Rtad[1].Rt + p4ad[1].Rt + p5;
main.c(725): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[1].Temp = p1ad[1].Rtad[1].Rtad[1].Rtad[1].Rt + p2ad[1].Rtad[1].Rtad[1].Rt + p3ad[1].Rtad[1].Rt + p4ad[1].Rt + p5;
main.c(725): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[1].Temp = p1ad[1].Rtad[1].Rtad[1].Rtad[1].Rt + p2ad[1].Rtad[1].Rtad[1].Rt + p3ad[1].Rtad[1].Rt + p4ad[1].Rt + p5;
main.c(769): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[2].Temp = p1ad[2].Rtad[2].Rtad[2].Rtad[2].Rt + p2ad[2].Rtad[2].Rtad[2].Rt + p3ad[2].Rtad[2].Rt + p4ad[2].Rt + p5;
main.c(769): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[2].Temp = p1ad[2].Rtad[2].Rtad[2].Rtad[2].Rt + p2ad[2].Rtad[2].Rtad[2].Rt + p3ad[2].Rtad[2].Rt + p4ad[2].Rt + p5;
main.c(769): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[2].Temp = p1ad[2].Rtad[2].Rtad[2].Rtad[2].Rt + p2ad[2].Rtad[2].Rtad[2].Rt + p3ad[2].Rtad[2].Rt + p4ad[2].Rt + p5;
main.c(812): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[3].Temp = p1ad[3].Rtad[3].Rtad[3].Rtad[3].Rt + p2ad[3].Rtad[3].Rtad[3].Rt + p3ad[3].Rtad[3].Rt + p4ad[3].Rt + p5;
main.c(812): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[3].Temp = p1ad[3].Rtad[3].Rtad[3].Rtad[3].Rt + p2ad[3].Rtad[3].Rtad[3].Rt + p3ad[3].Rtad[3].Rt + p4ad[3].Rt + p5;
main.c(812): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[3].Temp = p1ad[3].Rtad[3].Rtad[3].Rtad[3].Rt + p2ad[3].Rtad[3].Rtad[3].Rt + p3ad[3].Rtad[3].Rt + p4ad[3].Rt + p5;
main.c(820): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad7705ctr1 += 0.5;
main.c: 37 warnings, 6 errors
"..\OBJ\Tempate.axf" - 6 Error(s), 37 Warning(s).
Target not created.
Build Time Elapsed: 00:00:10

请问为什么选择使用开关电源而不是线性电源呢

我最近也在做一款类似的手表,看到您的项目很有帮助。我认为在这种情况下使用线性电源有以下优点:
1.外围元件少,节省布线空间
2.单节锂电池降压到3.3V,也有80~90%的效率
请问您为什么选择使用开关电源呢?是为了追求尽可能高的电源效率还是有其他考虑呢

死机问题

从主页面进入到菜单正常,但是从菜单进入其他页面会卡死在Setup

Compile error

i had downloaded this project and watching you video , it's so cool , but when I ready to compile this project I find something error that located in audio.app 160 line, 164 line 170 line 175line .those error are same they are #19:extra text after expected end of number .

PageManager移植问题请教

您好,冒昧的打搅一下: 因为很喜欢watchX里面的pagemanager库。所以尝试把您的库集成到了之前自己的keil工程里面(stm32F429),并加上了--gnu选项。现在编译器报很多错误。您看可能是哪里的问题呢?感谢!
Build started: Project: NETWORK
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\PROGRAM\Keil\ARM\ARMCC\Bin'
Build target 'NETWORK'
compiling main.c...
..\LWIP\lwip-1.4.1\src\include\ipv4\lwip/ip_addr.h(53): warning: #3135-D: attribute does not apply to any entity
PACK_STRUCT_BEGIN
..\LWIP\lwip-1.4.1\src\include\ipv4\lwip/ip_addr.h(74): warning: #3135-D: attribute does not apply to any entity
PACK_STRUCT_BEGIN
..\GUI\DisplayPrivate.h(19): warning: #1295-D: Deprecated declaration DisplayError_Init - give arg types
void DisplayError_Init();
..\GUI\DisplayPrivate.h(20): warning: #1295-D: Deprecated declaration Display_Init - give arg types
void Display_Init();
..\GUI\DisplayPrivate.h(21): warning: #1295-D: Deprecated declaration Display_Update - give arg types
void Display_Update();
..\Libraries\PageManager\PageManager.h(44): error: #20: identifier "class" is undefined
class PageManager {
..\Libraries\PageManager\PageManager.h(44): error: #65: expected a ";"
class PageManager {
..\Libraries\PageManager\PageManager.h(65): warning: #12-D: parsing restarts here after previous syntax error
);
..\Libraries\PageManager\PageManager.h(68): warning: #1295-D: Deprecated declaration PagePop - give arg types
bool PagePop();
..\Libraries\PageManager\PageManager.h(71): warning: #1295-D: Deprecated declaration PageStackClear - give arg types
void PageStackClear();
..\Libraries\PageManager\PageManager.h(72): warning: #1295-D: Deprecated declaration Running - give arg types
void Running();
..\Libraries\PageManager\PageManager.h(73): warning: #77-D: this declaration has no storage class or type specifier
private:
..\Libraries\PageManager\PageManager.h(73): error: #65: expected a ";"
private:
..\Libraries\PageManager\PageManager.h(80): error: #169: expected a declaration
};
..\GUI\DisplayPrivate.h(42): error: #757: variable "PageManager" is not a type name
extern PageManager page;
..\GUI\DisplayPrivate.h(55): warning: #1295-D: Deprecated declaration lv_port_disp_init - give arg types
void lv_port_disp_init();
..\GUI\DisplayPrivate.h(67): error: #18: expected a ")"
uint16_t time = LV_ANIM_TIME_DEFAULT,
..\GUI\DisplayPrivate.h(70): warning: #12-D: parsing restarts here after previous syntax error
);
..\GUI\DisplayPrivate.h(84): warning: #1295-D: Deprecated declaration AppWindow_Create - give arg types
void AppWindow_Create();
..\GUI\DisplayPrivate.h(86): warning: #1295-D: Deprecated declaration AppWindow_GetHeight - give arg types
lv_coord_t AppWindow_GetHeight();
..\GUI\DisplayPrivate.h(87): warning: #1295-D: Deprecated declaration AppWindow_GetWidth - give arg types
lv_coord_t AppWindow_GetWidth();
main.c(212): warning: #223-D: function "W25QXX_Init" declared implicitly
W25QXX_Init(); //SPI W25Q128 init 32MByte
main.c(283): warning: #223-D: function "app_system_parameter_init" declared implicitly
if(app_system_parameter_init())
main.c(193): warning: #177-D: variable "res" was declared but never referenced
u8 res;
main.c(194): warning: #177-D: variable "dtsize" was declared but never referenced
u32 dtsize,dfsize;
main.c(194): warning: #177-D: variable "dfsize" was declared but never referenced
u32 dtsize,dfsize;
main.c(195): warning: #177-D: variable "stastr" was declared but never referenced
u8 stastr=0;
main.c(196): warning: #177-D: variable "version" was declared but never referenced
u8 version=0;
main.c(197): warning: #177-D: variable "verbuf" was declared but never referenced
u8 verbuf[12];
main.c(199): warning: #177-D: variable "icowidth" was declared but never referenced
u8 icowidth;
main.c(681): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[0].Temp = p1
ad[0].Rt
ad[0].Rtad[0].Rtad[0].Rt + p2ad[0].Rtad[0].Rtad[0].Rt + p3ad[0].Rtad[0].Rt + p4ad[0].Rt + p5;
main.c(681): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[0].Temp = p1ad[0].Rtad[0].Rtad[0].Rtad[0].Rt + p2ad[0].Rtad[0].Rtad[0].Rt + p3ad[0].Rtad[0].Rt + p4ad[0].Rt + p5;
main.c(681): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[0].Temp = p1ad[0].Rtad[0].Rtad[0].Rtad[0].Rt + p2ad[0].Rtad[0].Rtad[0].Rt + p3ad[0].Rtad[0].Rt + p4ad[0].Rt + p5;
main.c(725): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[1].Temp = p1ad[1].Rtad[1].Rtad[1].Rtad[1].Rt + p2ad[1].Rtad[1].Rtad[1].Rt + p3ad[1].Rtad[1].Rt + p4ad[1].Rt + p5;
main.c(725): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[1].Temp = p1ad[1].Rtad[1].Rtad[1].Rtad[1].Rt + p2ad[1].Rtad[1].Rtad[1].Rt + p3ad[1].Rtad[1].Rt + p4ad[1].Rt + p5;
main.c(725): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[1].Temp = p1ad[1].Rtad[1].Rtad[1].Rtad[1].Rt + p2ad[1].Rtad[1].Rtad[1].Rt + p3ad[1].Rtad[1].Rt + p4ad[1].Rt + p5;
main.c(769): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[2].Temp = p1ad[2].Rtad[2].Rtad[2].Rtad[2].Rt + p2ad[2].Rtad[2].Rtad[2].Rt + p3ad[2].Rtad[2].Rt + p4ad[2].Rt + p5;
main.c(769): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[2].Temp = p1ad[2].Rtad[2].Rtad[2].Rtad[2].Rt + p2ad[2].Rtad[2].Rtad[2].Rt + p3ad[2].Rtad[2].Rt + p4ad[2].Rt + p5;
main.c(769): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[2].Temp = p1ad[2].Rtad[2].Rtad[2].Rtad[2].Rt + p2ad[2].Rtad[2].Rtad[2].Rt + p3ad[2].Rtad[2].Rt + p4ad[2].Rt + p5;
main.c(812): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[3].Temp = p1ad[3].Rtad[3].Rtad[3].Rtad[3].Rt + p2ad[3].Rtad[3].Rtad[3].Rt + p3ad[3].Rtad[3].Rt + p4ad[3].Rt + p5;
main.c(812): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[3].Temp = p1ad[3].Rtad[3].Rtad[3].Rtad[3].Rt + p2ad[3].Rtad[3].Rtad[3].Rt + p3ad[3].Rtad[3].Rt + p4ad[3].Rt + p5;
main.c(812): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad[3].Temp = p1ad[3].Rtad[3].Rtad[3].Rtad[3].Rt + p2ad[3].Rtad[3].Rtad[3].Rt + p3ad[3].Rtad[3].Rt + p4ad[3].Rt + p5;
main.c(820): warning: #1035-D: single-precision operand implicitly converted to double-precision
ad7705ctr1 += 0.5;
main.c: 37 warnings, 6 errors
"..\OBJ\Tempate.axf" - 6 Error(s), 37 Warning(s).
Target not created.
Build Time Elapsed: 00:00:10

不能正常下载

您好!非常棒的软硬件设计,感谢分享!
我用原版PCB打样并且焊好了三块,现在遇到问题:ST-LINK Utility和MDK都只能识别到单片机,不能下载,焊接检查了没有问题,用按住Reset再松开的办法也不能正常下载,请问你有这个问题吗?如何debug呢?谢谢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.