国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

用小安派 DSL做一個天氣站

AIoT行業洞察 ? 來源:AIoT行業洞察 ? 作者:AIoT行業洞察 ? 2025-01-06 16:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

小安派-DSL(AiPi-DSL) 是安信可開源團隊專門為Ai-M61-32S設計的一款屏幕驅動開發板,支持2.8/3.5寸等30Pin SPI顯示屏、2.4寸及1.28寸等18Pin SPI顯示屏。

小安派-DSL目前已測試通過的有3.5寸電容觸摸屏(GC9307)、2.4寸電容觸摸屏(GC9307)、1.28寸圓形電容觸摸屏(GC9A01)。

這次采用小安派 dsl 板子,屏幕為 2.4 寸 320 *240 分辨率屏幕,外接 sht30 溫濕度傳感器,做一個天氣站。

wKgZO2d7l-KAIy_KAADgnkgKEGg555.jpg

01、主要功能

時間顯示(已完成)

天氣顯示(已完成)

溫濕度顯示(已完成)

wifi 密碼保存(已完成)

b 站粉絲數顯示(已完成)

U 盤模擬設置(已完成)

電腦性能顯示(已完成)

web server(已完成)

自動息屏(放棄)

微信小程序接入(放棄)

溫濕度 mqtt 上報(放棄)

02、方案進度

由于筆者接觸小安派時間較短,可能只能實現部分功能,目前完成logo界面設計,ttf 矢量字體顯示及U盤模擬功能。電腦性能上位機開發 80%(wpf 實在太占用資源類,先湊合用),基本功能已完善:

?初步完成界面布局及 wifi 掃描和連接

?完成時間獲取更新

?獲取心知天氣完成

?完成 https 獲取 b 站粉絲數

?sht30 溫濕度傳感器調試完成

?添加 pwm 亮度調節

?完善多界面管理

?性能監控調試完成

03、功能說明

軟件說明

所有信息保存在 sys_info 的結構體中,該結構體為全局變量,下圖所示。

typedef struct
{
union {
uint32_t state;
struct{
uint32_t state_wifi : 2; // 0:未連接 ;1:連接;2:斷開連接
uint32_t state_upan : 2; // 0:未開啟 ;1:連接;
};
};
lv_obj_t *last_src;
struct tm* timeinfo_t;
uint8_t backlight;
blbl_follow_t blbl_info_t;
weather_t weather[3];
char * city;
char * weather_key;
wifi_info_t wifi;
uint8_t brightness;
sht30_t sht;
pc_info_t pc;
monitor_info_t *monitor;
} blbl_sys_t;

主要為四個任務:

(1)用于刷新 lvgl 界面

(2)用于管理 Wi-Fi

(3)為定時器任務,定時更新 sys_info 中的信息內容

(4)用于接收電腦發送的監控信息并進行處理

時間更新

連接到 Wi-Fi 獲取并 ip 地址時,采用 http 從網易 api 接口獲取時間戳,保存時間戳信息,開啟 rtc 計時,這里有一個小 bug,官方提供的設置 rtc 函數不能設置計數值,只能從 0 開始計數。當前時間戳即為 rtc 時間 +http 獲取的時間戳。然后通過 localtime 將時間戳轉換為年月日。

struct bflb_device_s *rtc;
static uint64_t base_time;
void rtc_init(uint64_t timetemp)
{
rtc = bflb_device_get_by_name("rtc");
//此函數,只能開啟?
bflb_rtc_set_time(rtc, BFLB_RTC_SEC2TIME(1));
base_time = timetemp;
}
uint64_t rtc_get_time()
{
return (BFLB_RTC_TIME2SEC(bflb_rtc_get_time(rtc)) + base_time);
}
void time_update()
{
time_t time = rtc_get_time();
localtime(&time);
}

天氣顯示

使用心知天氣 api,使用 tcp 模擬 http 請求,返回最近三日天氣狀態的 json 字符串,使用 cjson 對字符串進行解析,存儲到系統變量 sys_info 中。

