一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

聚豐項(xiàng)目 > 基于AB32VG1的墨水屏智能日歷

基于AB32VG1的墨水屏智能日歷

項(xiàng)目背景 本項(xiàng)目是【RT-Thread x RISC-V 應(yīng)用創(chuàng)新大賽】參賽項(xiàng)目之一。 本項(xiàng)目有什么創(chuàng)新點(diǎn)(實(shí)現(xiàn)了哪些功能)? 1. 相比紙質(zhì)日歷,無需手動(dòng)翻頁; 2. 相比紙質(zhì)日歷,可以顯示實(shí)時(shí)天氣信息; 3. 相比LCD/OLED屏的同類產(chǎn)品,電子墨水屏的功耗更低,更節(jié)能環(huán)保;

xusiwei1236 xusiwei1236

分享
1 喜歡這個(gè)項(xiàng)目
團(tuán)隊(duì)介紹

xusiwei1236 xusiwei1236

團(tuán)隊(duì)成員

許思維 軟件工程師

分享
項(xiàng)目簡介
項(xiàng)目背景 本項(xiàng)目是【RT-Thread x RISC-V 應(yīng)用創(chuàng)新大賽】參賽項(xiàng)目之一。 本項(xiàng)目有什么創(chuàng)新點(diǎn)(實(shí)現(xiàn)了哪些功能)? 1. 相比紙質(zhì)日歷,無需手動(dòng)翻頁; 2. 相比紙質(zhì)日歷,可以顯示實(shí)時(shí)天氣信息; 3. 相比LCD/OLED屏的同類產(chǎn)品,電子墨水屏的功耗更低,更節(jié)能環(huán)保;
硬件說明

硬件部分

本項(xiàng)目主要包括五個(gè)硬件模塊:

  1. AB32VG1開發(fā)板,作為主控制器控制其他外設(shè);

  2. ESP8266 WiFi模塊,用于聯(lián)網(wǎng)獲取時(shí)間和實(shí)時(shí)天氣信息;

  3. 微雪的Arduino墨水屏擴(kuò)展板,用于驅(qū)動(dòng)墨水屏,同時(shí)帶有一個(gè)128KB的SPI RAM芯片(用于作為顯存),和一個(gè)T-Flash卡槽(沒用到);

  4. 4.2英寸三色墨水屏,分辨率400x300,用于顯示畫面,一幀畫面至少需要占用45KB 內(nèi)存(400 x 300 x 3 / 8 = 45000);

  5. W25Q128閃存模塊,容量16MB,用于存儲中文字體;


硬件模塊間連接

五個(gè)硬件模塊之間的整體連接關(guān)系如下圖:

模塊連接關(guān)系



開發(fā)板引腳分配

開發(fā)板和外設(shè)的引腳連接關(guān)系(電源部分):

外設(shè)供電

主要使用到的資源,以及開發(fā)板和外設(shè)的引腳連接關(guān)系(控制部分):

引腳連接關(guān)系

具體使用情況說明:

  1. RTC

    • 用于保存當(dāng)前時(shí)間和日期,以及時(shí)間的自動(dòng)遞增;

  2. UART1

    • 連接ESP-01S模塊,用于實(shí)現(xiàn)聯(lián)網(wǎng)獲取時(shí)間和實(shí)時(shí)天氣信息;

  3. SPI1

    • 連接墨水屏擴(kuò)展板,用于和上面的SRAM芯片、墨水屏芯片通信;

  4. GPIO

    • 連接墨水屏擴(kuò)展板上的RAM_CS,用于輸出SRAM的片選信號

    • 連接墨水屏擴(kuò)展板上的EPD_CS,用于輸出墨水屏的片選信號;

    • 連接墨水屏擴(kuò)展板上的EPD_DC,用于輸出墨水屏的數(shù)據(jù)/命令信號;

    • 連接墨水屏擴(kuò)展板上的EPD_RST,用于輸出墨水屏的復(fù)位信號;

    • 連接墨水屏擴(kuò)展板上的EPD_BUSY,用于墨水屏的繁忙狀態(tài)的輸入;

    • 連接W25Q128模塊的CS,用于輸出閃存芯片的片選信號;

    • 開發(fā)板自帶的三個(gè)按鍵,用于作為輸入按鍵;

  5. 3V3/GND

    • 連接ESP-01S模塊,用于向ESP8266芯片供電;

    • 連接墨水屏擴(kuò)展板,用于向SRAM和墨水屏供電;

    • 連接W25Q128模塊,用于向閃存芯片供電;


