衡阳派盒市场营销有限公司

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>帶有ILI9341的2.4英寸LCD顯示屏的留言板

帶有ILI9341的2.4英寸LCD顯示屏的留言板

2022-11-10 | zip | 1.40 MB | 次下載 | 2積分

資料介紹

描述

描述

?

你知道這個問題嗎,你已經做飯了,你想讓所有的家人都來吃飯,但是沒有人對你的電話有反應,第三次在整個房子里大喊大叫后沒有任何反應你就走了(有點生氣,食物同時燒焦或變冷)在樓上發現您的孩子戴著耳機在畫畫?

這個項目是我對這個問題的回答!也許它會在類似的情況下幫助你。

問題

喊叫作為溝通方式并不總是最有效的解決方案。

解決方案

?

理念

因為我女兒最喜歡聽不見周圍的聲音,所以我想創建一個留言板,有很多閃爍的燈光來引起我女兒的注意,讓她閱讀上面的信息。留言板也應該有不同類型的消息,這樣我的女兒就可以區分她是必須立即做出反應還是有不著急的任務。這應該是一種尊重我孩子隱私的方式,也應該讓他了解不同的話題此外,董事會應該有可能做出回應。

因為我不希望我的女兒擁有自己的智能手機并且我想聯系她,如果她在她的房間里,我認為固定留言板是正確的解決方案。我和我的妻子需要一個我們可以在整個房子里使用的對應物。在這種情況下,Android 應用程序是正確的決定。

組件

為了實現前面描述的想法,我需要很多不同的組件來顯示一些消息,有燈光和聲音來吸引我女兒的注意力,還有按鈕來獲得一些響應。

顯示器

為了顯示時間、消息和響應文本等信息,我將使用帶有連接模塊ILI9341的 2.4 英寸 LCD 顯示屏

pYYBAGNsSUCAQvXrAABOuGr-kYo168.png
顯示器
?

燈光

為了引起我女兒的注意,我將使用 NeoPixel LED 環。除了閃爍功能,我將使用它來制作時鐘。

壓電蜂鳴器

為了在我女兒聽不到音樂的情況下發出聲音,我會使用壓電蜂鳴器。

按鈕

使用該按鈕,我們可以在主視圖和響應視圖之間切換顯示屏上的屏幕。

留言板應用程序

在下一節中,我將介紹ESP32上實現留言板所需的所有功能

MQTT 連接

要在留言板和 android 應用程序之間進行通信,我需要在ESP32上設置 wifi 連接。作為通信協議,我將使用MQTT 。如何設置MQTT 代理請查看我的項目 my_smarthome#1。我還將my_smarthome#1項目中的相同代碼用于ESP32上的MQTT連接。此外,我使用NTP客戶端來獲得正確的時間。

poYBAGNsSUmAK36IAAEGWxBut6c843.png
MQTT 連接
?

為了通過MQTT接收一些數據,我們需要定義一個回調函數。使用這個函數,我們獲取主題有效負載并將它們保存在全局變量中,以便在主程序中使用它們。

pYYBAGNsSUuAAIGRAABYIYitizQ426.png
MQTT 變量和回調函數
?

為了通過MQTT發送一些數據,我們需要定義一個名為sendMQTTMessage() 的發布者函數。此函數獲取響應文本并將其通過固定主題發送到遠程設備。

pYYBAGNsSU6AaxaEAAAlW1APtDk749.png
發布一些數據
?

時鐘

為了在留言板上實現數字時鐘,我編寫了一些函數來獲取所需格式的時間。

poYBAGNsSVGAa66LAAA2cResECo547.png
獲取時間()
?

getTime()函數中,我以ISO 8601之后的格式從NTP服務器獲取時間作為字符串。

pYYBAGNsSVSAEbIhAAAot-i1tJg202.png
數碼時鐘
?
poYBAGNsSVaAHcgWAABKxz5_iGQ816.png
小時和分鐘
?

