使用 Arduino Uno 和 GT-U8 GPS 模块在 0.96 寸 OLED 显示屏上显示经纬度信息

在物联网和地理定位项目中,显示设备的经纬度是一个常见的需求。今天,我们将通过一个简单的项目,使用 Arduino Uno、GT-U8 GPS 模块和 0.96 寸 OLED 显示屏(I2C)来实现这一功能。这个项目不仅适合初学者,还能为更复杂的项目提供基础。

硬件材料

  • Arduino Uno:作为项目的控制核心,负责数据采集和显示控制。
  • GT-U8 GPS 模块:用于获取设备的经纬度信息。
  • 0.96 寸 OLED 显示屏(I2C):用于显示经纬度数据。
  • 杜邦线:用于连接各个组件。
  • 面包板(可选):方便进行电路搭建和测试。

硬件连接

GT-U8 GPS 模块

  • VCC 连接到 Arduino Uno 的 5V 引脚。
  • GND 连接到 Arduino Uno 的 GND 引脚。
  • TX 连接到 Arduino Uno 的 D3 引脚。
  • RX 连接到 Arduino Uno 的 D2 引脚。

0.96 寸 OLED 显示屏(I2C)

  • VCC 连接到 Arduino Uno 的 5V 引脚。
  • GND 连接到 Arduino Uno 的 GND 引脚。
  • SCL 连接到 Arduino Uno 的 A5 引脚。
  • SDA 连接到 Arduino Uno 的 A4 引脚。

软件库

确保已经安装了以下库:

  • Adafruit GFX Library
  • Adafruit SSD1306 Library
  • TinyGPS++ Library
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SoftwareSerial.h>
#include <TinyGPS++.h>

#define SCREEN_WIDTH 128 // OLED显示屏幕的宽度,以像素计
#define SCREEN_HEIGHT 64 // OLED显示屏幕的高度,以像素计
#define OLED_RESET -1 // 重置引脚;如果不使用可以设置为 -1

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define GPS_RX 2
#define GPS_TX 3
SoftwareSerial ss(GPS_RX, GPS_TX);  // RX, TX

TinyGPSPlus gps;

void setup() {
  Serial.begin(9600);
  ss.begin(9600);

  // 初始化OLED显示屏
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 这里的0x3C是OLED的I2C地址,根据实际情况可能需要修改
    Serial.println(F("SSD1306 allocation failed"));
    for (;;);
  }

  // 显示屏初始化
  display.clearDisplay();
  display.setTextSize(1); // 设置文本大小
  display.setTextColor(SSD1306_WHITE); // 设置文本颜色
  display.setCursor(0, 0); // 设置文本开始的坐标
  display.println(F("GPS")); // 打印文本
display.setCursor(0, 10);
display.println(F("latitude"));
display.setCursor(0, 20);
display.println(F("longitude"));
display.display(); // 显示以上图形操作
delay(2000); // 稍作延时
}

void loop() {
while (ss.available() > 0) {
char c = ss.read();
Serial.write(c); // 将接收到的数据发送到串口监视器
if (gps.encode(c)) { // 编码GPS数据
if (gps.location.isValid()) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println(F("GPS"));
display.setCursor(0, 10);
display.print(F("latitude: "));
display.println(gps.location.lat(), 6);
display.setCursor(0, 20);
display.print(F("longitude: "));
display.println(gps.location.lng(), 6);
display.display();
}
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值