女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于機智云物聯(lián)網(wǎng)平臺的溫濕度和光照強度獲取

機智云 ? 2023-08-30 08:12 ? 次閱讀

本文的開發(fā)項目由開發(fā)者發(fā)布在CSDN博客(F l e)分享,該設計采用esp8266燒寫機智云固件。并且esp8266與stm32進行通信,則stm32可以通過esp8266與機智云服務器進行數(shù)據(jù)交互,而機智云服務器可以和機智云app進行數(shù)據(jù)交互。為此,實現(xiàn)stm32通過esp8266可以與機智云app進行數(shù)據(jù)交互。

stm32作為MCU傳感器進行數(shù)據(jù)交互,得到傳感器采集的數(shù)值,所以完成的是傳感器和app的數(shù)據(jù)交互。由于本次實驗增加了對光照強度的采集,所以又增加了一個三色RGB燈外設。通過機智云app可以調節(jié)RGB燈的光強,以此來模擬光照強度的變化。整個設計的傳感器數(shù)據(jù)流向如下圖所示:

d07b2dea-46c9-11ee-8e12-92fbcf53809c.png

另外,對于用機智云app調節(jié)RGB燈的光強的數(shù)據(jù)流向如下圖:

d0a019ca-46c9-11ee-8e12-92fbcf53809c.png

01

傳感器的測試

本次設計利用STM32CubeMX進行開發(fā),代碼設計過程分模塊進行,分別編寫測試用例驗證各模塊的功能,包括oled模塊、按鍵模塊、dht11模塊、光敏電阻模塊、rgb模塊。1、oled模塊① 接線:

d0b173be-46c9-11ee-8e12-92fbcf53809c.png

②代碼編寫:

本次設計中oled采用硬件SPI2驅動,STM32CubeMX的設計如下圖:

d0bb48da-46c9-11ee-8e12-92fbcf53809c.pngd0cf747c-46c9-11ee-8e12-92fbcf53809c.png

d0f15290-46c9-11ee-8e12-92fbcf53809c.png

利用STM32CubeMX生成的SPI主要代碼如上所示。在生成的SPI代碼上進一步編寫oled.c和oled.h文件。

oled.c封裝了以下的函數(shù):

d129448e-46c9-11ee-8e12-92fbcf53809c.png

測試函數(shù):

int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_SPI2_Init(); OLED_Init(); OLED_ShowString(0, 0, "wait for set esp8266,press key1 to set esp8266 with AIRLINK_MODE");}

③測試用例實驗結果:

d1490fee-46c9-11ee-8e12-92fbcf53809c.png

由上圖可知,oled模塊的顯示函數(shù)能夠正確顯示。

2、按鍵模塊

①接線:

d15a5f88-46c9-11ee-8e12-92fbcf53809c.png

KEY_R0接地,KEY_L0和KEY_L1可以用于檢測按鍵狀態(tài)。對應的引腳為:

d15ecc76-46c9-11ee-8e12-92fbcf53809c.png

②代碼編寫:

STM32CubeMX設計如下:

d16d5750-46c9-11ee-8e12-92fbcf53809c.png

PC11設置為輸出模式,PC10和PB5設置為輸入模式。

Key.c封裝了以下函數(shù):

void key_init(void){ HAL_GPIO_WritePin(KEY_COM_GND_GPIO_Port,KEY_COM_GND_Pin,GPIO_PIN_RESET);}
void Test_key(void){ if(HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin)==GPIO_PIN_SET) { OLED_ShowString(0,0,"key1_up"); } else { OLED_ShowString(0,0,"key1_down"); } if(HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin)==GPIO_PIN_SET) { OLED_ShowString(0,10,"key2_up"); } else { OLED_ShowString(0,10,"key2_down"); } OLED_Refresh_Gram();}

測試用例:

int main(void){ MX_GPIO_Init(); key_init(); while(1) { Test_key(); }}