要將 LED 環用作時鐘,我需要將小時和分鐘分開。為此,我編寫了getHours()getMinutes()函數。

pYYBAGNsSVmAMQTVAABsPW5rPpI605.png
模擬時鐘
?

LED環

為了在留言板上引起注意,我們讓 LED 環以不同的顏色閃爍。通過blink()函數,我們可以輕松地使 LED 高頻閃爍并改變顏色。

poYBAGNsSV2AOEAwAABRvL35rkQ007.png
眨眼()
?

此外,我們使用 LED 環來實現一種模擬時鐘,我們使用getHours()getMinutes()函數來獲取當前時間。LED 環的一個像素將以粉紅色顯示小時,另一個以綠松石色顯示分鐘。如果分鐘和小時指針需要位于同一像素上,則會顯示兩種顏色的組合。

pYYBAGNsSWCAAXX4AAFcjvHA4LI428.png
模擬時鐘和響鈴
?

如果有新消息到達,將調用ringAlarm ()函數。在這種情況下,LED 環將以不同的顏色逐個像素閃爍。以便將注意力吸引到留言板。

按鈕

為了在單擊按鈕后獲得快速反應,我們定義了一些中斷服務例程(ISR)。ISR 應該總是非???,因為主程序和其他較低的先前 ISR 將被中斷或阻止該過程。這就是為什么我們總是通過IRAM_ATTR定義將此函數加載到 RAM 中的原因。為了使按鈕去抖動,我們總是檢查自上次中斷消失以來已經過去了多少毫秒。如果超過 200 毫秒,我們將運行 ISR。

pYYBAGNsSWKAda0tAACXuKi3mGY476.png
按鈕
?

顯示器

顯示屏是留言板的核心。在這里,我們將看到新消息到達、一個數字時鐘和一個用于選擇響應文本的屏幕。為了智能使用固定在留言板上的顯示功能,我定義了很多功能。

poYBAGNsSWSAYvsUAABZzumOkOE853.png
標題文本()和時鐘文本()
?

主屏幕以標題文本和數字時鐘為主。為了實現這一點,我定義了headerText()clockText()函數。如果有消息到達,主屏幕將會改變。首先,根據消息的主題,顯示屏將閃爍紅色、黃色或綠色。這里我定義了三種:

  • 緊急(紅色)
  • 任務(黃色)
  • 信息(綠色)

之后,消息文本將顯示在屏幕上。為此,我編寫了alarm() 、task() information()messageText()函數。前三個幾乎相同,只是屏幕的顏色發生了變化。報警功能還有一個特點,就是壓電蜂鳴器會發出蜂鳴聲。

poYBAGNsSWeALAnlAADiJr4vXhI649.png
消息到達函數
?

單擊黃色按鈕后將顯示響應屏幕。在這里,我們可以看到一些要回答的默認文本。

?

poYBAGNsSWqAMmIoAADeTyR0xjg818.jpg
響應屏幕
?

這是通過responseScreen()函數實現的。

pYYBAGNsSW2AdTsaAABd5K6mWy0798.png
響應屏幕()
?

通過單擊綠色按鈕,我們將更改下一個文本文件的課程。這以橙色矩形顯示給用戶。矩形將由drawChooseBox()函數繪制。

pYYBAGNsSW-ATUoTAAAUNJvSm3w148.png
drawChooseBox()
?

設置

現在我們必須設置所有組件。在這里,我們點亮 LED 環為用戶提供光學反饋,然后我們將連接到 wifi,設置 MQTT、NTP 連接,啟動顯示并打印“正在啟動..”。比我們必須為按鈕和壓電蜂鳴器設置數字引腳。

poYBAGNsSXOAYhviAAC-Mksz5js781.png
設置
?

主循環

現在我們必須定義程序的邏輯。在這里,我們必須將我們之前定義的所有小程序部分組合成一個邏輯過程。

