使用氣象氣球,您可以將 Arduino、相機(jī)、大蒜面包或其他任何您想要的東西送到三分之一的太空!盡管它是通往太空的三分之一,但幾乎 99% 的大氣層都不存在,所以我們稱之為“太空邊緣”。接下來,讓我們來看看如何做到這一點(diǎn)。
根據(jù)您的需求和技能水平,你可以在三條路徑中自行選擇。不過由于平流層中令人難以承受的風(fēng),這三種途徑都需要一些焊接技能。但并不是哪條路徑更好,只是都各具特色,它可能基于你更擅長或感興趣的部分。
路徑 1:使用原型板、各種傳感器創(chuàng)建一個簡單的數(shù)據(jù)記錄器,幾乎沒有焊接技能。
路徑 2:使用預(yù)先設(shè)計的 PCB 屏蔽(印刷電路板)來制作干凈漂亮的電路板,由我們設(shè)計和測試。
路徑 3:在程序中制作自己的 PCB。本文不會深入探討如何設(shè)計和制作自己的 PCB,但會介紹一些指導(dǎo)方針供您思考。
我們將詳細(xì)介紹每條路徑,但這里有一些提示可以幫助您選擇:
路徑 1 將是最簡單的,并且將允許一些靈活性。您可以選擇電路板上的傳感器、電路板和功能。您將需要一些焊接技能,以確保在飛行過程中一切都保持在一起。
路徑 2 將是最嚴(yán)格的,這意味著您將必須使用一組指定的傳感器,一個特定的 Arduino 板,但您將擁有一個看起來非常干凈的 PCB,不必?fù)?dān)心焊接或編碼,對于學(xué)習(xí)PCB來說,這是一個很好的開始。
路徑 3 將是最難的,需要很多技能。您將需要知道(或?qū)W習(xí))如何制作自己的 PCB 或 Arduino PCB 屏蔽板,知道如何對整個事物進(jìn)行編碼以及焊接電路板。如果您知道如何做所有這些事情,您可能可以自己做這個項目,但是本文可以幫助您解決一些非常重要的限制和細(xì)節(jié)。
但在我們開始之前,您需要牢記一些非常重要的規(guī)則。請務(wù)必閱讀這些規(guī)則,因為在氣象氣球中發(fā)送物品可能會受到您居住地的限制。本文不會詳細(xì)介紹如何選擇合適的氣球、建造有效載荷艙以及如何填充氣球,但是在網(wǎng)上有很多關(guān)于如何做到這一點(diǎn)的指南。以下是您需要牢記的事項:
1. 您的有效載荷艙不能有任何手機(jī)信號。如果您出于任何原因在飛機(jī)上攜帶手機(jī),則它必須處于飛行模式。
2. 如果您使用 GPS 尋找氣球,您需要獲得 HAM 無線電許可證(需要測試和收費(fèi))。
3. 如果您的有效載荷的重量尺寸比超過 3.0 盎司/平方英寸,那么總有效載荷重量必須小于 4 磅。
4. 任何單獨(dú)的有效載荷/包裹必須小于 6 磅。
5. 如果您有兩個有效載荷,則總有效載荷重量必須小于 12 磅。
路徑 1 - 原型板
在開始設(shè)計之前,您需要牢記幾個注意事項。首先,你想要什么。在提供的示意圖中,您將擁有一個簡單的溫度和濕度傳感器、一個氣壓傳感器、一個 IMU 和一個 SD 卡模塊。對于大多數(shù)項目來說,這應(yīng)該足夠了,但如果你想用你的 Arduino 找到你的有效載荷艙,你會想要包括一個 GPS 模塊。有幾種恢復(fù)選項:
1. SPOT GPS 模塊。這些都有其優(yōu)點(diǎn)和缺點(diǎn)。這些將非常易于使用,范圍不受限制(它們使用衛(wèi)星將坐標(biāo)發(fā)送到您的手機(jī)),電池壽命長,而且很容易獲得。但是,它們價格昂貴,不能倒置工作,而且信號會被厚物體阻擋。
這是我們使用的方法,但我們?yōu)樗O(shè)計并 3D 打印了一個云臺以使其保持直立。我們推薦SPOT 3 Satellite Messenger ,但這完全取決于您,只要您對此進(jìn)行研究并了解不同類型的好處。
2. APRS 電臺。這將是最可靠的,你可以用它做很多事情。您可以將模塊連接到 Arduino 并讓無線電發(fā)回數(shù)據(jù)、坐標(biāo)等。這也可以讓您獲得準(zhǔn)確的高度測量。
但這不會包含在接線圖中,因此您必須學(xué)會自己接線。此外,您需要獲得 HAM 無線電許可證,您需要參加測試并支付少量費(fèi)用。這個許可證非常有用,所以它可能是值得的。
3. 手機(jī)。我不建議使用這種方法。因為不僅需要想辦法在飛行后讓手機(jī)退出飛行模式,而且手機(jī)本身可能比普通 SPOT 更貴。之所以上榜,是因為很多人使用手機(jī)作為備份,但它確實不是你應(yīng)該使用的東西。
到這想必你已經(jīng)決定如何恢復(fù)您的有效載荷,您將想要了解飛行的樣子。例如,如果你想讓你的 Arduino 遠(yuǎn)程部署降落傘,你應(yīng)該想辦法做到這一點(diǎn)。你還應(yīng)該檢查您將使用哪些傳感器(溫度可以降至 -40C (-40F),因此需要考慮這一點(diǎn)。
同時你還需要考慮如何為 Arduino 供電。低溫會降低許多電池的性能,因此您可能需要一個大電源,以及一個諸如聚苯乙烯泡沫塑料盒之類的外殼,以保持物品舒適,同時保持在重量限制之下。
我建議您根據(jù)您想要獲取的數(shù)據(jù)類型、您是否將在船上安裝相機(jī)以及您計劃在船上安裝什么來制作某種清單。制作有效載荷托架也是一個好主意,然后根據(jù)有效載荷設(shè)計數(shù)據(jù)記錄器。在實際設(shè)計之前,有很多事情需要考慮和確保,因此請確保您花很長時間仔細(xì)檢查所有內(nèi)容。
好吧,如果你走第一條路經(jīng),這里是傳感器的示意圖和接線圖:
Mega 對于這些傳感器來說是超級大材小用,但如果你也想使用我們的代碼,你將不得不使用 Mega。如果您打算使用 Nano 之類的設(shè)備,請將 MicroSD 卡模塊的引腳分配更改為電路板的 SPI 引腳。
這是零件清單:
SparkFun ADXL337
頭針
微型 SD 卡模塊
DHT22 濕度傳感器
DS18B20 溫度傳感器
原型板
Arduino Mega
您可以添加另一個 DS18B20 來讀取內(nèi)部溫度,并添加您想要的任何傳感器,但如果您想使用提供的代碼,請使用上面的接線圖。
//DHT22 Setup
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
//SD Card Setup
#include
#include
File sdcard_file;
int CS_pin = 10;
//DS18B20 Temperature sensor
#include
#include
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int scale = 3; // 3 (±3g) for ADXL337, 200 (±200g) for ADXL377
boolean micro_is_5V = true; // Set to true if using a 5V microcontroller such as the Arduino Uno, false if using a 3.3V microcontroller, this affects the interpretation of the sensor data
void setup() {
Serial.begin(9600);
sensors.begin();
dht.begin();
pinMode(CS_pin, OUTPUT);//declaring CS pin as output pin
if (SD.begin()){
Serial.print("SD Card found!");
} else
{
Serial.print("Error finding SD Card");
return;
}
sdcard_file = SD.open("data.csv", FILE_WRITE);
if (sdcard_file) { //If the file is found
}
else {
Serial.print("error initializing SD card");
}
sdcard_file.print("DS18B20");
sdcard_file.print(",");
sdcard_file.print("DHT22 Temp");
sdcard_file.print(",");
sdcard_file.print("Hum");
sdcard_file.print(",");
sdcard_file.print("H.InX");
sdcard_file.print(",");
sdcard_file.print("rawX");
sdcard_file.print(",");
sdcard_file.print("rawY");
sdcard_file.print(",");
sdcard_file.print("rawZ");
sdcard_file.print(",");
sdcard_file.print("scaledX");
sdcard_file.print(",");
sdcard_file.print("scaledY");
sdcard_file.print(",");
sdcard_file.print("scaledZ");
sdcard_file.print(",");
sdcard_file.println(" ");
}
void loop() {
delay(222);
//Accelerometer
int rawX = analogRead(A0);
int rawY = analogRead(A1);
int rawZ = analogRead(A2);
float scaledX, scaledY, scaledZ;
if (micro_is_5V) //scaling data if voltage is 5V (it is)
{
scaledX = mapf(rawX, 0, 675, -scale, scale);
scaledY = mapf(rawY, 0, 675, -scale, scale);
scaledZ = mapf(rawZ, 0, 675, -scale, scale);
}
else //scaling data if voltage is 3.3V
{
scaledX = mapf(rawX, 0, 1023, -scale, scale);
scaledY = mapf(rawY, 0, 1023, -scale, scale);
scaledZ = mapf(rawZ, 0, 1023, -scale, scale);
}
//DS18B20 Temp
sensors.requestTemperatures();
int etemp=sensors.getTempCByIndex(0);
//DS18B20 Humidity Sensor
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
// Check if any reads failed and exit early for DHT
if (isnan(h) || isnan(t) || isnan(f)) {
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
sdcard_file.print(etemp);
sdcard_file.print(",");
sdcard_file.print(t);
sdcard_file.print(",");
sdcard_file.print(h);
sdcard_file.print(",");
sdcard_file.print(hic);
sdcard_file.print(",");
sdcard_file.print(rawX);
sdcard_file.print(",");
sdcard_file.print(rawY);
sdcard_file.print(",");
sdcard_file.print(rawZ);
sdcard_file.print(",");
sdcard_file.print(scaledX);
sdcard_file.print(",");
sdcard_file.print(scaledY);
sdcard_file.print(",");
sdcard_file.print(scaledZ);
sdcard_file.print(",");
sdcard_file.print(" ");
sdcard_file.println(" ");
sdcard_file.close();
delay(223);
}
float mapf(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
如果有任何問題,請務(wù)必檢查接線,并使用每個傳感器的代碼來隔離問題。確保您的 SD 或 MicroSD 卡已格式化為 FAT16 或 FAT32,并且為 16GB 或更少。
此外,最好連接 LED 以顯示數(shù)據(jù)記錄器的狀態(tài)指示。請避免在數(shù)據(jù)記錄器未運(yùn)行的情況下發(fā)送氣球,因此請確保對所有內(nèi)容進(jìn)行三重檢查。
如果您一直遇到 SD 卡模塊問題,請嘗試更換電源。經(jīng)過大量測試,我們發(fā)現(xiàn)有些模塊對電源非常敏感,所以要找一個可靠的電源。
到這一步數(shù)據(jù)記錄器已完成。它應(yīng)該讀取溫度、濕度和加速度計數(shù)據(jù),并將其記錄到 SD 卡上。如果您想要高度讀數(shù),則必須使用 GPS。90% 的基于氣壓傳感器的高度計在 30, 000 英尺以外無法工作。如果您的氣球超過了這個閾值,您將無法使用氣壓計。
路徑 2 - 預(yù)先設(shè)計的 PCB
你正計劃使用預(yù)先設(shè)計的 PCB。這種預(yù)先設(shè)計的 PCB 可讓您獲得內(nèi)部溫度、外部溫度、濕度和加速度計讀數(shù)。您將需要焊接技能,以及這些組件:
5050貼片LED
SparkFun ADXL337
很多頭針
微型 SD 卡模塊
DHT22 濕度傳感器
2X DS18B20 溫度傳感器
Arduino
PCB 的 Gerber 文件位于本文下方的 GitHub 存儲庫中。
我們在飛行中使用了這個PCB,所以我們做了很多測試,并且我們在飛行后做了改進(jìn),讓我們開始吧。
好的,讓我們開始下載 Gerber 文件。轉(zhuǎn)到GitHub 存儲庫,下載 ZIP 文件,然后復(fù)制并粘貼 Gerber Eclipse 文件。保持 gerber 壓縮文件的 ZIP 文件很重要,因為在線服務(wù)將它們作為 ZIP。
可以開始尋找 PCB 了。在搜索引擎中,查找 PCB 服務(wù)。
之后您已經(jīng)選擇了一項服務(wù),上傳壓縮的 gerber 文件,然后選擇以下設(shè)置:
單板
1.6mm厚
您想要的任何顏色
HASL(帶鉛)用于表面光潔度。如果您使用無鉛焊料,您可能需要更改此設(shè)置
1盎司銅重
生產(chǎn)檔案確認(rèn)
全面測試飛針測試
無齒孔
你想要的任何數(shù)量
大多數(shù)這些設(shè)置都已經(jīng)設(shè)置好了,所以你只需要改變顏色。
現(xiàn)在是組裝 PCB 的時候了。由于我們使用帶有分線板的傳感器,并且由于該 PCB 將充當(dāng)屏蔽層,因此這將非常容易。下面為您提供焊接相關(guān)內(nèi)容。
此外,將所有插頭引腳焊接到 PCB 的側(cè)面。這些將適合 Arduino Mega 的頂部,并會為您完成所有接線。
重要的是要知道這個 PCB 是如何工作的,這樣你就知道如果東西壞了如何修復(fù)它。在 PCB 內(nèi),有非常小的 0.35mm 導(dǎo)線穿過它。這些電線將從每個傳感器延伸到 PCB 中的某些插頭引腳,然后連接到 Arduino。這使得構(gòu)建干凈,并且比傳統(tǒng)的原型板和面包板更可靠。
將 PCB 焊接起來,將其放在 Arduino Mega 上,然后將其插入計算機(jī)。打開Arduino IDE并打開包含在GitHub 存儲庫中的 1.6 代碼,您可以從中獲取 PCB 文件。
將 microSD 卡格式化為 FAT16 或 FAT32。microSD卡模塊需要16GB以下,否則無法使用。即使是 2GB 的 microSD 相機(jī)也足以滿足兩個小時的飛行。
現(xiàn)在將 SD 卡插入模塊,并上傳 1.6 代碼。在串行監(jiān)視器中,您應(yīng)該會收到 SD 卡工作的成功消息,并且應(yīng)該立即開始數(shù)據(jù)記錄。
等待十秒鐘,然后取出 SD 卡并將其插入計算機(jī)。應(yīng)該有一個包含所有數(shù)據(jù)的 .csv 文件!
這是 GitHub 存儲庫不起作用的代碼:
//DHT22 Setup
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
//SD Card Setup
#include
#include
File sdcard_file;
int CS_pin = 10;
//DS18B20 Temperature sensor
#include
#include
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
//MPL3115A2 Altimeter Setup
#include
#include
Adafruit_MPL3115A2 baro = Adafruit_MPL3115A2();
int scale = 3;
boolean micro_is_5V = true;
//LED
int Blue = 7;
int Red = 6;
int Green = 5;
void setup() {
pinMode(23, INPUT); //detects if a switch is turned on to stop the sdcard writing and to save the data
sensors.begin();
pinMode(Blue, OUTPUT);
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
digitalWrite(Green, HIGH);
dht.begin();
pinMode(CS_pin, OUTPUT);//declaring CS pin as output pin
if (SD.begin()){
digitalWrite(Green, LOW);
digitalWrite(Green, HIGH);
digitalWrite(Green, LOW);
digitalWrite(Green, HIGH);
digitalWrite(Green, LOW);
digitalWrite(Green, HIGH);
} else
{
digitalWrite(Green, LOW);
digitalWrite(Red, HIGH);
delay(5000);
return;
}
sdcard_file = SD.open("data.csv", FILE_WRITE);
if (sdcard_file) { //If the file is found
digitalWrite(Red, LOW);
digitalWrite(Blue, LOW);
digitalWrite(Green, HIGH);
}
else {
digitalWrite(Green, LOW);
digitalWrite(Red, HIGH);
delay(1000);
digitalWrite(Red, LOW);
digitalWrite(Blue, HIGH);
delay(1000);
digitalWrite(Green, LOW);
digitalWrite(Red, HIGH);
delay(1000);
digitalWrite(Red, LOW);
digitalWrite(Blue, HIGH);
delay(1000);
digitalWrite(Red, HIGH);
digitalWrite(Blue, LOW);
}
sdcard_file.print(",");
sdcard_file.print("DS18B20");
sdcard_file.print(",");
sdcard_file.print("DHT22 Temp");
sdcard_file.print(",");
sdcard_file.print("Hum");
sdcard_file.print(",");
sdcard_file.print("H.InX");
sdcard_file.print(",");
sdcard_file.print("Int. Temp");
sdcard_file.print(",");
sdcard_file.print("Pres. Pasc.");
sdcard_file.print(",");
sdcard_file.print("alt.");
sdcard_file.print(",");
sdcard_file.print("rawX");
sdcard_file.print(",");
sdcard_file.print("rawY");
sdcard_file.print(",");
sdcard_file.print("rawZ");
sdcard_file.print(",");
sdcard_file.print("scaledX");
sdcard_file.print(",");
sdcard_file.print("scaledY");
sdcard_file.print(",");
sdcard_file.print("scaledZ");
}
void loop() {
delay(222);
digitalWrite(Green, LOW);
digitalWrite(Blue, HIGH);
if(! baro.begin()) {
}
float pascals = baro.getPressure();
float altm = baro.getAltitude();
float tempC = baro.getTemperature();
//Accelerometer
int rawX = analogRead(A0);
int rawY = analogRead(A1);
int rawZ = analogRead(A2);
float scaledX, scaledY, scaledZ;
if (micro_is_5V) //scaling data if voltage is 5V (it is)
{
scaledX = mapf(rawX, 0, 675, -scale, scale);
scaledY = mapf(rawY, 0, 675, -scale, scale);
scaledZ = mapf(rawZ, 0, 675, -scale, scale);
}
else //scaling data if voltage is 3.3V
{
scaledX = mapf(rawX, 0, 1023, -scale, scale);
scaledY = mapf(rawY, 0, 1023, -scale, scale);
scaledZ = mapf(rawZ, 0, 1023, -scale, scale);
}
//DS18B20 Temp
sensors.requestTemperatures();
//DS18B20 Humidity Sensor
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
// Check if any reads failed and exit early for DHT
if (isnan(h) || isnan(t) || isnan(f)) {
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
sdcard_file.println(sensors.getTempCByIndex(0));
sdcard_file.print(",");
sdcard_file.print(t);
sdcard_file.print(",");
sdcard_file.print(h);
sdcard_file.print(",");
sdcard_file.print(hic);
sdcard_file.print(",");
sdcard_file.print(tempC);
sdcard_file.print(",");
sdcard_file.print(pascals);
sdcard_file.print(",");
sdcard_file.print(altm);
sdcard_file.print(",");
sdcard_file.print(rawX);
sdcard_file.print(",");
sdcard_file.print(rawY);
sdcard_file.print(",");
sdcard_file.print(rawZ);
sdcard_file.print(",");
sdcard_file.print(scaledX);
sdcard_file.print(",");
sdcard_file.print(scaledY);
sdcard_file.print(",");
sdcard_file.print(scaledZ);
sdcard_file.print(",");
delay(223);
sdcard_file.close();
}
float mapf(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
你的數(shù)據(jù)記錄器已完成。它應(yīng)該讀取溫度、濕度和加速度計數(shù)據(jù),并將其記錄到 SD 卡上。如果您想要高度讀數(shù),則必須使用 GPS。90% 的基于氣壓傳感器的高度計在 30, 000 英尺以外無法工作。如果您的氣球超過了這個閾值,您將無法使用氣壓計。
路徑 3 - 制作自己的 PCB
這一條路徑不會向您展示如何制作自己的 PCB。因此,在繼續(xù)之前,您應(yīng)該知道如何制作 PCB,或者學(xué)習(xí)如何制作。這部分只會介紹一些基本準(zhǔn)則。
首先,你必須集思廣益,寫下你想從這次飛行中得到的東西。
以下是標(biāo)準(zhǔn)包括的一些內(nèi)容:
溫度
濕度
高度
空氣質(zhì)量
輻射
全球定位系統(tǒng)
您可以包含任何您想要的內(nèi)容,但請確保您查看了所有內(nèi)容。溫度傳感器的讀數(shù)應(yīng)能低至 -50C (-58F),并盡可能準(zhǔn)確。由于來自太陽的太陽輻射,溫度讀數(shù)在非常高的溫度下會不準(zhǔn)確,因此看起來會比實際溫度高一點(diǎn)!
另一個設(shè)計考慮因素是重量。如本文介紹中所述,根據(jù)有效負(fù)載類型,您的有效負(fù)載需要低于 12 磅、6 磅或 4 磅。此外,您將無法使用氣壓計來獲取高度讀數(shù),因為它們中的大多數(shù)都超過了 30, 000 英尺。
最后的考慮是電源。平流層的溫度將變得非常低。電池會失效,你的 Arduino 也很有可能會失效。您將需要找到解決此問題的方法。可以說,最好的策略是將數(shù)據(jù)記錄器放在泡沫塑料盒中。這將保持室內(nèi)溫度與室溫一樣高。您可能還需要考慮太陽能電池板或暖手器。
好的!到這你已經(jīng)考慮了所有內(nèi)容,仔細(xì)檢查了您想要的傳感器,并寫下了所有內(nèi)容。是時候制作原理圖和PCB了。對于原理圖和 PCB,您可能想要像以前一樣制作 PCB 屏蔽,或者制作完整的 PCB。
構(gòu)建 PCB/屏蔽后,仔細(xì)檢查一切以查看它是否有效,并確保您遵循指南。
到此你的數(shù)據(jù)記錄器已完成。它應(yīng)該讀取溫度、濕度和加速度計數(shù)據(jù),并將其記錄到 SD 卡上。如果您想要高度讀數(shù),則必須使用 GPS。90% 的基于氣壓傳感器的高度計在 30, 000 英尺以外無法工作。如果您的氣球超過了這個閾值,您將無法使用氣壓計。
結(jié)論
氣象氣球是將東西送到平流層的一種非常酷且簡單的方式。您可以將相機(jī)(在我們的例子中是 360 度相機(jī))發(fā)送到高海拔地區(qū),獲得很棒的鏡頭和數(shù)據(jù),而無需太多的規(guī)定。但有一件事!
請確保遵守所有規(guī)則,并在飛行前添加雷達(dá)偏轉(zhuǎn)器并提交航行通告(通知飛行員)。您的氣球有效載荷很有可能撞到飛機(jī),您不想損壞或冒生命危險。盡你所能減少損壞的風(fēng)險,確保一切都堅固,這樣你就不會掉落任何東西。
-
數(shù)據(jù)記錄器
+關(guān)注
關(guān)注
0文章
54瀏覽量
12895 -
Arduino
+關(guān)注
關(guān)注
188文章
6490瀏覽量
190069 -
ADXL335
+關(guān)注
關(guān)注
1文章
15瀏覽量
10615
發(fā)布評論請先 登錄
請問下ADXL335溫度飄零是線性的嗎?
加速度傳感器ADXL203和ADXL335
請問ADXL335和ADXL345精度對比誤差大約多少?
請問怎么將adxl335與PSoC接口
ADXL335三軸加速度計簡介
基于流行的ADXL335三軸模擬加速度計
ADXL335,pdf,Accelerometer
ADXL335小型低功耗三軸加速度計

ADXL335 小尺寸、低功耗、三軸±3G 加速度計

用于Arduino的ADXL335加速度計

采用ADXL335加速度計的交互式Pong PC游戲

使用ADXL335三軸加速度計制作快速簡便的設(shè)備

評論