• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于ESP32的多功能环境感知与信号测试神器

05/19 08:43
1996
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

联系方式.txt

共1个文件

Tinycorder:打造你的多功能环境感知与信号测试神器

在科幻电视剧《星际迷航》中,三录仪(Tricorder)是一种多功能的便携式设备,能够感知环境、分析物质成分、甚至进行医疗诊断。如今,这种看似只存在于科幻中的设备,正在逐渐走进现实。今天,我将为大家介绍一个非常有趣的 DIY 项目——Tinycorder。这是一个小巧的多功能设备,旨在向《星际迷航》中的三录仪致敬。它不仅可以感知环境,还能测试电气信号,甚至可以作为一个电子徽章使用。
在这里插入图片描述
在这里插入图片描述

项目简介

Tinycorder 是一个由 SirGalaxy 在 Instructables 上分享的项目,它集成了多种传感器,能够测量光照、空气质量、温度、湿度和气压等多种环境参数。此外,它还可以作为一个简单的信号测试仪,测量模拟信号。这个设备小巧轻便(75x85x10mm,重量仅 70 克),并且功耗极低,非常适合日常携带和使用。

主要功能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Tinycorder 的主要功能包括:

  1. 环境感知
    • 光照测量:使用 AS7341 传感器,能够测量 7 个可见光和近红外(NIR)波段的光照强度
    • 空气质量测量:使用 SCD40 传感器,能够测量二氧化碳(CO2)浓度和空气质量。
    • 气象测量:使用 BMP280 传感器,能够测量温度、湿度和气压。
  2. 信号测试
    • 提供两个前部引脚,可以测量模拟信号,类似于简单的示波器功能。
  3. 显示与交互
    • 配备一块 400x240 像素的 Sharp Memory Display,功耗极低,适合长时间使用。
    • 提供一个电源开关和三个按钮(上、下、确认),用于用户交互。
  4. 便携性
    • 设备小巧轻便,配备挂绳孔,可以挂在脖子上或手上,方便携带。

所需材料

在开始制作之前,我们需要准备以下材料和工具:
在这里插入图片描述

电子元件

  1. Seeed Studio XIAO ESP32C3 微控制器:作为设备的核心处理单元。
  2. 150mAh 锂电池:为设备供电。
  3. 电源开关和 3 个按钮:用于控制设备的开关和用户交互。
  4. Sharp Memory Display 400x240px低功耗显示屏,用于显示测量数据。
  5. AS7341 光照传感器:用于测量 7 个可见光和近红外波段的光照强度。
  6. SCD40 空气质量传感器:用于测量 CO2 浓度和空气质量。
  7. BMP280 气象传感器:用于测量温度、湿度和气压。
  8. 2 个引脚头:用于测量模拟信号。
    在这里插入图片描述

3D 打印材料

  • PLA 耗材:用于打印设备的外壳。
  • 3D 打印机:用于打印设备的上下外壳。

其他材料

  • 热熔胶:用于固定传感器和电线。
  • 螺丝和螺母(M3x10):用于连接上下外壳。

制作步骤

步骤 1:连接 Perfboard 和显示屏

首先,我们需要将 Perfboard 和显示屏连接在一起。根据提供的原理图进行焊接或使用热熔胶固定。注意,某些元件可能不在 Fritzing 库中,因此实际连接可能与原理图略有不同。务必仔细阅读原理图中的注释。

步骤 2:连接所有传感器和显示屏

  1. 显示屏:使用 3 个引脚连接 SPI 接口。
  2. 传感器:使用 2 个引脚连接 I2C 接口。
  3. 按钮:连接 3 个按钮(上、下、确认)。
  4. 模拟信号引脚:将两个引脚连接到前部的引脚头上,用于测量模拟信号。
  5. 焊接 XIAO ESP32C3:将 XIAO ESP32C3 焊接到 Perfboard 上,注意对齐孔位。XIAO ESP32C3 的底部有两个焊盘,用于连接电池,需要在底部焊接。
    在这里插入图片描述

