資料介紹
描述
介紹
本教程展示了如何使用 AVNET Azure Sphere 套件來:
這些 I2C 模塊沒有用于 Azure Sphere 的公共軟件驅(qū)動程序,因此我們將開發(fā)基于 Arduino 庫的庫。
作為將所有東西組裝在一起的一部分,我們將構(gòu)建自己的 microBUS 兼容空氣質(zhì)量模塊。
我們會將數(shù)據(jù)發(fā)送到 Azure Cloud。無論如何,我不會詳細介紹如何設(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ā)性有機化合物 (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ā)性有機化合物 (eTVOC) 輸出范圍為 0ppb 至 32768ppb。
CCS811支持溫濕度變化補償。對于溫度和濕度檢測,我們將使用 BME280 傳感器模塊。
我們可以在 eBay 上購買的廉價分線模塊看起來像這樣:
連接到 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 上買到,看起來像這樣:
連接到 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 控制器,針對紅/綠/藍/琥珀色 (RGBA) 彩色背光應(yīng)用進行了優(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 上購買的廉價分線模塊如下所示:
- 傳感器 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ū)動。
您可以在此處找到有關(guān)使用共陰極/共陽極 RGB LED 的更多信息。
1.5 自制mikroBUS空氣質(zhì)量模塊
好的,我可以直接用杜邦線將 I2C 模塊與 Azure Sphere 連接起來,但是如何制作自己的“mikroBUS”板呢?我們是黑客,所以讓我們來吧。我只需要通用 PCB、單排公頭易斷排針、電線、焊錫絲和烙鐵。
MicroBUS 引出線:
焊接很容易,我只是用分線模塊連接了 SDA、SCL、+3.3V 和 GND。我還將 GND 連接到 CCS811 的 WAK 引腳。務(wù)必打磨右下角以獲得正確的模塊方向。
結(jié)果:
1.5 組裝
對于住房,我將使用宜家的兒童燈。
我用螺絲固定電路板,但你也可以使用扎帶或膠水。結(jié)果看起來像這樣:
我們將附加到“窗口”區(qū)域內(nèi)的 RGB LED 模塊。
2. 軟件
這些 I2C 模塊沒有適用于 Azure Sphere 的公共軟件驅(qū)動程序,因此我必須開發(fā)庫。首先,為了了解傳感器的工作原理,我研究了規(guī)格表。但為什么要從零開始重新發(fā)現(xiàn)一切???我可以基于 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ù)。用于補償。
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 進行了自己的修改,并添加了傳感器驅(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 上獲得。
- 基于Microsoft Azure Sphere的AI家庭安全系統(tǒng)
- 構(gòu)建結(jié)合Azure Sphere安全性和FreeRTOS的漫游者
- Azure Sphere I2C掃描儀
- 用于安全物聯(lián)網(wǎng)的Azure Sphere和Azure云服務(wù)
- 使用Azure KeyVault和Azure Sphere安全自動登錄
- 使用Azure Sphere和D6T構(gòu)建疏散
- 在Avnet Azure Sphere上創(chuàng)建BurnerOn示例應(yīng)用程序
- 基于Azure Sphere的安全防盜設(shè)備
- 使用Azure Sphere監(jiān)控警報安全面板
- 適用于Azure Sphere的WS2812B LED燈帶驅(qū)動器
- 如何將心率傳感器連接到Avnet MT3620套件
- 微軟 Azure Sphere MCU技術(shù)、生態(tài)探析
- Azure RTOS NetX Duo嵌入式TCP/IP網(wǎng)絡(luò)堆棧 13次下載
- 高性能嵌入式堆棧Azure PTOS USBX概述 10次下載
- Avnet 物聯(lián)網(wǎng)安全性的重要和方案 16次下載
- Azure Kinect Body Tracking For LabVIEW更新預(yù)覽 800次閱讀
- IntelliJ上Azure Event Hubs全新支持來了 551次閱讀
- 使用MM32F3270基于Azure RTOS定時器組的應(yīng)用 1751次閱讀
- 使用MM32F3270基于Azure RTOS動態(tài)內(nèi)存管理的應(yīng)用 992次閱讀
- 使用MM32F3270基于Azure RTOS信號量的應(yīng)用 1071次閱讀
- Azure Percept DK的硬件介紹與設(shè)置使用 1149次閱讀
- Azure Kinect Senser DK套件簡介 3845次閱讀
- 什么是物聯(lián)網(wǎng)開發(fā)套件?如何挑選物聯(lián)網(wǎng)開發(fā)套件 5261次閱讀
- dfrobotmicro:bit造物粒子入門套件簡介 4402次閱讀
- dfrobot Arduino套件介紹 2260次閱讀
- dfrobotArduino官方配套套件 1403次閱讀
- 詳解Avnet公司的MicroZed開發(fā)板,主要用在云端 4062次閱讀
- 基于Xilinx reVISION Stack Demo雙攝像頭采集圖像 3509次閱讀
- 一文詳解Avnet Zynq 7Z007SMiniZed開發(fā)方案 9892次閱讀
- 淺談云災(zāi)難恢復(fù)與備份之Azure Site Recovery服務(wù) 1905次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多