Tinycorder:打造你的多功能环境感知与信号测试神器
在科幻电视剧《星际迷航》中,三录仪(Tricorder)是一种多功能的便携式设备,能够感知环境、分析物质成分、甚至进行医疗诊断。如今,这种看似只存在于科幻中的设备,正在逐渐走进现实。今天,我将为大家介绍一个非常有趣的 DIY 项目——Tinycorder。这是一个小巧的多功能设备,旨在向《星际迷航》中的三录仪致敬。它不仅可以感知环境,还能测试电气信号,甚至可以作为一个电子徽章使用。
项目简介
Tinycorder 是一个由 SirGalaxy 在 Instructables 上分享的项目,它集成了多种传感器,能够测量光照、空气质量、温度、湿度和气压等多种环境参数。此外,它还可以作为一个简单的信号测试仪,测量模拟信号。这个设备小巧轻便(75x85x10mm,重量仅 70 克),并且功耗极低,非常适合日常携带和使用。
主要功能
Tinycorder 的主要功能包括:
- 环境感知:
- 信号测试:
- 显示与交互:
- 配备一块 400x240 像素的 Sharp Memory Display,功耗极低,适合长时间使用。
- 提供一个电源开关和三个按钮(上、下、确认),用于用户交互。
- 便携性:
- 设备小巧轻便,配备挂绳孔,可以挂在脖子上或手上,方便携带。
所需材料
在开始制作之前,我们需要准备以下材料和工具:
电子元件
- Seeed Studio XIAO ESP32C3 微控制器:作为设备的核心处理单元。
- 150mAh 锂电池:为设备供电。
- 电源开关和 3 个按钮:用于控制设备的开关和用户交互。
- Sharp Memory Display 400x240px:低功耗的显示屏,用于显示测量数据。
- AS7341 光照传感器:用于测量 7 个可见光和近红外波段的光照强度。
- SCD40 空气质量传感器:用于测量 CO2 浓度和空气质量。
- BMP280 气象传感器:用于测量温度、湿度和气压。
- 2 个引脚头:用于测量模拟信号。
3D 打印材料
- PLA 耗材:用于打印设备的外壳。
- 3D 打印机:用于打印设备的上下外壳。
其他材料
- 热熔胶:用于固定传感器和电线。
- 螺丝和螺母(M3x10):用于连接上下外壳。
制作步骤
步骤 1:连接 Perfboard 和显示屏
首先,我们需要将 Perfboard 和显示屏连接在一起。根据提供的原理图进行焊接或使用热熔胶固定。注意,某些元件可能不在 Fritzing 库中,因此实际连接可能与原理图略有不同。务必仔细阅读原理图中的注释。
步骤 2:连接所有传感器和显示屏
- 显示屏:使用 3 个引脚连接 SPI 接口。
- 传感器:使用 2 个引脚连接 I2C 接口。
- 按钮:连接 3 个按钮(上、下、确认)。
- 模拟信号引脚:将两个引脚连接到前部的引脚头上,用于测量模拟信号。
- 焊接 XIAO ESP32C3:将 XIAO ESP32C3 焊接到 Perfboard 上,注意对齐孔位。XIAO ESP32C3 的底部有两个焊盘,用于连接电池,需要在底部焊接。
步骤 3:在底部粘贴传感器和电线
将传感器和电线粘贴到底部,确保所有元件固定牢固。参考图片进行操作,确保传感器和电线不会松动。
步骤 4:在前部粘贴电池
将锂电池粘贴到设备的前部,确保电池固定牢固。可以使用热熔胶进行固定。
步骤 5:连接上下外壳
使用 M3x10 螺丝和螺母将上下外壳连接在一起。在设计外壳时,我进行了多次迭代以确保所有组件都能完美适配。如果你已经设计好外壳,建议先打印外壳,然后根据外壳的尺寸调整电子元件的位置,最后进行粘贴。我的设计中包含了一个用于手腕带的孔,颜色与 PLA 一致,看起来非常协调。
步骤 6:完成设备
目前,Tinycorder 的代码仍在开发中。主要功能(如主菜单、徽章模式和光谱仪)已经完成,但其他功能仍在建设中。下一步计划包括:
- 优化代码:完善主菜单和其他功能。
- 监控电池电压:通过指示灯显示电池电量。
- 添加蜂鸣器:用于提醒和报警功能。
- 增加测试功能:如示波器功能。
- 新增功能:根据需求不断添加新功能。
代码示例
以下是 Tinycorder 的部分代码示例,展示了如何初始化传感器和显示数据:
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_SCD4X.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_AS7341.h>
#define SCREEN_WIDTH 400
#define SCREEN_HEIGHT 240
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_SCD4X scd4x;
Adafruit_BMP280 bmp280;
Adafruit_AS7341 as7341;
void setup() {
Serial.begin(115200);
// Initialize display
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.clearDisplay();
// Initialize SCD4X
if (!scd4x.begin()) {
Serial.println("SCD4X sensor not found");
while (1);
}
// Initialize BMP280
if (!bmp280.begin()) {
Serial.println("BMP280 sensor not found");
while (1);
}
// Initialize AS7341
if (!as7341.begin()) {
Serial.println("AS7341 sensor not found");
while (1);
}
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println("Tinycorder");
display.display();
}
void loop() {
// Read SCD4X data
float co2 = scd4x.readCO2();
float temp = scd4x.readTemperature();
float humidity = scd4x.readHumidity();
// Read BMP280 data
float pressure = bmp280.readPressure() / 100.0;
// Read AS7341 data
uint16_t channels[7];
as7341.getChannels(channels);
// Display data
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print("CO2: ");
display.print(co2);
display.print(" ppm");
display.setCursor(0, 10);
display.print("Temp: ");
display.print(temp);
display.print(" C");
display.setCursor(0, 20);
display.print("Humidity: ");
display.print(humidity);
display.print(" %");
display.setCursor(0, 30);
display.print("Pressure: ");
display.print(pressure);
display.print(" hPa");
display.setCursor(0, 40);
display.print("Light: ");
for (int i = 0; i < 7; i++) {
display.print(channels[i]);
display.print(" ");
}
display.display();
delay(1000);
}
测试与使用
测试步骤
- 连接电源:使用 Micro USB 数据线为 Tinycorder 供电。
- 检查显示屏:确保显示屏能够正常显示数据。
- 测试传感器:检查各个传感器是否能够正常工作,显示正确的数据。
- 测试按钮:确保按钮能够正常响应,实现用户交互功能。
使用建议
- 日常携带:由于 Tinycorder 小巧轻便,可以方便地挂在脖子上或手上,适合日常携带。
- 环境监测:使用 Tinycorder 监测环境参数,如空气质量、温度和湿度。
- 信号测试:使用前部的引脚头测量模拟信号,进行简单的电气测试。
项目扩展
Tinycorder 的设计和功能仍在不断完善中,以下是一些扩展建议:
- 优化代码:进一步优化代码,完善更多功能,如示波器模式。
- 添加蜂鸣器:添加蜂鸣器,用于提醒和报警功能。
- 监控电池电压:通过指示灯显示电池电量,及时提醒用户充电。
- 美化外壳:使用喷漆或贴纸美化 3D 打印的外壳,使其更加美观。
- 新增功能:根据需求不断添加新功能,如蓝牙传输、数据记录等。
总结
Tinycorder 是一个非常有趣且实用的 DIY 项目,它不仅能够让你亲手制作一个多功能的环境感知和信号测试设备,还能让你学习到 3D 打印、电子电路搭建和 Arduino 编程的基础知识。通过这个项目,你可以实现对多种环境参数的实时监测,并通过低功耗的显示屏清晰地显示数据。更重要的是,你可以根据自己的需求对项目进行扩展和定制,让它成为你独一无二的多功能设备。
希望这篇文章能够激发你的创造力,让你动手制作属于自己的 Tinycorder。如果你在制作过程中遇到任何问题,欢迎在评论区留言,我会尽力为你解答。如果你已经完成了这个项目,也欢迎在评论区分享你的作品,让我们一起交流和学习!
希望你喜欢这个项目,并在构建过程中找到乐趣!如果你有任何问题或需要帮助,欢迎在评论区交流。
作者:Svan.
注意:本博文为不得在未经本人同意进行转载或者二次创作,违者必究!!!
博客主页:https://blog.csdn.net/weixin_51141489,需要源码或相关资料实物的友友请关注、点赞,私信吧!
1996