軟件說明

軟件部分

本項(xiàng)目的軟件部分基于RT-Thread物聯(lián)網(wǎng)操作系統(tǒng),除了本項(xiàng)目開發(fā)的業(yè)務(wù)邏輯代碼外,還使用了一些RT-Thread 內(nèi)核API、一些RT-Thread軟件包,以及一些三方組件,下面分別介紹。

主代碼倉:https://gitee.com/swxu/e-calender.git

下載命令:git clone --recursive https://gitee.com/swxu/e-calender.git

部分組件通過git submodule引用了其他代碼倉,具體見.gitmodules文件;


組件框圖

軟件各部分的組件框圖如下:

軟件組件圖


業(yè)務(wù)代碼

本項(xiàng)目開發(fā)的業(yè)務(wù)代碼位于applications目錄下,具體文件功能如下(大部分是.c和.h兩個(gè)文件):

  1. amap_location_api 高德IP定位API;

  2. amap_weather_api 高德天氣預(yù)報(bào)API;

  3. chinese_date_api 農(nóng)歷查詢API;

  4. flash_init.c 閃存分區(qū)掛載(依賴RT-Thread內(nèi)核的fatfs支持);

  5. http_api_utils http工具函數(shù);

  6. hzk16 HZK16漢字字體相關(guān)接口;

  7. hzk16_data HZK16漢字字體數(shù)據(jù);

  8. hzk16_setup 將HZK16字體安裝到閃存分區(qū);

  9. key_task 按鍵掃描任務(wù);

  10. kvdb 封裝了FlashDB里面的KVDB,更容易使用;

  11. main.c 程序入口;

  12. network_task 網(wǎng)絡(luò)任務(wù),用于處理網(wǎng)絡(luò)請求(由于UART串口傳輸速度較慢,查詢較慢,所以單獨(dú)放在一個(gè)任務(wù)里面執(zhí)行);

  13. time_utils 時(shí)間處理工具函數(shù);

  14. ui_consts UI常量;

  15. ui_draw UI繪制,界面繪制邏輯單獨(dú)放在了這里面;

  16. ui_task UI任務(wù),調(diào)用ui_draw實(shí)現(xiàn)相關(guān)功能;



RT-Thread軟件包

