嵌入式香橙派人工智能AI開發板詳細操作與遠程聊天實現

? ?大家好,今天給大分享一個OrangePi AIpro(20T)采用昇騰作為主控芯片的開發板,開箱以及對應功能的詳細實現。

第一:板子基本介紹

? ? ?接通電源給對應的開發板上電,觀察其中的現象,如下:

? ? ? 注意事項:開發板上有電源對應的Type-C接口,不要接錯了。

? ? ?

1:控制啟動設備3個撥碼開關

? ? ? 開發板的linux系統下支持從TF卡、EMMC和SSD啟動,具體從哪個設備啟動是通過3個撥碼開關進行選擇的,啟動之前要檢查一下。? ?

? ? ?從圖上可以清晰的看出來對應系統的啟動方式。

? ? ? 注意事項:切換撥碼開關后必須重新拔插電源上電才能啟動設備選擇生效。通過開發板復位按鍵來復位系統是不會讓撥碼開關設置配置生效的。

2:開發利用調試串口的方法?

? ? ? 開發板默認使用uart0做為調試串口。需要注意的是,uart0的tx和rx引腳同時接到了兩個地方,所以有兩種使用調試串口的方法:

? ? ? ?第一種方法:

? ? ? ?uart0 的 tx rx 引腳接到了 40 pin 擴展接口中的 8 號和 10 號引腳,此種方式需要準備一個 3.3v USB TTL 模塊和相應的杜邦線,然后才能正常使用開發板的調試串口功能。

? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? 第二種方法:

? ? ? ? ?uart0 的 tx rx 引腳還接到了開發板的 CH343P 芯片上,再通過 CH343P 芯片引出到 Type-C USB 接口上。此種方式只需要一根 Type-C USB 接口的數據線將開發板連接到電腦的 USB 接口就可以開始使用開發板的調試串口功能了,無需購買 USB TTL 模塊。這種方法是推薦的方法。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? 注意事項:上面的兩種方式只能二選一,請不要同時使用。

第二:環境搭建與測試

1:Windows平臺使用調試串口方法

? ? ? ? ? ? ?1、直接安裝對應的超級終端軟件。

? ? ? ? ? ? ?2、選擇串口波特率為115200.

? ? ? ? ? ? ?3、點擊“OK”按鈕后會進入下面的界面,此時啟動開發板就能看到串口的輸出信息了。

2:利用Windows PC將linux鏡像燒寫到TF卡的方法

? ? ? 1、要有一張大容量的TF卡,TF 卡的傳輸速度必須為 class10 級或 class10 級以上,建議使用閃迪等品牌的 TF 卡。

? ? ? 2、然后把 TF 卡插入讀卡器,再把讀卡器插入電腦。

? ? ? 3、下載想要燒錄的 Linux 鏡像壓縮包。

? ? ? 4、下載用于燒錄 Linux 鏡像的軟件——balenaEtcher,下載地址為:

? ? ? ? ? ? ?https://www.balena.io/etcher/

? ? ? 5、進入 balenaEtcher 下載頁面后,點擊綠色的下載按鈕會跳到軟件下載的地方。

? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ?6、選擇下載 Portable 版本的 balenaEtcherPortable 版本無需安裝,雙擊打

開就可以使用。

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? 并進行雙擊打開。

? ? ? ? ? ? ??

? ? ? ? ? 7、使用 balenaEtcher 燒錄 Linux 鏡像的具體步驟如下所示:

? ? ? ? ?a. 首先選擇要燒錄的 Linux 鏡像文件的路徑。
? ? ? ? ?b. 然后選擇 TF 卡的盤符。
? ? ? ? ?c. 最后點擊 Flash 就會開始燒錄 Linux 鏡像到 TF 卡中。

? ? ? ? ?

? ? ? ? ??

? ? ? ? ? ? 8、成功燒錄完成后 balenaEtcher 的顯示界面如下圖所示,如果顯示綠色的指示圖

標說明鏡像燒錄成功,此時就可以退出 balenaEtcher ,然后拔出 TF 卡插入到開發板的 TF 卡槽中使用了。

? ? ? ? ? ? ??

注意事項:啟動系統前請確保撥碼開發撥到了TF卡啟動的位置了。撥碼開關的使用請參考說明。