③測試用例實驗結果:

d1917f68-46c9-11ee-8e12-92fbcf53809c.png

由圖中可以看出,按鍵一被按下時顯示key1_down和key2_up,與理論相符。

3、dht11模塊

①接線:

d1f40f98-46c9-11ee-8e12-92fbcf53809c.png

②代碼編寫:

由于dht11的數(shù)據(jù)引腳有時需要作為輸入,有時需要作為輸出,所以不在STM32CubeMX設置。

Dht11.c主要封裝了以下函數(shù):

d20a6126-46c9-11ee-8e12-92fbcf53809c.png

這里的us延時并沒有使用定時器來產生,而是用系統(tǒng)時鐘來實現(xiàn):

void delay_us(uint32_t us){ uint32_t delay = (HAL_RCC_GetHCLKFreq() / 4000000 * us); while (delay--) { ; }}

測試用例:

int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_SPI2_Init(); OLED_Init(); while(1) { Test_dht11(); }
void Test_dht11(void){ char txt[16]; while(1) { DHT11_Read_Data(&humidity_integer,&humidity_decimal,&temperature_integer,&temperature_decimal); sprintf(txt, "temp:%d.%d", temperature_integer,temperature_decimal); OLED_ShowString(0,0,txt); sprintf(txt, "humi:%d.%d", humidity_integer,humidity_decimal); OLED_ShowString(0,10,txt); OLED_Refresh_Gram(); }}

③測試用例實驗結果:

d2222ba8-46c9-11ee-8e12-92fbcf53809c.png

由上圖可以看出,溫度為23.3℃,濕度為53.0%,濕度的小數(shù)為0,與理論相符。

4、光敏電阻模塊

①接線:

d22aaa44-46c9-11ee-8e12-92fbcf53809c.png②代碼編寫:

STM32CubeMX設置ADC1的IN0如下:

d2381f12-46c9-11ee-8e12-92fbcf53809c.png

Stm32Rct6的ADC是12位的,這里沒有更改的選項,則ADC讀取的最大值是2^12=4096。

這里采樣時間Sampling Time選擇1.5個周期。ADC采樣時間 = (采樣周期+12.5周期)* 1/ADC時鐘頻率,這里ADC采樣時間=(1.5+12.5)*1/12 = 1.167us。light_check5506.c主要封裝以下函數(shù):

void light_check5506_init(void){ HAL_ADCEx_Calibration_Start(&hadc1); HAL_Delay(200);}
uint32_t light_check5506_getinitvalue(void){ HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1,50);//?Tê±50ms return HAL_ADC_GetValue(&hadc1);}
uint32_t light_check5506_get0to100value(void){ //°μ-->áá£o0~100 uint32_t value; value=light_check5506_getinitvalue(); value=4096-value;//?ê?êy?Yê???°μêy?Y??′ó value=(value*100/4096);//?ˉ?a0~100μ?êy,±?D??è3?ò?100?ù3y£?òò?aè?2?ê???êy return value;}
void Test_5506(void){ uint32_t value; char txt[16]; while(1) { value=light_check5506_get0to100value(); sprintf(txt, "light(0-100):%d", value); OLED_ShowString(0,0,txt); OLED_Refresh_Gram(); }}

測試用例:

main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_SPI2_Init(); MX_ADC1_Init(); OLED_Init(); light_check5506_init(); while(1)` { Test_5506(); }}

③測試用例實驗結果:

d250d214-46c9-11ee-8e12-92fbcf53809c.png

將ADC讀取的值歸一化到0~100后光照強度的數(shù)值為18。

5、rgb模塊

①接線:

d272b654-46c9-11ee-8e12-92fbcf53809c.png②代碼編寫:

STM32CubeMX設置TIM8的三個通道如下:

d2981908-46c9-11ee-8e12-92fbcf53809c.png

計數(shù)周期Counter Period設置為255,這是為了便于查找RGB顏色表進行顏色設置,占空比Pulse設置為50%Rgb.c封裝了以下函數(shù):

void rgb_init(void){ HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_2); HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_3);}void Test_rgb(void){ rgb_setpwm(10.0,100.0,200.0);}void rgb_setpwm(uint8_t pwm_r,uint8_t pwm_g,uint8_t pwm_b){ __HAL_TIM_SET_COMPARE(&htim8, TIM_CHANNEL_1,pwm_r); __HAL_TIM_SET_COMPARE(&htim8, TIM_CHANNEL_2,pwm_g); __HAL_TIM_SET_COMPARE(&htim8, TIM_CHANNEL_3,pwm_b);}

測試用例:

main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_SPI2_Init(); MX_TIM8_Init(); rgb_init(); OLED_Init(); while(1)` { Test_rgb(); }}

