資料介紹
描述
我們五個(gè)人是巴黎索邦理工學(xué)院的嵌入式系統(tǒng)專業(yè)的學(xué)生。這項(xiàng)任務(wù)是幾個(gè)月前交給我們的,目的是幫助養(yǎng)蜂人照顧他們的蜂箱。
蜂箱中可能會(huì)發(fā)生許多問題,養(yǎng)蜂人的工作是在需要時(shí)幫助它們并治愈它們。例如,養(yǎng)蜂人需要知道何時(shí)有一只大黃蜂在蜂箱入口處等待殺死每只從收獲珍貴花粉回來的蜜蜂。因?yàn)榇簏S蜂可以保持靜止并殺死盡可能多的蜜蜂,而且沒有養(yǎng)蜂人愿意在他在家休息時(shí)釋放成千上萬的蜜蜂。而且大黃蜂在法國(guó)這個(gè)地區(qū)并不罕見,幸運(yùn)的是我們蜜蜂在害怕時(shí)會(huì)發(fā)出特定的頻率,這種嘶嘶聲大約是 3000 赫茲,所以當(dāng)一只瘋狂的大黃蜂在他們家門口等著準(zhǔn)備盛宴時(shí),我們可以知道!使用同樣的方法,我們可以知道蜜蜂是否蜂擁而至,以捕捉逃跑的老蜂王并將她放入新的蜂箱中,介于 340 赫茲和 450 赫茲之間。
蜜蜂發(fā)出的頻率并不是我們能從蜂巢中獲得的唯一數(shù)據(jù),因?yàn)槊鄯淠軌蛟诜涑矁?nèi)保持非常穩(wěn)定的溫度,大約35 攝氏度。如果他們的體溫變化太大,我們可以判斷他們是否健康。重量也是一個(gè)重要的數(shù)據(jù):我們可以知道蜂箱里蜜蜂和蜂蜜的數(shù)量!如果蜂箱每天都越來越重,我們可以根據(jù)蜂箱的大小給養(yǎng)蜂人采蜜設(shè)定一個(gè)閾值。有了所有這些數(shù)據(jù),我們還可以更準(zhǔn)確地檢測(cè)到蜂群。
您可能想知道我們將如何獲取所有這些信息,因?yàn)榉湎渫ǔN挥谶h(yuǎn)離城市的地區(qū)和偏遠(yuǎn)的鄉(xiāng)村,那里可以選擇 4G,而 Wi-Fi 則更糟。我們將使用 Sigfox 的 LPWAN(低功耗廣域網(wǎng))網(wǎng)絡(luò)來增加我們的自主權(quán)和范圍,因?yàn)槲覀儾粫?huì)傳輸大量數(shù)據(jù),只是傳輸一些傳感器的值,而不是實(shí)時(shí)視頻饋送。我們將準(zhǔn)時(shí)(每 10 分鐘)發(fā)送一條短消息,其中所有數(shù)據(jù)都?jí)嚎s到最小字節(jié)數(shù)。我們有多種物聯(lián)網(wǎng)云平臺(tái)可供選擇,但我們選擇了 Ubidots,因?yàn)樗亲钪庇^的,也是養(yǎng)蜂人最容易使用的。
對(duì)于這個(gè)有趣的項(xiàng)目,我們選擇了最有趣的 Arduino 板之一,它具有令人難以置信的能力和多種不同用途的選擇。憑借其驚人的 nrf52840 微芯片,您猜對(duì)了我們的 Arduino nano 33 BLE Sense!

從能量和編程方面來說,它都是一張簡(jiǎn)單而有效的卡片。事實(shí)上,我們能夠?yàn)槲覀兊拇a從 Arduino 上已經(jīng)存在的公共庫中受益,盡管并不總是兼容,因?yàn)樗c其他 Arduino 略有不同。此外,此卡包含傳感器,例如溫度、濕度、壓力或藍(lán)牙低功耗。談到藍(lán)牙低功耗,我們選擇在我們的項(xiàng)目中實(shí)現(xiàn)它,因?yàn)樗且粋€(gè)非??崆曳奖愕墓δ?!但盡管它很酷,但實(shí)現(xiàn)起來有點(diǎn)棘手和復(fù)雜,我們將在此處向您解釋它在我們的項(xiàng)目中是如何工作的:
該協(xié)議必須包含如下所示的部分:客戶端/中央和服務(wù)器/外圍設(shè)備。

