GPS Tracker - ESP8266 + OneNET Studio + 微信小程序
·
GPS Tracker - ESP8266 + OneNET Studio + 微信小程序
基于 ESP8266 (NodeMCU) + NEO-6M GPS 模块 的实时定位追踪系统,数据通过 OneNET Studio 云平台中转,使用 微信小程序 进行可视化展示。
项目架构
GPS 卫星
│
▼
NEO-6M GPS 模块 ──(UART)──► ESP8266 (NodeMCU)
│
┌───────┴───────┐
│ WiFi / MQTT │
└───────┬───────┘
│
▼
OneNET Studio 云平台
│
┌───────┴───────┐
│ HTTP API │
└───────┬───────┘
│
▼
微信小程序 (地图展示)
项目结构
GPS_Esp8266_onenet/
├── esp8266/ # ESP8266 固件部分
│ └── src/
│ └── gps_tracker_onenet_studio/
│ └── gps_tracker_onenet_studio.ino # 主程序 (Arduino 草图)
│
├── miniapp/ # 微信小程序部分
│ ├── pages/
│ │ ├── index/ # 位置页 - 地图展示实时位置
│ │ ├── device/ # 设备页 - 显示设备状态信息
│ │ └── history/ # 轨迹页 - 查询历史轨迹回放
│ ├── utils/
│ │ ├── api.js # OneNET API 封装 (Token 鉴权)
│ │ ├── config.js # 配置信息 (产品ID、设备名称等)
│ │ ├── crypto.js # Token 生成算法 (HMAC-SHA256)
│ │ └── util.js # 工具函数 (坐标转换、时间格式化)
│ ├── images/ # 图标资源
│ ├── app.js / app.json / app.wxss
│ └── project.config.json # 小程序项目配置
│
├── .vscode/
│ └── settings.json
└── README.md
硬件清单
| 组件 | 型号 | 说明 |
|---|---|---|
| 主控板 | NodeMCU (ESP8266) | WiFi + MCU 一体 |
| GPS 模块 | NEO-6M | 串口 GPS 模块,波特率 9600 |
| 电源 | 5V Micro USB | 供电给 NodeMCU |
硬件接线
| NEO-6M GPS | -> | ESP8266 (NodeMCU) |
|---|---|---|
| VCC | -> | 3.3V |
| GND | -> | GND |
| TX | -> | D2 (GPIO4) |
| RX | -> | D1 (GPIO5) |
功能特性


ESP8266 固件
- ✅ NEO-6M GPS 数据读取 (NMEA 协议解析)
- ✅ WiFi 自动连接与断线重连
- ✅ MQTT 接入 OneNET Studio 新版平台
- ✅ 1 秒间隔实时上报位置数据
- ✅ NTP 时间同步
- ✅ Token 鉴权
- ✅ 物模型 OneJSON 数据格式
- ✅ 支持平台下发命令响应
微信小程序
- ✅ 位置页:在地图上实时显示 GPS 设备位置(含 WGS-84 → GCJ-02 坐标转换)
- ✅ 设备页:查看设备在线状态、WiFi/GPS/OneNET 模块状态
- ✅ 轨迹页:按时间范围(1小时/6小时/24小时/今天/自定义)查询历史轨迹
- ✅ 轨迹回放:绘制行走路线、显示里程、时长、平均速度
- ✅ 自动刷新与手动刷新
上报数据格式 (OneJSON)
{
"id": 12345,
"dp": {
"gps_lng": [{ "v": 117.397428 }],
"gps_lat": [{ "v": 37.90923 }],
"gps_alt": [{ "v": 50.5 }],
"gps_speed": [{ "v": 0.5 }]
}
}
快速开始
1. 创建 OneNET Studio 产品和设备
- 登录 OneNET Studio
- 创建产品,获取 产品ID (ProductID)
- 在产品下添加设备,获取 设备名称 (DeviceName) 和 设备密钥 (DeviceKey)
2. 配置并烧录 ESP8266 固件
- 安装 Arduino IDE
- 安装 ESP8266 开发板支持包
- 安装依赖库:
PubSubClientby Nick O’LearyTinyGPS++by Mikal HartArduinoJsonby Benoit Blanchon
- 打开
esp8266/src/gps_tracker_onenet_studio/gps_tracker_onenet_studio.ino - 修改配置区参数:
// --- WiFi ---
const char* WIFI_SSID = "你的WiFi名称";
const char* WIFI_PASSWORD = "你的WiFi密码";
// --- OneNET Studio ---
const char* PRODUCT_ID = "你的产品ID";
const char* DEVICE_NAME = "你的设备名称";
const char* DEVICE_KEY = "你的设备密钥";
- 生成 Token 并更新到
setup()函数中的setToken()调用 - 选择开发板为
NodeMCU 1.0 (ESP-12E Module),烧录固件
3. 运行微信小程序
- 下载安装 微信开发者工具
- 打开
miniapp目录 - 修改
utils/config.js中的配置:
const CONFIG = {
productId: '你的产品ID',
deviceName: '你的设备名称',
deviceId: '你的设备ID',
apiKey: '你的API Key',
accessKey: '你的Access Key',
apiBaseUrl: 'https://iot-api.heclouds.com'
}
- 点击编译,即可在模拟器中查看
坐标转换说明
GPS 模块输出的是 WGS-84 坐标系(国际标准),微信小程序地图使用 GCJ-02 坐标系(火星坐标,中国标准)。小程序端已内置坐标转换算法,自动完成 WGS-84 → GCJ-02 的转换,确保位置在地图上准确显示。
依赖库
ESP8266 固件
| 库名 | 版本 | 用途 |
|---|---|---|
| PubSubClient | ≥ 2.8 | MQTT 客户端 |
| TinyGPS++ | ≥ 1.0.2 | GPS NMEA 解析 |
| ArduinoJson | ≥ 6.x | JSON 数据组装与解析 |
微信小程序
- 原生框架,无第三方依赖
注意事项
- GPS 定位需要室外空旷环境,室内无法定位
- GPS 首次定位需要 冷启动约 30-60 秒
- OneNET Token 有有效期限制,建议生成超长有效期 Token 硬编码到固件
- 微信小程序使用位置接口需要在
app.json中配置permission和requiredPrivateInfos - ESP8266 的 ADC 引脚输入电压范围为 0-3.3V,不可直接测量电池电压
- 上报频率为 1 秒,注意 OneNET 平台的免费配额限制
License
MIT License
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)