当前位置: 首页 > 科技赋能

创客-可穿戴时代 不如自己DIY一款炫酷的智能手表

时间:2024-05-22 16:58:11 科技赋能

编者注:这个项目叫Retro Watch。

该教程最初发布在 Instructables 上,作者是 GodsTale。

本项目教程已有波兰语和韩语版本,现在作者又添加了中文版本。

说到可穿戴设备,我们通常首先想到的就是智能手表。

购买一款时尚的智能手表固然很棒,但作为创客,你也可以像我一样选择自己制作一款!我把这款DIY智能手表命名为Retro Watch。

整个项目基于Android和Arduino开发板。

该项目的所有软硬件设计都是开源的。

您可以下载源代码或在 Github 上贡献自己的成果。

另外值得一提的是,Retro Watch 已经支持 u8glib,它可以让你选择任何你想使用的屏幕(包括 OLED),而且屏幕也可以占用更少的 RAM。

第一步:系统结构设计 如上图所示,Retro Watch的结构比较简单:硬件平台基于Arduino,只有一个控制按钮。

另外,我还开发了一个基于Android系统的应用程序,让手表可以通过蓝牙连接到Android设备,这样我们就可以通过Retro Watch在Android设备上查看RSS推送和系统通知。

第二步:组件准备因为我们要做的是一款智能手表,所以保证每个组件体积小也是关键之一。

我选择的Arduino微控制器是最小的Arduino Pro Mini,它是Uno R3的轻量级版本。

上面连USB接口芯片都没有,所以需要额外准备一个USB转UART模块。

该Arduino有两个版本,工作电压不同(3.3v/5v)。

我选择了3.3V版本,因为蓝牙模块和显示器都支持3.3V,而且3.7V锂电池也可以正常使用。

3.3V版本的Arduino运行在8MHz,5V版本运行在16MHz,但8MHz已经绰绰有余了。

一般来说,Arduino Pro Mini的核心处理器件是ATmega微控制器,其RAM为2KB;但Arduino版本的ATmega只有1KB RAM是不够的。

蓝牙HC~06蓝牙模块比较常见。

其中一个有一个接口板,其中包含一个重置按钮和一个 LED,但它也相对较大。

由于接口板对于本项目意义不大,而且也增加了成本,因此这里选择不带接口板的HC~06。

显示器 我们需要一个足够小且功耗足够低的显示器。

我最终选择了Adafruit的0.96英寸×64 OLED显示屏,它支持I2C和SPI,可以轻松连接Arduino。

我这里选择的是I2C和SSD驱动芯片。

我选择的电池是3.7V的LiPo电池,容量为mAh。

正常使用可持续7小时。

同样,选择电池的尺寸也很重要。

除了电线等其他组件外,还需要一个 10 kΩ 电阻(用于按钮连接)。

第三步:组装整个系统的硬件结构。

连接图如下: 蓝牙连接 Arduino: VCC ~ 3.3VGND ~ GNDTX ~ D2RX ~ D3OLED 连接 Arduino: GND ~ GNDVCC ~ VCCSDA ~ A4 (模拟引脚 4) SCL ~ A5 (模拟引脚 5) 如果您使用的是SPI 接口,可以参考 Adafruit 教程连接,如下: D1: MOSI ~ Arduino D11 (MOSI) D2: MISO ~ Arduino D12 (MISO) (可选) D0: CLK ~ Arduino D13 (SCK)DC: DC (数据命令)~Arduino D8(或其他)CS:CS(片选)~Arduino D10(SS)RES:RESET~Arduino D9(或其他)按钮:连接方法如图所示,请注意这里A使用 10 kΩ 电阻。

电池连接 Arduino:正极 ~ RAW 负极 ~ GND USB 转 UART 模块连接 Arduino:3.3V ~ VCCTXD ~ RXDRXD ~ TXDGND ~ GND 安装尺寸如下: 第四步:编译 Arduino 代码并上传完成的 Arduino项目,可以在 GitHub 上下载。

下载后先不要急于编译。

您还需要先配置开发环境。

安装显卡驱动:首先需要安装图形处理库Adafruit_SSD和Adafruit-GFX-Library,以便在OLED上显示图像。

(在某些开发环境中,Adafruit 库会与 Robot_xxx 库冲突;如果发生这种情况,请备份 Robot_xxx 库并将其从库文件夹中删除。

) 警告:如果您使用的是带有 SH 驱动程序的 OLED,请下载 Adafruit_SH GitHub 上的驱动程序。