③測試用例實驗結果:

d2b552de-46c9-11ee-8e12-92fbcf53809c.png

由上圖可知RGB燈被點亮。

02

通過esp8266實現(xiàn)數(shù)據(jù)上傳和數(shù)據(jù)回傳

在進行數(shù)據(jù)上傳與數(shù)據(jù)回傳之前,首先進行用于打印數(shù)據(jù)的串口1的設置和用于stm32與esp8266通信的串口2。串口1:

d2bea6cc-46c9-11ee-8e12-92fbcf53809c.pngd2d0675e-46c9-11ee-8e12-92fbcf53809c.png

串口1設置PA9和PA10分別作為TX和RX,波特率為115200,不使能中斷。

串口2:

d2e17bac-46c9-11ee-8e12-92fbcf53809c.pngd2f6c746-46c9-11ee-8e12-92fbcf53809c.pngd32cd6f6-46c9-11ee-8e12-92fbcf53809c.png

串口2設置PA2和PA3分別作為TX和RX,波特率為9600,使能中斷。

1、數(shù)據(jù)上傳:溫濕度數(shù)據(jù)、關照強度數(shù)據(jù)

①主要代碼

void userHandle(void){ DHT11_Read_Data( & humidity_integer, & humidity_decimal, & temperature_integer, & temperature_decimal); currentDataPoint.valuehumidity = humidity_integer; currentDataPoint.valueLight_intensity = light_check5506_get0to100value(); currentDataPoint.valueDHT11 = temperature_integer + 0.1 * temperature_decimal; }

在userHandle(void)中添加溫濕度數(shù)據(jù)的采集以及光照強度的讀取。userHandle()是main函數(shù)中while循環(huán)的內容。

d33b8692-46c9-11ee-8e12-92fbcf53809c.png

由上圖可以看出,userHandle對于用戶來說是最頂層的,數(shù)據(jù)在userHandle中采集,依次經(jīng)過gizCheckReport判斷是否上報當前狀態(tài)的數(shù)據(jù)、gizDataPoints2ReportData完成用戶區(qū)數(shù)據(jù)到上報型數(shù)據(jù)的轉換、gizReportData將轉換后的上報數(shù)據(jù)通過串口發(fā)送給 WiFi 模塊。

②設計結果:

首先確保esp8266和手機都已經(jīng)連接到同一個網(wǎng)絡,這里用電腦作為這個網(wǎng)絡。

d342526a-46c9-11ee-8e12-92fbcf53809c.png

由上圖可知手機和esp8266已經(jīng)連接上了電腦。機智云app連接上esp8266后得到上傳來的數(shù)據(jù):

d353a84e-46c9-11ee-8e12-92fbcf53809c.pngd3769034-46c9-11ee-8e12-92fbcf53809c.png

Oled上的數(shù)據(jù)是stm32收集的,上圖的數(shù)據(jù)是機智云app通過esp8266收到的,兩者一致,說明數(shù)據(jù)交互是正確的。2、數(shù)據(jù)回傳:RGB三數(shù)值

①主要代碼

