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 产品和设备

  1. 登录 OneNET Studio
  2. 创建产品,获取 产品ID (ProductID)
  3. 在产品下添加设备,获取 设备名称 (DeviceName)设备密钥 (DeviceKey)

2. 配置并烧录 ESP8266 固件

  1. 安装 Arduino IDE
  2. 安装 ESP8266 开发板支持包
  3. 安装依赖库:
    • PubSubClient by Nick O’Leary
    • TinyGPS++ by Mikal Hart
    • ArduinoJson by Benoit Blanchon
  4. 打开 esp8266/src/gps_tracker_onenet_studio/gps_tracker_onenet_studio.ino
  5. 修改配置区参数:
// --- 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 = "你的设备密钥";
  1. 生成 Token 并更新到 setup() 函数中的 setToken() 调用
  2. 选择开发板为 NodeMCU 1.0 (ESP-12E Module),烧录固件

3. 运行微信小程序

  1. 下载安装 微信开发者工具
  2. 打开 miniapp 目录
  3. 修改 utils/config.js 中的配置:
const CONFIG = {
  productId: '你的产品ID',
  deviceName: '你的设备名称',
  deviceId: '你的设备ID',
  apiKey: '你的API Key',
  accessKey: '你的Access Key',
  apiBaseUrl: 'https://iot-api.heclouds.com'
}
  1. 点击编译,即可在模拟器中查看

坐标转换说明

GPS 模块输出的是 WGS-84 坐标系(国际标准),微信小程序地图使用 GCJ-02 坐标系(火星坐标,中国标准)。小程序端已内置坐标转换算法,自动完成 WGS-84 → GCJ-02 的转换,确保位置在地图上准确显示。

依赖库

ESP8266 固件

库名 版本 用途
PubSubClient ≥ 2.8 MQTT 客户端
TinyGPS++ ≥ 1.0.2 GPS NMEA 解析
ArduinoJson ≥ 6.x JSON 数据组装与解析

微信小程序

  • 原生框架,无第三方依赖

注意事项

  1. GPS 定位需要室外空旷环境,室内无法定位
  2. GPS 首次定位需要 冷启动约 30-60 秒
  3. OneNET Token 有有效期限制,建议生成超长有效期 Token 硬编码到固件
  4. 微信小程序使用位置接口需要在 app.json 中配置 permissionrequiredPrivateInfos
  5. ESP8266 的 ADC 引脚输入电压范围为 0-3.3V,不可直接测量电池电压
  6. 上报频率为 1 秒,注意 OneNET 平台的免费配额限制

License

MIT License

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