電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>如何使用AVNET Azure Sphere套件

如何使用AVNET Azure Sphere套件

2022-12-09 | zip | 0.26 MB | 次下載 | 免費

資料介紹

描述

介紹

教程展示了如何使用 AVNET Azure Sphere 套件來:

  • 從 CCS811 傳感器讀取空氣質(zhì)量數(shù)據(jù) (CO2/VOC)
  • 從 BME280 傳感器讀取溫度和濕度
  • 使用 PCA9685 控制器控制 RGB LED 二極管

這些 I2C 模塊沒有用于 Azure Sphere 的公共軟件驅(qū)動程序,因此我們將開發(fā)基于 Arduino 庫的庫。

作為將所有東西組裝在一起的一部分,我們將構(gòu)建自己的 microBUS 兼容空氣質(zhì)量模塊。

我們會將數(shù)據(jù)發(fā)送到 Azure Cloud。無論如何,我不會詳細(xì)介紹如何設(shè)置 Azure Sphere 設(shè)備并將其與 Azure IoT Central 連接,因為這里已經(jīng)有很棒的教程可供遵循:

*將 Azure Sphere 連接到 Azure IoT Central

* Azure Sphere 和 Mikroe 空氣質(zhì)量發(fā)送到 IoT Central

最后但并非最不重要的一點 - 我們會將整個項目放在適合嬰兒的情況下.. :)

1. 組件

我對廉價的 I2C arudino 模塊有一些經(jīng)驗,所以我想用 Azure Sphere 板試試它們。對于室內(nèi)空氣質(zhì)量監(jiān)測設(shè)備,我將使用 CCS811 傳感器和 BME280 傳感器。為了控制 RGB LED 模塊,我將使用 PCA9685 控制器。LED 指示燈將是顯示實際室內(nèi)空氣質(zhì)量水平的簡便方法。將有3個級別。

1.1 CCS811傳感器模塊

CCS811 是一種超低功耗數(shù)字氣體傳感器解決方案,集成了金屬氧化物 (MOX) 氣體傳感器,可通過微控制器單元 (MCU) 檢測各種揮發(fā)性有機(jī)化合物 (VOC),用于室內(nèi)空氣質(zhì)量監(jiān)測,其中包括模數(shù)轉(zhuǎn)換器 (ADC) 和 I2C 接口

CCS811 支持智能算法處理原始傳感器測量值,以輸出等效的總 VOC (eTVOC) 和等效的 CO2 (eCO2) 值,其中 VOC 的主要原因來自人類。

eCO2 CCS811 的等效 CO2 (eCO2) 輸出范圍為 400ppm 至 29206ppm。CCS811 的等效總揮發(fā)性有機(jī)化合物 (eTVOC) 輸出范圍為 0ppb 至 32768ppb。

CCS811支持溫濕度變化補(bǔ)償。對于溫度和濕度檢測,我們將使用 BME280 傳感器模塊。

更多信息CCS811 數(shù)據(jù)表

我們可以在 eBay 上購買的廉價分線模塊看起來像這樣:

pYYBAGOSfNmAOmU1AAA3R76sXbo239.jpg
CCS811傳感器模塊
?

連接到 Azure Sphere 很簡單:

  • 傳感器 I2C SDA <------> mikroBUS I2C SDA
  • 傳感器 I2C SCL <------> mikroBUS I2C SCL
  • 傳感器 GND <------> mikroBUS GND
  • 傳感器 WAK <------> mikroBUS GND [CCS811 傳感器將始終開啟]
  • 傳感器 VCC <------> mikroBUS 3.3V

1.2 BME280傳感器模塊

BME280 是一款組合式數(shù)字溫度、濕度和氣壓傳感器。它同時提供 I2C 和 SPI 接口。

  • 溫度范圍:-40 至 +85°C
  • 濕度范圍:0% 至 100% 相對值。濕度
  • 壓力范圍:300hPa 至 1100hPa

更多信息:BME 數(shù)據(jù)表

便宜的分線模塊,你可以在 eBay 上買到,看起來像這樣:

pYYBAGOSfNyAI_q_AAA1-jNu4KA028.jpg
BME280 傳感器模塊
?

