Tinycorder:打造你的多功能環(huán)境感知與信號測試神器
在科幻電視劇《星際迷航》中,三錄儀(Tricorder)是一種多功能的便攜式設(shè)備,能夠感知環(huán)境、分析物質(zhì)成分、甚至進(jìn)行醫(yī)療診斷。如今,這種看似只存在于科幻中的設(shè)備,正在逐漸走進(jìn)現(xiàn)實。今天,我將為大家介紹一個非常有趣的 DIY 項目——Tinycorder。這是一個小巧的多功能設(shè)備,旨在向《星際迷航》中的三錄儀致敬。它不僅可以感知環(huán)境,還能測試電氣信號,甚至可以作為一個電子徽章使用。
項目簡介
Tinycorder 是一個由 SirGalaxy 在 Instructables 上分享的項目,它集成了多種傳感器,能夠測量光照、空氣質(zhì)量、溫度、濕度和氣壓等多種環(huán)境參數(shù)。此外,它還可以作為一個簡單的信號測試儀,測量模擬信號。這個設(shè)備小巧輕便(75x85x10mm,重量僅 70 克),并且功耗極低,非常適合日常攜帶和使用。
主要功能
Tinycorder 的主要功能包括:
- 環(huán)境感知:
- 信號測試:
- 顯示與交互:
- 配備一塊 400x240 像素的 Sharp Memory Display,功耗極低,適合長時間使用。
- 提供一個電源開關(guān)和三個按鈕(上、下、確認(rèn)),用于用戶交互。
- 便攜性:
- 設(shè)備小巧輕便,配備掛繩孔,可以掛在脖子上或手上,方便攜帶。
所需材料
在開始制作之前,我們需要準(zhǔn)備以下材料和工具:
電子元件
- Seeed Studio XIAO ESP32C3 微控制器:作為設(shè)備的核心處理單元。
- 150mAh 鋰電池:為設(shè)備供電。
- 電源開關(guān)和 3 個按鈕:用于控制設(shè)備的開關(guān)和用戶交互。
- Sharp Memory Display 400x240px:低功耗的顯示屏,用于顯示測量數(shù)據(jù)。
- AS7341 光照傳感器:用于測量 7 個可見光和近紅外波段的光照強度。
- SCD40 空氣質(zhì)量傳感器:用于測量 CO2 濃度和空氣質(zhì)量。
- BMP280 氣象傳感器:用于測量溫度、濕度和氣壓。
- 2 個引腳頭:用于測量模擬信號。
3D 打印材料
- PLA 耗材:用于打印設(shè)備的外殼。
- 3D 打印機:用于打印設(shè)備的上下外殼。
其他材料
- 熱熔膠:用于固定傳感器和電線。
- 螺絲和螺母(M3x10):用于連接上下外殼。
制作步驟
步驟 1:連接 Perfboard 和顯示屏
首先,我們需要將 Perfboard 和顯示屏連接在一起。根據(jù)提供的原理圖進(jìn)行焊接或使用熱熔膠固定。注意,某些元件可能不在 Fritzing 庫中,因此實際連接可能與原理圖略有不同。務(wù)必仔細(xì)閱讀原理圖中的注釋。
步驟 2:連接所有傳感器和顯示屏
- 顯示屏:使用 3 個引腳連接 SPI 接口。
- 傳感器:使用 2 個引腳連接 I2C 接口。
- 按鈕:連接 3 個按鈕(上、下、確認(rèn))。
- 模擬信號引腳:將兩個引腳連接到前部的引腳頭上,用于測量模擬信號。
- 焊接 XIAO ESP32C3:將 XIAO ESP32C3 焊接到 Perfboard 上,注意對齊孔位。XIAO ESP32C3 的底部有兩個焊盤,用于連接電池,需要在底部焊接。
步驟 3:在底部粘貼傳感器和電線
將傳感器和電線粘貼到底部,確保所有元件固定牢固。參考圖片進(jìn)行操作,確保傳感器和電線不會松動。
步驟 4:在前部粘貼電池
將鋰電池粘貼到設(shè)備的前部,確保電池固定牢固。可以使用熱熔膠進(jìn)行固定。
步驟 5:連接上下外殼
使用 M3x10 螺絲和螺母將上下外殼連接在一起。在設(shè)計外殼時,我進(jìn)行了多次迭代以確保所有組件都能完美適配。如果你已經(jīng)設(shè)計好外殼,建議先打印外殼,然后根據(jù)外殼的尺寸調(diào)整電子元件的位置,最后進(jìn)行粘貼。我的設(shè)計中包含了一個用于手腕帶的孔,顏色與 PLA 一致,看起來非常協(xié)調(diào)。
步驟 6:完成設(shè)備
目前,Tinycorder 的代碼仍在開發(fā)中。主要功能(如主菜單、徽章模式和光譜儀)已經(jīng)完成,但其他功能仍在建設(shè)中。下一步計劃包括:
- 優(yōu)化代碼:完善主菜單和其他功能。
- 監(jiān)控電池電壓:通過指示燈顯示電池電量。
- 添加蜂鳴器:用于提醒和報警功能。
- 增加測試功能:如示波器功能。
- 新增功能:根據(jù)需求不斷添加新功能。
代碼示例
以下是 Tinycorder 的部分代碼示例,展示了如何初始化傳感器和顯示數(shù)據(jù):
#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 數(shù)據(jù)線為 Tinycorder 供電。
- 檢查顯示屏:確保顯示屏能夠正常顯示數(shù)據(jù)。
- 測試傳感器:檢查各個傳感器是否能夠正常工作,顯示正確的數(shù)據(jù)。
- 測試按鈕:確保按鈕能夠正常響應(yīng),實現(xiàn)用戶交互功能。
使用建議
- 日常攜帶:由于 Tinycorder 小巧輕便,可以方便地掛在脖子上或手上,適合日常攜帶。
- 環(huán)境監(jiān)測:使用 Tinycorder 監(jiān)測環(huán)境參數(shù),如空氣質(zhì)量、溫度和濕度。
- 信號測試:使用前部的引腳頭測量模擬信號,進(jìn)行簡單的電氣測試。
項目擴展
Tinycorder 的設(shè)計和功能仍在不斷完善中,以下是一些擴展建議:
- 優(yōu)化代碼:進(jìn)一步優(yōu)化代碼,完善更多功能,如示波器模式。
- 添加蜂鳴器:添加蜂鳴器,用于提醒和報警功能。
- 監(jiān)控電池電壓:通過指示燈顯示電池電量,及時提醒用戶充電。
- 美化外殼:使用噴漆或貼紙美化 3D 打印的外殼,使其更加美觀。
- 新增功能:根據(jù)需求不斷添加新功能,如藍(lán)牙傳輸、數(shù)據(jù)記錄等。
總結(jié)
Tinycorder 是一個非常有趣且實用的 DIY 項目,它不僅能夠讓你親手制作一個多功能的環(huán)境感知和信號測試設(shè)備,還能讓你學(xué)習(xí)到 3D 打印、電子電路搭建和 Arduino 編程的基礎(chǔ)知識。通過這個項目,你可以實現(xiàn)對多種環(huán)境參數(shù)的實時監(jiān)測,并通過低功耗的顯示屏清晰地顯示數(shù)據(jù)。更重要的是,你可以根據(jù)自己的需求對項目進(jìn)行擴展和定制,讓它成為你獨一無二的多功能設(shè)備。
希望這篇文章能夠激發(fā)你的創(chuàng)造力,讓你動手制作屬于自己的 Tinycorder。如果你在制作過程中遇到任何問題,歡迎在評論區(qū)留言,我會盡力為你解答。如果你已經(jīng)完成了這個項目,也歡迎在評論區(qū)分享你的作品,讓我們一起交流和學(xué)習(xí)!
希望你喜歡這個項目,并在構(gòu)建過程中找到樂趣!如果你有任何問題或需要幫助,歡迎在評論區(qū)交流。
作者:Svan.
注意:本博文為不得在未經(jīng)本人同意進(jìn)行轉(zhuǎn)載或者二次創(chuàng)作,違者必究?。?!
博客主頁:https://blog.csdn.net/weixin_51141489,需要源碼或相關(guān)資料實物的友友請關(guān)注、點贊,私信吧!