int8_t gizwitsEventProcess(eventInfo_t * info, uint8_t * gizdata, uint32_t len){ uint8_t i = 0; dataPoint_t * dataPointPtr = (dataPoint_t *)gizdata; moduleStatusInfo_t * wifiData = (moduleStatusInfo_t *)gizdata; protocolTime_t * ptime = (protocolTime_t *) gizdata; # if MODULE_TYPE gprsInfo_t * gprsInfoData = (gprsInfo_t *)gizdata; # else moduleInfo_t * ptModuleInfo = (moduleInfo_t *) gizdata; # endif if ((NULL == info) || (NULL == gizdata)) { return -1; } for (i=0; i < info->num; i++) { switch(info->event[i]) { case EVENT_LED_R: currentDataPoint.valueLED_R = dataPointPtr->valueLED_R; GIZWITS_LOG("Evt:EVENT_LED_R %d\n", currentDataPoint.valueLED_R); rgb_setpwm(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G, currentDataPoint.valueLED_B); break; case EVENT_LED_G: currentDataPoint.valueLED_G = dataPointPtr->valueLED_G; GIZWITS_LOG("Evt:EVENT_LED_G %d\n", currentDataPoint.valueLED_G); rgb_setpwm(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G, currentDataPoint.valueLED_B); break; case EVENT_LED_B: currentDataPoint.valueLED_B = dataPointPtr->valueLED_B; GIZWITS_LOG("Evt:EVENT_LED_B %d\n", currentDataPoint.valueLED_B); rgb_setpwm(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G, currentDataPoint.valueLED_B); break; } }}

在gizwitsEventProcess中的EVENT_LED_R、EVENT_LED_G、EVENT_LED_B分別添加對對RGB三個PWM的賦值,賦值之后使其立即生效。

d3932de8-46c9-11ee-8e12-92fbcf53809c.png

protocolIssuedProcess被 gizwitsHandle 調用,接收來自云端或 app端下發(fā)的相關協(xié)議數(shù)據(jù)。ACTION_CONTROL_DEVICE進行“控制型協(xié)議”的相關處理,gizDataPoint2Event根據(jù)協(xié)議生成“控制型事件”,并進行相應數(shù)據(jù)類型的轉化轉換,gizwitsEventProcess是位于數(shù)據(jù)回傳過程中的最底層,根據(jù)已生成的“控制型事件”進行相應處理。

②設計結果:

首先確保esp8266和手機都已經(jīng)連接到同一個網(wǎng)絡,這里用電腦作為這個網(wǎng)絡。

d342526a-46c9-11ee-8e12-92fbcf53809c.png

由上圖可知手機和esp8266已經(jīng)連接上了電腦。機智云app設置RGB三個PWM數(shù)值,得到oled上的數(shù)據(jù)為:

d3b2eb7e-46c9-11ee-8e12-92fbcf53809c.pngd3baac9c-46c9-11ee-8e12-92fbcf53809c.png

由上圖可知,右圖為機智云app設置的三個PWM數(shù)值,左圖再oled上為同樣的數(shù)值,說明數(shù)據(jù)交互正確。

03

總 結

①通過這次設計接觸了STM32CubeMX這個軟件,相比與之前的標準庫,STM32CubeMX生成的Hal庫不僅封裝度更高,而且更有利于開發(fā)者進行快速開發(fā),而且在本次實驗中機智云生成的代碼也是基于Hal庫的,這說明以后對于stm32來說,會越來越趨向于Hal開發(fā)。②官網(wǎng)永遠是對解決問題的最好地方,機智云的官方文檔給了我極大幫助。

③esp8266的燒錄對于供電要求十分苛刻,導致多次燒錄都失敗了,所以在制pcb的時候加上了esp8266的燒錄接口,以及GPIO的接地開關,還有復位電路。PCB擴展板圖如下:

d3da52e0-46c9-11ee-8e12-92fbcf53809c.png

④stmRct6板的供電十分差,由于剛開始只是接了ST-LINK進行供電,導致dht11和oled一起使用時dht11的VCC口只有2.6V,進而使得dht11通信一直不成功,這也說明了一切先從電源管理開始,確保供電沒問題再查找軟件問題。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2562

    文章

    52524

    瀏覽量

    763569
  • 數(shù)據(jù)

    關注

    8

    文章

    7239

    瀏覽量

    90987
  • 物聯(lián)網(wǎng)

    關注

    2927

    文章

    45847

    瀏覽量

    387793
  • STM32
    +關注

    關注

    2289

    文章

    11011

    瀏覽量

    362289
  • 機智云
    +關注

    關注

    3

    文章

    609

    瀏覽量

    26738
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于51單片機GSM溫濕度光照檢測系統(tǒng)設計?

    基于51單片機GSM溫濕度光照檢測系統(tǒng)設計?
    發(fā)表于 04-24 16:12

    STM32項目分享:智能臺燈(機智)系統(tǒng)

    01—項目簡介1.功能詳解STM32智能臺燈(機智)系統(tǒng)功能如下:1.檢測功能:系統(tǒng)檢測周圍溫濕度數(shù)據(jù)、距離、人體信號、光照強度L
    的頭像 發(fā)表于 03-10 08:03 ?669次閱讀
    STM32項目分享:智能臺燈(<b class='flag-5'>機智</b><b class='flag-5'>云</b>)系統(tǒng)

    DLP NIRScan Nano光照強度如何計算?

    獲取到了Nano的掃描數(shù)據(jù),在對數(shù)據(jù)進行解析的時候遇到了一個問題,我搞不明白光照強度是如何得出來的,我在例程庫里邊找到了代碼,我沒看懂,還有就是按照代碼計算出來的光強是不正確的,請教各位工程師給予指點。
    發(fā)表于 02-28 07:30

    遠程溫濕度實時監(jiān)測系統(tǒng)應用方案

    遠程溫濕度實時監(jiān)測系統(tǒng),作為現(xiàn)代環(huán)境管理的重要組成部分,是各行各業(yè)不可或缺的重要工具,對環(huán)境溫濕度的遠程、實時、精準監(jiān)測。 一、運行原理 聚英遠程溫濕度實時監(jiān)測系統(tǒng),依賴于高精度溫濕度
    的頭像 發(fā)表于 01-02 17:03 ?513次閱讀

    大棚溫濕度自動監(jiān)控系統(tǒng)

    大棚溫濕度自動監(jiān)控系統(tǒng),基于傳感器、聯(lián)網(wǎng)、智能控制等技術,通過實時監(jiān)測大棚內外的環(huán)境參數(shù),如溫度、濕度光照強度、二氧化碳濃度等,并根據(jù)預
    的頭像 發(fā)表于 12-31 16:58 ?562次閱讀

    STM32項目分享:機智智慧農業(yè)系統(tǒng)

    01—項目簡介1.功能詳解基于STM32的機智智慧農業(yè)系統(tǒng)。功能如下:溫濕度采集:使用DHT11溫濕度傳感器采集環(huán)境溫濕度土壤
    的頭像 發(fā)表于 12-19 18:40 ?1205次閱讀
    STM32項目分享:<b class='flag-5'>機智</b><b class='flag-5'>云</b>智慧農業(yè)系統(tǒng)

    醫(yī)藥倉庫溫濕度監(jiān)控系統(tǒng)應用

    。 醫(yī)藥倉庫溫濕度監(jiān)控系統(tǒng),結合聯(lián)網(wǎng)、無線通訊等技術,通過傳感器全天候實時采集倉庫內的溫濕度數(shù)據(jù),管理
    的頭像 發(fā)表于 12-17 16:16 ?554次閱讀

    如何使用合宙的DTU+業(yè)務平臺,做一個溫濕度傳感器數(shù)據(jù)采集項目?

    使用合宙的DTU+業(yè)務平臺,做一個溫濕度傳感器數(shù)據(jù)采集項目,超詳細教程。
    的頭像 發(fā)表于 09-18 11:11 ?796次閱讀
    如何使用合宙的DTU+業(yè)務<b class='flag-5'>云</b><b class='flag-5'>平臺</b>,做一個<b class='flag-5'>溫濕度</b>傳感器數(shù)據(jù)采集項目?

    溫室大棚溫濕度光照監(jiān)測的重要性

    在科技日新月異的今天,現(xiàn)代農業(yè)正以飛快的速度向智能化、準確化邁進。其中,溫室大棚作為反季節(jié)種植、高效農業(yè)的重要載體,其內部的溫濕度光照條件直接關乎作物的生長質量與產量。因此,溫室大棚的溫濕度
    的頭像 發(fā)表于 08-28 17:25 ?1000次閱讀

    機智開源自動化控制篇:溫濕度報警器

    這次使用STM32F103C8T6單片機、ESP-01S、DHT11、蜂鳴器以及0.96寸OLED(I2C)制作溫濕度報警器,為智能家居增添智能生態(tài)。基本工作進入機智開發(fā)者中心創(chuàng)建智能產品
    的頭像 發(fā)表于 08-06 08:10 ?570次閱讀
    <b class='flag-5'>機智</b><b class='flag-5'>云</b>開源自動化控制篇:<b class='flag-5'>溫濕度</b>報警器

    溫濕度監(jiān)測系統(tǒng)應用

    、可靠的溫濕度監(jiān)測系統(tǒng)顯得尤為重要。 溫濕度監(jiān)測系統(tǒng),通過溫度傳感器、智能控制終端等硬件設備,與管理平臺組成高精度傳感器網(wǎng)絡,在線采集室內溫濕度
    的頭像 發(fā)表于 07-26 16:15 ?745次閱讀

    藥品倉庫溫濕度監(jiān)控系統(tǒng)

    和有效使用具有重要意義。 藥品倉庫溫濕度監(jiān)控系統(tǒng),結合聯(lián)網(wǎng)、無線通訊等技術,主要由傳感器、數(shù)據(jù)采集器、傳輸設備、管理平臺等組成。針對藥品
    的頭像 發(fā)表于 07-26 10:12 ?593次閱讀

    庫房溫濕度自動監(jiān)測系統(tǒng)

    倉儲、庫房在管理上,環(huán)境控制都是重中之重。庫房溫濕度自動監(jiān)測系統(tǒng)作為一種更為便捷的解決方案,已經(jīng)得到廣泛的應用。 庫房溫濕度自動監(jiān)測系統(tǒng)通過集成傳感器、數(shù)據(jù)采集器、傳輸設備和管理平臺等硬件設備,實現(xiàn)
    的頭像 發(fā)表于 07-09 18:00 ?1068次閱讀

    糧倉溫濕度監(jiān)測解決方案

    的損失。 糧倉溫濕度監(jiān)測解決方案,通過GPRS無線傳輸?shù)?b class='flag-5'>溫濕度傳感器、變送器等設備,利用無線網(wǎng)絡,通過管理平臺同步查看糧倉情況。根據(jù)不同應用場合的具體需求靈活快速配置,建立全面而有效
    的頭像 發(fā)表于 07-04 16:37 ?587次閱讀

    想要準確地測量環(huán)境溫濕度溫濕度傳感器是關鍵!

    ? 溫濕度是生產生活中最重要的環(huán)境指標之一,不僅人需要在適宜的溫濕度條件下保持良好的精神狀態(tài)和敏捷的思維,食品、藥品、各種儀器設備等都對環(huán)境溫濕度有特殊的要求。基于對環(huán)境溫濕度的要求,
    的頭像 發(fā)表于 07-04 08:48 ?985次閱讀