如何将OLED与Android手机连接起来构建智能手表智能手表如何连接手机「如何将OLED与Android手机连接起来构建智能手表」

   日期:2025-02-24    作者:lwqo5 移动:http://www.wrujm.cn/mobile/quote/3194.html

我们大多数人都熟悉 16×2 点阵 LCD 显示器 ,它在许多项目中用于向用户显示一些信息。但是这些液晶显示器的功能有很多限制。在本教程中,我们将使用OLED 显示来自 Android 智能手机的一些基本信息,例如时间、日期、网络强度和电池状态。该项目提供了构建基于Arduino智能手表的基本理念和框架,并且可以进一步扩展以在 OLED 显示屏上显示来电、消息等。

所以这里我们使用一个安卓应用程序从安卓手机中获取一些信息,然后使用蓝牙模块和Arduino Pro Mini将这些信息发送到OLED显示器。

在 Android 应用程序中,从手机中获取数据并作为字符串发送到 Arduino。现在收到数据后,Arduino 解码传入的字节串并将其放入临时变量中以显示在 OLED 显示器上。在 OLED 显示屏中,我们创建了一些图形来显示值,在此处了解有关在 Arduino 中使用 OLED 显示屏的更多信息。

所需硬件

128×64 OLED显示模组(SSD1306)

Arduino(我们使用的是 Arduino Pro Mini。但我们可以使用任何 Arduino 板)

蓝牙 HC05/HC06

连接电线

3.7v 锂电池

跳线

了解 OLED 显示器

OLED 一词代表“有机发光二极管” ,它使用与我们大多数电视中使用的技术相同的技术,但与它们相比像素更少。将这些看起来很酷的显示模块与 Arduino 连接起来真的很有趣,因为它会让我们的项目看起来很酷。我们 在此处介绍了有关 OLED 显示器及其类型的完整文章。在这里,我们使用的是 单色 4 针 SSD1306 0.96” OLED 显示屏。此显示器只能在 I2C 模式下工作。

pYYBAGMsLaaAP0<i></i>xSAAIHl1g1kvs328.png

Arduino 社区已经为我们提供了很多库,可以直接使用这些库来简化此操作。我尝试了一些库,发现 Adafruit_SSD1306 库非常易于使用并且有一些图形选项,因此我们将在本教程中使用相同的库。在这里,我们还需要在 Arduino IDE 中安装一个库,可以从这里下载GFX 图形库。

电路原理

使用 4 针 SSD1306 OLED 与 Arduino的 电路图 很简单,如下所示

pYYBAGMsLaGADqYnAAF-B-jVSBk820.pngpYYBAGMsLtCAdN-MAACRYaZhKv4869.jpg

在这里,我们使用了Arduino Pro Mini板来控制所有操作。选择 Arduino pro mini 的原因是它可以在 3.3v 电源下运行。4针 OLED和蓝牙模块 HC-06也可以在 3.3v 上工作,因此所有这些模块都可以由单个 3.7v Li-on 供电。锂电池是小巧轻便的电池,是可穿戴设备的完美选择。在这里,我们还在这个项目中制作了一些可穿戴的东西,比如一个简单的智能手表,它可以与你的智能手机同步。

现在关于电源的一个问题是,这里所有的模块都在 3.3v 上工作,但锂离子电池提供 3.7v,这可能会损坏模块。因此,为了解决这个问题,我们将电池的 3.7v 电源应用于 Arduino pro mini 的原始引脚,该引脚可以将该电压转换为 3.3v。

用于通过蓝牙向 Arduino 发送数据的 Android 应用

对于这款基于 Arduino 的智能手表,我们在 Android Studio 中创建了一个 Android 应用程序,该应用程序可以从这里下载。因此,只需在您的 Android 智能手机中下载并安装此应用程序,然后启用蓝牙并将 HC-06 模块与您的手机配对。它可能会要求输入密码来配对 HC-06 蓝牙模块,默认密码是 1234 或 0000。

现在打开 OLED 应用程序并选择已配对的蓝牙设备 HC-06,如下图所示:

pYYBAGMsLtKAPZWtAAB8tonNhdM642.png

现在OLED 应用程序将显示从 android 手机获取的数据,如下所示:

poYBAGMsLtOACOAwAAA5NHjo6OY126.png

为 OLED 智能手表编程 Arduino

在这个项目的最后给出了带有演示视频的完整程序,这里我们解释了几部分代码。

首先使用下面的链接从 Github 下载 Adafruit 库和 GFX 库

阿达果图书馆

GFX 图形库

然后从包含所有必需的库开始

#include
SoftwareSerial Serial1(10, 11);

#include
#include
#include
#include “Adafruit_SSD1306.h”

#define OLED_RESET 4
Adafruit_SSD1306 显示(OLED_RESET);
在此之后,我们为不同的操作定义了一些宏和变量。

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2

#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH 16
字符串 str = "";
字节 h = 0;
字节 m = 0;
字节 S = 0;
String dmy、时间、网络、电池、inNumber、s;
字节中心X = 24;
字节中心Y = 39;
字节半径 = 24;

双 RAD = 3.141592 / 180;
双 LR = 89.99;
在此之后为模拟时钟编写一个函数。

无效 showTimeAnalog(int center_x,int center_y,双 pl1,双 pl2,双 pl3)
{
双 x1,x2,y1,y2;
x1 = center_x + (半径 * pl1) * cos((6 * pl3 + LR) * RAD);
y1 = center_y + (半径 * pl1) * sin((6 * pl3 + LR) * RAD);
x2 = center_x + (半径 * pl2) * cos((6 * pl3 - LR) * RAD);
y2 = center_y + (半径 * pl2) * sin((6 * pl3 - LR) * RAD);
display.drawLine((int)x1, (int)y1, (int)x2, (int)y2, WHITE);
}
然后还有另一个数字时钟功能。

无效数字时钟()
{
display.setTextSize(1);
display.setTextColor(白色);
display.setCursor(60, 20);
display.println(dmy);
display.setTextSize(2);
display.setCursor(60, 30);
display.println(时间);
显示.显示();
延迟(2000);
}

poYBAGMsLteAbRF8AACJAP0bBBo950.jpg

然后 OLED 将使用以下功能以数字和图形形式显示电池状态。

无效电池()
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(白色);
display.setCursor(20, 0);
display.print("蝙蝠:");
display.print(电池);
display.print("%");
display.drawRect(14, 20, 80, 40, WHITE);
display.drawRect(94, 30, 10, 20, WHITE);
display.fillRect(14, 20, (int)(8 * (battery.toInt()) / 10), 40, WHITE);
显示.显示();
延迟(2000);
}

pYYBAGMsLtiAap1sAAB4cFMeWBw140.jpg

以下函数也用于以数字和图形形式显示网络状态。

无效网络()
{
display.clearDisplay();
display.drawLine(5, 15, 25, 15, WHITE);
display.drawLine(5, 15, 14, 30, 白色);
display.drawLine(25, 15, 17, 30, 白色);
display.fillRect(14, 15, 4, 40, WHITE);
int net = network.toInt() / 20;
整数 x1 = 24, y1 = 50, x2 = 4, y2 = 5;
…………
......

pYYBAGMsLtyAQfw1AAB3QkxN9wk753.jpg


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号