嵌入式香橙派人工智能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.mzph.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;的…