溫濕度時間顯示

采用 sht30 溫濕度傳感器模塊,i2c 接口,bl618 一共兩組 i2c,一組提供給屏幕的觸摸 ic,并且沒有引出該 io,故只能選用另一組 i2c,根據芯片手冊,貌似每個 gpio 均支持 i2c 復用,只不過只能復用 scl 或者其中一個 sda 。然后初始化 gpio,復用 i2c1,通過 i2c 初始化 sht30,如下所示。

struct bflb_i2c_msg_s msgs;
uint8_t subaddr[2] = { CMD_FETCH_DATA_H, CMD_FETCH_DATA_L};
board_i2c1_gpio_init();
i2c1 = bflb_device_get_by_name("i2c1");
bflb_i2c_init(i2c1, 400000);
msgs.addr = SHT30_WRITE_ADDR;
msgs.flags = 0;
msgs.buffer = subaddr;
msgs.length = 2;
bflb_i2c_transfer(i2c1, &msgs, 1);

然后便可以讀出原始數據,經過處理,可以獲得溫濕度信息。

int sht30_get_value()
{
unsigned char sht30_buf[6]={0};
uint32_t date;
int ret;
struct bflb_i2c_msg_s msgs;
//配置SHT30的寄存器
msgs.addr = SHT30_WRITE_ADDR;
msgs.flags = I2C_M_READ;
msgs.buffer = sht30_buf;
msgs.length = 6;
bflb_i2c_transfer(i2c1, &msgs, 1);
//校驗讀出來的數據,算法參考sht30 datasheet
if( (!SHT3X_CheckCrc(sht30_buf,2,sht30_buf[2])) && (!SHT3X_CheckCrc(sht30_buf+3,2,sht30_buf[5])) )
{
ret = 0;//成功
date=(sht30_buf[0]<<8|sht30_buf[1]);
sys_info_t.sht.temp =(uint8_t) ( ((float)date *175)/65535 -50 );
sys_info_t.sht.humi =(uint8_t)( ( (sht30_buf[3]*256) + (sht30_buf[4]) )*100/65535.0) ;
}
return ret;
}

b 站粉絲數顯示

之前b 站提供粉絲數獲取的 http 接口,最近由于安全考慮,b 站的 http 均不能使用,需要使用 https 發起請求。為了方便,這里只使用單向驗證,不對服務器返回信息進行驗證。

U盤模擬

官方提供了USB存儲設備模擬的代碼,但是是基于RAM模擬的,一旦掉電,數據將會丟失,可以選用將數據存儲到片上Flash 內,Flash 大小一共有 8M,選用后4M作為文件管理系統。只需要實現讀寫Flash 的操作即可,即以下接口。需要注意的是經過測試,Flash最小讀寫單位為4K,小于4K會出現問題。

void usbd_msc_get_cap(uint8_t lun, uint32_t *block_num, uint16_t *block_size)
{
*block_num = BLOCK_COUNT; //Pretend having so many buffer,not has actually.
*block_size = BLOCK_SIZE;
}
int usbd_msc_sector_read(uint32_t sector, uint8_t *buffer, uint32_t length)
{
if (sector < BLOCK_COUNT){
bflb_flash_read(CONFIG_FLASH_USB_ADDRESS + sector*BLOCK_SIZE, buffer, length);
}
return 0;
}
int usbd_msc_sector_write(uint32_t sector, uint8_t *buffer, uint32_t length)
{
if (sector < BLOCK_COUNT){
bflb_flash_erase(CONFIG_FLASH_USB_ADDRESS + sector*BLOCK_SIZE,length);
bflb_flash_write(CONFIG_FLASH_USB_ADDRESS + sector*BLOCK_SIZE, buffer, length);
}
return 0;
}