中央設(shè)備在任何情況下都將是養(yǎng)蜂人的電話,因此他可以從他的蜂巢中實(shí)時(shí)獲取每個(gè)傳感器值!
我們首先將服務(wù)和特征創(chuàng)建為全局變量,以便我們可以全局使用它們。服務(wù)是一組傳感器和值,因此我們可以輕松找到它們,使用隨機(jī)創(chuàng)建的 UUID 調(diào)用它們。在每個(gè)服務(wù)中,我們可以找到一些僅代表一個(gè)傳感器/值的特性。
在我們的原型中,我們只有 2 個(gè)服務(wù),即設(shè)備信息服務(wù),用于指定有關(guān)用于蜂巢的硬件的信息,例如名稱、信用和東西。第二個(gè)服務(wù)是傳感器信息,其中包含我們需要的每個(gè)傳感器值!您可以在下面看到我們?nèi)绾螌?shí)施我們的服務(wù)和特征!
BLEService optiService("181A");
BLEByteCharacteristic optiStatusCharacteristic(OPTI_CHARACTERISTIC_UUID, BLERead | BLEWrite);
BLEStringCharacteristic tmpCouvCharacteristic(TMP_COUVAIN_CHARACTERISTIC_UUID, BLERead, 20);
BLEStringCharacteristic tmp1Characteristic(TMP_1_CHARACTERISTIC_UUID, BLERead, 20);
BLEStringCharacteristic tmp2Characteristic(TMP_2_CHARACTERISTIC_UUID, BLERead, 20);
BLEStringCharacteristic batCharacteristic(BAT_CHARACTERISTIC_UUID, BLERead, 20);
BLEStringCharacteristic humCouvCharacteristic(HUM_COUVAIN_CHARACTERISTIC_UUID, BLERead, 20);
BLEStringCharacteristic humAmbCharacteristic(HUM_AMBIANT_CHARACTERISTIC_UUID, BLERead, 20);
BLEStringCharacteristic pressionCharacteristic(PRESSION_CHARACTERISTIC_UUID, BLERead, 20);
BLEStringCharacteristic poidsCharacteristic(POIDS_CHARACTERISTIC_UUID, BLERead, 20);
BLEStringCharacteristic freqCharacteristic(Freq_CHARACTERISTIC_UUID, BLERead, 20);
我們選擇對(duì)它們中的大多數(shù)使用 BLEStringCharacteristic,因?yàn)槲覀兿M诎l(fā)送的數(shù)據(jù)中具有下面顯示的傳感器名稱。我們使用 iOS 上的 LightBlue 應(yīng)用程序從傳感器讀取值。它工作得非常好并且非常易于使用。

如您所見,如果我們不想學(xué)習(xí)每個(gè) UUID,那么選擇發(fā)送字符串是一件非常明智的事情!
這個(gè)結(jié)果是通過這個(gè)初始化獲得的:
- 開始 BLE 并設(shè)置本地名稱
- 將每個(gè)特征添加到服務(wù)中
- 將服務(wù)添加到 BLE
- 設(shè)定值
- 廣告!
然后當(dāng)我們做廣告時(shí),我們只需要定期更新我們的價(jià)值觀!
此 BLE 功能可以方便地在不上網(wǎng)的情況下檢查傳感器值,但如果我們想更改 2 次測(cè)量之間的延遲(以節(jié)省能源),則最有必要。如果您需要有關(guān) BLE 的更多信息,請(qǐng)隨時(shí)查看官方 Arduino 文檔!
現(xiàn)在我們將看看我們的傳感器,從重量傳感器開始!

蜂箱將被支撐在上面,它的工作方式如下:

為了通過我們的微控制器將這些信號(hào)轉(zhuǎn)換為可讀值,我們將使用 Seeed 制作的 Grove HX711 模塊和幾個(gè)貢獻(xiàn)者在github上制作的庫。
這是我們用來與我們的規(guī)模交互的代碼。
#include
HX711 scale;
float Offset = 1936859.00; // Offset pour 66kg
void init_HX711(){
scale.begin(D6, D5); // LOADCELL_DOUT_PIN = D7, LOADCELL_SCK_PIN = D6;
scale.set_scale(Offset);
}
void get_weight(data *data_weight){ //We take as a param a struct with our data
scale.power_up();
delay(3000); // We wait a bit for the scale to initialize
if(scale.wait_ready_retry(3, 500)){
data_weight->Poids = scale.get_units(5);
data_weight->Poids = data_weight->Poids * 10;
}
if(data_weight->Poids < 0){
data_weight->Poids = 0;
}
scale.power_down(); // We shutdown the scale to save energy
}
我們現(xiàn)在可以看看我們的溫度探頭。我們選擇 DS18B20 溫度探頭安裝在蜂箱內(nèi),如下圖所示:

這些傳感器使用 OneWire 協(xié)議,這意味著它們只需要一根線來傳輸數(shù)據(jù)。如果我們只使用一個(gè)傳感器,它總共只需要 2 根線:(VCC + Data)和 GND 而不是 VCC、Data 和 GND。盡管這個(gè)協(xié)議很方便,但不幸的是它并沒有在我們的 Arduino 33 BLE Sense 上實(shí)現(xiàn),因?yàn)檎缰八忉尩?,我們的微控制器不是常見?Arduino Atmel 微控制器,它使用 Mbed,因此并非每個(gè)庫都與它兼容。幸運(yùn)的是,我們找到了為我們的董事會(huì)制作了一個(gè)新圖書館的人!這是我們用來從 2 個(gè)串聯(lián)探頭中獲取溫度的代碼:
#include <MaximWire.h>
MaximWire::Bus bus(PIN_BUS);
MaximWire::DS18B20 device;
void get_DS18B20(data *data_tempCote){
unsigned short nbr_sensors;
float temp;
for(int i=0; i<2; i++){
nbr_sensors = 1;
MaximWire::Discovery discovery = bus.Discover();
do{
if (nbr_sensors > 2){
break;
}
MaximWire::Address address;
if (discovery.FindNextDevice(address)){
if (address.GetModelCode() == MaximWire::DS18B20::MODEL_CODE){
MaximWire::DS18B20 device(address);
temp = device.GetTemperature<float>(bus);
data_tempCote->Temp_cote[nbr_sensors - 1] = temp;
device.Update(bus);
}
nbr_sensors++; //Increase the sensor counter
}
} while (discovery.HaveMore());
}
}
為了獲得亮度級(jí)別,我們使用了 LDR04 光敏電阻。隨后,我們制作了一個(gè)分壓橋,以便為我們的光敏電阻提供穩(wěn)定的值。此外,我們用照度計(jì)測(cè)試了不同的值,以便找到一個(gè)可以根據(jù)電壓變化為我們提供正確亮度的函數(shù)。

獲取亮度的代碼:
for(int i=0; i<10; i++){ // average on 10 test
Vin = analogRead(A7); // between 0 to 1023
Vin = Vin * (3.3/1023.0);
R0 = (R1*3.3/Vin) - R1;
temp = 500/(R0/1000);
Lumen += temp;
}
// we get the value in Lumen
對(duì)于蜂巢內(nèi)的濕度和溫度,我們使用 DHT22 傳感器。DHT22(或AM2302)通過串口與微控制器通信,所以有一個(gè)庫,使用起來比較容易。

使用 DHT22 的代碼:
void get_DHT22(data *data_DHT){
data_DHT->Temp_couvain = dht.readTemperature();
data_DHT->Humi_couvain = dht.readHumidity();
}
現(xiàn)在我們已經(jīng)看到了我們所有的傳感器,讓我們來看看我們的微控制器。
所有這些都需要電力,我們通過太陽能獲得。我們使用太陽能電池板和電池。


我們使用 Seeed LiPo Rider Pro,它能夠?qū)奶柲茈姵匕瀚@得的能量存儲(chǔ)在我們之前展示的電池中。它在測(cè)試時(shí)也非常方便,因?yàn)槲覀兛梢允褂?USB 為我們的電路板供電,并通過 4 個(gè) LED 顯示剩余的電池電量。

我們選擇的電池雖然便宜,但效率不高,所以我們必須盡可能多地節(jié)省電力。為此,我們不會(huì)使用它可以提供的 LiPo Rider 的 5V,因?yàn)槲覀冇幸粋€(gè) 3.3V 供電板,需要有一個(gè)穩(wěn)壓器(已經(jīng)內(nèi)置)將 5V 轉(zhuǎn)換為 3.3V,這會(huì)消耗大量電力。
取而代之的是,我們將使用一個(gè)幾乎不消耗電流并提供穩(wěn)定的 3.3V 電壓的常規(guī)電壓,此外我們可以將其關(guān)閉。能夠關(guān)閉 3v3 非常方便為傳感器供電,這樣我們將有2 個(gè)電壓調(diào)節(jié)器,一個(gè)始終打開為電路板供電,另一個(gè)可以禁用以關(guān)閉傳感器,這樣它們就不會(huì)在同時(shí)消耗電流我們不使用它們(因?yàn)槲覀兠總€(gè)傳感器每 10 分鐘只取一個(gè)值)。
最后是最重要的 Sigfox 模塊,它允許我們使用無線電波發(fā)送值。

