在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內(nèi)不再提示

一種基于STM32F407-RT-SPARK開發(fā)板的智能花盆設計案例

冬至子 ? 來源:吶吶吶 ? 作者:吶吶吶 ? 2023-07-28 17:06 ? 次閱讀

功能簡介:

該項目是基于STM32F407-RT-SPARK開發(fā)板的智能花盆。通過溫濕度傳感器和光照傳感器,它能夠監(jiān)測花盆土壤當前的溫濕度和附近的光照強度,并將這三項數(shù)據(jù)實時顯示在LCD屏上。它還能夠監(jiān)測花盆是否傾倒,監(jiān)測到花盆傾倒后,蜂鳴器會發(fā)出警報,直到按下按鍵,警報停止。同時,它還配備了rw007模塊,能將這些數(shù)據(jù)實時上傳到onenet平臺。

硬件框架:

使用到的模塊包括:LCD屏、溫濕度傳感器、光照傳感器、蜂鳴器、物理按鍵

1.jpg

圖一 硬件實物圖與使用到的模塊

1.jpg

圖二 硬件框架圖

軟件框架:

1.jpg

圖三 軟件框架圖

軟件模塊說明及部分代碼:

1.六軸傳感器線程:

六軸傳感器模塊測量花盆的偏航角、橫滾角和俯仰角,并將測量數(shù)據(jù)發(fā)送給CPU進行判斷,若花盆傾倒,記錄異常數(shù)據(jù)。

icm20608_device_t devvv = RT_NULL;
             rt_err_t result;
             devvv = icm20608_init(i2c_bus_namee);
             if (devvv == RT_NULL)
             {
             LOG_E("The sensor initializes failure");
             return 0;
             }
             else
             {
             LOG_D("The sensor initializes success");
             }
             /* 對 icm20608 進 行 零 值 校 準: 采 樣 10 次, 求 取 平 均 值 作 為 零 值 */
             result = icm20608_calib_level(devvv, 10);
             if (result == RT_EOK)
             {
             LOG_D("The sensor calibrates success");
             LOG_D("accel_offset: X%6d Y%6d Z%6d", devvv- >accel_offset.x, devvv- >accel_offset.y, devvv- >accel_offset.z);
             }
             else
             {
             LOG_E("The sensor calibrates failure");
             icm20608_deinit(devvv);
             return 0;
             }
             rt_int16_t accel_x, accel_y, accel_z;
             /* 讀 取 三 軸 加 速 度 */
             result = icm20608_get_accel(devvv, &accel_x, &accel_y, &accel_z);
             if (result == RT_EOK)
             {
             LOG_D("current accelerometer: accel_x%6d, accel_y%6d, accel_z%6d",
             accel_x, accel_y, accel_z);
             }
             else
             {
             LOG_E("The sensor does not work");
             break;
             }

2.LCD顯示線程:

該線程初始化后會持續(xù)讀取溫度、濕度和光照數(shù)據(jù),并將其實時顯示在LCD顯示屏上。

lcd_clear(WHITE);
lcd_set_color(WHITE, RED);
lcd_show_string(10, 0, 16, "Hello!");
lcd_set_color(WHITE, BLACK);
lcd_show_string(10, 26, 32, "Temperature:");
lcd_show_string(10, 90, 32, "Humidity:");
lcd_show_string(10, 160, 32, "Light:");
lcd_set_color(WHITE, BLUE);
lcd_show_num(30, 26+32, temperature, 2, 32);
lcd_show_string(65,26+32,32,"C");
lcd_show_num(30, 90+32, humidity, 2, 32);
lcd_show_string(65, 90+32, 32, "%");
lcd_show_num(30, 160+32, brightness, 2, 32);
lcd_show_string(80, 160+32, 32, "lux");

3.光強傳感器線程:

光強傳感器模塊將記錄光強數(shù)據(jù),用于LCD顯示和云端顯示。

brightness = ap3216c_read_ambient_light(devv);
             LOG_D("current brightness: %d.%d(lux).", (int)brightness, ((int)(10 * brightness) % 10));

4.rw007線程(Onenet):

讀取rw007模塊傳來的溫濕度數(shù)據(jù)、光照數(shù)據(jù)并存儲到云端以圖表方式進行顯示;若傾倒角度數(shù)據(jù)異常,會在云端進行報警。