本項(xiàng)目使用到的RT-Thread軟件包位于packages目錄下:

  1. bluetrum_sdk

    • RT-Thread Studio創(chuàng)建項(xiàng)目時(shí)自帶,包含了二進(jìn)制的libhal.a;

  2. at_device

    • 提供ESP8266 AT命令構(gòu)造和響應(yīng)解析功能,實(shí)現(xiàn)聯(lián)網(wǎng);

    • 修改:將所有sscanf都替換為atoi和strtol了(測試過程中間發(fā)現(xiàn),每次send/recv會(huì)crash在sscanf里面);

    • 修改后代碼倉:https://gitee.com/swxu/fal.git

  3. netutils

    • 提供網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)的實(shí)現(xiàn),實(shí)現(xiàn)從網(wǎng)絡(luò)獲取時(shí)間、設(shè)置時(shí)間;

  4. webclient

    • 提供了超文本傳輸協(xié)議(HTTP)客戶端的實(shí)現(xiàn),用于天氣查詢請求的發(fā)送和接收;

  5. cJSON

    • 一個(gè)輕量級的純C實(shí)現(xiàn)的JSON字符串解析庫,用于解析天氣查詢響應(yīng)的JSON字符串;

    • 未做修改

  6. FlashDB

    • 一個(gè)嵌入式數(shù)據(jù)庫,提供了鍵值數(shù)據(jù)庫(KVDB)和時(shí)序數(shù)據(jù)庫(TSDB)兩類API,同時(shí)提供了一些msh的測試命令;

    • 修改:開啟了DEBUG日志,bench命令中的KV測試次數(shù)改為100

    • 代碼倉:https://gitee.com/swxu/FlashDB.git

  7. fal

    • 閃存抽象層,F(xiàn)lashDB依賴的軟件包,提供了閃存操作的封裝和抽象,同時(shí)提供了一些msh的測試命令;

    • 修改:添加了w25q128的移植文件;

    • 代碼倉:https://gitee.com/swxu/fal.git

  8. gbk2utf8

    • GBK和UTF8互相轉(zhuǎn)換,HTTP API返回的漢字是UTF8編碼的;



其他三方軟件包

本項(xiàng)目使用到的其他三方軟件均來自外設(shè)模塊供應(yīng)商,代碼放在board目錄下,包括:

  1. epaper

    • 微雪墨水屏擴(kuò)展板驅(qū)動(dòng)軟件包,來自微雪的E-Paper_Shield頁面;

    • 刪除了無用的代碼,包括不是4.2寸屏幕的代碼、以及SD卡驅(qū)動(dòng);

    • 修改了GPIO相關(guān)的代碼,改為用RT-Thread的pin驅(qū)動(dòng)接口;

    • 修改了SPI相關(guān)的代碼,改為用重新實(shí)現(xiàn)的bsp_spi接口;

    • 添加了基于RT-Thread finsh的墨水屏測試程序(繪制棋盤格、全屏填充、輸出引腳測試),可以在shell模式下通過命令調(diào)用執(zhí)行;

  2. w25qxx

    • W25Q128 閃存驅(qū)動(dòng),來自微雪的W25QXX DataFlash Board頁面;

    • 修改了GPIO向代碼,改為使用RT-Thread的pin驅(qū)動(dòng)接口;

    • 修改了SPI相關(guān)代碼,改為用重新實(shí)現(xiàn)的bsp_spi接口;

    • 添加了基于RT-Thread msh的RAM測試程序(字模式、頁模式、流模式),可以在shell模式下通過命令調(diào)用執(zhí)行;

  3. 重新實(shí)現(xiàn)的bsp_spi.h和bsp_spi.c

    • 使用了greedyhao大佬提供的硬件SPI初始化代碼

    • SPI接收和發(fā)送,使用了Bluetrum技術(shù)群中的SDK_AB53XX_V061_20190103.zip里面的相關(guān)代碼;

    • greedyhao大佬提供的驅(qū)動(dòng),實(shí)現(xiàn)部分全部在libhal.a中,暫時(shí)不太好移植到RT-Thread驅(qū)動(dòng)框架上;


演示效果

IMG_top.png

評論區(qū)(2 )
  • zhd0305: 好犀利??!

    回復(fù)

  • xusiwei1236: 說明:
    1. 圖片上的日期是因?yàn)橐婚_機(jī)沒有聯(lián)網(wǎng)同步時(shí)間(陽歷和農(nóng)歷對應(yīng)關(guān)系會(huì)緩存在閃存里面,如果閃存里面沒有才會(huì)聯(lián)網(wǎng)查詢),默認(rèn)的RTC時(shí)間是2021年1月29號;
    2. 視頻是21號晚上錄制的,這個(gè)版本里面添加了開機(jī)同步時(shí)間的代碼,所以插上電等一會(huì)刷新出來的就是當(dāng)前日期;

    回復(fù)