為了使每個(gè)組件一起工作,我們使用我們自己的 PCB 制造機(jī)打印了一個(gè) PCB(在項(xiàng)目描述中)。
?

?
一切都組裝好后,我們制作了電纜和盒子防水。我們還為電池制造了一個(gè)護(hù)套來保護(hù)它。一切都是固定的,以抵抗養(yǎng)蜂人的處理、風(fēng)和雨。我們添加了一個(gè)開關(guān),以便更容易地關(guān)閉和打開設(shè)備。


為了最大限度地保護(hù)我們的設(shè)備,我們添加了一些“potit pieds”。它保存它在下雨天在泥濘中。

為了從 Sigfox 到 Ubidot 獲取值,我們使用了 Sigfox 的后端,明智地選擇我們的回調(diào),我們能夠?yàn)槲覀儞碛械拿總€(gè)傳感器發(fā)送足夠的數(shù)據(jù)。在 Ubidot 上,我們解密已壓縮的值以作為 32 字節(jié)消息發(fā)送。我們通過簡(jiǎn)單的界面獲得漂亮圖形的所有價(jià)值。


?
- 帶有土壤電容傳感器的Arduino植物監(jiān)視器
- 如何使用Arduino構(gòu)建植物監(jiān)視器
- Arduino Nano 33 Sense BLE開源
- 基于Arduino Nano 33 BLE Sense的深蹲計(jì)數(shù)器
- 蜂窩連接的蜂巢監(jiān)視器開源分享
- 基于Nano 33 BLE Sense的數(shù)字魔杖
- Arduino/Android藍(lán)牙串行監(jiān)視器應(yīng)用程序
- Arduino Nano 33 BLE Sense的語音識(shí)別項(xiàng)目
- 在Arduino Nano BLE Sense 33邊緣設(shè)備上訓(xùn)練神經(jīng)網(wǎng)絡(luò)
- Arduino Nano 33 BLE Sense上的白血病檢測(cè)
- 使用Arduino上的串行監(jiān)視器控制伺服電機(jī)
- 利用Nano 33 BLE Sense板功能尾隨大象
- 使用TinyML和Arduino Nano 33 BLE計(jì)算閱讀時(shí)間
- Arduino燃?xì)馕锫?lián)網(wǎng)監(jiān)視器
- 溫度監(jiān)視器
- 典型電池監(jiān)視器電路圖分享 814次閱讀
- 簡(jiǎn)單的電池監(jiān)視器電路圖 726次閱讀
- 如何創(chuàng)建自定義監(jiān)視器? 656次閱讀
- 基于Arduino的機(jī)器學(xué)習(xí)開發(fā) 1.9w次閱讀
- 光纖應(yīng)用中的監(jiān)視器校準(zhǔn) 1082次閱讀
- 如何通過Raspberry Pi設(shè)置CE電流監(jiān)視器 2342次閱讀
- ISL28022數(shù)字功率監(jiān)視器評(píng)估套件及相關(guān)基礎(chǔ)知識(shí) 3191次閱讀
- Cypress懷孕監(jiān)視器CY8C38系列的性能特性及應(yīng)用方案 2498次閱讀
- KUKA C4如何使用診斷監(jiān)視器? 3877次閱讀
- 具監(jiān)視器的800mA單電阻器堅(jiān)固型線性穩(wěn)壓器LT3089 1189次閱讀
- 揭秘液晶顯示器和液晶監(jiān)視器的七大不同點(diǎn) 2125次閱讀
- 鋰離子電池和穩(wěn)壓器監(jiān)視器電路圖 1807次閱讀
- 基于LTC2991系統(tǒng)監(jiān)視器的相對(duì)濕度測(cè)量 2063次閱讀
- 液晶監(jiān)視器的選購與保養(yǎng) 1077次閱讀
- 120Hz+全高清LCD監(jiān)視器新技術(shù)應(yīng)用解析 1403次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論