步骤 3:在底部粘贴传感器和电线

将传感器和电线粘贴到底部,确保所有元件固定牢固。参考图片进行操作,确保传感器和电线不会松动。
在这里插入图片描述

步骤 4:在前部粘贴电池

将锂电池粘贴到设备的前部,确保电池固定牢固。可以使用热熔胶进行固定。
在这里插入图片描述

步骤 5:连接上下外壳

使用 M3x10 螺丝和螺母将上下外壳连接在一起。在设计外壳时,我进行了多次迭代以确保所有组件都能完美适配。如果你已经设计好外壳,建议先打印外壳,然后根据外壳的尺寸调整电子元件的位置,最后进行粘贴。我的设计中包含了一个用于手腕带的孔,颜色与 PLA 一致,看起来非常协调。
在这里插入图片描述

步骤 6:完成设备

目前,Tinycorder 的代码仍在开发中。主要功能(如主菜单、徽章模式和光谱仪)已经完成,但其他功能仍在建设中。下一步计划包括:

  1. 优化代码:完善主菜单和其他功能。
  2. 监控电池电压:通过指示灯显示电池电量。
  3. 添加蜂鸣器:用于提醒和报警功能。
  4. 增加测试功能:如示波器功能。
  5. 新增功能:根据需求不断添加新功能。
    在这里插入图片描述

代码示例

以下是 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);
}

测试与使用

测试步骤

  1. 连接电源:使用 Micro USB 数据线为 Tinycorder 供电。
  2. 检查显示屏:确保显示屏能够正常显示数据。
  3. 测试传感器:检查各个传感器是否能够正常工作,显示正确的数据。
  4. 测试按钮:确保按钮能够正常响应,实现用户交互功能。

使用建议

  • 日常携带:由于 Tinycorder 小巧轻便,可以方便地挂在脖子上或手上,适合日常携带。
  • 环境监测:使用 Tinycorder 监测环境参数,如空气质量、温度和湿度。
  • 信号测试:使用前部的引脚头测量模拟信号,进行简单的电气测试。

项目扩展

Tinycorder 的设计和功能仍在不断完善中,以下是一些扩展建议:

  1. 优化代码:进一步优化代码,完善更多功能,如示波器模式。
  2. 添加蜂鸣器:添加蜂鸣器,用于提醒和报警功能。
  3. 监控电池电压:通过指示灯显示电池电量,及时提醒用户充电。
  4. 美化外壳:使用喷漆或贴纸美化 3D 打印的外壳,使其更加美观。
  5. 新增功能:根据需求不断添加新功能,如蓝牙传输、数据记录等。

总结

Tinycorder 是一个非常有趣且实用的 DIY 项目,它不仅能够让你亲手制作一个多功能的环境感知和信号测试设备,还能让你学习到 3D 打印、电子电路搭建和 Arduino 编程的基础知识。通过这个项目,你可以实现对多种环境参数的实时监测,并通过低功耗的显示屏清晰地显示数据。更重要的是,你可以根据自己的需求对项目进行扩展和定制,让它成为你独一无二的多功能设备。

希望这篇文章能够激发你的创造力,让你动手制作属于自己的 Tinycorder。如果你在制作过程中遇到任何问题,欢迎在评论区留言,我会尽力为你解答。如果你已经完成了这个项目,也欢迎在评论区分享你的作品,让我们一起交流和学习!

希望你喜欢这个项目,并在构建过程中找到乐趣!如果你有任何问题或需要帮助,欢迎在评论区交流。

作者:Svan.


注意:本博文为不得在未经本人同意进行转载或者二次创作,违者必究!!!

博客主页:https://blog.csdn.net/weixin_51141489,需要源码或相关资料实物的友友请关注、点赞,私信吧!

  • 联系方式.txt
    下载

相关推荐