3:Ubuntu Xfce桌面系統使用

? ? ? ? ?進入 Ubuntu 鏡像的下載鏈接后可以看到下圖所示的兩個 ubuntu 鏡像,他們的

區別是:
? ? ? ? ?1) minimal 鏡像是一個只有最基礎功能的鏡像,像 Linux 桌面、 CANN 和 AI 示例代碼等都沒有預裝。此鏡像只建議想自己從頭定制安裝 Linux 桌面和 AI 相關軟件的開發者使用。
? ? ? ? ? 2) desktop 鏡像預裝了 Linux 桌面、 CANN AI 示例代碼和一系列測試程序。如果想正常使用開發板的功能,請使用這個鏡像。本章的內容都是基于 desktop 鏡像編寫的。

? ? ? ? ? ? ? ?

? ? ? ? Linux系統功能適配情況:

? ? ? ? ? ? ??

4:利用開發板無線連接

? ? ? 1、使用 nmcli dev wifi 命令掃描周圍的 WIFI 熱點。

? ? ? ? ? ? 命令:nmcli dev wifi

? ? ? 2、然后使用 nmcli 命令連接掃描到的 WIFI 熱點,其中:

? ? ? a. wifi_name 需要換成想連接的 WIFI 熱點的名字。

? ? ? ?b. wifi_passwd 需要換成想連接的 WIFI 熱點的密碼。

? ? ? ? ? ? 命令:sudo nmcli dev wifi connect wifi_name passwordwifi_passwd

? ? 開發板中使用的交叉編譯工具鏈如下:

第三:香橙派開發板AI實現? ?

1、人工智能目標檢測

? ? ?SSD(Single Shot MultiBox Detector)是一種流行且高效的單階段目標檢測算法,它在處理速度和檢測精度之間取得了良好的平衡。與傳統的兩階段方法(如 R-CNN 系列)不同,SSD 在單個網絡前向傳遞中直接預測目標的邊界框和類別,無需先生成候選區域。這種方法不僅加快了目標檢測速度,而且簡化了檢測流程。

? ? ?將SSD人工智能算法(算法代碼詳見sample文件夾),放入歐拉實驗平臺,點擊運行。

? ??

實現現象如下:

2、人工智能實現文字識別

? ? ? ? 該人文字識別主要是將圖像中的文字區域轉化為字符信息,能夠提取豐富的信息特征,采用ResNet算法模型,提取網絡信息,其中包含轉換后的om模型和測試圖片,詳細實現如下:

? ? ?找到源碼,存放在歐拉平臺,雙擊點開。

? ? ?

? ? ? 打開圖片文字轉化代碼,利用CNN網絡提取豐富的特征信息,進行識別。

? ? 提示編譯成功的效果,注意觀察啟動的現象。

? 最終成功輸出的結果如下:

3、人工智能遠程聊天實現

? ? ? ?利用人工智能開發板作為服務器,收集遠程客戶端發送過來的信息,處理完畢之后也可以將對應的信息發送給客戶端,實現遠距離自由聊天功能。

? ? ? 詳細代碼如下(歡迎評論區交流學習)

? ? ? ?服務器代碼實現:

//服務器代碼的具體實現
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>//1聲明對應線程的個數
pthread_t pthread_max[5] = {0};void *broadcast_clt(void *arg)
{int i;long a = (long )arg;char buf[100] = {0};printf("a = %ld\r\n",a);//獲取客戶端的clifdint clifd = pthread_max[a];printf("clifd = %d\r\n",clifd);//獲取對應客戶端發過來的信息while(1){//獲取內容recvrecv(clifd,buf,100,0);printf("clifd = %d\r\n",clifd);//將獲取到的內容轉發給其他的客戶端for(i = 0; i < 5; i++){if((pthread_max[i] !=0) && (pthread_max[i] !=clifd)){//傳輸對應buf的內容send(pthread_max[i],buf, 100, 0);}}usleep(500);	}}int main(int argc , char *argv[])
{//定義變量int clifd;socklen_t addrlen=sizeof(struct sockaddr);long i;pthread_t tid[10];//2 定義實現socket函數int serfd = -1;int new_sfd = -1;serfd = socket(AF_INET, SOCK_STREAM, 0);//3 定義實現bind函數#define SERVER_IP "192.168.1.111"#define PORT_NUM 1111typedef struct sockaddr SA;typedef struct sockaddr_in SIN; SIN seraddr;SIN cliaddr;bzero(&seraddr,sizeof(SIN));  //功能類似memset()seraddr.sin_family=AF_INET;seraddr.sin_port=htons(PORT_NUM);seraddr.sin_addr.s_addr=inet_addr(SERVER_IP);  //對IP地址進行轉化//將服務器地址信息與套接字進行綁定//實現本機地址重復使用int ret;int reuse = 1;ret = setsockopt(serfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse));ret = bind(serfd,(SA*)&seraddr,sizeof(SA));if(ret == -1){perror("connect failed\r\n");exit(0);}//利用listen函數監聽ret = listen(serfd,10);if(ret == -1){perror("listen failed\r\n");exit(0);}while(1){//進入到循環函數里面完成通信clifd = accept(serfd,(SA*)&cliaddr,&addrlen);if(clifd == -1){perror("accept failed\r\n");exit(0);}printf("accept success\r\n");printf("clifd = %d\r\n",clifd);//保存一下對應的值for(i = 0; i < 5; i++){if(pthread_max[i] == 0){pthread_max[i] = clifd;pthread_create(&tid[i], NULL, broadcast_clt, (void *)i);break;}}}//收回對應的文件描述符close(serfd);for(i = 0; i < 5; i++){if(pthread_max[i] > 0){close(pthread_max[i]);}}exit(0);}

? ? ? 客戶端代碼具體實現:

//客戶端代碼實現
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <string.h>
#include <semaphore.h>
#include <stdlib.h>char send_buf[100] = {0};
char recv_buf[100] = {0};void * send_srv(void *arg)
{long a = (long)arg;  //文件描述符int b = (int)a;int send_len;//發生數據while(1){scanf("%s",send_buf);//發送對應的字符串send_len = send(b,send_buf,sizeof(send_buf),0);if(send_len == -1){perror("failed\r\n");exit(0);}printf("send success\r\n");}pthread_exit(NULL);
}void *recv_srv(void *arg)
{long a = (long)arg;  //文件描述符int b = (int)a;//接受數據while(1){recv(b,recv_buf,100,0);printf("recv_buf : %s\r\n",recv_buf);}pthread_exit(NULL);
}int main(int argc , char *argv[])
{//定義變量pthread_t tid1,tid2;//建立通信端口socketint serfd;serfd = socket(AF_INET,SOCK_STREAM,0);if(serfd == -1){perror("socket failed\r\n");exit(0);}//綁定對應的地址信息connect#define SERVER_IP "192.168.1.111"#define PORT_NUM 1111typedef struct sockaddr SA;typedef struct sockaddr_in SIN; SIN seraddr;bzero(&seraddr,sizeof(SIN));  //功能類似memset()seraddr.sin_family=AF_INET;seraddr.sin_port=htons(PORT_NUM);seraddr.sin_addr.s_addr=inet_addr(SERVER_IP);  //對IP地址進行轉化//將服務器地址信息與套接字進行綁定int ret;ret = connect(serfd,(SA*)&seraddr,sizeof(SA));if(ret == -1){perror("connect failed\r\n");exit(0);}//提示一下客戶端創建成功printf("connect success\r\n");long send_cfd = (long )serfd;pthread_create(&tid1, NULL, send_srv, (void *)send_cfd);pthread_create(&tid2, NULL, recv_srv, (void *)send_cfd);//等待對應的線程運行結束pthread_join(tid1,NULL);pthread_join(tid2,NULL);exit(0);}

?第一步:利用ubuntu中的sftp通信傳輸AI開發板

第二步:在AI開發板上編譯服務器代碼

? ?? ? ? 開發板上的編譯命令:

? ? ? ? ?aarch64-linux-gnu-gcc -pthread service.c -o ser??

第三步:在個人電腦上實現客戶端代碼編譯

第四:任意聊天具體實驗現象

第四:產品評價

? ? ? ?經過這兩天操作香橙派開發板,感觸頗深,硬件和系統的穩定性還是非常好的,基本上這塊板子的所有外設和人工智能的實例都操作完了,還是非常容易上手的。

? ? ? ?可以使用的操作系統也非常豐富,香橙派AiPro支持Ubuntu、openEuler等操作系統,這為用戶提供了更多的選擇空間,同時也方便了用戶根據自己的需求進行開發和部署。

? ? ? 總體感受:香橙派開發板性能優越,易于上手,各種開發工具包齊全,非常適合新手,后期將繼續分享優秀的人工智能項目,歡迎大家評論和相互交流學習。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/46444.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46444.shtml
英文地址,請注明出處:http://en.pswp.cn/web/46444.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于HAL庫的stm32的OLED顯示屏顯示(IIC)

OLED OLED&#xff0c;即有機發光二極管( Organic Light Emitting Diode )。OLED由于同時具備自發光&#xff0c;不需背光源、對比度高、厚度薄、視角廣、反應速度快、可用于撓曲性面板、使用溫度范圍廣、構造及制程較簡單等優異之特性&#xff0c;被認為是下一代的平面顯示器…

龍國專利局瑞數6

聲明(lianxi a15018601872) 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 前言(lianxi a…

富文本中提取信息并去除其中的HTML或XML標簽

要從富文本中提取信息并去除其中的HTML或XML標簽&#xff0c;可以使用不同的編程語言和庫。以下是一些流行語言中的示例方法&#xff1a; 1. Python&#xff08;使用BeautifulSoup&#xff09; BeautifulSoup是一個強大的Python庫&#xff0c;用于從HTML或XML文件中提取數據。…

巨魔商店(TrollStore)介紹與使用指南

iOS巨魔商店&#xff08;TrollStore&#xff09;介紹與使用指南 引言 在iOS系統中&#xff0c;App Store是官方唯一的應用下載渠道&#xff0c;但這也限制了用戶獲取非官方或破解版應用的可能性。然而&#xff0c;巨魔商店&#xff08;TrollStore&#xff09;的出現打破了這一…

配置和保護SSH

使用SSH訪問遠程命令行 描述Secure Shell SSH&#xff08;Secure Shell&#xff09; 是一種網絡協議&#xff0c;用于在不安全的網絡上安全地進行系統管理和數據傳輸。它最初由 Tatu Ylnen 于1995年設計&#xff0c;并成為保護網絡服務免受攻擊的標準。SSH提供了多種功能&…

開始構建我們自己的大語言模型:數據處理部分

關注本專欄&#xff08;NLP簡論&#xff1a;手搓大語言模型實踐&#xff09; 繼續學習從頭編寫、訓練自己的大語言模型。 接上集&#xff0c;本章我們將深入說一下大語言模型數據處理部分的細節&#xff0c;并直接提供本部分的完整代碼。 【配套資源】 暫時的詞匯表&#xff1…

GNN論文粗讀

論文 文章目錄 論文基于異構圖的GNN論文GNN領域論文環境領域GNN論文 隨緣更新 基于異構圖的GNN論文 Distance Information Improves Heterogeneous Graph Neural Networks:DOI: 10.1109/TKDE.2023.3300879 轉導和歸納任務&#xff0c;創新點&#xff1a;異構距離編碼HDE提高GN…

關于Vue中涉及到大量數據的級聯菜單樹狀結構的數據多選勾選頁面卡頓卡死問題

項目場景&#xff1a;如題 提示&#xff1a;有個需求&#xff0c;級聯菜單樹狀結構的數據高達3萬多條&#xff0c;多選&#xff0c;只需要最后一層級value 原因分析&#xff1a;頁面一下子渲染大量數據會導致瀏覽器內存暴漲100%&#xff0c;導致頁面卡死&#xff0c;而且eleme…

常見Linux目錄和配置文件

目錄 /boot/&#xff1a;開機配置文件&#xff0c;也是存放核心vmlinuz的地方 /bin/&#xff1a;系統可執行文件目錄&#xff0c;CentOS7后合并到/usr/bin中&#xff0c;并鏈接過去 /sbin/&#xff1a;系統管理員常用指令存放目錄&#xff0c;例如開關機、磁盤分區等指令&am…

基于SpringBoot+Vue的廣場舞團系統(帶1w+文檔)

基于SpringBootVue的廣場舞團系統(帶1w文檔) 基于SpringBootVue的廣場舞團系統(帶1w文檔) 廣場舞團&#xff0c;為用戶隨時隨地查看廣場舞團信息提供了便捷的方法&#xff0c;更重要的是大大的簡化了管理員管理廣場舞團信息的方式方法&#xff0c;更提供了其他想要了解廣場舞團…

基于Trace的類型特化動態語言JIT編譯

文章目錄 Explain一、簡介二、一個跟蹤運行的示例三、跟蹤樹3.1 Traces類型特化&#xff08;Type specialization&#xff09; 3.2 Trace Trees3.3 黑名單&#xff08;Blacklisting&#xff09; 四、嵌套跟蹤樹4.1 Nesting Algorithm4.2 Blacklisting with Nesting 五、跟蹤樹優…

Java NIO 面試題及答案整理,最新面試題

Java NIO中的Buffer有哪些主要類型? Java NIO中的Buffer用于與NIO通道進行交互,作為基本的數據容器。主要類型包括: 1、ByteBuffer: 最常用的類型,用于存儲字節數據。 2、CharBuffer: 用于存儲字符數據。 3、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、Short…

【Pytorch】一文向您詳細介紹 torch.randn_like()

&#x1f389;&#x1f525;【Pytorch】一文向您詳細介紹 torch.randn_like() &#x1f525;&#x1f389; 下滑即可查看博客內容 &#x1f308; 歡迎蒞臨我的個人主頁 &#x1f448;這里是我靜心耕耘深度學習領域、真誠分享知識與智慧的小天地&#xff01;&#x1f387; …

滑動窗口題目

題目描述&#xff1a; 計算兩個字符串str1和str2在給定的含有n個元素的字符串數組strs中出現的最短距離。 詳細解釋&#xff1a; 定義整數變量n&#xff0c;用于存儲字符串數組strs的長度。定義一個vector<string>類型的變量strs&#xff0c;用于存儲輸入的字符串。定義…

破解反爬蟲策略 /_guard/auto.js(一) 原理

背景 當用代碼或者postman訪問一個網站的時候&#xff0c;訪問他的任何地址都會返回<script src"/_guard/auto.js"></script>&#xff0c;但是從瀏覽器中訪問顯示的頁面是正常的&#xff0c;這種就是網站做了反爬蟲策略。本文就是帶大家來破解這種策略&…

輕松搞定一鍵切換主題色?分享 1 段優質 CSS 代碼片段!

本內容首發于工粽號&#xff1a;程序員大澈&#xff0c;每日分享一段優質代碼片段&#xff0c;歡迎關注和投稿&#xff01; 大家好&#xff0c;我是大澈&#xff01; 本文約 800 字&#xff0c;整篇閱讀約需 1 分鐘。 今天分享一段優質 CSS 代碼片段&#xff0c;輕松實現一鍵切…

4.3 最小二乘近似

一、最小二乘解 A x b A\boldsymbol x\boldsymbol b Axb 經常無解&#xff0c;一般是因為方程太多了。矩陣 A A A 的行比列要多&#xff0c;即方程要多余未知數&#xff08; m > n m>n m>n&#xff09;。 n n n 個列只能張成 m m m 空間的一小部分&#xff0c;除非…

spring中的依賴注入

文章目錄 spring中的依賴注入一、Autowired二、Qualifier三、Resource四、總結 spring中的依賴注入 這里主要講述三個注解裝配 一、Autowired 作用&#xff1a;自動按照類型注入。只要容器中唯一的一個bean對象類型和要注入的變量類型匹配&#xff0c;就可以注入成功。 如果i…

MySQL5.7社區版本在CentOS7系統上的安裝

MySQL5.7社區版本在CentOS7系統上的安裝 1.配合yum倉庫 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm 2.使用yum安裝MySQL5.7 yum -y install mysql-community-server 3.安裝…

面向鐵路、地鐵旅客信息系統(PIS)的上架型整機,鐵路專用M12網絡接口,滿足歐洲鐵路應用標準

上架型整機 2U 19寸上架型整機&#xff0c;采用高性能低功耗處理器&#xff0c;能應用在寬溫環境下&#xff0c;并滿足歐洲鐵路應用標準EN50155關于電磁兼容性&#xff0c;沖擊和振動測試試驗的要求&#xff0c;是一款面向鐵路、地鐵旅客信息系統&#xff08;PIS&#xff09;的…