我的订单购物车(0)联系客服 帮助中心供应商合作 嘉立创产业服务群
领券中心备货找料立推专区爆款推荐TI订货PLUS会员BOM配单PCB/SMT工业品面板定制

以后出门,就用它了!我做了个GPS导航!

2024-12-03 16:13:17阅读量:652

做了一个骑行导航器,不需要依赖手机APP、小程序

 

GPS

01
功能/亮点

 

 

GPS

功能亮点

02
硬件设计

 

原理图1

原理图1

 

PCB图1

PCB图1

 

原理图2

原理图2

 

PCB图2

PCB图2

 

硬件设计

 

01 
中文地址通过什么输入?

通过矩阵键盘输入,需要在另一块较小的PCB上,通过FFC排线与主PCB连接,按键一端与同列按键并联,另一端与同行按键并联。

中文地址输入

 

 

02 
电池管理

本设备采用3.7V锂电池供电,经线性稳压器BL9110-330BPFB输出3.3V。

VCC(4脚)使用Type-C接口提供5V输入,并将BAT(3脚)连接锂电池。

在正常情况下,若电池已连接:

  • 正在充电时CHRG(1脚)输出低电平、FULL(5脚)输出高电平;

  • 充满电后CHRG输出高电平、FULL输出低电平

通过连接LED灯,可进行充电状态显示

 

03 
外设设计
  • STM32内无法储存中文字库,因此采用外部Flash进行储存,W25Qxx系列为Nor Flash,可通过SPI与STM32进行通信

  • GPS模块采用ATGM336H成品模组,支持GPS、北斗等定位系统,通过串口发送数据。模组供电后,若正在搜星,则模组上方LED灯常亮。搜星完成后,模组LED灯以1Hz频率闪烁,且PPS引脚以1Hz频率输出脉冲,以驱动PCB顶层的GPS LED灯闪烁。此模块在使用时需连接天线,本项目采用陶瓷天线。

 

03
软件设计
怎么实现“导航”功能?

如何“搭建”远程平台?

这涉及到高德地图API华为云的使用:

01 
如何使用高德地图API?

首先,需要注册高德地图开发者账号

创建Key(每种LBS服务每日5000次调用)

创建步骤与API功能见https://oshwhub.com/ljh345/cycling_assistance

02 
如何搭建远程平台?

路径规划、轨迹简化等一系列操作需要较高算力,在ESP32上不便操作。因此,需要借助远程平台在云端执行复杂的运算处理后,通过HTTP读取最终的结果

函数工作流FunctionGraph是华为云推出的一款无服务器计算服务,用户自行编写相关函数,客户端通过HTTP等方式访问即可执行代码。

总览->创建函数,选择函数类型为HTTP函数。

进入函数,创建触发器,选择API网关服务,使此函数能通过HTTP调用。方便起见,安全认证选择None,其它配置默认即可。

进入API管理页面,编辑当前API,第2步,修改当前请求Path并发布API,便于管理。

进入该函数的“设置”界面,可通过“调用URL”下的路径进行函数调用。

创建完成后,开始编写代码。FunctionGraph不支持C/C++,但可以使用Python

以Python为例,将代码文件重命名为 input.py,bootstrap内容改为/opt/function/runtime/python3.9/rtsp/python/bin/python3 $RUNTIME_CODE_ROOT/index.py。

以下为Python代码模板:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
import socketserverimport http.serverfrom urllib.parse import parse_qs, urlparseimport jsonimport requests
PORT = 8000
class SimpleHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers()
# 在以下位置补充自己的代码 params = parse_qs(urlparse(self.path).query) str = params["str"]
# 返回同样为Json格式的字符串 message = { "status": 0, "reply": str } self.wfile.write(json.dumps(message).encode())
with socketserver.TCPServer(('127.0.0.1', PORT), SimpleHTTPRequestHandler) as httpd: print('Python web server at port 8000 is running..') httpd.serve_forever()

为验证代码编写是否正确,可自行配置测试事件。选择事件模板为API网关服务(APIG),在pathParameters下填写传入的参数,例如:

  •  
  •  
  •  
"pathParameters": {    "str" : "HelloWorld"},

测试完成后,通过HTTP访问该函数,网页显示{"status": 0, "reply": ["HelloWorld"]},调用成功。

 

04
成本说明

元器件总价:122.18元,由于立创商城购买元件有最小数量限制,实际需要180.97元

3D打印件价格:29.25元

但是!我的方案如下:

元器件:回收以往使用过的

PCB:使用嘉立创免费PCB打样

星火计划减免耗材费用:105.72元

本次实际成本:45.54元

 

“踏上设计它的路,比做出它更重要。”

 

05
开源网址

本项目已开源!

——想复刻想给作者点赞复制开源网址 前往原文。

开源网址:https://oshwhub.com/ljh345/cycling_assistance

广告图片