之后調用USB初始化,電腦便會識別到該設備,但是由于沒有文件系統,系統會建議格式化U盤,建議不要使用 Window 自帶的格式化,將會格式化為 fat16 文件系統,在之后的 gif 顯示中發現 fat16 文件系統讀取 gif 文件并顯示會卡住,而 fat32 文件系統則沒有該問題。故使用第三方工具 diskgenius 格式化為 fat32.

到此已經完成USB存儲設備模擬,個功能有什么用?當然是方便傳輸文件給程序使用,所有程序也要可以識別該文件系統,官方已經做了 FatFS 文件系統的移植,但是是基于SD卡的,將其改為基于 Flash 的,同樣也是只需要實現 Flash 讀寫接口。

int fs_flash_read(BYTE *buff, LBA_t sector, UINT count)
{
if(!count)
return RES_PARERR;
if(bflb_flash_read(FS_ADDR + sector*BLOCK_SIZE, buff, count * BLOCK_SIZE)){
return RES_PARERR;
}
return 0;
}
int fs_flash_write(const BYTE *buff, LBA_t sector, UINT count)
{
bflb_flash_erase(FS_ADDR + sector*BLOCK_SIZE,count);
bflb_flash_write(FS_ADDR + sector*BLOCK_SIZE, (uint8_t *)buff, count * BLOCK_SIZE);
return 0;
}
int fs_flash_ioctl(BYTE cmd, void *buff)
{
switch (cmd) {
// Get R/W sector size (WORD)
case GET_SECTOR_SIZE:
*(WORD *)buff = BLOCK_SIZE;
break;
// Get erase block size in unit of sector (DWORD)
case GET_BLOCK_SIZE:
*(DWORD *)buff = 1;
break;
case GET_SECTOR_COUNT:
*(DWORD *)buff = 1024;
break;
case CTRL_SYNC:
break;
default:
break;
}
return 0;
}

從USB模擬可知,我們將文件系統放到后4M的位置,如果我們將FatFS的地址也設置為4M的位置,將會發現,程序檢測不到Fat32文件系統,這是因為在用電腦格式化的時候,會在Fat32文件系統前添加一段額外的表頭信息,這段表頭位于 4M的位置,真正的Fat32文件系統位于0x3f000處。具體為什么會這樣,筆者還沒有深入研究。

FS_ADDR (CONFIG_FLASH_USB_ADDRESS + 0x3F000)

至此,程序便可以直接訪問 Fat32 文件系統的文件。

電腦性能監控

電腦性能監控需要使用上位機不斷的給小安派發送電腦相關信息,關于上位機的選擇,首先先到的是使用 ada64,但是發現,這個軟件居然要幾百塊錢,于是便打算使用開源項目,這里使用的是 OpenHardwareMonitor,一個電腦性能檢測的開源項目,基于 c#開發,提供 dll 動態鏈接庫文件。

然后是界面的設計,首先選擇的是和 OpenHardwareMonitor 一樣的框架 Winform,但受限于本人技術較菜,一些復雜功能無法實現,便選擇使用wpf 框架,wpf 框架功能更加強大,但是問題在于使用 wpf 開發的程序占用資源過于龐大,本人又不太了解 wpf 的程序優化,所以暫時只能將就使用。

接著是下位機,小安派連接 Wi-Fi 后開啟 tcp_server,然后監聽 8124 端口,上位機連接成功后,會首先發送 pc 信息,包括CPU型號,GPU型號,采用 json 字符串的格式發送。然后上位機定時向小安派發送內存、CPU、GPU、網速相關信息,小安派將其解析并更新UI。

尚未解決的問題

嗶哩嗶哩賬戶ID及天氣地址代碼固化在代碼中,需要更改源碼,之后將會使用 web server 功能,通過 post 修改上述參數,將相應參數保存至文件。

04、視頻演示

wKgZO2d7l-yAW3owAADeobgUCuo525.jpg

桌面助手_嗶哩嗶哩_bilibili?www.bilibili.com/video/BV1cw411K7mn/?spm_id_from=888.80997.embed_other.whitelist&t=85.12471&bvid=BV1cw411K7mn&vd_source=54c5db21948db2378659b7e8e42bafbf

