A GPS bicycle speedometer that supports offline maps and track recording

Overview

X-TRACK

开源GPS自行车码表。

拥有可显示实时位置的离线地图。

支持记录和显示实时轨迹以及导出标准GPX格式的轨迹文件。

全新设计的"页面生命周期管理""消息订阅发布框架"

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

image

GUI

LVGL V8

硬件配置

  • 1.主控: AT32F403ACGU7 (主频:240MHz RAM:224KB ROM:1MB)
  • 2.屏幕: ST7789 IPS 1.54inch SPI接口 240x240分辨率 60Hz刷新率
  • 3.储存器: Micro SD CARD 32GB
  • 4.输入设备: 旋转编码器
  • 5.RTC: MCU内置RTC时钟
  • 6.加速度计: LSM6DSM (支持硬件计步输出)
  • 7.地磁计: LIS3MDL
  • 8.GPS: ATGM336H (BDS + GPS + GLONASS + GALILEO + QZSS + SBAS)
  • 9.电池: Li-ion 3.7V 683030 700mAh
  • 10.电源管理: LP5907-3.3 + MCP73831
  • 11.外壳: 3D打印 光固化

功能

  • 1.支持速度、距离、时间、卡路里、航向显示
  • 2.拥有离线地图,支持显示实时位置,支持缩放
  • 3.支持计步
  • 4.支持经纬度、海拔显示
  • 5.支持RTC自动根据GPS校准
  • 6.支持记录轨迹,可导出GPX格式的文件
  • 7.支持掉电自动保存数据(JSON格式文件)
  • 8.四小时续航 (持续工作,始终亮屏)
  • 9.支持在PC模拟器模拟,脱离硬件调试(配置为Release x86)
  • 10.支持显示实时轨迹
  • 11.待续...

实物演示

测速

default.mp4

历史轨迹显示(GPXSee)

image

致谢

感谢@davidce贡献的参考设计“自制基于arduino的GPS地图导航系统3.0”。

感谢@W-Mai改进的地图下载链接生成工具地图下载器LVGL图片转换器(Python版)批量文件重命名工具

感谢@Trigger-CNUI设计

感谢@MouriNaruto的LVGL Visual Studio模拟器lv_sim_visual_studio

感谢@dj140编写地图下载教程

