嵌入式香橙派人工智能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://xiahunao.cn/news/3250187.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 组件插槽 slot 简单例子

https://andi.cn/page/621582.html

GZ032 信息安全管理与评估赛项参考答案-模块1任务二11-20

GZ032 信息安全管理与评估赛项参考答案-模块1任务二 后面的题可能有的地方没有验证但是步骤都对&#xff0c;第13个小题没有做跳过去了等下一期或者最后在做 文章目录 GZ032 信息安全管理与评估赛项参考答案-模块1任务二11.总公司和分公司今年进行IPv6试点&#xff0c;要求总公…

TikTok内嵌跨境商城全开源_搭建教程/前端uniapp+后端源码

多语言跨境电商外贸商城 TikTok内嵌商城&#xff0c;商家入驻一键铺货一键提货 全开源完美运营&#xff0c;接在tiktok里面的商城内嵌&#xff0c;也可单独分开出来当独立站运营 二十一种语言&#xff0c;可以做很多国家的市场&#xff0c;支持商家入驻&#xff0c;多店铺等等…

华为“铁三角模式”在数据类项目中的应用和价值

引言&#xff1a;随着信息技术的飞速发展&#xff0c;企业纷纷踏上数字化转型的道路&#xff0c;希望通过数据分析和智能决策来提升企业竞争力。在这一过程中&#xff0c;数据类项目成为关键&#xff0c;它们旨在构建高效的数据治理和分析平台&#xff0c;为企业决策提供有力支…

【Git远程操作】克隆远程仓库 https协议 | ssh协议

目录 前言 克隆远程仓库https协议 克隆远程仓库ssh协议 前言 这四个都是Git给我们提供的数据传输的协议&#xff0c;最常使用的还是https和ssh协议。本篇主要介绍还是这两种协议。 ssh协议&#xff1a;使用的公钥加密和公钥登录的机制&#xff08;体现的是实用性和安全性&am…

Linux网络——TcpServer

一、UDP 与 TCP 在现实生活中&#xff0c;Udp 类似于发传单&#xff0c;Tcp 类似于邮局的挂号信服务。 1.1 UDP&#xff08;用户数据报协议&#xff09; 无连接&#xff1a;发放传单时&#xff0c;你不需要提前和接受传单的人建立联系&#xff0c;直接把传单发出去。不可靠&…

ffmpeg ffplay.c 源码分析

1 ffplay.c的意义 ffplay.c是FFmpeg源码⾃带的播放器&#xff0c;调⽤FFmpeg和SDL API实现⼀个⾮常有⽤的播放器。 例如哔哩哔哩著名开源项⽬ijkplayer也是基于ffplay.c进⾏⼆次开发。 ffplay实现了播放器的主体功能&#xff0c;掌握其原理对于我们独⽴开发播放器⾮常有帮助…

1. LeetCode-数组和字符串

1.数组简介 1.1 集合、列表和数组 集合 集合定义&#xff1a;由一个或多个确定的元素所构成的整体。 集合的特性&#xff1a; 首先&#xff0c;集合里的元素类型不一定相同。 你可以将商品看作一个集合&#xff0c;也可以将整个商店看作一个集合&#xff0c;这个商店中有人…

如何学习Hadoop:糙快猛的大数据之路(利用GPT 学习)

目录 引言Hadoop是什么&#xff1f;学习Hadoop的"糙快猛"之道1. 不要追求完美&#xff0c;先动手再说2. 从简单的MapReduce开始3. 利用大模型加速学习4. 循序渐进&#xff0c;建立知识体系 构建您的Hadoop技能树1. 夯实基础&#xff1a;Linux和Java2. 深入理解HDFS3.…

C语言 函数

1. 函数是什么&#xff1f; 数学中我们常见到函数的概念。维基百科中对函数的定义&#xff1a;子序程 在计算机科学中&#xff0c;子程序是一个大型程序中的某部分代码&#xff0c;有一个或者多个语句块组成。它负责完成某项特定任务&#xff0c;而且相较于其他代码&#xff…

机械学习—零基础学习日志(高数05——函数概念与特性)

零基础为了学人工智能&#xff0c;真的开始复习高数 本小节讲解隐函数&#xff0c;有点神奇&#xff0c;我竟然完全没有隐函数记忆了。 隐函数 隐函数&#xff0c;我个人通俗理解就是&#xff0c;在复杂的环境里&#xff0c;发现纯净天地。例如&#xff0c;在外太空的某个大陆…

【electron】 快速启动electron 应用

学无止境&#xff1a; 最近在搞electron项目&#xff0c;最重要的是总结 &#xff0c;写下来总不会忘记&#xff0c;也希望给大家参考一下&#xff0c;有不对的地方希望大家多指点。 快速启动electron 应用 1 克隆示例项目的仓库 git clone https://github.com/electron/ele…

Python批量Word转PDF神器,让你从此轻松转换文档!

大家好&#xff01;今天我们来聊聊工作中可能遇到的一个“头大”问题&#xff1a;如何批量将Word文档转成PDF&#xff1f;是不是光听听都感觉头皮发麻&#xff1f; 不用担心&#xff0c;今天我们就来分享一个Python小技巧&#xff0c;让你在批量转换文档时再也不用抓狂&#x…

实验06 持续集成测试

知识点 集成测试定义 集成测试是将多个单元组合起来形成更大的单元&#xff0c;并测试它们是否能协同工作形成子系统。一种旨在暴露单元接口之间、组件/系统间交互或协同工作时所存在的缺陷的测试。 集成测试关注的问题 模块间数据传递是否正确。一个模块的功能是否影响另一…

python如何调用matlab python package库matlab转python安装包调用使用简单示例

说明(废话) 之前没有进行python调用过matlab&#xff0c;前面用matlab engine for python可以通过调用matlab的源码文件的形式可以调用工程&#xff0c;但是这又有一个问题&#xff0c;就是在运行的时候必须提供python和matlab的全部源码 该文章是通过matlab源码转python pack…

uniapp form表单校验

公司的一个老项目&#xff0c;又要重新上架&#xff0c;uniapp一套代码&#xff0c;打包生成iOS端发布到App Store&#xff0c;安卓端发布到腾讯应用宝、OPPO、小米、华为、vivo&#xff0c;安卓各大应用市场上架要求不一样&#xff0c;可真麻烦啊 光一个表单校验&#xff0c;…

C++编程逻辑讲解step by step:使用对话框与控件(1)

对话框是实现人机交互的重要工具&#xff0c;Visual C的对话框类似于VB或Delphi的form&#xff0c;对话框和各种控件的结合使用&#xff0c;可以建立形形色色的功能十分强大的应用程序窗口界面&#xff0c;这就是所谓的对话框编程技术。 应用程序中需要各种各样的对话框&am…

易保全参与起草的两项区块链全国团体标准正式发布

在数字化转型浪潮席卷全球的今天&#xff0c;区块链技术以其去中心化、透明性、不可篡改等独特优势&#xff0c;正逐步成为重塑各行各业信任机制与业务流程的关键力量。 近日&#xff0c;中国通信工业协会正式发布了《区块链服务 基于区块链的去中心化标识符技术要求》与《区块…

IIS安装配置教程图文教程(超详细)

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等12个知识域…

2024年中职大数据实验室建设及大数据实训平台整体解决方案

随着大数据时代的到来&#xff0c;中等职业学校&#xff08;中职&#xff09;的大数据实验室建设和实训平台打造成为了培养新一代信息技术人才的重要环节。本方案旨在为2024年中职大数据实验室建设提供一套全面、可行的整体解决方案&#xff0c;旨在培养学生的大数据分析能力、…