05、軟件代碼

代碼放在 gitlab :https://link.zhihu.com/?target=https%3A//gitee.com/wangpeng25/desktop-ornaments

op-ornaments

審核編輯 黃宇

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

    關注

    2

    文章

    61

    瀏覽量

    39133
  • 開發板
    +關注

    關注

    26

    文章

    6289

    瀏覽量

    118048
  • 電容觸摸屏
    +關注

    關注

    1

    文章

    82

    瀏覽量

    23249
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    小安立式桌擺外殼設計制作

    小安-Eyes-R2,但是直沒什么時間好好的研究下。近期學習了下相關例程,感覺的很難
    的頭像 發表于 09-09 17:20 ?830次閱讀
    <b class='flag-5'>小安</b><b class='flag-5'>派</b>立式桌擺外殼設計制作

    如何使用樹莓與OpenCV實現面部和運動追蹤的云臺系統?

    大家好,這是樹莓和OpenCV的連載專題。使用樹莓與OpenCV實現姿態估計和面部特征點追蹤使用樹莓與OpenCV實現面部和運動追
    的頭像 發表于 08-14 17:45 ?1561次閱讀
    如何使用樹莓<b class='flag-5'>派</b>與OpenCV實現面部和運動追蹤的云臺系統?

    【開源硬件】小安AiPi-Eyes-R2詳細測評+DIY天氣時鐘

    接口-130W像素 1 顯示器-4.0寸-RGB接口40寸-像素480x480 1 咪頭-2pin-1.25mm間距-交叉絞線100mm 2 具體開箱流程照片如下: 環境搭建 因為之前筆者已經用過Windows開發小安-Eyes-S1了,
    的頭像 發表于 08-12 16:23 ?793次閱讀
    【開源硬件】<b class='flag-5'>小安</b><b class='flag-5'>派</b>AiPi-Eyes-R2詳細測評+DIY<b class='flag-5'>天氣</b>時鐘

    樹莓做一個指紋識別方案,難不難?

    讓我們在樹莓單板計算機上解鎖生物識別控制功能吧!生物識別技術利用每個人獨有的、不易復制的生理或行為特征進行身份驗證。地球上每個人的指紋都是獨無二的,讓我們起來探索指紋的奇妙用途吧!本文將介紹
    的頭像 發表于 08-09 13:14 ?897次閱讀
    <b class='flag-5'>用</b>樹莓<b class='flag-5'>派</b><b class='flag-5'>做一個</b>指紋識別方案,難不難?

    樹莓操作系統:版本、特性及設置完整指南!

    桌面環境的版本和輕量級、僅用于命令行的最小安裝版本。該操作系統設計高效且資源友好,是樹莓設備的理想選擇。樹莓操作系統的優勢√輕量高效該操作系統設計精簡,占用資源
    的頭像 發表于 07-28 18:26 ?1409次閱讀
    樹莓<b class='flag-5'>派</b>操作系統:版本、特性及設置完整指南!

    樹莓打造無人機,你需注意的事項!

    對于像我這樣的普通愛好者而言,能接觸到無人機是令人興奮的。盡管我可以直接購買現成的無人機,但身為DIY愛好者,我更感興趣的是編寫獨特的例程序,或對自建的無人機進行升級。因此,我的第一個問題是:我
    的頭像 發表于 07-14 17:49 ?2054次閱讀
    <b class='flag-5'>用</b>樹莓<b class='flag-5'>派</b>打造無人機,你需注意的事項!

    20任何人都能完成的樹莓酷炫項目!

    不知道如何利用你買的樹莓?這個小設備真的能當臺式電腦嗎?能當服務器嗎?能當廣播電臺嗎?當然可以!為了幫助你入門,我們精心挑選了這份樹莓應用指南,每個項目都在MakeUseOf上有詳細
    的頭像 發表于 07-03 17:10 ?4347次閱讀
    20<b class='flag-5'>個</b>任何人都能完成的樹莓<b class='flag-5'>派</b>酷炫項目!

    搭載代碼的樹莓進入國際空間

    前言通過歐洲宇航挑戰賽(EuropeanAstroPiChallenge),年輕人通過在國際空間(ISS)上的樹莓(RaspberryPi)計算機上運行代碼的獨特體驗,參與計算編程。歐洲宇航
    的頭像 發表于 06-19 17:11 ?1033次閱讀
    搭載代碼的樹莓<b class='flag-5'>派</b>進入國際空間<b class='flag-5'>站</b>!

    樹莓復古游戲,你會選哪一個

    復古游戲與樹莓單板計算機的組合十分常見。在樹莓項目列表中,幾乎都會包含至少復古游戲項目。復古游戲發行版讓在樹莓派上開啟復古游戲之旅變得輕而易舉,其中Batocera和Retro
    的頭像 發表于 06-16 16:56 ?1108次閱讀
    樹莓<b class='flag-5'>派</b>復古游戲,你會選哪<b class='flag-5'>一個</b>?

    樹莓分類器:樹莓識別不同型號的樹莓

    在本教程系列的第部分中,您將學習如何使用樹莓AI攝像頭來檢測不同的樹莓型號。本系列由DavidPlowman創建,他是樹莓工程師,專注于圖像處理硬件、攝像頭軟件和算法研究。您可
    的頭像 發表于 06-13 16:39 ?1300次閱讀
    樹莓<b class='flag-5'>派</b>分類器:<b class='flag-5'>用</b>樹莓<b class='flag-5'>派</b>識別不同型號的樹莓<b class='flag-5'>派</b>!

    樹莓“揪出”家里的耗電怪獸!

    在本應用中,我們將使用樹莓設置CE電流監測器,并通過網頁界面顯示電路的電流讀數。本項目使用的組件硬件組件樹莓2ModelBx112通道20安培電流監測控制器x1項目背景介紹在本
    的頭像 發表于 06-04 15:33 ?1524次閱讀
    <b class='flag-5'>用</b>樹莓<b class='flag-5'>派</b>“揪出”家里的耗電怪獸!

    HIPERFACE DSL編碼器通信協議介紹

    在工業自動化和智能制造快速發展的今天,編碼器在各類設備中扮演著關鍵角色,精準的位置和速度反饋是確保系統高效、穩定運行的基礎。HIPERFACE DSL作為種先進的編碼器通信協議,正逐漸成為眾多工業
    的頭像 發表于 05-23 14:16 ?2156次閱讀
    HIPERFACE <b class='flag-5'>DSL</b>編碼器通信協議介紹

    功德+1,小安-Eyes-S1做一個電子木魚

    2024積德累功,心想事成!接下來看看如何用小安-Eyes-S1做一個電子木魚。01GUI-Guider頁面設計先新建工程。直接進入U
    的頭像 發表于 04-09 18:38 ?981次閱讀
    功德+1,<b class='flag-5'>用</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-Eyes-S1<b class='flag-5'>做一個</b>電子木魚

    超酷的樹莓智能鏡項目,快來了解!

    ,這些樹莓智能鏡項目都非常值得看。制作能夠顯示實時天氣、新聞、旅行信息等內容的魔鏡是
    的頭像 發表于 03-25 09:33 ?1598次閱讀
    超酷的樹莓<b class='flag-5'>派</b>智能鏡項目,快來了解!

    安信可AI人臉識別開發板BW21-CBV-Kit驅動墨水屏

    HomeAssistant,實時查看Ai攝像頭畫面? 【教程】小安BW21-CBV-Kit——讀取 DHT 溫濕度傳感器 以下作品由安信可社區用戶 iiv制作 大家好,今天試著BW21-CBV-Kit點亮2.9寸墨水
    的頭像 發表于 03-06 08:47 ?874次閱讀
    <b class='flag-5'>用</b>安信可AI人臉識別開發板BW21-CBV-Kit驅動墨水屏