連接到 Azure Sphere 很簡單:

  • 傳感器 I2C SDA <------> mikroBUS I2C SDA
  • 傳感器 I2C SCL <------> mikroBUS I2C SCL
  • 傳感器 GND <------> mikroBUS GND
  • 傳感器 VCC<------> mikroBUS 3.3V

1.3 PCA9685控制器模塊

PCA9685 是一款 I2C 總線控制的 16 通道 LED 控制器,針對紅/綠/藍(lán)/琥珀色 (RGBA) 彩色背光應(yīng)用進(jìn)行了優(yōu)化。每個 LED 輸出都有自己的 12 位分辨率(4096 級)固定頻率獨立 PWM 控制器,以可編程頻率運行,典型頻率為 24 Hz 至 1526 Hz,占空比可在 0 % 至 100 % 范圍內(nèi)調(diào)節(jié),以允許LED 被設(shè)置為特定的亮度值。所有輸出都設(shè)置為相同的 PWM 頻率。每個 LED 輸出都可以關(guān)閉或打開(無 PWM 控制)或設(shè)置為其單獨的 PWM 控制器值。

更多信息:PCA9685 數(shù)據(jù)表

可以在 eBay 或 Aliexpress 上購買的廉價分線模塊如下所示:

poYBAGOSfOCAblH3AAA2JbiHZHE315.jpg
PCA9685控制器模塊
?
  • 傳感器 I2C SDA <------> mikroBUS I2C SDA
  • 傳感器 I2C SCL <------> mikroBUS I2C SCL
  • 傳感器 GND <------> mikroBUS GND
  • 傳感器 VCC <------> mikroBUS 3.3V
  • 傳感器 V+ <------> mikroBUS 3.3V

1.4 RGB LED模組

模組采用5050全彩超高亮LED,并帶有限流電阻,防止燒毀LED。LED驅(qū)動方式可以:共陰極(-)驅(qū)動或共陽極(+)驅(qū)動。

pYYBAGOSfOSAfhLEAAAmimXvmaw185.jpg
帶共陰極 (-) 的 RGB LED 模組
?

您可以在此處找到有關(guān)使用共陰極/共陽極 RGB LED 的更多信息。

1.5 自制mikroBUS空氣質(zhì)量模塊

好的,我可以直接用杜邦線將 I2C 模塊與 Azure Sphere 連接起來,但是如何制作自己的“mikroBUS”板呢?我們是黑客,所以讓我們來吧。我只需要通用 PCB、單排公頭易斷排針、電線、焊錫絲和烙鐵。

MicroBUS 引出線:

pYYBAGOSfPCANpnPAADpl15RPgw864.png
mikroBUS 引出線
?

焊接很容易,我只是用分線模塊連接了 SDA、SCL、+3.3V 和 GND。我還將 GND 連接到 CCS811 的 WAK 引腳。務(wù)必打磨右下角以獲得正確的模塊方向。

結(jié)果:

poYBAGOSfPSAPvX9AABnVmu9_Hs903.jpg
黑客的mikroBUS類模塊
?

1.5 組裝

對于住房,我將使用宜家的兒童燈。

pYYBAGOSfPaAdW-hAAAMxPb2YcE734.jpg
宜家 DR?MHEM 壁燈
?

我用螺絲固定電路板,但你也可以使用扎帶或膠水。結(jié)果看起來像這樣:

pYYBAGOSfQiATcoPAADBqsw2yzw377.jpg
里面
?

我們將附加到“窗口”區(qū)域內(nèi)的 RGB LED 模塊。

2. 軟件

這些 I2C 模塊沒有適用于 Azure Sphere 的公共軟件驅(qū)動程序,因此我必須開發(fā)庫。首先,為了了解傳感器的工作原理,我研究了規(guī)格表。但為什么要從零開始重新發(fā)現(xiàn)一切?。?/font>我可以基于 Arduino 庫為 CCS811/BME280/PCA9685 創(chuàng)建自己的庫。

2.1 CCS811 驅(qū)動程序

我的 Azure Sphere 驅(qū)動程序有幾個公共函數(shù):

bool ccs811_begin(void);

用于傳感器初始化

uint8_t ccs811_readData(void);