int onenet_publish_digit(int argc, char **argv)
{
if (argc != 3)
{
LOG_E("onenet_publish [datastream_id] [value] - mqtt pulish digit data to OneNET.");
return -1;
}
if (onenet_mqtt_upload_digit(argv[1], atoi(argv[2])) < 0)
{
LOG_E("upload digit data has an error!n");
}
return 0;
}
int onenet_publish_string(int argc, char *argv)
{
if (argc != 3)
{
LOG_E("onenet_publish [datastream_id] [string] - mqtt pulish string data to OneNET.");
return -1;
}
if (onenet_mqtt_upload_string(argv[1], argv[2]) < 0)
{
LOG_E("upload string has an error!n");
}
return 0;
}
/
onenet mqtt command response callback function */
static void onenet_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size)
{
char res_buf[] = { "cmd is received!n" };
LOG_D("recv data is %.sn", recv_size, recv_data);
/
user have to malloc memory for response data */
*resp_data = (uint8_t *) ONENET_MALLOC(strlen(res_buf));
strncpy((char *)*resp_data, res_buf, strlen(res_buf));
resp_size = strlen(res_buf);
}
/
set the onenet mqtt command response callback function */
int onenet_set_cmd_rsp(int argc, char *argv)
{ onenet_set_cmd_rsp_cb(onenet_cmd_rsp_cb);
return 0;
}
MSH_CMD_EXPORT(onenet_set_cmd_rsp, set cmd response function);
#endif /
FINSH_USING_MSH */

5.溫濕度線程:

溫濕度傳感器模塊測量土壤的溫濕度,并記錄測量數(shù)據(jù)。

temperature=(int)temperature+(int)(temperature10)%10;
humidity=(int)humidity+(int)(humidity
10)%10;
brightness=(int)brightness+(int)(brightness*10)%10;
rt_thread_mdelay(100);
onenet_mqtt_upload_digit("temperature", temperature);
rt_thread_mdelay(100);
onenet_mqtt_upload_digit("humidity", humidity);
rt_thread_mdelay(100);
onenet_mqtt_upload_digit("brightness", brightness);

6.蜂鳴器線程:

讀取六軸傳感器數(shù)據(jù),并對花盆的傾倒狀態(tài)進行判斷。若花盆傾倒,蜂鳴器報警,可通過開發(fā)板上的按鍵關閉蜂鳴器。

/* 設置按鍵引腳為輸入模式 */
        rt_pin_mode(PIN_KEY1, PIN_MODE_INPUT_PULLUP);
        rt_pin_mode(PIN_WK_UP, PIN_MODE_INPUT_PULLUP);
        /* 設置蜂鳴器引腳為輸出模式 */
        rt_pin_mode(PIN_BEEP, PIN_MODE_OUTPUT);
        /* 設置按鍵中斷模式與中斷回調(diào)函數(shù) */
        rt_pin_attach_irq(PIN_KEY1, PIN_IRQ_MODE_FALLING, irq_callback, (void *) PIN_KEY1);
        rt_pin_attach_irq(PIN_WK_UP, PIN_IRQ_MODE_FALLING, irq_callback, (void *) PIN_WK_UP);
        /* 使能中斷 */
        rt_pin_irq_enable(PIN_KEY1, PIN_IRQ_ENABLE);
        rt_pin_irq_enable(PIN_WK_UP, PIN_IRQ_ENABLE);

int topple;
int X,Y,Z;
X=devvv->accel_offset.x;
Y=devvv->accel_offset.y;
Z=devvv->accel_offset.z;
if(abs(Y)<=10000){
topple=0;
rt_pin_write(PIN_BEEP,PIN_LOW);
LOG_D("KEY1 interrupt. beep off.");
}
else{
topple=1;
rt_pin_write(PIN_BEEP,PIN_HIGH);
LOG_D("WK_UP interrupt. beep on.");
break;
}

Onenet頁面展示

1.jpg