在第一部分中,我們開始通信并顯示帶有時鐘的主屏幕,并定義如果消息到達特定主題時會發生什么。例如,您可以看到,如果有緊急消息到達,我們會調用alarm()函數。報警后,我們將顯示標題文本、消息文本和時鐘。

poYBAGNsSXWAXEEZAADPt7ASGO8145.png
循環中的主屏幕
?

在第二部分中,我們定義如果按下黃色按鈕會發生什么。首先,我們將切換到響應屏幕。選擇第一個文本。

poYBAGNsSaaAF9TCABFePTi7VcQ168.jpg
響應屏幕
?

如果按下綠色按鈕,則計數器將增加,并且依賴于計數器,將選擇另一個文本。如果計數器大于 5,計數器將被重置為零。所以選擇框會再次跳轉到第一個文本。

如果再次按下黃色按鈕,視圖將跳回主屏幕。如果計數器介于 0 和 4 之間,則留言板將發送相應的消息,如果大于 4,則屏幕將跳回而不發送消息。

pYYBAGNsSamADrJqAAEOz9MFI68700.png
循環中的響應屏幕
?

安卓應用

要將消息發送到留言板,我想使用一個 android 應用程序。這是我編寫的第一個 android 應用程序,所以如果您發現一些需要改進的地方,請告訴我 :)。

pYYBAGNsSauAIIv6AAEh64Xi4Vg772.jpg
安卓應用
?

為了讓每個人都能本能地使用用戶界面,我搜索了一個消息框架,它實現了像 WhatsApp 或 Instagram(UX)這樣的 UI。為此,我找到了 stfalcon-studio/ChatKit,這是一個用于快速實現聊天的優秀庫。

首先,我們將在Android Studio中創建一個新項目并選擇一個Basic Activity作為模板。

poYBAGNsSa6ANi_kAACMcSOvNN0451.png
項目模板
?

現在 Android Studio 將為我們創建一個項目結構。你會發現很多實現MVC 模式的默認文件。

活動在這里是應用程序的一種入口點,在其他上下文中將是主要的。在移動應用程序中,您并不總是具有相同的入口點,因為應用程序可以從另一個應用程序,在另一個活動中啟動。在我們的例子中,我們只需要一項活動。

在布局文件夾中,您將找到一些定義應用程序視圖的 xml 文件。在 Android Studio 中,您可以在代碼或設計上下文中更改此文件。

AndriodManifest.xml定義有關您的應用程序基本信息。例如,您的應用程序需要正確運行的權限。在我們的例子中,我們需要 INTERNET、ACCESS_NETWORK_STATE、WAKE_LOCK 和 READ_PHONE_STATE 權限。

poYBAGNsSbGAOSrpAACqdE0oxtE372.png
AndroidManifest.xml
?

build.gradle文件中,您為構建過程定義應用程序的依賴項。這里我們需要包含pahoChatKit框架。

poYBAGNsSbSAdNDeAADSCNnG_f0966.png
構建.gradle
?

現在讓我們開始開發應用程序。一開始我們可以設計應用程序的 UI。為此,在布局上單擊鼠標右鍵,然后按New->Fragment->Fragment(Blank)。并將其命名為 message_fragment.xml。

pYYBAGNsSbeADLHbAAEHV5wx7ME746.png
創建一個新片段
?

要使用 C hatKit框架,請將以下小部件包含到您的message_fragment.xml中。


   android:id="@+id/messagesList"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:layout_above="@+id/input" />
pYYBAGNsSbuANtigAACQhRDKt0Q936.png
ChatKit 小部件
?

現在單擊“設計”按鈕并查看您的工作。

pYYBAGNsSb2AQAA6AAAt98cwz04581.png
基本結構
?