用于讀取測量值(它同時讀取 eCO2 和 eTVOC,為了獲取值,我還有其他功能。

uint16_t ccs811_geteCO2(void);

得到eCO2。輸出范圍從 400ppm 到 29206ppm。

uint16_t ccs811_geteTVOC(void);

獲取 eTVOC。輸出范圍從 0ppb 到 32768ppb。

void css811_setEnvironmentalData(double humidity, double temperature);

設(shè)置因溫度和濕度變化而引起的環(huán)境數(shù)據(jù)。用于補(bǔ)償。

2.2 BME280驅(qū)動

我的 Azure Sphere 驅(qū)動程序有幾個公共函數(shù):

bool bme280_begin(void);

用于傳感器初始化。

double bme280_readTemperature(void);
double bme280_readPressure(void);
double bme280_readHumidity(void);

獲取溫度、壓力和濕度。

2.3 PCA9685驅(qū)動

void pca9685_begin(void);

用于傳感器初始化。

void pca9685_setPWM(uint8_t num, uint16_t on, uint16_t off);

設(shè)置 PCA9685 引腳之一(0 到 15)的 PWM 輸出 - 在 4096 部分周期中的哪個點打開和關(guān)閉 PWM 輸出。

2.4 將 Azure Sphere 連接到 Azure IoT Central

關(guān)于連接到 Azure Sphere IoT Central 的精彩教程在這里

我也是這樣做的,只是將 i2c.c 中的遙測 json 消息修改為:

snprintf(pjsonBuffer, JSON_BUFFER_SIZE, "{"temperature": "%.2f", "pressure": "%.2f", "humidity": "%.2f", "eco2": "%d", "etvoc": "%d"}", temperature, pressure, humidity, eCO2, eTVOC);

2.5 應(yīng)用

對于這個項目,Avnet 提供的演示代碼是一個很好的起點:

https://github.com/Avnet/AvnetAzureSphereStarterKitReferenceDesign

我對 main.c、i2c.c 進(jìn)行了自己的修改,并添加了傳感器驅(qū)動程序(sensor_ccs280.c、sensor_ccs280.h、sensor_bme280.c、sensor_bme280.h、sensor_pca9685.c 和 sensor_pca9685.h)。

在主要。根據(jù)實際 eCO2 值控制 RGB LED 有變化:

/* LED color based on eCO2 */
airQuality = geteCO2();
if (airQuality > 0 && airQuality < 800) {
// blue
GPIO_SetValue(userLedRedFd, GPIO_Value_High);
GPIO_SetValue(userLedGreenFd, GPIO_Value_High);
GPIO_SetValue(userLedBlueFd, GPIO_Value_Low);
pca9685_setPWM(0, 0, 4095); // red off
pca9685_setPWM(1, 0, 4095); // green off
pca9685_setPWM(2, 0, 0); // blue on (common anode)
}
else if (airQuality >= 800 && airQuality < 1200) {
// green
GPIO_SetValue(userLedRedFd, GPIO_Value_High);
GPIO_SetValue(userLedGreenFd, GPIO_Value_Low);
GPIO_SetValue(userLedBlueFd, GPIO_Value_High);
pca9685_setPWM(0, 0, 4095); // red off
pca9685_setPWM(1, 0, 0); // green on (common anode)
pca9685_setPWM(2, 0, 4095); // blue off
}
else if (airQuality >= 1200) {
// red
GPIO_SetValue(userLedRedFd, GPIO_Value_Low);
GPIO_SetValue(userLedGreenFd, GPIO_Value_High);
GPIO_SetValue(userLedBlueFd, GPIO_Value_High);
pca9685_setPWM(0, 0, 0); // red (common anode)
pca9685_setPWM(1, 0, 4095); // green
pca9685_setPWM(2, 0, 4095); // blue
}
else {
GPIO_SetValue(userLedRedFd, GPIO_Value_High);
GPIO_SetValue(userLedGreenFd, GPIO_Value_High);
GPIO_SetValue(userLedBlueFd, GPIO_Value_High);
// no measurement yet
pca9685_setPWM(0, 0, 4095); // red off
pca9685_setPWM(1, 0, 4095); // green off
pca9685_setPWM(2, 0, 4095); // blue off
}

在 i2c.c 中有代碼,它從傳感器讀取值并將值發(fā)送到 Azure IoT Central。

最終代碼可在 GitHub 上獲得。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費