1.jpg

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

    關注

    2290

    文章

    11018

    瀏覽量

    362731
  • LCD屏
    +關注

    關注

    0

    文章

    126

    瀏覽量

    15925
  • 蜂鳴器
    +關注

    關注

    12

    文章

    893

    瀏覽量

    46747
  • 溫濕度傳感器

    關注

    5

    文章

    591

    瀏覽量

    36387
  • STM32F407
    +關注

    關注

    15

    文章

    188

    瀏覽量

    30293
  • OneNET
    +關注

    關注

    1

    文章

    51

    瀏覽量

    13249
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32F407靈致開發(fā)板攝像頭SRAM應用例程說明

    STM32F407靈致開發(fā)板攝像頭SRAM應用例程說明
    發(fā)表于 12-22 18:11 ?32次下載

    STM32F407 開發(fā)板原理圖

    STM32F407 開發(fā)板原理圖
    發(fā)表于 09-22 16:12 ?393次下載
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>開發(fā)板</b>原理圖

    星翼電子:探索者STM32F407開發(fā)板資源詳細列表

    星翼電子:探索者STM32F407開發(fā)板資源詳細列表
    的頭像 發(fā)表于 10-15 09:51 ?4325次閱讀
    星翼電子:探索者<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)板</b>資源詳細列表

    STM32F407開發(fā)板電路原理圖免費下載

    本文檔的主要內(nèi)容詳細介紹的是STM32F407開發(fā)板電路原理圖免費下載。
    發(fā)表于 12-10 08:00 ?113次下載
    <b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)板</b>電路原理圖免費下載

    STM32F407開發(fā)板的光盤資料合集免費下載

    本文檔的主要內(nèi)容詳細介紹的是STM32F407開發(fā)板的光盤資料合集免費下載。
    發(fā)表于 12-30 08:00 ?56次下載
    <b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)板</b>的光盤資料合集免費下載

    STM32F407開發(fā)板用戶手冊】第13章 STM32F407啟動過程詳解

    STM32F407開發(fā)板用戶手冊】第13章 STM32F407啟動過程詳解
    發(fā)表于 11-23 18:06 ?74次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)板</b>用戶手冊】第13章 <b class='flag-5'>STM32F407</b>啟動過程詳解

    STM32F407開發(fā)板用戶手冊】第14章 STM32F407的電源,復位和時鐘系統(tǒng)

    STM32F407開發(fā)板用戶手冊】第14章 STM32F407的電源,復位和時鐘系統(tǒng)
    發(fā)表于 12-02 16:21 ?42次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)板</b>用戶手冊】第14章 <b class='flag-5'>STM32F407</b>的電源,復位和時鐘系統(tǒng)

    STM32F407開發(fā)板用戶手冊】第1章?? 初學STM32F407的準備工作

    STM32F407開發(fā)板用戶手冊】第1章?? 初學STM32F407的準備工作
    發(fā)表于 12-04 13:36 ?78次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)板</b>用戶手冊】第1章?? 初學<b class='flag-5'>STM32F407</b>的準備工作

    STM32F407開發(fā)板用戶手冊】第21章 STM32F407的NVIC中斷分組和配置(重要)

    STM32F407開發(fā)板用戶手冊】第21章 STM32F407的NVIC中斷分組和配置(重要)
    發(fā)表于 12-04 13:51 ?23次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)板</b>用戶手冊】第21章 <b class='flag-5'>STM32F407</b>的NVIC中斷分組和配置(重要)

    STM32F407開發(fā)板用戶手冊】第8章 STM32F407的終極調(diào)試組件Event Recorder

    STM32F407開發(fā)板用戶手冊】第8章 STM32F407的終極調(diào)試組件Event Recorder
    發(fā)表于 12-04 14:21 ?19次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)板</b>用戶手冊】第8章 <b class='flag-5'>STM32F407</b>的終極調(diào)試組件Event Recorder

    STM32F407開發(fā)板用戶手冊】第19章 STM32F407的GPIO應用之按鍵FIFO

    STM32F407開發(fā)板用戶手冊】第19章 STM32F407的GPIO應用之按鍵FIFO
    發(fā)表于 12-05 15:21 ?39次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)板</b>用戶手冊】第19章 <b class='flag-5'>STM32F407</b>的GPIO應用之按鍵FIFO

    STM32F407ZE開發(fā)板MPU6050陀螺儀的應用

    STM32F407ZE開發(fā)板MPU6050陀螺儀的應用
    發(fā)表于 12-06 14:36 ?11次下載
    <b class='flag-5'>STM32F407</b>ZE<b class='flag-5'>開發(fā)板</b>MPU6050陀螺儀的應用

    STM32STM32 F4開發(fā)板介紹

    目錄01、STM32F4開發(fā)板的資源圖02、STM32F4開發(fā)板板載資源03、STM32F4部分資源說明3.1、JTAG/SWD3.2、
    發(fā)表于 12-17 18:14 ?27次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b> <b class='flag-5'>F</b>4<b class='flag-5'>開發(fā)板</b>介紹

    STM32F407開發(fā)板原理圖下載

    STM32F407 開發(fā)板原理圖,有興趣的同學可以參考!
    發(fā)表于 04-29 17:09 ?65次下載

    STM32F407開發(fā)板資料

    STM32F407開發(fā)板1.zip,方便你在這個原理圖基礎上進行修改和定制,提供常用的元器件封裝庫,節(jié)省設計時間
    發(fā)表于 07-03 15:08 ?15次下載
    主站蜘蛛池模板: 亚洲男人天堂岛 | 免费超爽视频 | 午夜性爽爽爽 | 午夜视频在线观看www中文 | 狠狠干奇米 | 中文字幕佐山爱一区二区免费 | 成人黄色在线网站 | 天堂bt在线网bt | 特级毛片aaa免费版 特级毛片a级毛免费播放 | 天天狠天天干 | 亚洲国产成人久久三区 | 老师办公室高h文小说 | 久久国产热 | 国产福利99 | 欧美a区| 精品久久久久久 | 色婷婷九月 | 日韩毛片在线视频 | 免费一日本一级裸片在线观看 | 色综合天天综合网亚洲影院 | 嗯!啊!使劲用力在线观看 | 五月婷婷在线视频 | 成人免费的性色视频 | 日本久久综合视频 | 色91视频| 狠狠插综合网 | 最近最新免费视频 | 国产精品天天影视久久综合网 | 午夜三级毛片 | 色吧五月婷婷 | 狠狠狠色丁香婷婷综合久久88 | 成人国内精品久久久久影院 | 色aaa| 久久久午夜 | 色婷婷成人 | 日韩一级片免费看 | 日本人xxxxxxxxxⅹ68 | 欧美网站色 | 一级特黄女人生活片 | 久久手机免费视频 | 色一乱一伦一区一直爽 |