現在我們有了應用程序的基本結構。但是因為我們想通過MQTT發送消息,所以我們需要一個主題。因為留言板只對三個主題做出反應,我們將通過單選按鈕實現選擇,但同時只有一個應該處于活動狀態。為此,我們首先將一個 RadioGroup 拖到視圖中,然后將三個 RadioButton 拖到該組中。

poYBAGNsScCAH8vcAACEqC8YWGI981.png
單選按鈕
?

現在將按鈕命名為緊急、任務信息,例如我們為留言板定義的主題。此外,您還必須像文本一樣設置按鈕的 id。現在轉到 xml 文件的代碼視圖。

通過id ,我們可以獲取有關 java 類中按鈕狀態的信息。此外,我們將定義一個函數名稱,如果單擊RadioButton將調用該函數名稱。為了獲得默認值,我們將緊急按鈕設置為選中:true 。

poYBAGNsScOABZJRAACA99nvAHU194.png
主題電臺組
?

現在我們可以開始對按鈕的控制器進行編程了。首先,我們將MainActivity.java中定義一個私有靜態變量 topic

pYYBAGNsScWAJZrcAAAP2g7zz8E051.png
話題
?

并且必須實現onRadioButtonClicked -函數,如果單擊RadioButton將調用該函數。在這里,我們RadioButton 的id進行switch-case 。如果一個案例真的,我們設置相應的主題。此外,我們定義了一個getTopic函數來查詢主題。在這里,我們還必須定義在調用函數時如果沒有單擊任何按鈕會發生什么。在我們的例子中,我們在按鈕定義中將默認主題設置緊急。

poYBAGNsScmANAlEAABcVE7S6o8098.png
onRadioButtonClicked 函數
?

在這之后,我們可以關閉MainActivity.java并開始實現名為MessageFragment.javamessage_fragment.xml的控制器。首先我們需要實現MQTT框架paho。一開始我們必須定義一個clientId和一個客戶端來啟動代理和我們的移動設備之間的連接。

pYYBAGNsScyARP3OAAAWGGh73Fs520.png
MQTT 客戶端
?

在此之后,我們定義一個啟動連接的函數。我們稱之為startMQTT()。

pYYBAGNsSc-Af40wAACU6G8Yj2c249.png
startMQTT 函數
?

在此函數中,我們將首先定義代理地址和MQTT端口。在這種情況下,我使用我在my_smarthome#1項目中設置的本地MQTT代理。在這里,您可以閱讀如何在樹莓派上設置MQTT代理。

然后我們嘗試連接到代理,如果成功,我們會通過祝酒詞向用戶提供簡短的反饋。還將訂閱我們在留言板上實現響應主題。

對于訂閱,我們還需要一個函數。我們稱之為subscribeMessage()。這里我們必須定義服務質量 (qos)我們想要訂閱的主題。為了獲得新消息的通知,我們必須設置一個回調函數,如果有新消息到達,它將調用onMessage () 函數。

pYYBAGNsSdSAIOKZAACuVwVcOMo049.png
訂閱消息()
?

onMessage()函數中,我們必須將到達的消息轉換為String 。我們還需要為ChatKit消息視圖設置用戶和日期。

poYBAGNsSdaAfw0iAABL6Jvpud4031.png
onMessage()
?

要將一些數據發送到留言板,我們還需要定義一個publishMessage()函數。在此函數中,我們轉換給定的有效負載并將其發布到主題上。

poYBAGNsSdiAT5IrAAApJ9vyPg0307.png
發布消息()
?

實現MQTT功能后,我們可以開始實現ChatKit -Framework。要使用這個庫,我們需要定義一個User和一個Message類。

讓我們從實現IUser接口User開始。

pYYBAGNsSduAb-KRAABZXsjgiCw276.png
用戶類
?

該類描述了消息用戶的信息,例如用戶id、用戶名和頭像。我們在這種情況下不使用的最后一點,并且在返回 null 時不會在消息視圖中顯示任何內容。

Message實現了IMessage接口,描述了消息的信息,如用戶、創建日期、id和內容。