Comments
  • 关于充电动画问题

    关于充电动画问题

    大神您好 我现在用您提供的PCB以及V1.5的程序 制作了这个码表 使用起来很不错 但是 我发现我在充电的时候 屏幕并没有显示充电 在菜单栏里面依旧显示放电 但是电池电压会逐渐升高 充电指示灯也会点亮 但是没有充电动画 这个不知道是我焊接的问题 还是说程序里面没有这个充电检测 大概测量了一下 这个BAT_CHG_DET脚不充电时电压为0.0V 充电时大概为0.3V左右 大概问了一下 好像别人做出了也没有充电动画或者显示 您看看这个大概是什么问题 :D

    opened by gyy0814 23
  • BOM  配单问题

    BOM 配单问题

    什么也不懂,没有经验,想拿这个项目练练手(是真的什么都不懂QwQ)
    拿去淘宝 BOM 配单的时候店家说这些不够详细
    大佬可以帮忙补充下吗,谢谢!

    FootPrint | Comment | LibRef | Designator | Quantity | 问题 -- | -- | -- | -- | -- | -- Pad_B | BAT_IN | Pad | BAT+ | 1 | 型号? Pad_B | GND | Pad | BAT- | 1 | 型号? 蜂鸣器 | Buzzer | BZ | BZ1 | 1 | 体积  多少V  有源无源 _SMD5020 |   |   |   |   | 什么感值 电容_C0805 | 4.7UF | cap | C1, C3 | 2 |   电容_C0603 | 104 | cap | C2, C4, C7, C8, C13, C18, C19, C20, | 12 |   电容_C0603 | 106 | cap | C5 | 1 |   电容_C1206 | 22uF | cap | C6 | 1 |   电容_C0603 | 105 | cap | C9, C10, C11, C12, C16, C17 | 6 |   电容_C0603 | 22pf | cap | C14, C15 | 2 |   LED_0603 | red | LED | D1 | 1 |   二极管_SOD-323 | 1N4148 | Diode | D2, D3, D4, D5 | 4 |   二极管_SOD-323 | 1N4007 | Diode | D6 | 1 |   开关按键 | SKRP | SW-PB | K1 | 1 | 体积 直插还是贴片 HDR1X4H | Header 4 | Header 4 | P2 | 1 | 排针还是排母 接插件 | Micro_SD | Micro_SD | P3 | 1 | 发图确认 接插件 | MICRO USB | MICRO USB | P4 | 1 | 发图确认 MOS_SOT-23 | AO3401 | MOSFET-P | Q1 | 1 |   MOS_SOT-23 | AON3400 | MOSFET-N | Q2 | 1 |   MOS_SOT-23 | AO3400 | MOSFET-N | Q3, Q4 | 2 |   电阻_R0603 | 2K | Res | R1 | 1 |   电阻_R0603 | 1K | Res | R2 | 1 |   电阻_R0603 | 20K | Res | R3, R4, R5, R6 | 4 |   电阻_R0603 | 10K | Res | R7, R8, R11, R13, R14, R15, R16 | 7 |   电阻_R0603 | 100R | Res | R9, R10 | 2 |   电阻_R0603 | 10R | Res | R12 | 1 |   SOT23-5 | MCP73831 | MCP73831 | U1 | 1 |   SOT23-5 | LP5907-3.3 | LP5907 | U2 | 1 |   AT主控 | AT32F403ACGU | AT32F403CGU6 | U3 | 1 |   串口 | CH340E | CH340E | U4 | 1 |   GPS-HTZN | HT1818Z3G5L | HT1818Z3G5L | U5 | 1 |   LGA- | LIS3MDL | LIS3DMDL | U6 | 1 |   LGA- | LSM6DSM | LSM6DSM | U7 | 1 |   ZJY154T- | IPS154-12 | IPS154-12 | U8 | 1 | 完整型号 SIQ-02FVS3 | Rotary Encoder | Rotary Encoder | U9 | 1 |   晶振_3215 | 32.768K | XTAL_A | Y1 | 1 |   Total | | |  | 67 |  

    Hardware 文件夹里的 BOM pdf 里因为 Footfrint 的不同内容之间没有横线分割所以可能把一项当成两项了,比如那个蜂鸣器…不过还是问一下具体的吧

    opened by Leo204-LKY 16
  • PageManager::Install相关问题

    PageManager::Install相关问题

    大佬好,我在App.cpp代码段中发现一次性加载了所有的pagemanager.Install,实际应用中发现这种操作会占用较多堆栈(我使用的单片机可操作堆栈较少),此处能否修改当某一page即将加载时在对其Install,随后page消失后对其Uninstall,尽可能减少堆栈的占用。如果可以该怎么操作?能否提供一个思路?

    opened by pockrt-m 10
  • Keil 编译报错

    Keil 编译报错

    环境 win10 keil 5.30 AT32 DFP已经安装 然后报缺少库?

    Error instantiating RTE components Error #540: 'Keil::Device:Startup:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:ADC:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:BKPR:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:DMA:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:EXTI:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:FMC:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:Framework:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:GPIO:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:PWR:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:RCC:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:RTC:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:SPI:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:TIMER:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:StdPeriph Drivers:USART:1.0.1' component is not available for target 'X-Track' Error #540: 'Keil::Device:System_AT32Fxx:1.0.1' component is not available for target 'X-Track'

    opened by stig3 10
  • make the page can pass parameters to the next page when execute pop

    make the page can pass parameters to the next page when execute pop

    When we execute the Push action.We can pass the user parameters the next page by the following code: Manager->Push("Pages/SystemInfos", &stash_data);

    But we can not do the same thing when we use the Pop action. So I add this code to fix this.

    opened by sidianneng 7
  • 请问如果需要更换软件I2C的GPIO口需要如何修改才行?

    请问如果需要更换软件I2C的GPIO口需要如何修改才行?

    你好,我这边在查看代码后发现代码中的I2C是使用的软件模拟的,我在自己的设计中由于一些其他原因需要更换I2C的IO口。 具体是从PB6/PB7更换为PB8/PB9。 我的具体做法是修改mcu_config.h中的WIRE_SDA_PIN/WIRE_SCL_PIN的内容。但是我发现修改后无法正常产生I2C波形。 期间我尝试过打开WIRE_USE_FULL_SPEED_I2C宏,这样虽然有波形了,但是用逻辑分析仪抓取波形后发现波形不对劲,另外也和我的外设无法通讯。另外我也尝试在关闭WIRE_USE_FULL_SPEED_I2C的情况下修改IO口的输出类型为OUTPUT(原始代码是OUTPUT_OPEN_DRAIN),这样修改后也能产生波形,但是依旧通讯失败。 同一个外设,我在使用PB6/PB7时是可以正常通讯的。

    因此这里想请教下是不是我有漏了什么需要修改的地方? 期待回复~

    opened by sidianneng 6
  • 地图文件的优化

    地图文件的优化

    用 1.6 的 java 地图下载器,下载地图后,再用 Tools\TilesConverterForLVGL.exe 工具进行转换,有两个问题:

    • 这个工具可否改进一下,可指定输出目录,这样原图 .png 和 .bin 就可以分开,拷贝的时候,文件数量会少一半;
    • 再一个,bin 文件一般是 256 * 256 * 2 = 128KB,有点浪费,特别是空图。是不是可以进行一个压缩处理?比如做一个 fs 的 filter。 我看 lv_lib_png 的 blog 说,'width x height x 4 byteRAM' 用 png/split-jpg 似乎 ram 不够。
    opened by dotnfc 6
  • Fix the log error when a pop operation is detected

    Fix the log error when a pop operation is detected

    Reproduce steps: 1 open the micro of DC_LOG_INFO in DataCenterLog.h 2 run the simulator project 3 click the SystemInfos button to enter the Systeminfo 4 we can see the log "Page POP is detect, move Page(SystemInfos) to foreground" in the console. 5 click the back button to back to Diaplate 6 However, we get the same log as below. It makes me confusing.

    What we need is "PagePOP is detect, move Page(Diaplate) to foreground"

    opened by sidianneng 4
  • 消息订阅发布框架使用中遇到的问题咨询

    消息订阅发布框架使用中遇到的问题咨询

    你好,我这边想参考IMU数据的传输流程新建一个sensor数据的传输。但是在仿真时遇到问题。

    添加步骤描述如下: 我在HAL层增加了对sensor的HAL层操作,同时在HAL层添加了相关的update函数周期性的向Datacenter提交数据。 然后是在DataProc中参考IMU的添加了DP_sensor.cpp文件,也在HAL_Def.h中添加了Datacenter中sensor数据类型的结构定义。还有在DP_LIST.inc中添加了sensor的相关代码。 最后是界面获取Datacenter的数据,我在Init函数中创建了一个account,然后添加了一个订阅者。最后在需要获取数据的地方通过Pull操作获取相关数据。

    当我在visual studio中进行仿真时,每次都会在DataCenter.cpp中的Find函数处报错。具体如下图: 捕获

    下面是我做过的调试工作: 1 通过单步调试发现,程序是在进入到App_Init();后的while循环中的lv_timer_handler();后崩溃的。具体是下面箭头标出的这行代码:

                next = _lv_ll_get_next(&LV_GC_ROOT(_lv_timer_ll), LV_GC_ROOT(_lv_timer_act));
    
                if(lv_timer_exec(LV_GC_ROOT(_lv_timer_act))) {//<<<<<<<<<<<<<<<---------------------
                    /*If a timer was created or deleted then this or the next item might be corrupted*/
                    if(timer_created || timer_deleted) {
    

    2 考虑到代码是在datacenter相关的代码中发生异常的,我尝试寻找调用了Find函数的代码。 发现在我注释掉界面中的Pull函数后,该异常会消失。通过查看代码发现,Pull函数中也的确有 调用Find函数。于是我尝试恢复调用Pull函数并加上断点,但是程序运行过程中没有停在该断点处, 最后还是发生了异常。

    基于以上情况,我想了解下是否是我在添加代码的过程中有什么纰漏导致了这个错误。 热切期盼你们的回复。

    opened by sidianneng 4
  • 想请教一些有关于时钟的问题

    想请教一些有关于时钟的问题

    您好,我在研究这个项目的DataProc的部分遇到一些疑问,想请教一下。系统上电初始化后Clock通过GPS (TzConv) 矫正RTC时钟,但矫正过程中DP_TzConv中首先更新了ArduinoTime库中的时间,然后使用ArduinoTime库中的时间返回给Clock。而之后的Recorder模块中直接通过Clock从RTC获取时间,那ArduinoTime库的时间还会在哪里用到呢?其他应用中为什么不直接使用RTC时间呢?

    opened by eternityqjl 4
  • keil5 编译源码错误,请教

    keil5 编译源码错误,请教

    ..\USER\App\Utils\ArduinoJson\src\ArduinoJson/Numbers/parseNumber.hpp(76): error: #304: no instance of overloaded function "ArduinoJson6180_51::VariantData::setInteger" matches the argument list

    ..\Libraries\SdFat\src\SdFat.h(333): error: #441: argument list for class template "SdFileSystem" is missing

    opened by polyGithub 4
  • 行者新出了个码表辰,我拆开看了一下它用的芯片,希望能给2代芯片选型一些参考

    行者新出了个码表辰,我拆开看了一下它用的芯片,希望能给2代芯片选型一些参考

    600mAh电池号称能续航30h,应该是在不开启蓝牙和背光的情况下,即使这样它的工作电流也只有20mA左右,GPS+CPU+屏幕做到这个功耗,可以说是非常惊人了。我最近在尝试使用esp32-s3移植本项目,跑了下官方的蓝牙demo,工作电流都有100mA左右,然后买了个ATGM336H模块,发现它的工作电流也得50mA,再加上屏幕的话工作电流至少也要200mA了。辰刚发布我就参加了盲订活动,最近刚到货就把它拆开了,看看它用的是什么芯片

    IMG_20220817_223855

    通过芯片上的编码查询之后,GPS芯片用的是这个: https://www.u-blox.com/en/product/ubx-m10050-chip CPU则是这个NRF52840: https://www.nordicsemi.com/products/nrf52840 Cortex™-M4 CPU 64MHz RAM只有256KB ,虽然性能有点低,但是只用它做个蓝牙芯片也是不错的。芯片价格我在淘宝也查了下,GPS那个只要二十多块,52840只要十几块钱,希望能给2代芯片选型一些参考。

    opened by liyang5945 0
  • Generate MAP Software

    Generate MAP Software

    Hello,

    I am a user from outside your country.

    I have difficulty downloading the software to generate MAP (https://gitee.com/CrimsonHu/java_map_download/)

    are you willing to add the software to the Tools or another way to easily download it?

    Thanks.

    opened by AhmadPanogari 2
Releases(v2.7)
  • v2.7(Jul 23, 2022)

    [v2.7] - 2022-6-3

    • 1.Adafruit_ST7789: 添加多分辨率支持; 去除drawRGBBitmap(); 删除Adafruit_ST7789V2
    • 2.AT32F403A: 更新Platform; 更新链接脚本,将lv_tlsf和font_bahnschrift_13载入RAM提升访问性能
    • 3.AT32F435: 更新Platform
    • 4.lv_conf.h: 同步主线配置; 使能LV_COLOR_SCREEN_TRANSP; WIN平台 GetTickCount() -> timeGetTime()
    • 5.lvgl: 同步 commit 941d95b0491a1e78fadeeb5ea8aa552f82669336
    • 6.App.cpp: 自动创建未设置的默认group; 设置scr的透明度和颜色; 添加rootStyle
    • 7.PageManager: 添加PageBase.cpp; 规范成员变量命名; 添加Replace()方法; 支持设置RootDefaultStyle; 修复PM_Drag不生效
    • 8.Pages/_Tempalte: 添加LOG输出
    • 9.Pages/Dialplate: 同步PageManager更新
    • 10.Pages/LiveMap: 同步PageManager更新
    • 11.Pages/Startup: 同步PageManager更新; 使用Replace()方法替换Push()方法,支持BackHome()
    • 12.Pages/SystemInfos: 同步PageManager更新; 优化item自动添加AttachEvent()
    • 13.ResourcePool: 移除无用的gps_pin图片
    • 14.lv_anim_label: lv_anim_label_set_text() -> lv_anim_label_push_text()
    • 15.lv_img_png: 添加多色深支持
    • 16.USER: 添加benchmark.inc,方便测试lvgl以及对比性能
    Source code(tar.gz)
    Source code(zip)
  • v2.6(Jun 3, 2022)

    [v2.6] - 2022-4-10

    • 1.ArduinoAPI更新
    • 2.整理 Core,统一移动到 MDK-ARM_F4XX/Platform 中
    • 3.更新lvgl主程序
    • 4.LV_SPRINTF_CUSTOM使能,减少FLASH占用
    • 5.account->Pull()操作全部添加返回值检查
    • 6.PageManager更新
    • 7.页面Template添加生命周期LOG
    • 8.DataCenter添加ACCOUNT_DISCARD_READ_DATA
    • 9.__WFI() -> __wfi()
    • 10.main.cpp复用
    • 11.修复TscanCode静态扫描出来的漏洞
    • 12.添加Linux移植
    Source code(tar.gz)
    Source code(zip)
  • v2.5(Apr 10, 2022)

    [v2.5] - 2022-3-18

    • 1.更新Adafruit_ST7789,支持颜色大小端切换
    • 2.更新CommonMacro库
    • 3.更新lv_conf.h
    • 4.去除lv_lib_png,使用lvgl内置PNG库
    • 5.DataProc 添加 DATA_PROC_INIT_STRUCT() 结构体初始化
    • 6.StatusBar 统一走 DataCenter 通信,只保留初始化API
    • 7.规范 DataProc 的 onEvent 回调函数的返回值
    • 8.去除 Page.h 公共空间的 ARRAY_SIZE() 宏定义
    • 9.ResourcePool::Font 默认返回 LV_FONT_DEFAULT,关闭不必要的内置字体
    • 10.更新PageManager,lv_event_get_target() -> lv_event_get_current_target()
    Source code(tar.gz)
    Source code(zip)
  • v2.4(Mar 18, 2022)

    [v2.4] - 2022-2-27

    • 1.添加指定的Pack
    • 2.AT32F435 Pack更新 2.0.0 -> 2.0.6
    • 3.__wfi() -> __WFI()
    • 4.移除lv_demo_conf.h
    • 5.更新lvgl v8.3.0 dev
    • 6.AT32F403A Stack size 0x2000 -> 0x1000
    Source code(tar.gz)
    Source code(zip)
  • v2.3(Feb 27, 2022)

    [v2.3] - 2022-1-30

    • 1.Arduino API 更新
    • 2.添加wdg看门狗,系统卡死时自动重启
    • 3.lvgl主程序更新
    • 4.添加低内存开销(<50KB)的PNGdec解码器(暂不启用)
    • 5.更新LiveMap,适配新的PNGdec
    • 6.更新StatusBar,调整字体,新的轨迹记录状态指示渐变动画
    • 7.ResourceManager从PageManager分离
    • 8.lv_anim_label组件从lv_ext分离
    • 9.添加lv_img_png组件
    Source code(tar.gz)
    Source code(zip)
  • v2.2(Jan 30, 2022)

    [v2.2] - 2021-12-30

    • 1.添加系统软件架构说明
    • 2.去除弃用的_LIS3MDL
    • 3.修复使用strncpy()遗漏的'\0'结束符
    • 4.添加AT32F435移植
    • 5.LV_DISP_DEF_REFR_PERIOD 20ms -> 16ms
    • 6.LV_MEM_SIZE 78KB -> 70KB
    • 7.默认开启PNG解码器,受限于内存MCU无法使用
    • 8.添加轨迹记录状态指示渐变动画
    • 9.添加文本动画组件lv_anim_label,替换旧的lv_label_anim_effect
    • 10.去除lv_settings
    Source code(tar.gz)
    Source code(zip)
  • v2.1(Dec 30, 2021)

    [v2.1] - 2021-12-16

    • 1.ArduinoAPI更新
    • 2.将LVGL部分绘图函数放到RAM执行,提升运行效率,不删除.sct文件
    • 3.Adafruit_ST778驱动更新,适配新的SPI库
    • 4.更新lvgl v8.1.1 dev
    • 5.lv_conf.h更新,使用新的缩进
    • 6.lv_monkey合入LVGL主线
    • 7.去除LiveMap进入时的透明度渐变动画,提升流畅度
    • 8.更新HAL_Power,充电检测上下拉可选
    • 9.优化IMU和MAG初始化
    Source code(tar.gz)
    Source code(zip)
  • v2.0(Nov 28, 2021)

    [v2.0] - 2021-11-14

    • 1.Arduino API底层重构
    • 2.添加MillisTaskManager任务调度器
    • 3.lvgl使用标准memset和memcpy
    • 4.更新lvgl v8.1.0
    • 5.DataCenter错误码枚举 ERROR_XXX -> RES_XXX
    • 6.修改DP节点的结构体初始化方式,不使用默认初始化
    • 7.优化DP_SportStatus在临时信号丢时的数据统计处理
    • 8.修复StorageService文件结尾读取错误导致的crash
    • 9.添加lv_settings,暂未移植
    • 10.添加传感器自动扫描,防止未安装传感器导致的开机卡死
    • 11.使用event携带user_data
    • 12.优化new重载
    • 13.修复HAL_Power错误的关机处理
    • 14.添加SystemSave.json自动备份功能
    Source code(tar.gz)
    Source code(zip)
  • v1.9(Oct 29, 2021)

    [v1.9] - 2021-10-1

    • 1.修复ArduinoAPI中未初始化变量
    • 2.去除lv_fs_pc中未使用的函数
    • 3.去除unistd.h
    • 4.更新lvgl主程序
    • 5.Resource管理器,Resource. -> ResourcePool::
    • 6.添加Utils/PointContainer组件
    • 7.DP_Storage添加地图缩放级别错误检查
    • 8.DP_TackFilter添加PointContainer组件适配,减少75%内存占用,极大提升轨迹录制容量
    • 9.多段线组件lv_multi_line -> lv_poly_line
    • 10.更新ArduinoJson
    • 11.Display_DumpCrashInfo report -> info
    • 12.更新HAL_Power,不使用ADC中断模式
    Source code(tar.gz)
    Source code(zip)
  • v1.8(Oct 1, 2021)

    [v1.8] - 2021-9-14

    • 1.StackInfo库 StackInfo_GetSize -> StackInfo_GetTotalSize
    • 2.移除多余的RTE/Device
    • 3.Common/HAL模拟器实现转移到Simulator\LVGL.Simulator\HAL
    • 4.VS模拟器HAL_GPS适配新的GPX_Parser
    • 5.更新lv_conf.h LV_CIRCLE_CACHE_SIZE 8 -> 32
    • 6.更新lv_fs_pc,去除无用代码
    • 7.更新LVGL.Simulator,lv_png_init和lv_monkey_create转移至App_Init初始化
    • 8.更新lvgl主程序
    • 9.更新App初始化,调整Storage和SysConfig的初始化顺序,修复错误的全屏滑动
    • 10.更新DataProc初始化,center实例化转移到函数外部,DP_DEF宏全大写
    • 11.更新DataProc声明,ConvTime -> MakeTimeString,去除IMU_Commit和MAG_Commit
    • 12.更新Storage_Basic_Info_t,添加type成员,支持获取SD卡类型
    • 13.更新DP_Clock,ConvTime -> MakeTimeString
    • 14.更新DP_IMU,去除IMU_Commit机制,使用回调进行数据提交
    • 15.更新DP_MAG,同上
    • 16.更新DP_Recorder,合并变量至Recorder_t结构体,添加RECORDER_GPX宏配置
    • 17.更新DP_Storage,适配新的StorageService,添加SD卡类型获取
    • 18.更新DP_TrackFilter,PointVector_t不再使用lv_allocator
    • 19.更新HAL,添加Display和FaultHandle抽象层,以及IMU和MAG的CommitCallback,获取SD卡类型的函数
    • 20.去除lv_allocator依赖,统一使用重载的new和delete进行分配
    • 21.更新SystemInfos页面,SD卡状态指示 "Detect" -> "Status",支持显示SD卡类型,在Sensor Config未开启时数据全部置0
    • 22.调整ResourcePool的Font Default设置
    • 23.ArduinoJson库的DynamicJsonDocument使用lvgl内存池分配内存
    • 24.更新DataCenter/Account,"Push" -> "Publish"
    • 25.更新DataCenter和PageManager的LOG写法
    • 26.更新GPX_Parser,添加错误码
    • 27.lv_lib_png使用lvgl内存池分配内存
    • 28.更新lv_monkey,添加新的配置选项
    • 29.更新MapConv,ConvertMapPos -> ConvertMapLevelPos
    • 30.在VS模拟器上对new/delete进行重载,但是由于ASAN导致重定义冲突,只在Release下重载
    • 31.更新PageManager,解决lv_anim_exec_xcb_t回调的lv_coord_t和int32_t混用问题,修复LOAD_ANIM_NONE页面切换的BUG
    • 32.更新StorageService,支持静态和动态内存分配切换
    • 33.去除USER/Display,转移至HAL层
    • 34.优化lv_port,使用统一的初始化函数,与硬件驱动解耦,lv_fs_sdfat -> lv_port_fs_sdfat
    • 35.修复HAL_Buzz静音模式下的错误开机音
    • 36.更新HAL_Config,支持GPS缓冲区过载检测,支持配置Power的开关机延时时间
    • 37.更新HAL_Power,合并变量到Power_t
    • 38.更新HAL_SD_CARD,支持获取SD卡类型,SD_CardSizeMB -> SD_CardSize
    Source code(tar.gz)
    Source code(zip)
  • v1.7(Sep 12, 2021)

    [v1.7] - 2021-9-3

    • 1.调整Heap_Size 0x00002000 -> 0x00000200
    • 2.调整lvgl内存池大小,LV_MEM_SIZE 72K -> 80K
    • 3.更新lv_drivers
    • 4.更新lvgl
    • 5.DataCenter使用lvgl内存池
    • 6.使用std::abs()替代宏实现的ABS()
    • 7.更新DP_Storage
    • 8.更新DP_SysConfig,调整结构体成员,添加timeZone和mapExtName,在关机时保存位置
    • 9.更新DP_TrackFilter,使用地图上的Point格式替代旧的经纬度
    • 10.更新DP_TzConv,GMT_OffsetHours -> sysCfg.timeZone
    • 11.更新HAL.h,添加Memory_DumpInfo()堆栈使用统计
    • 12.更新HAL_GPS模拟,修复diffTime = 0导致的gpsInfo.speed = inf
    • 13.更新Config.h,添加LiveMap的Debug模式配置,PNG解码库使能配置等。转移Hardware Configuration至HAL_Config.h
    • 14.更新Dialplate页面,使用lv_group_get_default()获取统一的group
    • 15.重构LiveMap页面,添加LiveMap的Debug模式,使用lv_group_get_default()获取统一的group,适配新的轨迹过滤算法
    • 16.更新StartUp页面,关闭LOGO滚动
    • 17.更新SystemInfos,使用lv_group_get_default()获取统一的group
    • 18.更新DataCenter,统一使用lv_allocator分配内存
    • 19.添加lv_lib_png,限于内存大小暂不使用
    • 20.添加lv_monkey,实现简单压力测试
    • 21.添加lv_multi_line,实现轨迹的多段线绘制,提升lv_line复用率,极大节省内存
    • 22.更新MapConv,支持自定义文件扩展名,添加ConvertMapPos实现不同level间的坐标换算
    • 23.更新TileSystem,使用namespace替换class,免去无意义的实例化
    • 24.添加new、delete重载,统一使用lvgl内存池
    • 25.扩展StorageService的内存,JSON_BUFFER_SIZE 1024->2048
    • 26.更新TrackFilter,修复二级滤波拐点丢失问题。使用TrackLineFilter实现可视区轨迹裁剪,节省内存,提升绘制效率。
    • 27.更新lv_fs_sdfat接口,使用new和delete替换lv_mem_alloc和lv_mem_free
    • 28.更新lv_port_indev,去除lv_port_indev_get(),创建全局默认group
    • 29.添加HAL::Memory_DumpInfo(),由于要使用__heapstats()读取heap信息,关闭microlib
    • 30.添加rt_sys.cpp,实现一些C底层接口
    • 31.读取StackInfo从main.cpp转移至HAL::Memory_DumpInfo()
    Source code(tar.gz)
    Source code(zip)
  • v1.6(Sep 1, 2021)

    [v1.6] - 2021-8-7

    • 1.更新ArtDesign,新的导航箭头设计
    • 2.更新lv_drivers,去除坐标超界警告
    • 3.去除lv_examples,减少工程体积
    • 4.调整模拟器的LV_FS_PC_PATH定义,指定到Software所在目录,方便读取地图
    • 5.开机页面重命名: StartUp -> Startup
    • 6.更新DP_SysConfig,mapSource -> mapDirPath指定地图目录,添加 WGS84/GCJ02 坐标系统切换,添加arrowTheme导航箭头主题切换
    • 7.更新DP_Storage,适配新的MapConv,支持所有地图源缩放level范围自适应
    • 8.更新DP_TrackFilter,适配新的MapConv
    • 9.HAL添加Backlight_ForceLit(),支持强制点亮屏幕背光
    • 10.更新模拟器的HAL_GPS,支持获取GPX点之间的时间差
    • 11.更新Config.h,去除旧的Bing地图配置
    • 12.更新LiveMap页面,支持修改导航箭头主题
    • 13.更新GPX_Parser,添加海拔和时间解析
    • 14.重构MapConv,废弃旧的Bing地图存放格式和地图下载器。使用Crimson/地图下载器下载地图,文件存放格式为/z/x/y.bin
    • 15.更新DisplayFault,在进入HardFault状态时强制点亮背光
    • 16.更新HAL_Power,优化电压显示
    Source code(tar.gz)
    Source code(zip)
  • v1.5(Aug 6, 2021)

    [v1.5] - 2021-8-1

    • 1.lvgl更新
    • 2.调整Stack size: 0x1500 -> 0x2000,处理更大的JSON文件
    • 3.更新Storage节点,支持获取SD卡容量,支持自动获取地图缩放等级(OSM)
    • 4.优化GPS节点,减少在GPS信号不稳定时频繁的提示音
    • 5.优化SportStatus节点,支持在JSON文件中配置体重
    • 6.优化SysConfig节点,支持在JSON配置默认经纬度,地图源(Bing/OSM),soundDisable -> soundEnable
    • 7.重构MapConv地图坐标转换器,支持动态配置地图源,地图坐标数据类型uint32_t -> int32_t,合并TileSystem和GPS_Transform
    • 8.HAL添加SD_GetCardSizeMB()
    • 9.更新Config.h,转移部分配置选项到JSON
    • 10.更新Dialplate页面,卡路里单位cal -> k,优化编码器交互wrap = false
    • 11.更新LiveMap页面,优化level自适应显示,使用SysConfig配置的默认位置
    • 12.更新SystemInfos页面,支持显示SD卡容量
    • 13.修复lv_fs_sdfat错误的指针类型转换,优化目录读取接口
    • 14.lvgl内存池 64K -> 72K
    • 15.WString使用lvgl的内存池
    • 16.修复GPX轨迹文件<\ele>丢失问题(可能是内存碎片和heap过小导致WString realloc失败)
    Source code(tar.gz)
    Source code(zip)
Owner
_VIFEXTech
0 Error(s), 0 Warning(s).
_VIFEXTech
Arduino based bicycle movement sensor and GPS tracker

Bike Tracker Background There are actually plenty of bicycle trackers around, so why make your own? Well, so that it works the way you want it… And it

null 22 Aug 21, 2022
The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby improving resiliency against potential GPS signal loss.

PNT Integrity Library The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby

Cybersecurity and Infrastructure Security Agency 42 Jan 6, 2023
GPS parser which read raw GPS messages, selects only the valid ones and sends them to CAN bus

EagleTRT GPS System for Fenice GPS parser which read raw GPS messages, selects only the valid ones and sends them to CAN bus Compiling GPS Logger gps_

E-Agle Trento Racing Team 1 Nov 11, 2021
multi-sdr-gps-sim generates a IQ data stream on-the-fly to simulate a GPS L1 baseband signal using a SDR platform like HackRF or ADLAM-Pluto.

multi-sdr-gps-sim generates a GPS L1 baseband signal IQ data stream, which is then transmitted by a software-defined radio (SDR) platform. Supported at the moment are HackRF, ADLAM-Pluto and binary IQ file output. The software interacts with the user through a curses based text user interface (TUI) in terminal.

null 70 Dec 27, 2022
Please feel free to use this code if you need to keep track of accelerometer and gyro data :)

IMUArduinoDataCollection Please feel free to use this code if you need to keep track of accelerometer and gyro data :) This code takes in xyz motion b

null 1 Nov 9, 2021
keyball is split keyboard has 100% track ball

keyball Keyball is split keyboard has 100% track ball Firmware build guide Keyball46 have separate firmwares for each of PCBs w/ trackball and w/o tra

null 145 Dec 26, 2022
Defold Engine integration with Yandex.Metrica to track your games on Yandex.Games.

Yandex.Metrica for Defold Yandex.Metrica is a free of charge web analytics tool for websites, that's the reason why we can use it for HTML5 games. Yan

Indiesoft LLC 8 Nov 26, 2022
LIO-SAM源码详细注释,3D SLAM融合激光、IMU、GPS

LIO-SAM-DetailedNote LIO-SAM源码详细注释,3D SLAM融合激光、IMU、GPS,因子图优化。 LIO-SAM的代码十分轻量,只有四个cpp文件,很值得读一读呢。 关于LIO-SAM的论文解读,网上已经有很多文章啦,同系列的LOAM、A-LOAM、LEGO-LOAM等,在

Tao Lu 273 Dec 29, 2022
GPS tracking system

GPS_ASU_PROJECT_67 GPS Tracking System project for CSE211 - Introduction to Embedded Systems course. Provided by students of Team 67 (Junior level) in

Mostafa Elsheshtawy 4 Jun 13, 2021
recording OSC messages with ofxPubSubOsc

ofxRecordOsc recording OSC with ofxPubSubOsc. Dependencies ofxOsc ofxPubSubOsc 0.3.2- Notice if you got error on ofx::RecordOsc::Player::play, please

ISHII 2bit 5 Nov 21, 2021
Arduino GPS Car Tracking with GPRS/HTTP

Arduino GPS Car Tracking with GPRS/HTTP this is a simple car tracking source and module to start hacking around Overview Overview DIY Module Features

TheAliBigdeli 3 Nov 26, 2021
ebpf syscall recording demo project

ebpf syscall recording demo project

Sascha Grunert 9 Jun 7, 2022
A rosbag2 recorder node that backs up split files to an external location during recording

System Data Recorder (SDR) A lifecycle node and executable for recording topic data to a rosbag2 bag, while simultaneously copying the split bag files

Open Robotics 5 Aug 31, 2022
TTGO GPS lock fix with platformio

TTGO_T-beam_GPS-reset converted for easy upload with platformio Based on Fork by ErikThevking https://github.com/eriktheV-king/TTGO_T-beam_GPS-reset T

null 2 May 11, 2022
Bank Management System is based on a concept of recording customer’s account details

Bank Management System is based on a concept of recording customer’s account details. Here the user can perform all the tasks like creating an account, deposit amount, withdraw amount, check balance, view all account holders detail, close an account and modify an account. There’s no login system for this project. All the main features for banking system are set in this project.

AmrMohamed 2 Feb 12, 2022
Let's upgrade cheap off-the-shelf robotic mowers to modern, smart RTK GPS based lawn mowing robots!

OpenMower Join the Discord server for OpenMower discussion: HERE About the Project ⚠️ DISCLAIMER: IF YOU ARE NOT 100% SURE WHAT YOU ARE DOING, PLEASE

Clemens Elflein 3.4k Jan 4, 2023
Pyramid is a free, open GUI tool for offline shader validation and analysis

Pyramid is a free, open GUI tool for offline shader validation and analysis. The UI takes HLSL or GLSL as input, and runs them through various shader compilers and static analyzers.

null 277 Dec 20, 2022
By putting in a lot of speed, the speed sequence is sorted and divided, three types of speed interval distribution maps are generated.(including broken line graph,histogram and curve graph)

Auto-drawing-speed-range-map By putting in a lot of speed, the speed sequence is sorted and divided, three types of speed interval distribution maps a

wellwellAllwen 4 May 14, 2022
ContactGot is an offline desktop app, where clients can leave their info, while an administrator can manage which information they need to gather on certain projects.

ContactGot Contents Description How to use Requirements Engineering Installation Documentation Design Architecture Demonstration 1. Description During

Elizaveta 15 Sep 17, 2022