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

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

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

3天內不再提示

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

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

功能簡介:

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

硬件框架:

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

1.jpg

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

1.jpg

圖二 硬件框架圖

軟件框架:

1.jpg

圖三 軟件框架圖

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

1.六軸傳感器線程:

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

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顯示線程:

該線程初始化后會持續讀取溫度、濕度和光照數據,并將其實時顯示在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.光強傳感器線程:

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

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

4.rw007線程(Onenet):

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

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.溫濕度線程:

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

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.蜂鳴器線程:

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

/* 設置按鍵引腳為輸入模式 */
        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);
        /* 設置按鍵中斷模式與中斷回調函數 */
        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

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

    關注

    2272

    文章

    10925

    瀏覽量

    357643
  • LCD屏
    +關注

    關注

    0

    文章

    122

    瀏覽量

    15522
  • 蜂鳴器
    +關注

    關注

    12

    文章

    893

    瀏覽量

    46107
  • 溫濕度傳感器

    關注

    5

    文章

    581

    瀏覽量

    35855
  • STM32F407
    +關注

    關注

    15

    文章

    188

    瀏覽量

    29657
  • OneNET
    +關注

    關注

    1

    文章

    51

    瀏覽量

    12879
收藏 人收藏

    評論

    相關推薦

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

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

    STM32F407 開發板原理圖

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

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

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

    STM32F407開發板的光盤資料合集免費下載

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

    STM32F407開發板的電路原理圖免費下載

    本文檔的主要內容詳細介紹的是STM32F407開發板的電路原理圖免費下載。
    發表于 11-06 08:00 ?210次下載
    <b class='flag-5'>STM32F407</b><b class='flag-5'>開發板</b>的電路原理圖免費下載

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

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

    STM32F407開發板用戶手冊】第14章 STM32F407的電源,復位和時鐘系統

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

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

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

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

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

    STM32F407開發板用戶手冊】第8章 STM32F407的終極調試組件Event Recorder

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

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

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

    STM32F407ZE開發板MPU6050陀螺儀的應用

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

    STM32STM32 F4開發板介紹

    目錄01、STM32F4開發板的資源圖02、STM32F4開發板板載資源03、STM32F4部分資源說明3.1、JTAG/SWD3.2、
    發表于 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'>開發板</b>介紹

    STM32F407開發板原理圖下載

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

    STM32F407開發板資料

    STM32F407開發板1.zip,方便你在這個原理圖基礎上進行修改和定制,提供常用的元器件封裝庫,節省設計時間
    發表于 07-03 15:08 ?15次下載
    主站蜘蛛池模板: 天天色综合社区 | 国产一级特黄aa大片在线 | 天天综合网天天综合色 | 色婷婷六月丁香在线观看 | 免费观看色视频 | 亚洲激情 | 激情久久久久久久久久 | 亚洲一区二区综合 | 午夜国产精品理论片久久影院 | 狠狠色丁香久久婷婷综合丁香 | 国产产一区二区三区久久毛片国语 | 涩涩色中文综合亚洲 | 亚洲久久草 | 亚洲人成一区 | 美女教师一级毛片 | www五月婷婷| 国产网站黄 | 亚洲五月综合缴情婷婷 | 欧美性aaa| 就去干综合 | 精品毛片视频 | 恐怖片大全恐怖片免费观看好看的恐怖片 | 天堂在线最新版资源www | 欧美18性欧美丶黑吊 | 国模私拍大尺度视频在线播放 | 国产色爽女小说免费看 | 日本高清在线3344www | 一级毛片一片毛 | 一级特黄牲大片免费视频 | 激情婷婷综合久久久久 | 免费看黄视频的网站 | 91啪在线视频 | 最好看的最新中文字幕2018免费视频 | 亚洲婷婷综合中文字幕第一页 | 欧美色图一区 | 免费观看黄色网页 | 一区在线观看视频 | 丁香婷婷亚洲 | 六月婷婷七月丁香 | 成人免费国产gav视频在线 | 免费人成在线观看网站品爱网日本 |