另外,该项目还支持u8glib。

您可以从其官方主页下载支持Arduino的版本。

复制位图图像头文件:将RetroWatchArduino文件夹中的bitmap.h文件复制到路径/Arduino安装文件夹/Arduino/hardware/libraries/RetroWatch。

如果没有这样的路径,您可以自己创建它。

修改源代码:打开Arduino IDE并加载RetroWtchArduino.ino。

如果您使用的引脚与本教程不同,则需要修改引脚定义:SoftwareSerial BTSerial(9, 8); //蓝牙TX、RX连接引脚 int ButtonPin = 5; // 按钮引脚显示.begin (SSD_SWITCHCAPPVCC, 0x3C); // OLED I2C 地址,将 Ox3D 替换为您的地址。

如果您使用的是 u8glib,则加载 RetroWatchArduino_u8glib.ino 文件并注意以下代码: U8GLIB_SSD_X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // 根据Modify the display选择SoftwareSerialBTSerial(2, 3); // 蓝牙TX、RX连接引脚 int ButtonPin = 5; // 按钮引脚 如果您使用Adafruit的图形库并使用OLED的Reset引脚,则将OLED的Reset连接到Arduino的D8引脚。

当然也可以自定义:#define OLED_RESET 8Adafruit_SSDdisplay(OLED_RESET);编译上传:完成上述步骤后,进行编译上传。

成功后,显示屏上会显示RetroWatch。

Arduino 徽标和 Adafruit 徽标。

出现徽标后,屏幕将显示 00:00,如下图所示: 步骤 5:Android 软件及其源代码。

由于Android 4.3之后的版本仅支持从应用程序读取通知信息,请确保您的Android设备安装的是Android 4.3或更高版本的系统。

但如果您使用的版本低于4.3,则可以使用该应用程序的另一个阉割版本:它可以通过智能手表接收通知,但无法读取内容。

应用程序源代码可以在 GitHub 上查看或直接通过 Google Play 商店安装(旧系统为 RetroWatch 或 RetroWatch LE)。

安装Android软件后,检查系统是否授予其读取通知的权限。

接下来,打开手机的蓝牙,并将Android手机的蓝牙与Arduino配对。

然后在RetroWatch软件中选择连接的Arduino。

如果界面显示“已连接”,则表示连接成功。

单击菜单并选择数据传输到手表,然后设备将使用蓝牙将时间和信息传输到智能手表。

由于手表硬件性能有限,很多功能需要通过Android应用程序来实现。

手表本身的主要功能就是显示。

在Android应用程序中,您可以设置推送消息的类型(仅支持英文字符显示)和状态通知(手机电量、信号强度等),还可以推送应用程序中订阅的RSS(您可以订阅天气RSS,用于将天气显示在手表上)。

每 30 分钟同步更新一次。

此外,该应用程序还提供了65种不同的显示图标,您可以自行定义设置。

第六步:手表功能介绍安装完成后,就可以开始探索我们的智能手表了。

智能手表系统工作在以下模式: 启动显示:显示标志,手表启动。

时钟显示:显示连接的 Android 手机上的时间。

此外,时间显示也可以修改。

目前提供模拟显示、数字显示和混合显示三种模式。

单击一次按钮,手表进入紧急信息显示模式。

如果10分钟内没有数据更新或操作,显示界面将切换到待机界面。

紧急信息显示:当用户点击按钮或输入新的紧急信息时,手表进入该模式。

用户可以再次单击该按钮来查看下一条消息。

如果10秒内没有任何操作,手表会自动显示下一条消息。

信息显示完成后,手表切换到正常信息显示。

因为RAM只有2KB,很小。

因此,智能手表最多可以存储3条紧急消息,如果超过3条,最旧的消息将被自动删除。

普通信息显示:紧急信息显示完成后,手表将继续显示普通信息。

单击按钮或5秒不操作将显示下一条信息。

信息显示完成后,手表切换回时钟显示。

最多可存储7条一般信息。

待机显示:如果10分钟内没有数据更新或操作,显示界面将切换到待机界面。

在此模式下,手表界面仅以 hh:mm 模式显示指示器(可在 Android 应用程序中选择)和时间,并且其功耗也有所降低。

当待机状态下点击按钮或收到新消息时,手表进入时钟显示模式。

以下为工作过程演示视频: 步骤七:外部结构制作。