poYBAGNsSd6Ac31PAABvUGiN5-o491.png
消息類
?

現在讓我們在MessageFragmant.java 中實現它。一開始我們必須定義一些對象,這些對象將描述消息流。

pYYBAGNsSeCARogHAAA_uQoOauI065.png
?

首先,我們使用視圖message_fragment.xml實現和鏈接對象。在 onSubmit 函數中,我們從用戶那里獲取輸入,將其顯示在屏幕上并將其發送到留言板。

pYYBAGNsSeOAawjrAACuU879pKw993.png
?

留言板案例

我真的很高興我的大哥作為產品經理花了這么多時間為留言板開發了一個功能強大且設計精良的案例。

?
?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1A7159和A7139射頻芯片的資料免費下載
  2. 0.20 MB   |  55次下載  |  5 積分
  3. 2PIC12F629/675 數據手冊免費下載
  4. 2.38 MB   |  36次下載  |  5 積分
  5. 3PIC16F716 數據手冊免費下載
  6. 2.35 MB   |  18次下載  |  5 積分
  7. 4dsPIC33EDV64MC205電機控制開發板用戶指南
  8. 5.78MB   |  8次下載  |  免費
  9. 5STC15系列常用寄存器匯總免費下載
  10. 1.60 MB   |  7次下載  |  5 積分
  11. 6模擬電路仿真實現
  12. 2.94MB   |  4次下載  |  免費
  13. 7PCB圖繪制實例操作
  14. 2.92MB   |  2次下載  |  免費
  15. 8零死角玩轉STM32F103—指南者
  16. 26.78 MB   |  1次下載  |  1 積分

本月

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  452次下載  |  免費
  3. 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  141次下載  |  1 積分
  5. 3基于STM32單片機智能手環心率計步器體溫顯示設計
  6. 0.10 MB   |  137次下載  |  免費
  7. 4A7159和A7139射頻芯片的資料免費下載
  8. 0.20 MB   |  55次下載  |  5 積分
  9. 5PIC12F629/675 數據手冊免費下載
  10. 2.38 MB   |  36次下載  |  5 積分
  11. 6如何正確測試電源的紋波
  12. 0.36 MB   |  19次下載  |  免費
  13. 7PIC16F716 數據手冊免費下載
  14. 2.35 MB   |  18次下載  |  5 積分
  15. 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統EMC試驗方法及要求
  16. 1.97 MB   |  8次下載  |  10 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935121次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73810次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
太阳城亚州| 百家乐官网送彩金网络| 大杀器百家乐学院| 波浪百家乐官网游戏中| 正网开户| 大发888博彩网站| 24是吉还是凶| 澳门百家乐官网洗码提成查询| 狮威百家乐娱乐网| 百家乐官网建材| 百家乐官网境外赌博| 钱大发888游戏下载| 欧洲百家乐的玩法技巧和规则| 乐宝百家乐游戏| 百家乐官网电子发牌盒| bet365最快最稳定| 威尼斯人娱乐场28gxpjwnsr| 百家乐园百利宫娱乐城信誉好...| 百家乐官网博彩网太阳城娱乐城| 大发888注册官方网站| 大发888赢钱| 皇冠网百家乐阿| 威尼斯人娱乐客户端| 十三张百家乐的玩法技巧和规则 | 百家乐路单怎样| 大亨百家乐娱乐城| 九州百家乐官网的玩法技巧和规则| 在线百家乐官网下注| 百家乐官网代理荐| 百家乐官网投注平台导航网| 百家乐官网玩法既规则| 皇冠百家乐官网代理网| 百家乐官网高手看百家乐官网| 澳门百家乐官网海星王娱乐城 | 大发888娱乐城下栽| 大发888 官方| 台中市| 博狗玩百家乐官网好吗| 超级百家乐官网2龙虎斗| 澳门百家乐官网十大缆| 游戏机百家乐官网下载|