Visuino 可视化编程实战:Arduino Nano 记录 GPS 数据到 MicroSD 卡
核心硬件清单
- Arduino Nano R3 ×1(任意兼容板均可)
- GPS 接收模块(UART 输出,如 NEO-6M) ×1
- MicroSD 卡模块(SPI 接口) ×1
- MicroSD 卡(FAT32 格式) ×1
- 面包板 + 跳线(FF ×7、FM ×3)
软件工具
- Arduino IDE
- Visuino(可视化流程开发环境)
设计思路:串口直存,零解析
GPS 模块持续输出 NMEA 语句(如 $GPRMC,...),Arduino Nano 仅有 1 个硬件串口(同时用于下载),且 Flash/RAM 有限。若引入 TinyGPS++ 或 SD 库解析并写入文件系统,内存极易溢出。本方案利用 Visuino 将硬件串口 直接管道连接 到 MicroSD 文件元件,完全绕过文件系统管理开销,实现“原始串流落盘”,Nano 仍有充裕资源。后续在 PC 端用 Python/Excel 解析 NMEA 即可。
Visuino 步骤详解
1. 新建项目并选板
启动 Visuino → 点击 Arduino 组件“Tools” → 选择 Arduino Nano。
2. 添加 MicroSD 组件并连接 SPI
- 工具箱搜索 “sd”,拖入 Micro SD Card Module。
SDCard1.Out→Arduino.SPI.In(建立 SPI 总线)。SDCard1.ChipSelect→Arduino.Digital[10].In(CS 引脚)。
3. 添加文件元件并设置文件名
- 点击
SDCard1的 “Tools” → Elements 编辑器 → 右侧选 “File” → 点击左侧 “+” 添加File1。 - 属性栏设置
Path Name = "GPSLog.txt"。
4. 串口直连文件
Arduino.Serial[0].Out→SDCard1.Elements.File1.In。- 即:硬件串口接收到的每个字节直接写入文件。
5. 生成、编译、上传
- 按 F9 或工具栏“Generate”生成代码并自动打开 Arduino IDE。
- 点击上传,等待完成。
硬件接线实操
MicroSD 模块(SPI)
| 模块引脚 | Nano 引脚 | 线色 |
|---|---|---|
| CS | D10 | 灰 |
| SCK | D13 | 橙 |
| MOSI | D11 | 蓝 |
| MISO | D12 | 紫 |
| VCC | 5V(公头悬空) | 红 |
| GND | GND | 黑 |
GPS 模块(UART)
| 模块引脚 | Nano 引脚 | 线色 |
|---|---|---|
| TX | RX (D0) | 黄 |
| GND | GND | 黑 |
| VCC | 5V(公头悬空) | 红 |
三路 5V 红线汇聚
面包板上将 MicroSD VCC、GPS VCC、Nano 5V 引脚三根红线公头并联,实现共同供电。
运行验证
- 插入 MicroSD 卡,接上移动电源或 USB 供电。
- D13 LED 闪烁表示正在写入数据。
- 取出卡,电脑打开
GPSLog.txt,可见连续 NMEA 语句:
$GPRMC,083559.00,A,3112.1234,N,12128.5678,E,0.12,45.6,281221,,,A*7C
$GPGGA,083559.00,3112.1234,N,12128.5678,E,1,08,1.2,15.3,M,0.0,M,,*5E
$GPGSA,A,3,05,12,14,18,20,22,25,28,,,,,2.1,1.2,1.5*3F
...
进阶建议
- 若需实时显示坐标,可在 Visuino 中加入 LCD/OLED 组件,从串口分流数据(需软串口或 Mega 多串口)。
- 长时间记录建议添加 RTC 模块,在文件名中加入日期(如
GPS_20240115.txt)。 - 配合 Python
pynmea2库批量解析生成 CSV/GPX/KML,导入地图软件可视化轨迹。
项目文件下载
Visuino 工程文件:FBY57XIIO8U2WS4.zip(附件中),可直接导入 Visuino 修改扩展。
制造工艺
- Arduino Mega 按键 PWM 调光:三阶段渐变 LED 实战教程
- Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
- DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
- Unopad:基于 Arduino 的无缝 Ableton Live MIDI 控制器
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino Mega 2560 接 NEO-6M GPS 模块完整教程
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- u-blox LEA-6H GPS 模块:Arduino 与 Python 集成指南
- 用 Arduino Uno 和 1Sheeld 构建 4x4x4 LED 立方体 - 互动音乐可视化项目
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南