8,460
个编辑
更改
→缩小TF卡中rootfs分区容量的方法
<span id="orange-pi-zero-3的基本特性"></span>= '''Orange Pi Zero 33的基本特性'''=
[[\l|2File:zero3-img3-1.8.2. Ubuntu平台调试串口的使用方法 [31](#_Toc1961499964)png]]
[[\l|2File:zero3-img4-1.9. 使用开发板26pin或13pin接口中的5v引脚供电说明 [37](#使用开发板26pin或13pin接口中的5v引脚供电说明)png]]
[[\l|3.File:zero3-img5-1. 已支持的linux镜像类型和内核版本 [40](#已支持的linux镜像类型和内核版本)png|800px]]
[[\lFile:zero3-img6.png|3.2. linux内核驱动适配情况 [41](#linux内核驱动适配情况)800px]]
<ol style="list-style-type: decimal;"><li><p>TF卡,最小8GB容量的'''class10'''级或以上的高速闪迪卡</p><p>[[\l|3File:zero3-img7.4.2. 设置linux系统终端自动登录的方法 [43png]](</p>{| class="wikitable" style="background-color:#设置linux系统终端自动登录的方法)]]ffffdc;width:800px;" |-| <big><p>'''使用其他品牌的TF卡(非闪迪的TF卡),如下图所示(包含但不仅限这些卡),已经有朋友反馈系统启动过程中会出现问题,比如系统启动到一半卡住不动,或者reboot命令无法正常使用,最后都是换了闪迪牌的TF卡后才解决的。所以如果您使用的是非闪迪牌的TF卡发现系统启动或者使用过程有问题,请更换闪迪牌的TF卡后再测试。'''</p></big><p>[[\lFile:zero3-img8-1.png|3180px]][[File:zero3-img9-1.4png|195px]][[File:zero3-img10-1.3. linux桌面版系统自动登录说明 [44](#linux桌面版系统自动登录说明)png|198px]] [[\lFile:zero3-img11-1.png|3.4.4. Linux桌面版系统root用户自动登录的设置方法 [45](#linux桌面版系统root用户自动登录的设置方法)190px]]</p><p style="text-align: center;">'''目前反馈在Orange Pi Zero 3上启动有问题的部分TF卡'''</p><big><p>'''另外,在其他型号的开发板上能正常使用的TF卡并不能保证在Orange Pi Zero 3上也一定能正常启动,这点请特别注意。'''</p></big>|}</li><li><p>TF卡读卡器,用于读写TF卡</p><p>[[\l|3File:zero3-img12.4.5. Linux桌面版系统禁用桌面的方法 [46](#linux桌面版系统禁用桌面的方法)png]]</p></li><li><p>Micro HDMI转HDMI连接线,用于将开发板连接到HDMI显示器或者电视进行显示</p><div class="figure">
[[\l|3File:zero3-img13.5. 板载LED灯测试说明 [46](#板载led灯测试说明)png]]
</div>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''注意,请不要使用下图所示的这种比较宽的Micro HDMI转接头,由于开发板的Micro HDMI接口和Type-C电源接口之间的间距比较小,可能会导致两者无法同时插入到开发板。'''</p></big><p>[[\lFile:zero3-img14.png|3center]]</p>|}</li><li><p>电源,如果有5V/2A或5V/3A的电源头那就只需要准备一根下面左边图片所示的USB转Type C接口的数据线,另外也可以使用类似下面右边图片所示的线和电源头一体的5V/2A或者5V/3A的高品质USB Typc C接口电源适配器。</p><p>[[File:zero3-img15.6png|600px]] [[File:zero3-img16. TF卡中linux系统rootfs分区容量操作说明 png|600px]]</p></li><li><p>13pin扩展板</p><ol style="list-style-type: lower-alpha;"><li><p>扩展板实物如下所示</p><p>[[49File:zero3-img17.png](#tf卡中linux系统rootfs分区容量操作说明)]</p></li><li><p>扩展板插入开发板的方式如下所示,切记不要插反了</p><p>[[File:zero3-img18.png]]</p></li><li><p>Orange Pi Zero 3开发板上的13pin排针可以接上扩展板来扩展开发板上没有的功能,扩展板可以使用的功能有</p>
# 首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡# 然后使用读卡器把TF卡插入电脑# 从[[\l|http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3.14html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”'''. 温度传感器 img'''”结尾的文件就是操作系统的镜像文件,大小一般都在1GB以上# 然后下载Linux镜像的烧录软件——'''balenaEtcher''',下载地址为::{| class="wikitable" style="width:800px;" |-| [111](#温度传感器)]https://www.balena.io/etcher/ '''https://www.balena.io/etcher/''']|}
<ol start="5" style="list-style-type: decimal;"><li><p>进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方</p><p>[[\l|3File:zero3-img27.15png]]</p></li><li><p>然后可以选择下载balenaEtcher的Portable版本的软件,Portable版本无需安装,双击打开就可以使用</p><p>[[File:zero3-img28. 13 Pin扩展板接口引脚说明 png]]</p></li><li><p>如果下载的是需要安装版本的balenaEtcher,请先安装再使用。如果下载的Portable版本balenaEtcher,直接双击打开即可,打开后的balenaEtcher界面如下图所示</p><p>[[112](#pin扩展板接口引脚说明)File:zero3-img29.png]]</p>
[[\lFile:zero3-img30.png|3.17. 安装wiringOP的方法 [114](#安装wiringop的方法)center]]
[[\lFile:zero3-img31.png|3center]]|}</li></ol><ol start="8" style="list-style-type: decimal;"><li><p>使用balenaEtcher烧录Linux镜像的具体步骤如下所示</p><ol style="list-style-type: lower-alpha;"><li><p>首先选择要烧录的Linux镜像文件的路径</p></li><li><p>然后选择TF卡的盘符</p></li><li><p>最后点击Flash就会开始烧录Linux镜像到TF卡中</p><p>[[File:zero3-img32.18png]]</p></li></ol></li><li><p>balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中</p><p>[[File:zero3-img33.1png]]</p></li><li><p>Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验</p><p>[[File:zero3-img34. 26pin GPIO口测试 png]]</p></li><li><p>成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了</p><p>[116](#pin[File:zero3-gpio口测试)img35.png]]</p></li></ol>
[[\l|3File:zero3-img36.19.2. 26pin GPIO口测试 [131](#pin-gpio口测试-1)png]]
[[\l|3File:zero3-img37.19png]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li><p>格式化完TF卡后会弹出下图所示的信息,点击确定即可</p><p>[[File:zero3-img38.png]]</p></li></ol></li></ol><!-- --><ol start="4" style="list-style-type: decimal;"><li><p>从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3. 26pin I2C测试 html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”'''.img'''”结尾的文件就是操作系统的镜像文件,大小一般都在1GB以上</p></li><li><p>使用'''Win32Diskimager'''烧录Linux镜像到TF卡</p><ol style="list-style-type: lower-alpha;"><li>Win32Diskimager的下载页面为</li>{| class="wikitable" style="width:800px;" |-| [136http://sourceforge.net/projects/win32diskimager/files/Archive/ '''http://sourceforge.net/projects/win32diskimager/files/Archive/'''](#pin|}</ol><ol start="2" style="list-style-type: lower-i2c测试alpha;"><li><p>下载完后直接安装即可,Win32Diskimager界面如下所示</p><ol style="list-1style-type: none;"><li><p>a) 首先选择镜像文件的路径</p></li><li><p>b) 然后确认下TF卡的盘符和”'''设备'''”一栏中显示的一致</p></li><li><p>c)最后点击”'''写入'''”即可开始烧录</p><p>[[File:zero3-img39.png]]</p></li></ol></li><li><p>镜像写入完成后,点击”'''退出'''”按钮退出即可,然后就可以拔出TF卡插到开发板中启动</p></li></ol></li></ol><span id="基于ubuntu-pc将linux镜像烧写到tf卡的方法"></span>
# 首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡# 然后使用读卡器把TF卡插入电脑# 下载balenaEtcher软件,下载地址为::{| class="wikitable" style="width:800px;" |-| [[\l|3https://www.balena.io/etcher/ '''https://www.21balena. 查看H618芯片的chipid [143](#查看h618芯片的chipid)]io/etcher/''']|}
<ol start="4" style="list-style-type: decimal;"><li><p>进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方</p><p>[[\l|3File:zero3-img27.22png]]</p></li><li><p>然后选择下载Linux版本的软件即可</p><p>[[File:zero3-img40. Python相关说明 [143png](#python相关说明)]</p></li><li><p>从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3.html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”'''.img'''”结尾的文件就是操作系统的镜像文件,大小一般都在1GB以上。7z结尾的压缩包的解压命令如下所示:</p>{| class="wikitable" style="width:800px;" |-[[\l|3<p>test@test:~$ '''7z x orangepizero3_1.0.220_ubuntu_focal_desktop_linux6.1. Python源码编译安装的方法 [143](#python源码编译安装的方法)]]31.7z'''</p><p>test@test:~$ '''ls orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.*'''</p>[[\l|3<p>orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.7z </p><p>'''orangepizero3_1.0.220_ubuntu_focal_desktop_linux6.21. Python更换pip源的方法 [144](31.sha''' #python更换pip源的方法)]]校验和文件</p><p>'''orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.img''' #镜像文件</p>[[\l|3}</li><li><p>解压镜像后可以先用'''sha256sum -c *.23sha'''命令计算下校验和是否正确,如果提示'''成功'''说明下载的镜像没有错,可以放心的烧录到TF卡,如果提示'''校验和不匹配'''说明下载的镜像有问题,请尝试重新下载</p>{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''sha256sum -c *. 安装Docker的方法 [145](#安装docker的方法)]]sha'''</p><p>orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.img: '''成功'''</p>[[\l|}</li><li><p>然后在Ubuntu PC的图形界面双击'''balenaEtcher-1.14.3-x64.24. Home Assistant的安装方法 AppImage'''即可打开balenaEtcher('''无需安装'''),balenaEtcher打开后的界面显示如下图所示</p><p>[[145](#homeFile:zero3-assistant的安装方法)img41.png]]</p></li><li><p>使用balenaEtcher烧录Linux镜像的具体步骤如下所示</p><ol style="list-style-type: lower-alpha;"><li><p>首先选择要烧录的Linux镜像文件的路径</p></li><li><p>然后选择TF卡的盘符</p></li><li><p>最后点击Flash就会开始烧录Linux镜像到TF卡中</p><p>[[\l|3File:zero3-img42.24.1. 通过docker安装 [145](#通过docker安装)png]]</p></li></ol></li><li><p>balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中</p><p>[[\l|3.24.2File:zero3-img43. 通过python安装 [149](#通过python安装)png]]</p></li></ol>
<!-- --><ol start="11" style="list-style-type: decimal;"><li><p>Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验</p><p>[[\l|3File:zero3-img44.25png]]</p></li><li><p>成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了</p><p>[[File:zero3-img45. OpenCV的安装方法 [151](#opencv的安装方法)png]]</p></li></ol>
<ol style="list-style-type: decimal;"><li><p>首先请确保Windows系统已经安装了'''Microsoft Visual C++ 2008 Redistrbutable - x86'''</p><p>[[\l|3File:zero3-img46.27.3. face_recognition的测试方法 [158](#face_recognition的测试方法)png]]</p></li><li><p>如果没有安装'''Microsoft Visual C++ 2008 Redistrbutable - x86''',使用'''PhoenixCard'''格式化TF卡或者烧录Android镜像会提示下面的错误</p><div class="figure">
[[\l|3File:zero3-img47.28. 设置中文环境以及安装中文输入法 [168](#_Toc1230407032)png]]
</div></li><li><p>'''Microsoft Visual C++ 2008 Redistrbutable - x86'''的安装包可以从Orange Pi Zero 3的[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3.html '''官方工具''']中下载到,也可以去[https://www.microsoft.com/zh-cn/download/details.aspx?id=26368 '''微软官网''']下载</p><p>[[File:zero3-img48.png]] [[File:zero3-img49.png]]</p></li><li><p>然后准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡</p></li><li><p>然后使用读卡器把TF卡插入电脑</p></li><li><p>从[\l|http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3.28html '''Orange Pi的资料下载页面''']下载Android镜像和PhoenixCard烧写工具,请确保PhonenixCrad工具的版本为'''<span style="color:#FF0000">PhonixCard-4.2.8,请不要用低于4.2.8版本的PhonixCard软件来烧录Android镜像,</span>'''低于这个版本的PhonixCard工具烧写的Android镜像可能会有问题</p><p>[[File:zero3-img50.png]]</p></li><li><p>然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”'''.img'''” 结尾的文件就是Android镜像文件,大小在1GB以上。如果不知道怎么解压Android镜像的压缩包,可以安装一个[https://yasuo.1360. Debian 系统的安装方法 cn/ '''360压缩软件''']来解压镜像。</p><p>[[168File:zero3-img51.png]](#debian</p></li><li><p>然后使用解压软件解压'''PhonixCard4.2.8.zip''',此软件无需安装,在解压后的文件夹中找到PhoenixCard打开即可</p><p>[[File:zero3-系统的安装方法)img52.png]]</p></li><li><p>打开PhoenixCard后,如果TF卡识别正常,会在中间的列表中显示TF卡的盘符和容量,'''<span style="color:#FF0000">请务必确认显示的盘符和你想烧录的TF卡的盘符是一致的</span>''',如果没有显示可以尝试拔插下TF卡,或者点击PhoenixCard中的”'''刷新盘符'''”按钮</p></li>
[[\lFile:zero3-img53-1.png]]</ol><ol start="10" style="list-style-type: decimal;"><li><p>确认完盘符后,先格式化TF卡,点击PhoenixCard中”'''恢复卡'''”按钮即可(如果”'''恢复卡'''”按钮为灰色的无法按下,可以先点击下”'''刷新盘符'''”按钮)</p><p>[[File:zero3-img54-1.png]]</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''如果格式化有问题,请尝试拔插下TF卡后再测试,如果重新拔插TF卡后还是有问题,可以重启下Window电脑或者换一台电脑再试下。'''</p></big>|3}</li><li><p>然后开始将Android镜像写入TF卡</p><ol style="list-style-type: lower-alpha;"><li><p>首先在”'''固件'''”一栏中选择Android镜像的路径</p></li><li><p>在”'''制作卡的种类'''”中选择”'''启动卡'''”</p></li><li><p>然后点击”'''烧卡'''”按钮就会开始烧录</p><p>[[File:zero3-img55-1.28png]]</p></li></ol></li><li><p>烧录完后PhoenixCard的显示如下图所示,此时点击”'''关闭'''”按钮即可退出PhoenixCard,然后就可以把TF卡从电脑中拔出来插到开发板中启动了</p><p>[[File:zero3-img56-1.2png]]</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''烧录完Android系统后在Windows中TF卡只能看到一个128 MB的分区,显示的分区如下图所示(有些电脑可能会弹出二十几个磁盘分区,但也只能打开128 MB的那个分区),请注意,这是正常的,请不要以为TF卡烧坏了。之所以这样,是因为安卓系统总共有二十几个分区,但大部分分区在Windows系统中是无法正常识别的。此时,请放心的拔下TF卡然后插入开发板中启动即可。'''</p></big><p>[[File:zero3-img57. Ubuntu 20png|center]]</p><big><p>'''安卓系统启动后,使用下面的命令可以看到TF卡中的这二十几个分区:'''</p></big><p>[[File:zero3-img58.04系统的安装方法 png|center]]</p><big><p>'''使用df -h命令可以看到16GB的TF卡烧录完安卓系统后大概还有11 GB的空间可以用使用(二十几个分区并不会都挂载到安卓系统中,重点关注这些能看到的分区即可)。'''</p></big><p>[[175](#ubuntuFile:zero3-20img59.04系统的安装方法)png|center]]</p>|}</li></ol>
[[\l|3File:zero3-img60-1.29.2. 使用VNC远程登录 [188](#使用vnc远程登录)png]]
<ol start="7" style="list-style-type: decimal;"><li><p>然后打开电源适配器的开关,如果一切正常,此时HDMI显示器就能看到系统的启动画面了</p></li><li><p>如果想通过调试串口查看系统的输出信息,请使用串口线将开发板连接到电脑,串口的连接方法请参看[[\l|Orange Pi Zero 3.33. Linux系统支持的部分编程语言测试 [209](#linux系统支持的部分编程语言测试)调试串口的使用方法|'''调试串口的使用方法''']]一节</p></li></ol>
<ol style="list-style-type: decimal;"><li><p>首先需要准备一个'''3.3v'''的USB转TTL模块,然后将USB转TTL模块的USB接口一端插入到电脑的USB接口中</p><p>[[\l|3File:zero3-img61.33png]]</p></li><li><p>开发板的调试串口GND、TX和RX引脚的对应关系如下图所示</p><p>[[File:zero3-img62-1.3. Ubuntu Focal系统 [212png]](</p></li><li><p>USB转TTL模块GND、TX和RX引脚需要通过杜邦线连接到开发板的调试串口上</p><ol style="list-style-type: lower-alpha;"><li><p>USB转TTL模块的GND接到开发板的GND上</p></li><li><p>USB转TTL模块的'''<span style="color:#FF0000">RX接到开发板的TX上</span>'''</p></li><li><p>USB转TTL模块的'''<span style="color:#ubuntuFF0000">TX接到开发板的RX上</span>'''</p></li></ol></li><li><p>USB转TTL模块连接电脑和Orange Pi开发板的示意图如下所示</p><p>[[File:zero3-focal系统)img63.png]]</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''串口的TX和RX是需要交叉连接的,如果不想仔细区分TX和RX的顺序,可以把串口的TX和RX先随便接上,如果测试串口没有输出再交换下TX和RX的顺序,这样就总有一种顺序是对的。'''</p></big>|}</li></ol>
<ol style="list-style-type: decimal;"><li><p>下载MobaXterm</p><ol style="list-style-type: lower-alpha;"><li><p>下载MobaXterm网址如下</p>{| class="wikitable" style="width:800px;" |-| <p>[[\l|4https://mobaxterm.mobatek.net/ '''https://mobaxterm.4mobatek. 编译linux内核 net/''']</p>|}</li><li><p>进入MobaXterm下载网页后点击'''GET XOBATERM NOW!'''</p><p>[[233File:zero3-img69.png](#编译linux内核)]</p></li><li><p>然后选择下载Home版本</p><p>[[File:zero3-img70.png]]</p></li><li><p>然后选择Portable便携式版本,下载完后无需安装,直接打开就可以使用</p><div class="figure">
[[\l|4File:zero3-img71.5. 编译rootfs [237](#编译rootfs)png]]
</div></li></ol></li><li><p>下载完后使用解压缩软件解压下载的压缩包,即可得到MobaXterm的可执软件,然后双击打开</p><p>[[\l|4File:zero3-img72.6. 编译linux镜像 [240png](#编译linux镜像)]</p></li><li><p>打开软件后,设置串口连接的步骤如下</p><ol style="list-style-type: lower-alpha;"><li><p>打开会话的设置界面</p></li><li><p>选择串口类型</p></li><li><p>选择串口的端口号(根据实际的情况选择对应的端口号),如果看不到端口号,请使用[http://weishi.360.cn/qudongdashi/ '''360驱动大师''']扫描安装USB转TTL串口芯片的驱动</p></li><li><p>选择串口的波特率为'''115200'''</p></li><li><p>最后点击”'''OK'''”按钮完成设置</p></li>
[[\lFile:zero3-img73.png|5. Android 12 TV系统使用说明 [2441400px]](#android</ol></li></ol><ol start="4" style="list-12style-tv系统使用说明)type: decimal;"><li><p>点击”'''OK'''”按钮后会进入下面的界面,此时启动开发板就能看到串口的输出信息了</p><p>[[File:zero3-img74.png|1400px]]</p></li></ol>
[[\l|5File:zero3-img75.4. Android返回上一级界面的方法 [245](#android返回上一级界面的方法)png]]
</div>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''上图所示的电源线在淘宝可以买到,请自行搜索购买。'''</p></big>|}</li><li><p>使用26pin或者13pin接口中的5V引脚来给开发板供电,电源线的接法如下所示</p><ol style="list-style-type: lower-alpha;"><li><p>上图所示的电源线USB A口需要插到5V/2A或者5V/3A的电源适配器接头上('''不建议插到电脑的USB接口来供电,如果开发板接的外设过多,使用会不稳定''')</p></li><li><p>红色的杜邦线需要插到开发板26pin或者13pin接口的5V引脚上</p></li><li><p>黑色的杜邦线需要插到26pin或者13pin接口的GND引脚上</p></li><li><p>26pin和13pin接口5V引脚和GND引脚在开发板中的位置如下图所示,'''<span style="color:#FF0000">切记不要接反了</span>'''</p><p>[[\l|5File:zero3-img24-1.5. ADB的使用方法 [245](#adb的使用方法)png]]</p></li></ol></li></ol>
<ol style="list-style-type: decimal;"><li><p>如果有购买Orange Pi的13pin扩展板,将扩展板插入开发板的13pin接口中,就可以扩展2个USB接口</p><p>[[\l|5File:zero3-img18.6png]]</p></li><li><p>如果没有13pin扩展板,可以使用4pin 2.54mm杜邦转USB2.0母头的线来扩展USB接口,具体方法如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先需要准备一根4pin 2.54mm杜邦转USB2.0母头的线(这种线在淘宝可以买到,请自行搜索购买),如下图所示:</p><p>[[File:zero3-img76.png]] [[File:zero3-img77.png]]</p></li><li><p>13pin接口的原理图如下所示</p><p>[[File:zero3-img19.png]] [[File:zero3-img78.png]]</p></li><li><p>USB2的接线如下所示</p><p>[[File:zero3-img79. 查看设置HDMI显示分辨率的方法 png]]</p></li><li><p>USB3的接线如下所示</p><p>[247[File:zero3-img80.png](#查看设置hdmi显示分辨率的方法)]</p></li><li><p>如果需要在13pin接口上同时接两个USB设备,会发现13pin接口上的5V和GND引脚不够用,此时其中一个USB设备可以使用26pin接口中的5V和GND引脚,位置如下图所示:</p><p>[[File:zero3-img24-1.png]]</p></li></ol></li></ol>
在[[\l|5http://www.15orangepi.4cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3. 26pin的I2C测试方法 [271](#pin的i2c测试方法)]html '''Orange Pi的资料下载页面''']进入对应开发板的下载页面后可以看到下面的下载选项,在下文的描述中,'''Ubuntu镜像和Debian镜像一般统称为Linux镜像'''。
[[\l|6File:zero3-img81.1. 用户手册更新历史 [275](#用户手册更新历史)png]]
<span idol style="什么是list-orangestyle-pitype: lower-zero-3alpha;"><li><p>'''开发板的型号''':都是'''orangepizero3'''。不同开发板的型号名一般都是不同的,烧录镜像前,请确保所选择镜像的这个型号名和开发板是匹配的。</p></li><li><p>'''版本号''':如'''1.x.x''',这个版本号会随着镜像功能的更新而递增,另外开发板Linux镜像的版本号最后一个数字都是偶数。</p></li><li><p>'''Linux发行版的类型''':目前支持'''Ubuntu'''和'''Debian。'''由于Ubuntu源自Debian,所以两个系统在使用上来说总体区别不大。但部分软件的默认配置和命令的使用上还是有些许区别的,另外Ubuntu和Debian都各自有维护所支持的软件仓库,在支持的可安装的软件包上也是有些许差异的。这些需要亲自去使用体验才会有比较深刻的认识。有关更多的细节,可以参考下Ubuntu和Debian官方提供的文档。</p></li><li><p>'''发行版代号''':用来区分Ubuntu或者Debian这样具体的Linux发行版的不同版本。其中'''focal'''和'''jammy'''都是Ubuntu发行版,focal表示Ubuntu20.04,jammy表示Ubuntu22.04,不同版本的最大的区别是新版本的Ubuntu系统维护的软件仓库的中的软件很多都比旧版本的Ubuntu系统中的要新,比如Python和GCC编译工具链等。'''bullseye'''是Debian的具体版本代号,'''bullseye'''表示Debian11,'''bookworm'''表示Debian12。</p></li><li><p>'''服务器或桌面''':用来表示系统是否带桌面环境,如果为'''server'''就表示系统没有安装桌面环境,镜像占用的存储空间和资源比较小,主要使用命令行来操作控制系统。如果为'''desktop_xfce'''就表示系统默认安装有XFCE桌面环境,镜像占用的存储空间和资源比较大,可以接显示器和鼠标键盘通过界面来操作系统。当然desktop版本的系统也可以像server版本的系统一样通过命令行来操作。</p></spanli>== 什么是 Orange Pi Zero 3 ==<li><p>'''内核版本''':用来表示linux内核的版本号,目前支持'''linux5.4'''和'''linux6.1'''。</p></li></ol>
|-
| style="text-align: left;"| '''硬件特性介绍HDMI视频'''|style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| CPUstyle="text-align: left;"| '''HDMI音频'''| 全志H618四核64位1.5GHz高性能Cortexstyle="text-A53处理器align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| GPUstyle="text-align: left;"| Mali G31 MP2 Supports OpenGL ES 1'''USB2.0/2.0/x 3.2、OpenCL 2.0'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 内存style="text-align: left;"| '''TF卡启动'''| 1GB/1.5GB/2GB/4GB LPDDR4 (与GPU共享)style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 板载存储style="text-align: left;"| '''千兆网卡'''| TF卡插槽、16MB SPI Flashstyle="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 以太网style="text-align: left;"| '''红外接收'''| 支持10/100M/1000M以太网style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| style="text-align: left;"| '''WIFI+蓝牙'''| • AW859A芯片、支持IEEE 802.11 a/b/g/n/ac、BT5.0style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 视频输出style="text-align: left;"| '''蓝牙'''| • Micro HDMI 2.0a • TV CVBS output, 支持PAL/NTSC(通过13pin扩展板)style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 音频输出style="text-align: left;"| '''耳机音频'''| • Micro HDMI输出 • 3.5mm音频口(通过13pin扩展板)style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 电源style="text-align: left;"| '''USB摄像头'''| USB Type C接口输入style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| USB 2.0 端口style="text-align: left;"| '''LED灯'''| 3个USB 2.0 HOST(其中两个通过13pin扩展板)style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 26pin接头style="text-align: left;"| '''26pin GPIO'''| 带有I2Cx1、SPIx1、UARTx1以及多个GPIO口style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 13pin接头style="text-align: left;"| '''26pin I2C'''| 带有USB 2.0 HOSTx2、TVstyle="text-OUT、LINE OUT、IRalign: left;"| '''OK'''| style="text-RX、以及3个GPIO口align: left;"| '''OK'''
|-
| 调试串口style="text-align: left;"| '''26pin SPI1'''| UARTstyle="text-TX、UARTalign: left;"| '''OK'''| style="text-RX以及GNDalign: left;"| '''OK'''
|-
| LED灯style="text-align: left;"| '''26pin UART'''| 电源指示灯和状态指示灯style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 红外接收style="text-align: left;"| '''PWM'''| 支持红外遥控器(通过13pin扩展板)style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 支持的操作系统style="text-align: left;"| '''温度传感器'''| Android12 TV、Ubuntu、Debian等style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| style="text-align: left;"| '''外观规格介绍硬件看门狗'''|style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''
|-
| 产品尺寸style="text-align: left;"| '''Mali GPU'''| 85mm×56mmstyle="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
|-
| 重量style="text-align: left;"| '''视频编解码'''| 30gstyle="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
|-
| [[Filestyle="text-align:media/image1.%20png]]{widthleft;"| '''TV-OUT'''| style=“0.255 55555555555554in” h eight"text-align: left;"| '''<span style=“0.27638888 88888889in”}range Pi™ 是 深圳市迅龙软件有 限公司的注册商标"color:#FF0000">NO</span>'''|style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
|}
|}</li><li><p>命令前面的提示符类型说明</p><ol style="list-style-type: lower-alpha;"><li><p>命令前面提示符指的是下面方框内红色部分的内容,这部分内容不是linux命令的一部分,所以在linux系统中输入命令时,请不要把红色字体部分的内容也输入进去。</p>{| class="wikitable" style="width:800px;" |-| <p>'''底层视图:<span style="color:#FF0000">orangepi@orangepi:~$</span> sudo apt update'''</p><p>'''<span style="color:#FF0000">root@orangepi:~#</span>''' '''vim /boot/boot.cmd'''</p><p>'''<span style="color:#FF0000">test@test:~$</span> ssh [[Filemailto:root@192.168.1.36 root@192.168.1.]xxx'''</p><p>'''<span style="color:#FF0000">root@test:media~#</image4.pngspan> ls'''</p>|494x292px]]}</li><li><p>'''<span style="color:#FF0000">root@orangepi:~$</span>''' 提示符表示这个命令是在'''开发板的linux系统'''中输入的, 提示符最后的 '''<span style="color:#FF0000">$</span>''' 表示系统当前用户为普通用户,当执行特权命令时,需要加上'''sudo'''</p></li><li><p>'''<span idstyle="orangecolor:#FF0000">root@orangepi:~#</span>''' 提示符表示这个命令是在'''开发板的linux系统'''中输入的, 提示符最后的 '''<span style="color:#FF0000">#</span>''' 表示系统当前用户为root用户,可以执行任何想要执行的命令</p></li><li><p>'''<span style="color:#FF0000">test@test:~$</span>''' 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的linux系统中。提示符最后的 '''<span style="color:#FF0000">$</span>''' 表示系统当前用户为普通用户,当执行特权命令时,需要加上'''sudo'''</p></li><li><p>'''<span style="color:#FF0000">root@test:~#</span>''' 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的linux系统中。提示符最后的 '''<span style="color:#FF0000">#</span>''' 表示系统当前用户为root用户,可以执行任何想要执行的命令</p></li></ol></li><li><p>哪些是需要输入的命令?</p><ol style="list-pistyle-zerotype: lower-3的接口详情图alpha;"><li><p>如下所示,'''黑色加粗部分'''是需要输入的命令,命令下面的是输出的内容(有些命令有输出,有些可能没有输出),这部分内容是不需要输入的</p>{| class="wikitable" style="width:800px;" |-| <p>root@orangepi:~# '''cat /boot/orangepiEnv.txt'''</p><p>'''<span style="color:#FF0000">verbosity=7</span>'''</p><p>bootlogo=false</p><p>'''<span style="color:#FF0000">console=serial</span>'''</p>|}</li><li><p>如下所示,有些命令一行写不下会放到下一行,只要黑色加粗的部分就都是需要输入的命令。当这些命令输入到一行的时候,每行最后的”'''\'''”是需要去掉的,这个不是命令的一部分。另外命令的不同部分都是有空格的,请别漏了</p>{| class="wikitable" style= Orange Pi Zero 3的接口详情图 "width:800px;" |-| <p>orangepi@orangepi:~$ '''echo \'''</p><p>'''"deb [arch=$(dpkg --print-architecture) \'''</p><p>'''signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \'''</p><p>'''https://download.docker.com/linux/debian \'''</p><p>'''$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null'''</p>|}</li></ol></li></ol>
{| class="wikitable" style="width:800px;" |-| style="text-align: left;"| '''四个定位孔的直径都是3.0mm。账号'''| style="text-align: left;"| '''密码'''|-| style="text-align: left;"| '''root'''| style="text-align: left;"| '''orangepi'''|-| style="text-align: left;"| '''orangepi'''| style="text-align: left;"| '''orangepi'''|} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''注意,输入密码的时候,<span style="color:#FF0000">屏幕上是不会显示输入的密码的具体内容的</span>,请不要以为是有什么故障,输入完后直接回车即可。'''</big>|}
{| class= "wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''开发板使用介绍当输入密码提示错误,或者ssh连接有问题,请注意,只要使用的是Orange Pi提供的Linux镜像,<span style="color:#FF0000">就请不要怀疑上面的密码不对</span>,而是要找其它的原因。''' =</big>|}
== 准备需要的配件 = 设置linux系统终端自动登录的方法 ===
<ol style="list-style-type: decimal;">
<li><p>TF卡,最小8GB容量的linux系统默认就是自动登录终端的,默认登录的用户名是'''class10orangepi'''级或以上的高速闪迪卡</p><p>[[File:media/image7zero3-img82.png|124x96px]]</p></li><li><p>使用下面的命令可以设置root用户自动登录终端</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''使用其他品牌的TF卡(非闪迪的TF卡),如下图所示(包含但不仅限这些卡),已经有朋友反馈系统启动过程中会出现问题,比如系统启动到一半卡住不动,或者reboot命令无法正常使用,最后都是换了闪迪牌的TF卡后才解决的。所以如果您使用的是非闪迪牌的TF卡发现系统启动或者使用过程有问题,请更换闪迪牌的TF卡后再测试。sudo auto_login_cli.sh root'''</p>|}</li><li><p>[[File:media使用下面的命令可以禁止自动登录终端</image8.pngp>{|103x85px]][[Fileclass="wikitable" style="width:media/image9.png800px;" |-|112x85px]][[File<p>orangepi@orangepi:media/image10~$ '''sudo auto_login_cli.png|114x85px]][[File:mediash -d'''</image11.pngp>|86x109px]]}</pli><li><p>'''目前反馈在Orange Pi Zero 3上启动有问题的部分TF卡'''使用下面的命令可以再次设置orangepi用户自动登录终端</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''另外,在其他型号的开发板上能正常使用的TF卡并不能保证在Orange Pi Zero 3上也一定能正常启动,这点请特别注意。sudo auto_login_cli.sh orangepi'''</p>|}</li></ol> === linux桌面版系统自动登录说明 === <ol style="list-style-type: decimal;"><li><p>TF卡读卡器,用于读写TF卡桌面版系统启动后会自动登录进入桌面,无需输入密码</p><pdiv class="figure"> [[File:media/image12zero3-img83.png|139x96px]] </div></li><li><p>运行下面的命令可以禁止桌面版系统自动登录桌面</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo disable_desktop_autologin.sh'''</p>|}</li><li><p>Micro HDMI转HDMI连接线,用于将开发板连接到HDMI显示器或者电视进行显示然后重启系统就会出现登录对话框,此时需要输入'''密码'''才能进入系统</p>
<div class="figure">
[[File:media/image13zero3-img84.jpeg|209x209px|IMG_6109(20211221-181051)png]]
</div>
</li></ol>
<span id="linux桌面版系统root用户自动登录的设置方法"></span>
=== Linux桌面版系统root用户自动登录的设置方法 === <ol style="list-style-type: decimal;"><li><p>执行下面的命令可以设置桌面版系统使用root用户自动登录</p>{| class="wikitable" style="width:800px;"
|-
| style="text-align<p>orangepi@orangepi: left;"~$ '''sudo desktop_login.sh root'''</p>| 1}</li><li><p>然后重启系统,就会自动使用root用户登录桌面了</p><p>[[File:zero3-img85.png]]</p>{| styleclass="text-align: left;wikitable"| 麦克风(Mic)| style="textbackground-aligncolor:#ffffdc;width: left800px;"| '''不支持,不支持,不支持!!!<br /><br />'''13pin扩展板是一个通用型号的扩展板,适用于Orange Pi多款开发板,但是Orange Pi Zero3的13pin接口是没有Mic功能的,所以13pin扩展板上虽然有Mic,但是在Orange Pi Zero 3上是不能用的,13pin扩展板在Orange Pi Zero 3上主要用来扩展除Mic以外的其他功能。
|-
| style="text-align: left;"| 2| style="text-align: left;"| 模拟音视频输出接口<big><p>'''注意,如果使用root用户登录桌面系统,是无法使用右上角的pulseaudio来管理音频设备的。'''</p>| style="text-align: left;"| 支持,可用于接耳机播放音乐,或者通过AV线接电视输出模拟音视频信号(<p>'''仅安卓系统另外请注意这并不是一个bug,因为pulseaudio本来就不允许在root用户下运行。''')。</p></big>|-}| style="text-align: left;"| 3</li><li><p>执行下面的命令可以再次设置桌面版系统使用orangepi用户自动登录</p>{| styleclass="text-align: left;wikitable"| USB 2.0 Host x 2| style="text-alignwidth: left800px;"| 支持,用于接USB键盘、鼠标以及USB存储设备。
|-
| style="text-align: left;"| 4| style="text-align: left;"| 红外接收功能| style="text-align<p>orangepi@orangepi: left;"| 支持,通过红外遥控可以控制Android系统。~$ '''sudo desktop_login.sh orangepi'''</p>
|}
</li></ol>
<ol startspan id="4linux桌面版系统禁用桌面的方法" style="list-style-type: lower-alpha;"><li><p>Orange Pi Zero 3开发板13pin排针的原理图如下所示</p><p>[[File:media/image19.png|264x142px]]</p></li></olspan>
<ol style="list-style-type: decimal;"><li><p>首先在命令行中输入下面的命令,'''<span style="color:#FF0000">请记得加sudo权限</span>'''</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo systemctl disable lightdm.service'''</p>|}</li><li><p>然后重启Linux系统就会发现不会显示桌面了</p>{| class="wikitable" style="width:800px;"
|-
| <p>orangepi@orangepi:~$ '''sudo reboot'''</p>|}</li><li><p>重新打开桌面的命令如下所示,'''<span style="text-aligncolor: left;#FF0000"| 1>请记得加sudo权限</span>'''</p>{| styleclass="text-align: left;wikitable"| Ubuntu22.04 PC| style="text-alignwidth: left800px;"| 可选,用于编译Android和Linux源码
|-
| style="text-align: left;"| 2| style="text-align<p>orangepi@orangepi: left;"| Windows PC~$ '''sudo systemctl start lightdm.service'''</p>| style="text-align<p>orangepi@orangepi: left;"| 用于烧录Android和Linux镜像~$ '''sudo systemctl enable lightdm.service'''</p>
|}
</li></ol>
<span id== 下载开发板的镜像和相关的资料 =="板载led灯测试说明"></span>
'''注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian或者Ubuntu这样的Linux发行版镜像。当拿到开发板后,您可能会发现开发板上就算没有插入烧录有系统的TF卡,给开发板接上电源后,这两个LED灯也会亮,这是因为开发板上的16MB SPI Flash出厂默认会烧录一个微型的linux系统,此系统在u-boot启动阶段会点亮红灯,进入内核后会关闭红灯,设置绿灯闪烁。'''
<ol style="list-style-type: lower-alpha;">
<li><p>首先选择要烧录的Linux镜像文件的路径首先进入红灯的设置目录</p></li><li><p>然后选择TF卡的盘符</p></li>{| class="wikitable" style="width:800px;" |-<li><p>最后点击Flash就会开始烧录Linux镜像到TF卡中</p>| <p>[[Fileroot@orangepi:media~# '''cd /image32.png|501x281px]]<sys/class/p><leds/li>red_led'''</olp>|}
</li>
<li><p>balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中设置红灯常亮的命令如下</p>{| class="wikitable" style="width:800px;" |-| <p>[[Fileroot@orangepi:media/image33.png|506x317px]]sys/class/leds/red_led# '''echo default-on > trigger'''</p>|}</li><li><p>Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验设置红灯闪烁的命令如下</p>{| class="wikitable" style="width:800px;" |-| <p>[[Fileroot@orangepi:media/image34.png|519x325px]]sys/class/leds/red_led# '''echo heartbeat > trigger'''</p>|}</li><li><p>成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了设置红灯停止闪烁的命令如下</p><p>[[File:media/image35.png{|523x324px]]</p></li></ol> <span idclass="使用win32diskimager烧录linux镜像的方法wikitable"></span>=== '''使用Win32Diskimager烧录Linux镜像的方法''' === <ol style="list-style-typewidth: decimal800px;"><li>|-| <p>首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为root@orangepi:/sys/class/leds/red_led# '''class10'''级或echo none > trigger'''class10'''级以上,建议使用闪迪等品牌的TF卡</p>|}</li><li><p>然后使用读卡器把TF卡插入电脑</pol></li><li><p>接着格式化TF卡如果开机后不需要LED灯闪烁,可以使用下面的方法来关闭绿灯闪烁</p>
<ol style="list-style-type: lower-alpha;">
<li>可以使用<p>首先运行下'''SD Card Formatterorangepi-config'''这个软件格式化TF卡,其下载地址为,普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li><li><p>然后选择'''System'''</p><p>[[File:zero3-img86.png]]</p></li><li><p>然后选择'''Hardware'''</p><p>[[File:zero3-img87.png]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''disable-leds'''</p><p>[[File:zero3-img88.png]]</p></li><li><p>然后选择'''<Save>'''保存</p><p>[[File:zero3-img89.png]]</p></li><li><p>然后选择'''<Back>'''</p><p>[[File:zero3-img90.png]]</p></li><li><p>然后选择'''<Reboot>'''重启系统使配置生效</p><p>[[File:zero3-img91.png]]</p></li><li><p>重启后完全进入系统就可以看到开发板上的两个LED灯都不会亮了</p></li></ol>
</li></ol>
<ol style="list-style-type: decimal;"><li><p>将开发板的Linux镜像烧录到TF卡中后,可以在'''<span style="color:#FF0000">Ubuntu电脑</divspan>'''中查看下TF卡容量的使用情况,步骤如下所示:</lip>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''注意,这一步不操作是不影响开发板的Linux系统自动扩容的。这里只是想说明TF卡烧录完Linux镜像后,怎么查看TF卡容量的方法。'''</p></big>|}<ol style="list-style-type: lower-alpha;"><li><p>然后点击”首先在Ubuntu电脑中安装下gparted这个软件</p>{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''Formatsudo apt install -y gparted'''”,格式化前会弹出一个警告框,选择”</p>|}</li><li><p>然后打开gparted</p>{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''是(Y)sudo gparted'''”后就会开始格式化</p>|}</li><li><p>打开gparted后在右上角可以选择TF卡,然后就可以看到TF卡容量的使用情况</olp> <p>[[File:media/image37zero3-img92.png|304x147px]]</p></li><li><p>上图显示的是烧录完Linux桌面版系统后TF卡的情况,可以看到,虽然TF卡的总容量是16GB的(在GParted中显示为14.84GiB),但是rootfs分区(/dev/sdc1)实际只分配了4.05GiB,还剩下10.79GiB未分配</p></li></ol></li><li><p>然后可以将烧录好Linux系统的TF卡插入开发板中启动,TF卡第一次启动linux系统时会通过'''orangepi-resize-filesystem.service'''这个systemd服务来调用'''orangepi-resize-filesystem'''脚本自动进行rootfs分区的扩容,所以'''<span style="color:#FF0000">无需再手动扩容</span>'''</p></li><li><p>登录系统后可以通过'''df -h'''命令来查看rootfs的大小,如果和TF卡的实际容量一致,说明自动扩容运行正确</p> {| class="wikitable" style="width:800px;"|-|<ol startp>orangepi@orangepi:~$ '''df -h'''</p><span style="margin-right: 80px;">Filesystem </span><span style="5margin-right: 50px;" >Size </span><span style="listmargin-right: 30px;">Used </span><span style="margin-typeright: lower30px;">Avail</span><span style="margin-alpharight: 50px;">Use% Mounted on</span><br><lispan style="margin-right: 110px;">udev</span><span style="margin-right: 60px;">430M</span><span style="margin-right: 50px;">0</span><span style="margin-right: 70px;">430M </span><pspan style="margin-right: 90px;">格式化完TF卡后会弹出下图所示的信息,点击确定即可0% /dev</pspan><br><pspan style="margin-right: 100px;">tmpfs </span>[[File<span style="margin-right:media50px;">100M </image38span><span style="margin-right: 30px;">5.png|186x149px]]6M </span><span style="margin-right: 70px;">95M </span><span style="margin-right: 90px;">6% /run</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/mmcblk0p1'''</span><span style="margin-right: 50px;color:#FF0000">'''15G'''</span><span style="margin-right: 35px;color:#FF0000">'''915M'''</span><span style="margin-right: 80px;color:#FF0000">'''14G'''</span><span style="margin-right: 90px;color:#FF0000">'''7% /'''</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">500M </span><span style="margin-right: 50px;">0</span><span style="margin-right: 50px;">500M </span><span style="margin-right: 90px;">0% /dev/shm</pspan><br>|}</li></ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>从[http://www.orangepi.cn/html/serviceAndSupport/index.html 第一次启动完Linux系统后,我们还可以将TF卡从开发板中取下来重新插入'''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”<span style="color:#FF0000">Ubuntu电脑</span>''',然后再次使用gparted查看下TF卡的情况,如下图所示,rootfs分区(/dev/sdc1)的容量已经扩展到了14.img'''”结尾的文件就是操作系统的镜像文件,大小一般都在1GB以上69GiB了</p></li><li><p>使用'''Win32Diskimager'''烧录Linux镜像到TF卡[[File:zero3-img93.png]]</p><ol {| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>Win32Diskimager的下载页面为'''需要注意的是,linux系统只有一个ext4格式的分区,没有使用单独的BOOT分区来存放内核镜像等文件,所以也就不存在BOOT分区扩容的问题。'''</li></olbig>|}
</li></ol>
<span id="禁止自动扩容tf卡中rootfs分区容量的方法"></span>
<ol start="2" style="list-style-type: lower-alphadecimal;"><li><p>下载完后直接安装即可,Win32Diskimager界面如下所示首先在'''<span style="color:#FF0000">Ubuntu电脑</pspan>'''(Windows不行)中将开发板的linux镜像烧录到TF卡中,'''<ol span style="list-style-typecolor: lower-alpha;#FF0000">然后重新拔插下TF卡<li/span><p>首先选择镜像文件的路径'''</p></li><li><p>然后确认下TF卡的盘符和”'''设备'''”一栏中显示的一致然后Ubuntu电脑一般会自动挂载TF卡的分区,如果自动挂载正常,使用ls命令可以看到下面的输出</p></li><li>{| class="wikitable" style="width:800px;" |-| <p>最后点击”test@test:~$ '''写入ls /media/test/opi_root/'''”即可开始烧录</p><p>[[File:bin boot dev etc home lib lost+found media/image39.png|297x206px]] mnt opt proc root run </pbr>sbin selinux srv sys tmp usr var</li></olp>|}
</li>
<li><p>镜像写入完成后,点击”'''退出'''”按钮退出即可,然后就可以拔出TF卡插到开发板中启动然后在Ubuntu电脑中将当前用户切换成root用户</p></li></ol> <span id{| class="基于ubuntu-pc将linux镜像烧写到tf卡的方法wikitable"></span>== 基于Ubuntu PC将Linux镜像烧写到TF卡的方法 =style="width:800px;" |-'''注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian或者Ubuntu这样的Linux发行版镜像,Ubuntu PC指的是安装了Ubuntu系统的个人电脑。'''| # 首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为<p>test@test:~$ '''class10sudo -i'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡# 然后使用读卡器把TF卡插入电脑# 下载balenaEtcher软件,下载地址为</p><p>[https:sudo] test 的密码:<//www.balena.io/etcher/ '''httpsp><p>root@test://www.balena.io/etcher/~'''] <ol start="4" span style="list-style-typecolor: decimal;#FF0000">#<li/span><p>进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方'''</p><p>[[File:media/image27.png|489x235px]]</p>}</li><li><p>然后选择下载Linux版本的软件即可然后进入TF卡中的linux系统的root目录下新建一个名为'''.no_rootfs_resize'''的文件</p>{| class="wikitable" style="width:800px;" |-| <p>[[Fileroot@test:~# '''cd /media/image40.png|485x184px]]test/opi_root/'''</p></li><li><p>从[httproot@test:/media/www.orangepi.cntest/htmlopi_root/serviceAndSupport/index.html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”# '''.imgcd root'''”结尾的文件就是操作系统的镜像文件,大小一般都在1GB以上。7z结尾的压缩包的解压命令如下所示:</p><p>testroot@test:~$ /media/test/opi_root/root# '''7z x orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31touch .7zno_rootfs_resize'''</p><p>testroot@test:~$ /media/test/opi_root/root# '''ls orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.no_rootfs*'''</p><p>orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.7z '''orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.shano_rootfs_resize''' #校验和文件</p>|}</li><li><p>然后就可以卸载TF卡,再拔出TF卡插到开发板中启动,linux系统启动时,当检测到'''/root'''目录下有'''orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.imgno_rootfs_resize''' #镜像文件这个文件就不会再自动扩容rootfs了</p></li><li><p>解压镜像后可以先用'''sha256sum -c *.sha'''命令计算下校验和是否正确,如果提示'''成功'''说明下载的镜像没有错,可以放心的烧录到TF卡,如果提示'''校验和不匹配'''说明下载的镜像有问题,请尝试重新下载禁止rootfs自动扩容后进入Linux系统可以看到rootfs分区的总容量只有4GB(这里测试的是桌面版本的镜像),远小于TF卡的实际容量,说明禁止rootfs自动扩容成功</p>{| class="wikitable" style="width:800px;"|-|<p>testorangepi@testorangepi:~$ '''sha256sum df -c *.shah'''</p><pspan style="margin-right: 80px;">Filesystem </span>orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.img<span style="margin-right: '''成功'''50px;">Size </pspan><span style="margin-right: 30px;">Used </lispan><lispan style="margin-right: 30px;">Avail<p/span>然后在Ubuntu PC的图形界面双击'''balenaEtcher<span style="margin-1.14.3-x64.AppImage'''即可打开balenaEtcher('''无需安装'''),balenaEtcher打开后的界面显示如下图所示right: 50px;">Use% Mounted on</pspan><br><pspan style="margin-right: 110px;">udev</span>[[File<span style="margin-right:media60px;">925M </image41.png|423x251px]]span><span style="margin-right: 50px;">0</pspan><span style="margin-right: 70px;">925M </lispan><lispan style="margin-right: 90px;">0% /dev<p/span>使用balenaEtcher烧录Linux镜像的具体步骤如下所示</pbr><ol span style="listmargin-right: 100px;">tmpfs </span><span style="margin-typeright: lower-alpha50px;">199M <li/span><pspan style="margin-right: 30px;">首先选择要烧录的Linux镜像文件的路径3.2M </pspan></lispan style="margin-right: 70px;">196M <li/span><pspan style="margin-right: 90px;">然后选择TF卡的盘符2% /run</pspan></libr><lispan style="margin-right: 25px;color:#FF0000">'''/dev/mmcblk0p1'''</span><pspan style="margin-right: 50px;color:#FF0000">最后点击Flash就会开始烧录Linux镜像到TF卡中'''4.0G '''</pspan><pspan style="margin-right: 35px;color:#FF0000">[[File:media/image42'''3.png|431x278px]]2G '''</pspan><span style="margin-right: 80px;color:#FF0000">'''686M '''</lispan><span style="margin-right: 90px;color:#FF0000">'''83% /'''</olspan><br>|}
</li>
<li><p>balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中如果需要重新扩容TF卡中rootfs分区的容量,只需要执行下面的命令,然后重新启动开发板的Linux系统即可</p><p>[[File:media/image43.png|576x247px]]</p></li></ol>
root@orangepi:~# '''开发板的Android镜像只能在Windows平台下使用PhoenixCard软件烧录到TF卡中,PhoenixCard软件的版本必须为PhonixCardsystemctl enable orangepi-4.2resize-filesystem.8。<br />请不要用烧录Linux镜像的软件,如Win32Diskimager或者balenaEtcher来烧录安卓镜像。service'''
root@orangepi:~# '''另外PhoenixCard这款软件没有Linux和Mac平台的版本,所以在Linux和Mac平台下是无法烧录安卓镜像到TF卡中的。sudo reboot'''|}
<ol start="10" style="list-style-type: decimal;"><li><p>确认完盘符后,先格式化TF卡,点击PhoenixCard中”首先在'''恢复卡<span style="color:#FF0000">Ubuntu电脑</span>'''”按钮即可(如果”(Windows不行)中将开发板的linux镜像烧录到TF卡中,'''恢复卡'''”按钮为灰色的无法按下,可以先点击下”'''刷新盘符'''”按钮)</p><pspan style="color:#FF0000">[[File:media/image54.png|575x316px]]然后重新拔插下TF卡</p><pspan>'''如果格式化有问题,请尝试拔插下TF卡后再测试,如果重新拔插TF卡后还是有问题,可以重启下Window电脑或者换一台电脑再试下。'''</p></li><li><p>然后开始将Android镜像写入TF卡然后Ubuntu电脑一般会自动挂载TF卡的分区,如果自动挂载正常,使用'''ls'''命令可以看到下面的输出</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>|-| <p>首先在”test@test:~$ '''固件ls /media/test/opi_root/'''”一栏中选择Android镜像的路径</p></li><lip>bin boot dev etc home lib lost+found media mnt opt proc root run <pbr>在”'''制作卡的种类'''”中选择”'''启动卡'''”sbin selinux srv sys tmp usr var</p>|}</li><li><p>然后点击”然后在Ubuntu电脑中将当前用户切换成root用户</p>{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''烧卡sudo -i'''”按钮就会开始烧录</p><p>[[File:media/image55.png|576x402px]sudo]test 的密码:</p><p>root@test:~'''<span style="color:#FF0000">#</lispan>'''</olp>|}
</li>
<li><p>烧录完后PhoenixCard的显示如下图所示,此时点击”然后进入TF卡中的linux系统的root目录下新建一个名为'''关闭.no_rootfs_resize'''”按钮即可退出PhoenixCard,然后就可以把TF卡从电脑中拔出来插到开发板中启动了的文件</p>{| class="wikitable" style="width:800px;" |-| <p>[[Fileroot@test:~# '''cd /media/image56.png|575x354px]]test/opi_root/'''</p><p>root@test:/media/test/opi_root/# '''烧录完Android系统后在Windows中TF卡只能看到一个128 MB的分区,显示的分区如下图所示(有些电脑可能会弹出二十几个磁盘分区,但也只能打开128 MB的那个分区),请注意,这是正常的,请不要以为TF卡烧坏了。之所以这样,是因为安卓系统总共有二十几个分区,但大部分分区在Windows系统中是无法正常识别的。此时,请放心的拔下TF卡然后插入开发板中启动即可。cd root'''</p><p>[[Fileroot@test:/media/image57.png|193x45px]]<test/opi_root/p><p>root# '''安卓系统启动后,使用下面的命令可以看到TF卡中的这二十几个分区:touch .no_rootfs_resize'''</p><p>[[Fileroot@test:/media/image58test/opi_root/root# '''ls .png|368x131px]]no_rootfs*'''</p><p>'''使用df -h命令可以看到16GB的TF卡烧录完安卓系统后大概还有11 GB的空间可以用使用(二十几个分区并不会都挂载到安卓系统中,重点关注这些能看到的分区即可)。.no_rootfs_resize'''</p><p>[[File:media/image59.png|391x220px]]</p>}</li></ol>
<!-- --><ol start="5" style="list-style-type: decimal;"><li><p>然后在Ubuntu电脑中安装下gparted这个软件</p>{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''sudo apt install -y gparted'''</p>|}</li><li><p>然后打开gparted</p>{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''sudo gparted'''</p>|}</li><li><p>打开gparted后在右上角可以选择TF卡,然后就可以看到TF卡容量的使用情况。下图显示的是烧录完Linux桌面版系统后TF卡的情况,可以看到,虽然TF卡的总容量是16GB的(在GParted中显示为14.84GiB),但是rootfs分区(/dev/sdc1)实际只分配了4.05GiB,还剩下10.79GiB未分配</p><p>[[File:zero3-img92.png]]</p></li><li><p>然后选中rootfs分区(/dev/sdc1)</p><p>[[File:zero3-img94.png]]</p></li><li><p>再点击鼠标右键就可以看到下图所示的操作选项,如果TF卡已经挂载了,首先需要Umount掉TF卡的rootfs分区</p><p>[[File:zero3-img95.png]]</p></li><li><p>然后再次选中rootfs分区,再点击鼠标右键,然后选择'''Resize/Move'''开始扩容rootfs分区的大小</p><p>[[File:zero3-img96.png]]</p></li><li><p>'''Resize/Move'''选项打开后会弹出下面的设置界面</p><p>[[File:zero3-img97.png]]</p></li><li><p>然后可以直接拖动下图所示的位置来设置容量的大小,也可以通过设置'''New size(MiB)'''中的数字来设置rootfs分区的大小</p><p>[[File:zero3-img98.png]]</p></li><li><p>设置好容量后,再点击右下角的'''Resize/Move'''即可</p><p>[[File:zero3-img99.png]]</p></li><li><p>最后确认无误后,再点击下图所示的'''绿色 <span style="color:green">√</span>'''</p><p>[[File:zero3-img100.png]]</p></li><li><p>然后选择'''Apply''',就会正式开始扩容rootfs分区的容量</p><p>[[File:zero3-img101.png]]</p></li><li><p>扩容完成后点击'''Close'''关闭即可</p><p>[[File:zero3-img102.png]]</p></li><li><p>然后就可以把TF卡拔下来,再插到开发板中启动,进入开发板的Linux系统中后如果使用'''df -h'''命令可以看到rootfs分区的大小和前面设置的大小一致的话就说明手动扩容成功</p>{| class="wikitable" style="width:800px;"|-|<p>root@orangepi:~# '''df -h'''</p><span style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail</span><span style="margin-right: 50px;">Use% Mounted on</span><br><span style="margin-right: 110px;">udev</span><span style="margin-right: 60px;">925M </span><span style="margin-right: 50px;">0</span><span style="margin-right: 70px;">925M </span><span style="margin-right: 90px;">0% /dev</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">199M </span id><span style="板载spimargin-flash中的微型linux系统使用说明right: 30px;">3.2M </span><span style="margin-right: 70px;">196M </span><span style="margin-right: 90px;">2% /run</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/mmcblk0p1'''</span><span style= 板载SPI Flash中的微型linux系统使用说明 "margin-right: 50px;color:#FF0000">'''7.7G '''</span><span style="margin-right: 35px;color:#FF0000">'''3.2G '''</span><span style="margin-right: 80px;color:#FF0000">'''4.4G '''</span><span style="margin-right: 90px;color:#FF0000">'''42% /'''</span><br>|}</li></ol>
<ol style="list-style-type: lowerdecimal;"><li><p>首先在'''<span style="color:#FF0000">Ubuntu电脑</span>'''(Windows不行)中插入想要操作的TF卡</p></li><li><p>然后在Ubuntu电脑中安装下gparted这个软件</p>{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''sudo apt install -alphay gparted'''</p>|}</li><li><p>然后打开gparted</p>{| class="wikitable" style="width:800px;"|-| <p>test@test:~$ '''sudo gparted'''</p>|}</li><li><p>打开gparted后在右上角可以选择TF卡,然后就可以看到TF卡容量的使用情况</p><p>[[File:zero3-img103.png]]</p></li><li><p>然后选中rootfs分区(/dev/sdc1)</p><p>[[File:zero3-img104.png]]</p></li><li><p>再点击鼠标右键就可以看到下图所示的操作选项,如果TF卡已经挂载了,首先需要Umount掉TF卡的rootfs分区</p><p>[[File:zero3-img105.png]]</p></li><li><p>u然后再次选中rootfs分区,再点击鼠标右键,然后选择'''Resize/Move'''开始设置rootfs分区的大小</p><p>[[File:zero3-boot启动阶段会点亮红色的led灯,进入内核后,会关闭红色的led灯并设置绿色的led灯闪烁;img106.png]]</p></li><li><p>如果开发板接了HDMI屏幕,系统启动完成后,在HDMI屏幕中能看到微型linux系统的命令行界面;'''Resize/Move'''选项打开后会弹出下面的设置界面</p><p>[[File:zero3-img107.png]]</p></li><li><p>如果开发板接了USB键盘,在命令行中能运行一些简单的linux命令,如ls,cd等。然后可以直接拖动下图所示的位置来设置容量的大小,也可以通过设置'''New size(MiB)'''中的数字来设置rootfs分区的大小</p><p>由于SPI Flash中微型的linux系统功能有限,所以如果想正常使用开发板的所有功能,请烧录linux镜像或者安卓镜像烧录到TF卡中,然后再使用。[[File:zero3-img98.png]]</p></li></ol>
<!-- --><ol start="18" style= 启动香橙派开发板 "list-style-type: decimal;"><li><p>设置好容量后,再点击右下角的'''Resize/Move'''即可</p><p>[[File:zero3-img99.png]]</p></li><li><p>最后确认无误后,再点击下图所示的'''绿色 <span style="color:green">√</span>'''</p><p>[[File:zero3-img100.png]]</p></li><li><p>然后选择'''Apply''',就会正式开始扩容rootfs分区的容量</p><p>[[File:zero3-img101.png]]</p></li><li><p>扩容完成后点击'''Close'''关闭即可</p><p>[[File:zero3-img102.png]]</p></li><li><p>然后就可以把TF卡拔下来,再插到开发板中启动,进入开发板的Linux系统中后如果使用'''df -h'''命令可以看到rootfs分区的大小和前面设置的大小一致的话就说明缩小容量成功</p>{| class="wikitable" style="width:800px;"|-|<p>root@orangepi:~# '''df -h'''</p><span style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail</span><span style="margin-right: 50px;">Use% Mounted on</span><br><span style="margin-right: 110px;">udev</span><span style="margin-right: 60px;">925M </span><span style="margin-right: 50px;">0</span><span style="margin-right: 70px;">925M </span><span style="margin-right: 90px;">0% /dev</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">199M </span><span style="margin-right: 30px;">3.2M </span><span style="margin-right: 70px;">196M </span><span style="margin-right: 90px;">2% /run</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/mmcblk0p1'''</span><span style="margin-right: 50px;color:#FF0000">'''7.7G '''</span><span style="margin-right: 35px;color:#FF0000">'''3.2G '''</span><span style="margin-right: 80px;color:#FF0000">'''4.4G '''</span><span style="margin-right: 90px;color:#FF0000">'''42% /'''</span><br>|}</li></ol>
<ol style="list-style-type: decimal;"><li><p>首先将网线的一端插入开发板的以太网接口,网线的另一端接入路由器,并确保网络是畅通的</p></li><li><p>系统启动后会通过'''系统上电启动过程中很多不稳定的现象基本都是供电有问题导致的,所以一个靠谱的电源适配器很重要。如果启动过程中发现有不断重启的现象,请更换下电源或者Type C数据线再试下。DHCP'''自动给以太网卡分配IP地址,'''<span style="color:#FF0000">不需要其他任何配置</span>'''</p></li><li><p>在开发板的Linux系统中查看IP地址的命令如下所示:</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''下面的命令请不要照抄,比如debian12中的网络节点名为end0,下面的命令就需要修改为ip a s end0。'''</p></big>|}{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ip a s eth0'''</p><p>3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>:<p>link/ether 5e:ac:14:a5:93:b3 brd ff:ff:ff:ff:ff:ff</p>:<p>inet '''<span style="color:#FF0000">192.168.1.16</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0</p>::<p>valid_lft 259174sec preferred_lft 259174sec</p>:<p>inet6 240e:3b7:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute</p>::<p>valid_lft 259176sec preferred_lft 172776sec</p>:<p>inet6 fe80::957d:bbbd:4928:3604/64 scope link noprefixroute</p>::<p>valid_lft forever preferred_lft forever</p>|}
<span id="服务器版镜像通过命令连接wifi"></span>==== 服务器版镜像通过命令连接WIFI ==== {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Linux下可以使用的串口调试软件有很多,如putty、minicom等,下面演示下putty的使用方法。当开发板没有连接以太网,没有连接HDMI显示器,只连接了串口时,推荐使用此小节演示的命令来连接WIFI网络。因为nmtui在某些串口软件(如minicom)中只能显示字符,无法正常显示图形界面。当然,如果开发板连接了以太网或者HDMI显示屏,也可以使用此小节演示的命令来连接WIFI网络的。'''</big>|}
<ol style="list-style-type: decimal;">
<li><p>首先将USB转TTL模块插入Ubuntu电脑的USB接口,如果USB转TTL模块连接识别正常,在Ubuntu PC的'''/dev'''下就可以看到对应的设备节点名,记住这个节点名,后面设置串口软件时会用到</p><p>test@test:~$ '''ls /dev/ttyUSB*'''</p><p>'''/dev/ttyUSB0'''</p></li><li><p>然后使用下面的命令在Ubuntu PC上安装下putty</p><p>test@test:~$ '''sudo apt update'''</p><p>test@test:~$ '''sudo apt install -y putty'''</p></li><li><p>然后运行putty,'''记得加sudo权限'''</p><p>test@test:~$ '''sudo putty'''</p></li><li><p>执行putty命令后会弹出下面的界面</p><p>[[File:media/image64.png|332x290px]]</p></li><li><p>首先选择串口的设置界面</p><p>[[File:media/image65.png|337x297px]]</p></li><li><p>然后设置串口的参数先登录linux系统,有下面三种方式</p>
<ol style="list-style-type: lower-alpha;">
<li><p>设置'''Serial line to connect > to如果开发板连接了网线,可以通过[[Orange Pi Zero 3#Ubuntu下SSH远程登录开发板|'''为ssh远程登录linux系统'''/dev/ttyUSB0'''(修改为对应的节点名,一般为'''/dev/ttyUSB0''')</p></li><li><p>设置'''Speed(baud)'''为'''115200'''(串口的波特率)</p></li><li><p>设置'''Flow control'''为'''None'''</p><p>[[File:media/image66.png|398x352px]]</p></li></ol></li><li><p>在串口的设置界面设置完后,再回到Session界面</p!-- --><ol style="list-style-type: lower-alpha;" start="2"><li><p>首先选择'''Connection type'''为'''Serial'''如果开发板连接好了调试串口,可以使用串口终端登录linux系统</p></li><li><p>然后点击'''Open'''按钮连接串口</p><p>[[File:media/image67.png|375x332px]]如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到linux系统</p></li></ol></li><li><p>然后启动开发板,就能从打开的串口终端中看到系统输出的Log信息了</p><p>[[File:media/image68.png|376x249px]]</p></li></ol>
<span id="windows平台调试串口的使用方法"></span!-- -->=== Windows平台调试串口的使用方法 === '''Windows下可以使用的串口调试软件有很多,如SecureCRT、MobaXterm等,下面演示MobaXterm的使用方法,这款软件有免费版本,无需购买序列号即可使用。''' <ol start="2" style="list-style-type: decimal;"><li><p>下载MobaXterm首先使用'''nmcli dev wifi'''命令扫描周围的WIFI热点</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>下载MobaXterm网址如下</p>|-| <p>[httpsorangepi@orangepi://mobaxterm.mobatek.net/ '''https://mobaxterm.mobatek.net/''']</p></li><li><p>进入MobaXterm下载网页后点击~$ '''GET XOBATERM NOW!nmcli dev wifi'''</p><p>[[File:media/image69.png|382x233px]]</p></li><li><p>然后选择下载Home版本</p><p>[[File:media/image70.png|353x231px]]</p></li><li><p>然后选择Portable便携式版本,下载完后无需安装,直接打开就可以使用</p>}
<div class="figure">
[[File:media/image71zero3-img108.png|322x175px|选区_232]]
</div></li></ol></li><li><p>下载完后使用解压缩软件解压下载的压缩包,即可得到MobaXterm的可执软件,然后双击打开</p><p>[[File:media/image72.png|576x83px]]</p></li><li><p>打开软件后,设置串口连接的步骤如下然后使用'''nmcli''' 命令连接扫描到的WIFI热点,其中:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>打开会话的设置界面'''wifi_name'''需要换成想连接的WIFI热点的名字</p></li><li><p>选择串口类型'''wifi_passwd'''需要换成想连接的WIFI热点的密码</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo nmcli dev wifi connect <span style="color:#FF0000">wifi_name</span> password <span style="color:#FF0000">wifi_passwd</lispan>'''</p><lip>Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.</p>选择串口的端口号(根据实际的情况选择对应的端口号),如果看不到端口号,请使用[http:|}</li></weishi.360.cnol></qudongdashili><li><p>通过'''ip addr show wlan0'''命令可以查看wifi的IP地址</ p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''360驱动大师ip a s wlan0''']扫描安装USB转TTL串口芯片的驱动</p><p>11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</lip>:<lip>link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff</p>:<p>选择串口的波特率为inet '''115200<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0</p>::<p>valid_lft 259192sec preferred_lft 259192sec</p>:<p>inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute</p>::<p>valid_lft 259192sec preferred_lft 172792sec</p>:<p>inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute</p>::<p>valid_lft forever preferred_lft forever</p>|}</li><li><p>最后点击”使用'''ping'''命令可以测试wifi网络的连通性,'''ping'''命令可以通过'''Ctrl+C'''快捷键来中断运行</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''OKping www.orangepi.org -I wlan0 (这里是大写的字母I,不是小写的字母L)'''”按钮完成设置</p><p>PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.</p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms</p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms</lip><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms</p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms</p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms</p><p>^C</p><p>--- www.orangepi.org ping statistics ---</p><p>5 packets transmitted, 5 received, 0% packet loss, time 4006ms</p><p>rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms</olp>|}
</li></ol>
== 使用开发板26pin或13pin接口中的5v引脚供电说明 == '''我们推荐的开发板的供电方式是使用5V/2A或者5V/3A的Type C接口的电源线插到开发板的Type C电源接口来供电的。如果需要使用26pin或者13pin接口中的5V引脚来给开发板供电,请确保使用的电源线能满足开发板的供电需求。如果有使用不稳定的情况,请换回Type C电源供电。'''服务器版镜像通过图形化方式连接WIFI ====
<ol style="list-style-type: decimal;">
<li><p>首先需要准备一根下图所示的电源线</p><div class="figure"> [[File:media/image75.jpeg|216x154px|4ff86e49b6624616f9498fe44c366f29]] </div><p>'''上图所示的电源线在淘宝可以买到,请自行搜索购买。'''</p></li><li><p>使用26pin或者13pin接口中的5V引脚来给开发板供电,电源线的接法如下所示先登录linux系统,有下面三种方式</p>
<ol style="list-style-type: lower-alpha;">
<li><p>上图所示的电源线USB > A口需要插到5V/2A或者5V/3A的电源适配器接头上(如果开发板连接了网线,可以通过[[Orange Pi Zero 3#Ubuntu下SSH远程登录开发板|'''不建议插到电脑的USB接口来供电,如果开发板接的外设过多,使用会不稳定ssh远程登录linux系统''')]]</p></li><li><p>红色的杜邦线需要插到开发板26pin或者13pin接口的5V引脚上如果开发板连接好了调试串口,可以使用串口终端登录linux系统(串口软件请使用MobaXterm,使用minicom无法显示图形界面)</p></li><li><p>黑色的杜邦线需要插到26pin或者13pin接口的GND引脚上如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到linux系统</p></li></ol></li><li><p>26pin和13pin接口5V引脚和GND引脚在开发板中的位置如下图所示,然后在命令行中输入nmtui命令打开wifi连接的界面</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''切记不要接反了sudo nmtui'''</p>|}</li><li><p>输入nmtui命令打开的界面如下所示</p><p>[[File:media/image24zero3-img109.png|163x174px]]</p></li></olli></lip>选择'''Activate a connect'''后回车</olp> <span id="使用开发板13pin接口扩展usb接口的方法"p>[[File:zero3-img110.png]]</spanp>== 使用开发板13pin接口扩展USB接口的方法 == <ol style="list-style-type: decimal;"/li><li><p>如果有购买Orange Pi的13pin扩展板,将扩展板插入开发板的13pin接口中,就可以扩展2个USB接口然后就能看到所有搜索到的WIFI热点</p><p>[[File:media/image18zero3-img111.png|246x162px]]</p></li><li><p>如果没有13pin扩展板,可以使用4pin 2.54mm杜邦转USB2.0母头的线来扩展USB接口,具体方法如下所示:选择想要连接的WIFI热点后再使用Tab键将光标定位到'''Activate'''后回车</p><ol style="list-style-typep>[[File: lowerzero3-alpha;"img112.png]]</p></li><li><p>首先需要准备一根4pin > 2.54mm杜邦转USB2.0母头的线(这种线在淘宝可以买到,请自行搜索购买),如下图所示:然后会弹出输入密码的对话框,在'''Pssword'''内输入对应的密码然后回车就会开始连接WIFI</p><p>[[File:media/image76zero3-img113.png|208x162px]] </p></li><li><p>WIFI连接成功后会在已连接的WIFI名称前显示一个”*”</p><p>[[File:media/image77zero3-img114.png|237x165px]]</p></li><li><p>13pin接口的原理图如下所示通过'''ip a s wlan0'''命令可以查看wifi的IP地址</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ip a s wlan0'''</p><p>11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>:<p>[[Filelink/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:mediaff</image19p>:<p>inet '''192.168.1.png|265x142px]] [[File:media11'''/image7824 brd 192.168.1.png|245x133px]]255 scope global dynamic noprefixroute wlan0</p>::<p>valid_lft 259069sec preferred_lft 259069sec</lip>:<p>inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute<li/p>::<p>USB2的接线如下所示valid_lft 259071sec preferred_lft 172671sec</p>:<p>[[Fileinet6 fe80::42f1:6019:a80e:media4c31/64 scope link noprefixroute</image79.png|256x189px]]p>::<p>valid_lft forever preferred_lft forever</p>|}</li><li><p>USB3的接线如下所示使用'''ping'''命令可以测试wifi网络的连通性,'''ping'''命令可以通过'''Ctrl+C'''快捷键来中断运行</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0 (这里是大写的字母I,不是小写的字母L)'''</p><p>[[FilePING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0:media56(84) bytes of data.</image80p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.png|255x195px]]5 ms</p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms</lip><lip>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms</p><p>如果需要在13pin接口上同时接两个USB设备,会发现13pin接口上的5V和GND引脚不够用,此时其中一个USB设备可以使用26pin接口中的5V和GND引脚,位置如下图所示:64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms</p><p>[[File64 bytes from 182.92.236.130 (182.92.236.130):mediaicmp_seq=5 ttl=52 time=48.8 ms</image24p><p>^C</p><p>--- www.orangepi.png|243x260px]]org ping statistics ---</p><p>5 packets transmitted, 5 received, 0% packet loss, time 4006ms</lip><p>rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms</olp>|}
</li></ol>
==== 桌面版镜像的测试方法 ==== <span idol style="debianubuntulist-server和xfce桌面系统使用说明style-type: decimal;"><li><p>点击桌面右上角的网络配置图标(测试WIFI时请不要连接网线)</p><p>[[File:zero3-img115.png]]</p></li><li><p>在弹出的下拉框中点击'''More networks'''可以看到所有扫描到的WIFI热点,然后选择想要连接的WIFI热点</p><p>[[File:zero3-img116.png]]</p></li><li><p>然后输入WIFI热点的密码,再点击'''Connect'''就会开始连接WIFI</p><p>[[File:zero3-img117.png]]</p></li><li><p>连接好WIFI后,可以打开浏览器查看是否能上网,浏览器的入口如下图所示</p><p>[[File:zero3-img118.png]]</p></spanli>= Debian<li><p>打开浏览器后如果能打开其他网页说明WIFI连接正常</Ubuntu Server和Xfce桌面系统使用说明 p><div class="figure">
|-
| style="text-align: left;"| '''Ubuntu 20.04 - Focal'''| style="text-align: left;"| '''Linux5.4'''| style="text-align: left;"| '''支持'''| style="text-align: left;"| '''支持'''|-| style="text-align: left;"| '''Ubuntu 22.04 - Focal'''| style="text-align: left;"| '''Linux5.4'''| style="text-align: left;"| '''支持'''| style="text-align: left;"| '''支持'''|-| style="text-align: left;"| '''Debian 11 - Bullseye'''| style="text-align: left;"| '''Linux5.4'''| style="text-align: left;"| '''支持'''| style="text-align: left;"| <big>'''支持create_ap是一个帮助快速创建Linux上的WIFI热点的脚本,并且支持bridge和NAT模式,能够自动结合hostapd, dnsmasq和iptables完成WIFI热点的设置,避免了用户进行复杂的配置,github地址如下:'''|-| style="text-align[https: left;"| '''Ubuntu 22//github.04 - Jammycom/oblique/create_ap '''| style="text-alignhttps: left;"| '''Linux6//github.1'''| style="text-align: left;"| '''支持'''| style="text-align: left;"| '''支持'''|-| style="text-align: left;"| '''Debian 11 - Bullseye'''| style="text-align: left;"| '''Linux6.1'''| style="text-align: left;"| '''支持'''| style="text-align: left;"| '''支持'''|-| style="text-align: left;"| '''Debian 12 - Bookworm'''| style="text-align: left;"| '''Linux6.1'''| style="text-align: left;"| '''支持'''| style="text-align: left;"| '''支持com/oblique/create_ap''']</big>
|}
'''开发板型号_版本号_Linux发行版类型_发行版代号_服务器或桌面_内核版本* interface-with-internet:可以联网的网卡名称,一般是eth0'''
<span id="create_ap以nat模式创建wifi热点的方法"></span>==== create_ap以NAT模式创建WIFI热点的方法 == linux内核驱动适配情况 ==
<ol style="list-style-type: decimal;"><li><p>输入下面的命令以NAT模式创建名称为'''orangepi'''、密码为'''orangepi'''的WIFI热点</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
| style="text-align: left;"| <big><p>'''功能注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></big>| style} {| class="text-align: left;wikitable"| '''Linux5.4'''| style="text-alignwidth: left800px;"| '''Linux6.1'''
|-
| style="text-alignorangepi@orangepi: left;"| ~$ '''HDMI视频sudo create_ap -m nat wlan0 eth0 orangepi orangepi --no-virt'''| }</li></ol><ol start="2" style="textlist-style-aligntype: leftdecimal;"| '''OK'''><li><p>如果有下面的信息输出,说明WIFI热点创建成功</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''OK'''
|-
| style="text-align<p>orangepi@orangepi: left;"| ~$ '''HDMI音频sudo create_ap -m nat wlan0 eth0 orangepi orangepi --no-virt'''</p><p>Config dir: /tmp/create_ap.wlan0.conf.TQkJtsz1</p><p>PID: 26139</p><p>Network Manager found, set wlan0 as unmanaged device... DONE</p><p>Sharing Internet using method: nat</p>| style="text<p>hostapd command-line interface: hostapd_cli -alignp /tmp/create_ap.wlan0.conf.TQkJtsz1/hostapd_ctrl</p><p>wlan0: leftinterface state UNINITIALIZED->"| '''OK'''ENABLED</p>| style="text<p>wlan0: AP-alignENABLED</p><p>wlan0: STA ce:bd:9a:dd:a5:86 IEEE 802.11: left;"| '''OK'''associated</p>|<p>wlan0: AP-STA-CONNECTED ce:bd:9a:dd:a5:86</p>| style="text<p>wlan0: STA ce:bd:9a:dd:a5:86 RADIUS: starting accounting session D4FBF7E5C604F169</p><p>wlan0: STA ce:bd:9a:dd:a5:86 WPA: pairwise key handshake completed (RSN)</p><p>wlan0: EAPOL-4WAY-HS-alignCOMPLETED ce:bd:9a:dd:a5: left;"86</p>| }</li><li><p>此时拿出手机,在搜索到的WIFI列表中就能找到开发板创建的名为'''USB2.0 x 3orangepi'''| style="text-align: left;"| 的WIFI热点,然后可以点击 '''OKorangepi'''| style="text-align: left;"| 连接热点,密码就是上面设置的'''OKorangepi'''</p><p>[[File:zero3-img120.png]]</p></li>|<li><p>连接成功后的显示如下图所示</p><p>[[File:zero3-img121.png]]</p></li><li><p>在NAT模式下,连接到开发板热点的无线设备是向开发板的DHCP服务请求IP地址的,所以会有两个不同的网段,如这里开发板的IP是192.168.1.X</p>{| styleclass="text-align: left;wikitable"| '''TF卡启动'''| style="textbackground-aligncolor: left#ffffdc;"| '''OK'''| style="text-alignwidth: left800px;"| '''OK'''
|-
| style="text-align: left;"| <big><p>'''千兆网卡注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></big>| style}{| class="text-align: left;wikitable"| '''OK'''| style="text-alignwidth: left800px;"| '''OK'''
|-
| style="text-align<p>orangepi@orangepi: left;"| ~$ '''红外接收sudo ifconfig eth0'''</p><p>eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500</p>| ::<p>inet '''<span style="text-aligncolor:#FF0000">192.168.1.150</span>''' netmask 255.255.255.0 broadcast 192.168.1.255</p>::<p>inet6 fe80::938f:8776:5783: leftafa2 prefixlen 64 scopeid 0x20<link>"</p>::<p>ether 4a:a0:c8:25:42:82 txqueuelen 1000 (Ethernet)</p>::<p>RX packets 25370 bytes 2709590 (2.7 MB)</p>::<p>RX errors 0 dropped 50 overruns 0 frame 0</p>::<p>TX packets 3798 bytes 1519493 (1.5 MB)</p>::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>::<p>device interrupt 83</p>| }<p>而开发板的DHCP服务默认会给接入热点的设备分配'''192.168.12.0/24'''的IP地址,这时点击已经连接的WIFI热点'''orangepi''',然后就可以看到手机的IP地址是'OK''192.168.12.X'''。</p><p>[[File:zero3-img121.png]]</p><p>[[File:zero3-img122-1.png]]</p></li><li><p>如果想要为接入的设备指定不同的网段,可以通过-g参数指定,如通过-g参数指定接入点AP的网段为192.168.2.1</p> {| class="wikitable" style="textbackground-aligncolor:#ffffdc;width: left800px;"| '''OK'''
|-
| style="text-align: left;"| <big>'''WIFI注意,下面的命令中,Debian12需要修改eth0为end0。'''</big>| style} {| class="text-align: left;wikitable"| '''OK'''| style="text-alignwidth: left800px;"| '''OK'''
|-
| style="textorangepi@orangepi:~$ '''sudo create_ap -m nat wlan0 eth0 orangepi orangepi -g 192.168.2.1 --no-align: left;"virt'''| } 此时通过手机连接到热点后,点击已经连接的WIFI热点'''蓝牙orangepi''',然后可以看到手机的IP地址是'''192.168.2.X'''。 [[File:zero3-img121.png]] [[File:zero3-img123.png]]| </li></ol><ol start="7" style="textlist-style-aligntype: leftdecimal;"| ><li><p>在不指定'''--freq-band'''参数的情况下,默认创建的热点是2.4G频段的,如果想要创建5G频段的热点可以通过''OK'--freq-band 5'''参数指定,具体命令如下</p>{| class="wikitable" style="textbackground-aligncolor: left#ffffdc;width:800px;"| '''OK'''
|-
| style="text-align: left;"| <big><p>'''耳机音频注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></big>| style} {| class="text-align: left;wikitable"| '''OK'''| style="text-alignwidth: left800px;"| '''OK'''
|-
| style="text-alignorangepi@orangepi: left;"| ~$ '''USB摄像头sudo create_ap -m nat wlan0 eth0 orangepi orangepi --freq-band 5 --no-virt'''| }</li></ol><ol start="8" style="textlist-alignstyle-type: leftdecimal;"| ><li><p>如果需要隐藏SSID,可以指定'''OK--hidden'''参数,具体命令如下</p>{| class="wikitable" style="textbackground-aligncolor: left#ffffdc;width:800px;"| '''OK'''
|-
| style="text-align: left;"| <big><p>'''LED灯注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></big>| style} {| class="text-align: left;wikitable"| '''OK'''| style="text-alignwidth: left800px;"| '''OK'''
|-
| style="text-alignorangepi@orangepi: left;"| ~$ '''26pin GPIOsudo create_ap -m nat wlan0 eth0 orangepi orangepi --hidden --no-virt'''| } 此时手机是搜索不到WIFI热点的,需要手动指定WIFI热点名称,并输入密码来连接WIFI热点 [[File:zero3-img124.png]]</li></ol><span id="create_ap以bridge模式创建wifi热点的方法"></span> ==== create_ap以bridge模式创建WIFI热点的方法 ==== <ol style="textlist-alignstyle-type: leftdecimal;"| ><li><p>输入下面的命令以bridge模式创建名称为'''orangepi'''、密码为'''OKorangepi'''的WIFI热点</p>{| class="wikitable" style="textbackground-aligncolor:#ffffdc;width: left800px;"| '''OK'''
|-
| style="text-align: left;"| <big><p>'''26pin I2C注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></big>| style} {| class="text-align: left;wikitable"| '''OK'''| style="text-alignwidth: left800px;"| '''OK'''
|-
| style="text-alignorangepi@orangepi: left;"| ~$ '''26pin SPI1sudo create_ap -m bridge wlan0 eth0 orangepi orangepi --no-virt'''| }</li></ol><ol start="2" style="textlist-style-aligntype: leftdecimal;"| '''OK'''><li><p>如果有下面的信息输出,说明WIFI热点创建成功</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''OK'''
|-
| style="text<p>orangepi@orangepi:~$ '''sudo create_ap -m bridge wlan0 eth0 orangepi orangepi --no-virt'''</p><p>Config dir: /tmp/create_ap.wlan0.conf.zAcFlYTx</p><p>PID: 27707</p><p>Network Manager found, set wlan0 as unmanaged device... DONE</p><p>Sharing Internet using method: bridge</p><p>Create a bridge interface... br0 created.</p><p>hostapd command-line interface: hostapd_cli -alignp /tmp/create_ap.wlan0.conf.zAcFlYTx/hostapd_ctrl</p><p>wlan0: leftinterface state UNINITIALIZED->"ENABLED</p><p>wlan0: AP-ENABLED</p><p>wlan0: STA ce:bd:9a:dd:a5:86 IEEE 802.11: associated</p><p>wlan0: AP-STA-CONNECTED ce:bd:9a:dd:a5:86</p><p>wlan0: STA ce:bd:9a:dd:a5:86 RADIUS: starting accounting session 937BF40E51897A7B</p><p>wlan0: STA ce:bd:9a:dd:a5:86 WPA: pairwise key handshake completed (RSN)</p><p>wlan0: EAPOL-4WAY-HS-COMPLETED ce:bd:9a:dd:a5:86</p>| }</li><li><p>此时拿出手机,在搜索到的WIFI列表中就能找到开发板创建的名为'''orangepi'''的WIFI热点,然后可以点击'''orangepi'''连接热点,密码就是上面设置的'26pin UART''orangepi'''</p>| style="text<p>[[File:zero3-alignimg120.png]]</p></li><li><p>连接成功后的显示如下图所示</p><p>[[File: left;"| zero3-img121.png]]</p></li><li><p>在bridge模式下,连接到开发板热点的无线设备也是向主路由(开发板连接的路由器)的DHCP服务请求IP地址的,如这里开发板的IP是'''OK192.168.1.X'''</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''OK'''
|-
| <p>orangepi@orangepi:~$ '''sudo ifconfig eth0'''</p><p>eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500</p>::<p>inet '''<span style="text-aligncolor:#FF0000">192.168.1.150</span>''' netmask 255.255.255.0 broadcast 192.168.1.255</p>::<p>inet6 fe80::938f:8776:5783: leftafa2 prefixlen 64 scopeid 0x20<"link></p>::<p>ether 4a:a0:c8:25:42:82 txqueuelen 1000 (Ethernet)</p>::<p>RX packets 25370 bytes 2709590 (2.7 MB)</p>::<p>RX errors 0 dropped 50 overruns 0 frame 0</p>::<p>TX packets 3798 bytes 1519493 (1.5 MB)</p>::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>::<p>device interrupt 83</p>| }<p>而接入WIFI热点的设备的IP也是由主路由分配的,所以连接WIFI热点的手机和开发板处于相同的网段,这时点击已经连接的WIFI热点'''orangepi''PWM',然后就可以看到手机的IP地址也是'''192.168.1.X'''。</p>| style="text<p>[[File:zero3-alignimg121.png]]</p><p>[[File: left;"| zero3-img125.png]]</p></li><li><p>在不指定'''--freq-band'''参数的情况下,默认创建的热点是2.4G频段的,如果想要创建5G频段的热点可以通过'''OK--freq-band 5'''参数指定,具体命令如下</p>{| class="wikitable" style="textbackground-aligncolor:#ffffdc;width: left800px;"| '''OK'''
|-
| style="text-align: left;"| <big><p>'''温度传感器注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></big>| style} {| class="text-align: left;wikitable"| '''OK'''| style="text-alignwidth: left800px;"| '''OK'''
|-
| style="text-alignorangepi@orangepi: left;"| ~$ '''硬件看门狗sudo create_ap -m bridge wlan0 eth0 orangepi orangepi --freq-band 5 --no-virt'''| }</li></ol><ol start="7" style="textlist-alignstyle-type: leftdecimal;"| ><li><p>如果需要隐藏SSID,可以指定'''OK--hidden'''参数,具体命令如下</p>{| class="wikitable" style="textbackground-aligncolor: left#ffffdc;width:800px;"| '''OK'''
|-
| style="text-align: left;"| <big><p>'''Mali GPU注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></big>| style} {| class="text-align: left;wikitable"| '''NO'''| style="text-alignwidth: left800px;"| '''NO'''
|-
| style="text-align: left;"| '''视频编解码'''| style="text-alignorangepi@orangepi: left;"| ~$ '''NO'''| style="textsudo create_ap -align: left;"| '''NO'''|m bridge wlan0 eth0 orangepi orangepi -| style="text-align: left;"| '''TVhidden -OUT'''| style="text-align: left;"| '''NO'''| style="textno-align: left;"| '''NOvirt'''
|}
== linux系统登录说明 = 设置静态IP地址的方法 ===
|-
| style="text-align: left;"| '''orangepi'''| style="text-align: left;"| <big>'''orangepi请不要通过修改/etc/network/interfaces配置文件的方式来设置静态IP地址。'''</big>
|}
<ol style="list-style-type: decimal;">
<li><p>linux系统默认就是自动登录终端的,默认登录的用户名是首先运行'''nmtui'''命令</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo nmtui'''</p>|}</li><li><p>然后选择'''Edit a connection'''并按下回车键</p><p>[[File:zero3-img126.png]]</p></li><li><p>然后选择需要设置静态IP地址的网络接口,比如设置'''Ethernet'''接口的静态IP地址选择'''Wired connection 1'''就可以了</p><p>[[File:zero3-img127.png]]</p></li><li><p>然后通过'''Tab'''键选择'''Edit'''并按下回车键</p><p>[[File:zero3-img128.png]]</p></li><li><p>然后通过Tab键将光标移动到下图所示的'''<Automatic>'''位置进行IPv4的配置</p><p>[[File:zero3-img129.png]]</p></li><li><p>然后回车,通过上下方向键选择'''Manual''',然后回车确定</p><p>[[File:zero3-img130.png]]</p></li><li><p>选择完后的显示如下图所示</p><p>[[File:zero3-img131.png]]</p></li><li><p>然后通过Tab键将光标移动到'''<Show>'''</p><p>[[File:mediazero3-img132.png]]</p></li><li><p>然后回车,回车后会弹出下面的设置界面</p><p>[[File:zero3-img133.png]]</p></li><li><p>然后就可以在下图所示的位置设置IP地址(Addresses)、网关(Gateway)和DNS服务器的地址(里面还有很多其他设置选项,请自行探索),'''<span style="color:#FF0000">请根据自己的具体需求来设置,下图中设置的值只是一个示例</span>'''</image82p><p>[[File:zero3-img134-1.png]]</p></li><li><p>设置完后将光标移动到右下角的'''<OK>''',然后回车确认</p><p>[[File:zero3-img135.png]]</p></li><li><p>然后点击'''<Back>'''回退到上一级选择界面</p><p>[[File:zero3-img136.png|475x240px]]</p></li><li><p>使用下面的命令可以设置root用户自动登录终端然后选择'''Activate a connection''',再将光标移动到'''<OK>''',最后点击回车</p><p>orangepi@orangepi[[File:zero3-img137.png]]</p></li><li><p>然后选择需要设置的网络接口,比如'''Wired connection 1''',然后将光标移动到'''<Deactivate>''',再按下回车键禁用'''Wired connection 1'''</p><p>[[File:~$ zero3-img138.png]]</p></li><li><p>然后请不要移动光标,再按下回车键重新使能'''Wired connection 1'''sudo auto_login_cli,这样前面设置的静态IP地址就会生效了</p><p>[[File:zero3-img139.sh rootpng]]</p></li><li><p>然后通过'''<Back>'''和'''Quit'''按钮就可以退出nmtui</p><p>[[File:zero3-img140.png]] [[File:zero3-img141.png]]</p></li><li><p>使用下面的命令可以禁止自动登录终端然后通过'''ip a s eth0'''就能看到网口的IP地址已经变成前面设置的静态IP地址了</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></big>|}{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo auto_login_cliip a s eth0'''</p><p>3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>:<p>link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff</p>:<p>inet '''<span style="color:#FF0000">192.168.1.sh -d177</span>'''/24 brd 192.168.1.255 scope global noprefixroute eth0</p>::<p>valid_lft forever preferred_lft forever</p>:<p>inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute</p>::<p>valid_lft 259149sec preferred_lft 172749sec</p>:<p>inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute</p>::<p>valid_lft forever preferred_lft forever</p>|}</li><li><p>使用下面的命令可以再次设置orangepi用户自动登录终端然后就可以测试网络的连通性来检查IP地址是否配置OK了,'''ping'''命令可以通过'''Ctrl+C'''快捷键来中断运行</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></big>|}{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo auto_login_cliping 192.168.1.sh orangepi177 -I eth0'''</p><p>PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 eth0: 56(84) bytes of data.</p><p>64 bytes from 192.168.1.47: icmp_seq=1 ttl=64 time=0.233 ms</lip><p>64 bytes from 192.168.1.47: icmp_seq=2 ttl=64 time=0.263 ms</olp><p>64 bytes from 192.168.1.47: icmp_seq=3 ttl=64 time=0.273 ms</p><p>64 bytes from 192.168.1.47: icmp_seq=4 ttl=64 time= linux桌面版系统自动登录说明 0.269 ms</p><p>64 bytes from 192.168.1.47: icmp_seq=5 ttl=64 time=0.275 ms</p><p>^C</p><p>--- 192.168.1.47 ping statistics ---</p><p>5 packets transmitted, 5 received, 0% packet loss, time 4042ms</p><p>rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms</p>|}</li></ol>
<ol stylespan id="list-style-type: decimal;使用nmcli命令来设置静态ip地址"><li><p>桌面版系统启动后会自动登录进入桌面,无需输入密码</p><div class="figure"span>
<ol style="list-style-type: decimal;"><li><p>如果要设置网口的静态IP地址,请先将网线插入开发板,'''如果需要设置WIFI的静态IP地址,请先连接好WIFI''',然后再开始设置静态IP地址</divp></li><li><p>运行下面的命令可以禁止桌面版系统自动登录桌面然后通过'''nmcli con show'''命令可以查看网络设备的名字,如下所示</p><ol style="list-style-type: lower-alpha;"><li><p>'''orangepi'''为WIFI网络接口的名字(名字不一定相同)</p></li><li><p>'''Wired connection 1'''为以太网接口的名字</p>{| class="wikitable" style="width:800px;"|-|orangepi@orangepi:~$ '''nmcli con show'''<br><span style="margin-right: 180px;">NAME</span><span style="margin-right: 260px;">UUID </span><span style="margin-right: 45px;">TYPE </span><span style="margin-right: 50px;">DEVICE</span><br><span style="margin-right: 125px;">'''orangepi'''</span><span style="margin-right: 70px;">cfc4f922-ae48-46f1-84e1-2f19e9ec5e2a</span><span style="margin-right: 50px;">wifi </span><span style="margin-right: 50px;">wlan0</span><br><span style="margin-right: 50px;">'''Wired connection 1'''</span><span style="margin-right: 50px;">9db058b7-7701-37b8-9411-efc2ae8bfa30</span><span style="margin-right: 30px;">ethernet </span><span style="margin-right: 50px;">eth0</span><br>|}</li></ol></li><li><p>然后输入下面的命令,其中</p><ol style="list-style-type: lower-alpha;"><li><p>'''"Wired connection 1"''' 表示设置以太网口的静态IP地址,如果需要设置WIFI的静态IP地址,请修改为WIFI网络接口对应的名字(通过'''nmcli con show'''命令可以获取到)</p></li><li><p>'''ipv4.addresses'''后面是要设置的静态IP地址,可以修改为自己想要设置的值</p></li><li><p>'''ipv4.gateway''' 表示网关的地址</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo disable_desktop_autologinnmcli con mod "Wired connection 1" \</p><p>ipv4.addresses "192.168.1.110" \'''</p><p>'''ipv4.gateway "192.168.1.1" \'''</p><p>'''ipv4.dns "8.8.8.sh8" \'''</p><p>'''ipv4.method "manual"'''</p>|}</li></ol></li><li><p>然后重启系统就会出现登录对话框,此时需要输入[[\l然后重启linux系统</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo reboot'''</p>|}</li><li><p>然后重新进入linux系统使用'''ip addr show eth0'''命令就可以看到IP地址已经设置为想要的值了</p>{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''密码ip addr show eth0''']]才能进入系统</p><p>3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>:<p>link/ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ff</p>:<p>inet '''<span style="color:#FF0000">192.168.1.110</span>'''/32 brd 192.168.1.110 scope global noprefixroute eth0</p>::<p>valid_lft forever preferred_lft forever</p>:<p>inet6 240e:3b7:3240:c3a0:97de:1d01:b290:fe3a/64 scope global dynamic noprefixroute</p>::<p>valid_lft 259183sec preferred_lft 172783sec</p>:<p>inet6 fe80::3312:861a:a589:d3c/64 scope link noprefixroute</p>::<p>valid_lft forever preferred_lft forever</p>|}</li></ol> <span id="设置linux系统第一次启动自动连接网络的方法"></span>
<ol style="list-style-type: decimal;"><li><p>首先烧录想使用的开发板的Linux镜像到TF卡中,然后使用读卡器,将烧录好开发板Linux镜像的TF卡插入安装有Linux系统的机器中(比如安装有Ubuntu系统的电脑,下面都以Ubuntu电脑为例来演示)</p></li><li><p>当TF卡插入Ubuntu电脑后,Ubuntu电脑一般会自动挂载TF卡中的Linux根文件系统的分区,由下面的命令可以知道,'''/media/test/opi_root'''即为TF卡中的Linux根文件系统挂载的路径</p>{| class="wikitable" style="width:800px;"
|-
|<p>test@test:~$ '''df -h | grep "media"'''</p><p>/dev/sdd1 1.4G 1.2G 167M 88% '''<span style="text-aligncolor:#FF0000">/media/test/opi_root</span>'''</p><p>test@test: left~$ '''ls /media/test/opi_root'''</p><p>bin boot dev etc home lib lost+found media mnt opt proc root " run <br> sbin selinux srv sys tmp usr var</p>| }</li><li><p>然后进入TF卡中烧录的Linux系统的'''绿灯/boot'''目录中</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''红灯'''
|-
| <p>test@test:~$ '''u-boot启动阶段cd /media/test/opi_root/boot/'''</p>| style="text-align: left;"| }</li><li><p>然后将其中的'''orangepi_first_run.txt.template'''复制为'''灭orangepi_first_run.txt''',通过orangepi_first_run.txt配置文件可以设置开发板Linux系统第一次启动时自动连接某个WIFI热点,也可以设置WIFI或者以太网口的静态IP地址</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''亮'''
|-
| <p>test@test:/media/test/opi_root/boot$ '''内核启动到进入系统sudo cp orangepi_first_run.txt.template orangepi_first_run.txt'''</p>| style}</li><li><p>通过下面的命令可以打开orangepi_first_run.txt文件,然后就可以查看修改其中的内容</p>{| class="text-align: left;wikitable"| '''闪烁'''| style="text-alignwidth: left800px;"| '''灭'''
|-
| '''GPIO口'''| style="text-align: left;"| '''PC13'''| style="text-align<p>test@test: left;"| /media/test/opi_root/boot$ '''PC12sudo vim orangepi_first_run.txt'''</p>
|}
<ol style="list-style-type: lower-alpha;">
<li><p>首先进入绿灯的设置目录'''FR_general_delete_this_file_after_completion'''变量用来设置第一次启动完后是否删除orangepi_first_run.txt这个文件,默认为1,也就是删除,如果设置为0,第一次启动后会将orangepi_first_run.txt重命名为orangepi_first_run.txt.old,一般保持默认值即可</p></li><li><p>root@orangepi:~# '''cd FR_net_change_defaults'''变量用于设置是否改变默认网络设置,这个必须要设置为1,否则所有的网络设置都不会生效</sysp></class/leds/green_ledli><li><p>'''FR_net_ethernet_enabled'''变量用来控制是否使能以太网口的配置,如果需要设置以太网口的静态IP地址,请设置为1</p></li><li><p>设置绿灯停止闪烁的命令如下'''FR_net_wifi_enabled'''变量用来控制是否使能WIFI的配置,如果需要设置开发板自动连接WIFI热点,则必须将其设置为1,另外请注意,如果此变量设置为1,则以太网口的设置就会失效。也就是说WIFI和以太网口不能同时设置(为什么,因为没必要...)</p></li><li><p>root@orangepi:/sys/class/leds/green_led# '''echo none > triggerFR_net_wifi_ssid'''变量用于设置想要连接的WIFI热点的名字</p></li><li><p>设置绿灯常亮的命令如下'''FR_net_wifi_key'''变量用于设置想要连接的WIFI热点的密码</p></li><li><p>root@orangepi:/sys/class/leds/green_led# '''echo default-on > triggerFR_net_use_static'''变量用于设置是否需要设置WIFI或者以太网口的静态IP地址</p></li><li><p>设置绿灯闪烁的命令如下'''FR_net_static_ip'''变量用于设置静态IP的地址,请根据自己的实际情况设置</p></li><li><p>root@orangepi:/sys/class/leds/green_led# '''echo heartbeat > triggerFR_net_static_gateway'''变量用于设置网关,请根据自己的实际情况设置</p></li></ol>
</li>
<li><p>设置红灯亮灭和闪烁的方法如下所示:</p><p>'''注意,下面的操作请在root用户下进行。'''下面演示几个具体的设置示例:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>首先进入红灯的设置目录比如想要开发板的Linux系统第一次启动后自动连接WIFI热点,可以这样设置:</p><ol style="list-style-type: none;"><li><p>root@orangepi:~# a) 设置'''FR_net_change_defaults'''为'''1'''cd </sysp></classli><li><p>b) 设置'''FR_net_wifi_enabled'''为'''1'''</ledsp></red_ledli><li><p>c) 设置'''FR_net_wifi_ssid'''为想要连接的WIFI热点的名字</p></li><li><p>设置红灯常亮的命令如下d) 设置'''FR_net_wifi_key'''为想要连接的WIFI热点的密码</p></li></ol></li><li><p>root@orangepi比如想要开发板的Linux系统第一次启动后自动连接WIFI热点,并且设置WIFI的IP地址为特定的静态IP地址(这样当Linux系统启动后,可以直接使用设置的静态IP地址ssh远程登录开发板,无需通过路由器后台来查看开发板的IP地址),可以这样设置:</p><ol style="list-style-type:none;"><li><p>a) 设置'''FR_net_change_defaults'''为'''1'''</sysp></classli><li><p>b) 设置'''FR_net_wifi_enabled'''为'''1'''</ledsp></red_led# li><li><p>c) 设置'''echo default-on > triggerFR_net_wifi_ssid'''为想要连接的WIFI热点的名字</p></li><li><p>设置红灯闪烁的命令如下d) 设置'''FR_net_wifi_key'''为想要连接的WIFI热点的密码</p></li><li><p>root@orangepi:e) 设置'''FR_net_use_static'''为'''1'''</sysp></classli><li><p>f) 设置'''FR_net_static_ip'''为想要的IP地址</ledsp></red_led# li><li><p>g) 设置'''echo heartbeat >FR_net_static_gateway'''为对应的网关地址</p></li></ol></li><li><p>比如想要开发板的Linux系统第一次启动后自动设置以太网口的IP地址为想要的静态IP地址,可以这样设置:</p><ol style="list-style-type: none; trigger"><li><p>a) 设置'''FR_net_change_defaults'''为'''1'''</p></li><li><p>设置红灯停止闪烁的命令如下b) 设置'''FR_net_ethernet_enabled'''为'''1'''</p></li><li><p>root@orangepi:c) 设置'''FR_net_use_static'''为'''1'''</sysp></classli><li><p>d) 设置'''FR_net_static_ip'''为想要的IP地址</ledsp></red_led# li><li><p>e) 设置'''echo none > triggerFR_net_static_gateway'''为对应的网关地址</p></li></ol></li></ol>
</li>
<li><p>如果开机后不需要LED灯闪烁,可以使用下面的方法来关闭绿灯闪烁<修改完orangepi_first_run.txt文件后,就可以退出TF卡中开发板Linux系统的/p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p><p>orangepi@orangepi:~$ '''sudo orangepi-config'''boot目录,再卸载TF卡,然后就可以将TF卡插入开发板中启动了</p></li><li><p>然后选择'''System'''</p><p>[[File:media/image86.png|398x194px]]如果没有设置静态IP地址,则还是需要通过路由器后台来查看IP地址,如果设置了静态IP地址,则可以在电脑上ping下设置的静态IP地址,如果能ping说明系统已经正常启动,并且网络也已设置正确,然后就可以使用设置的IP地址ssh远程登录开发板的Linux系统了</p></li><li><p>然后选择'''Hardware'''</p><p>[[File:media/image87.png{|393x202px]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''disableclass="wikitable" style="background-leds'''</p><p>[[Filecolor:media/image88.png|397x35px]]</p></li><li><p>然后选择'''<#ffffdc;Save>width:800px;'''保存</p>" <p>[[File:media/image89.png|397x92px]]</p></li><li><p>然后选择'''<Back>'''</p>-<p>[[File:media/image90.png|395x91px]]</p></li><li><pbig>然后选择'''<Reboot>开发板的Linux系统第一次启动完后,orangepi_first_run.txt会被删除或者重命名为orangepi_first_run.txt.old,此时就算重新设置orangepi_first_run.txt配置文件,然后重新启动开发板的Linux系统,orangepi_first_run.txt中的配置也不会再次生效,因为此配置只在烧录完Linux系统后第一次启动才会有作用,这点请特别注意。'''重启系统使配置生效</pbig><p>[[File:media/image91.png|374x187px]]</p></li><li><p>重启后完全进入系统就可以看到开发板上的两个LED灯都不会亮了</p></li></ol>}
</li></ol>
<span id="ssh远程登录开发板"></span>
<ol stylespan id="list-style-type: decimal;ubuntu下ssh远程登录开发板"><li><p>将开发板的Linux镜像烧录到TF卡中后,可以在'''Ubuntu电脑'''中查看下TF卡容量的使用情况,步骤如下所示:</pspan><p>'''注意,这一步不操作是不影响开发板的Linux系统自动扩容的。这里只是想说明TF卡烧录完Linux镜像后,怎么查看TF卡容量的方法。'''</p><ol style="list-style-type: lower-alpha;"><li><p>首先在Ubuntu电脑中安装下gparted这个软件</p><p>test@test:~$ '''sudo apt install -y gparted'''</p></li><li><p>然后打开gparted</p><p>test@test:~$ '''sudo gparted'''</p></li><li><p>打开gparted后在右上角可以选择TF卡,然后就可以看到TF卡容量的使用情况</p><p>[[File:media/image92.png|575x210px]]</p></li><li><p>上图显示的是烧录完Linux桌面版系统后TF卡的情况,可以看到,虽然TF卡的总容量是16GB的(在GParted中显示为14.84GiB),但是rootfs分区(/dev/sdc1)实际只分配了4.05GiB,还剩下10.79GiB未分配</p></li></ol></li><li><p>然后可以将烧录好Linux系统的TF卡插入开发板中启动,TF卡第一次启动linux系统时会通过'''orangepi-resize-filesystem.service'''这个systemd服务来调用'''orangepi-resize-filesystem'''脚本自动进行rootfs分区的扩容,所以'''无需再手动扩容'''</p></li><li><p>登录系统后可以通过'''df -h'''命令来查看rootfs的大小,如果和TF卡的实际容量一致,说明自动扩容运行正确</p></li></ol>== Ubuntu下SSH远程登录开发板 ===
'''如果提示拒绝连接,只要使用的是Orange Pi提供的镜像,<span style="color:#FF0000">就请不要怀疑orangepi这个密码是不是不对</dev/mmcblk0p1 15G 915M 14G 7% /span>,而是要找其他原因。'''</big>|}
root@orangepi:~# '''需要注意的是,linux系统只有一个ext4格式的分区,没有使用单独的BOOT分区来存放内核镜像等文件,所以也就不存在BOOT分区扩容的问题。reset_ssh.sh'''
'''/dev/mmcblk0p1 15G 3.2G 12G 23% /当想把开发板的HDMI接到笔记本电脑HDMI接口时,请先确认清楚您的笔记本是支持HDMI in的功能。'''</big>|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''当HDMI没有显示的时候,请先检查下HDMI线有没有插紧,确认接线没问题后,可以换一个不同的屏幕试下有没有显示。'''</big>|}</li></ol><span id="手动扩容tf卡中rootfs分区容量的方法hdmi转vga显示测试"></span>=== 手动扩容TF卡中rootfs分区容量的方法 ===
<ol style="list-style-type: decimal;">
<li><p>首先在'''Ubuntu电脑'''(Windows不行)中将开发板的linux镜像烧录到TF卡中,'''然后重新拔插下TF卡'''首先需要准备下面的配件</p></liol style="list-style-type: lower-alpha;"><li><p>然后Ubuntu电脑一般会自动挂载TF卡的分区,如果自动挂载正常,使用'''ls'''命令可以看到下面的输出HDMI转VGA转换器</p><p>test@test[[File:~$ '''ls /media/test/opi_root/'''</p><p>bin boot dev etc home lib lost+found media mnt opt proc root run sbin selinux srv sys tmp usr varzero3-img146.png]]</p></li><li><p>然后在Ubuntu电脑中将当前用户切换成root用户一根VGA线和一根Micro HDMI公转HDMI母转接线</p><p>test@test[[File:zero3-img147.png|400px]] [[File:~$ '''sudo zero3-i'''img148.png|400px]]</p></li><li><p>[sudo] test 的密码:一个支持VGA接口的显示器或者电视</p><p/li>root@test:~'''#'''</pol></li><li><p>然后进入TF卡中的linux系统的root目录下新建一个名为'''.no_rootfs_resize'''的文件HDMI转VGA显示测试如下所示</p><p>root@test[[File:~# '''cd /media/test/opi_root/'''zero3-img149.png]]</p><p>root@test{| class="wikitable" style="background-color:/media/test/opi_root/# '''cd root'''ffffdc;width:800px;" |-| </pbig><p>root@test:/media/test/opi_root/root# '''touch .no_rootfs_resize使用HDMI转VGA显示时,开发板以及开发板的Linux系统是不需要做任何设置的,只需要开发板Micro HDMI接口能正常显示就可以了。所以如果测试有问题,请检查HDMI转VGA转换器、VGA线以及显示器是否有问题。'''</p><p>root@test:/media/test/opi_root/root# '''ls .no_rootfs*'''</pbig><p>'''.no_rootfs_resize'''</p>|}</li></ol>
<!-- --><ol startspan id="5linux5.4系统hdmi分辨率设置的方法" style="list-style-type: decimal;"><li><p>然后在Ubuntu电脑中安装下gparted这个软件</p><p>test@test:~$ '''sudo apt install -y gparted'''</p></li><li><p>然后打开gparted</p><p>test@test:~$ '''sudo gparted'''</p></li><li><p>打开gparted后在右上角可以选择TF卡,然后就可以看到TF卡容量的使用情况。下图显示的是烧录完Linux桌面版系统后TF卡的情况,可以看到,虽然TF卡的总容量是16GB的(在GParted中显示为14.84GiB),但是rootfs分区(/dev/sdc1)实际只分配了4.05GiB,还剩下10.79GiB未分配</p><p>[[File:media/image92.png|575x210px]]</p></li><li><p>然后选中rootfs分区(/dev/sdc1)</p><p>[[File:media/image94.png|575x211px]]</p></li><li><p>再点击鼠标右键就可以看到下图所示的操作选项,如果TF卡已经挂载了,首先需要Umount掉TF卡的rootfs分区</p><p>[[File:media/image95.png|436x298px]]</p></li><li><p>然后再次选中rootfs分区,再点击鼠标右键,然后选择'''Resize/Move'''开始扩容rootfs分区的大小</p><p>[[File:media/image96.png|444x302px]]</p></li><li><p>'''Resize/Move'''选项打开后会弹出下面的设置界面</p><p>[[File:media/image97.png|315x193px]]</p></li><li><p>然后可以直接拖动下图所示的位置来设置容量的大小,也可以通过设置'''New sieze(MiB)'''中的数字来设置rootfs分区的大小</p><p>[[File:media/image98.png|320x191px]]</p></li><li><p>设置好容量后,再点击右下角的'''Resize/Move'''即可</p><p>[[File:media/image99.png|327x196px]]</p></li><li><p>最后确认无误后,再点击下图所示的'''绿色√'''</p><p>[[File:media/image100.png|392x270px]]</p></li><li><p>然后选择'''Apply''',就会正式开始扩容rootfs分区的容量</p><p>[[File:media/image101.png|399x116px]]</p></li><li><p>扩容完成后点击'''Close'''关闭即可</p><p>[[File:media/image102.png|399x172px]]</p></li><li><p>然后就可以把TF卡拔下来,再插到开发板中启动,进入开发板的Linux系统中后如果使用'''df -h'''命令可以看到rootfs分区的大小和前面设置的大小一致的话就说明手动扩容成功</p><p>root@orangepi:~# '''df -h'''</p><p>Filesystem Size Used Avail Use% Mounted on</p><p>udev 925M 0 925M 0% /dev</p><p>tmpfs 199M 3.2M 196M 2% /run</p><p>'''/dev/mmcblk0p1 7.7G 3.2G 4.4G 42% /'''</p></li></olspan>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''在TF卡的Linux系统中配置好应用程序或者其他的开发环境后,如果想备份下TF卡中的Linux系统,可以使用此小节的方法先缩小下rootfs分区的大小,然后再开始备份。注意: 此方法只适用于linux5.4内核的系统。'''</big>|}
<ol style="list-style-type: decimal;">
<li><p>首先在在linux系统的'''Ubuntu电脑/boot/orangepiEnv.txt'''(Windows不行)中插入想要操作的TF卡中有个disp_mode变量,可以通过它来设置HDMI输出的分辨率,linux系统默认设置的分辨率为1080p60</p></li><li><p>然后在Ubuntu电脑中安装下gparted这个软件</p>{| class="wikitable" style="width:800px;" <p>test@test:~$ '''sudo apt install |-y gparted'''</p></li><li><p>然后打开gparted</p>| <p>testorangepi@testorangepi:~$ '''sudo gpartedvim /boot/orangepiEnv.txt'''</p></li><li><p>打开gparted后在右上角可以选择TF卡,然后就可以看到TF卡容量的使用情况verbosity=1</p><p>[[File:media/image103.png|575x217px]]console=both</p></li><li><p>然后选中rootfs分区(/dev/sdc1)</p>disp_mode='''<p>[[Filespan style="color:media/image104.png|575x217px]]</p#FF0000">1080p60</li><li><pspan>再点击鼠标右键就可以看到下图所示的操作选项,如果TF卡已经挂载了,首先需要Umount掉TF卡的rootfs分区</p><p>[[File:media/image105.png|400x274px]]</p></li><li><p>然后再次选中rootfs分区,再点击鼠标右键,然后选择'''Resize/Move'''开始设置rootfs分区的大小</p><p>[[File:media/image106.png|399x273px]]fb0_width=1920</p></li><li><p>'''Resize/Move'''选项打开后会弹出下面的设置界面fb0_height=1080</p><p>[[File:media/image107.png|315x188px]]</p>}</li><li><p>然后可以直接拖动下图所示的位置来设置容量的大小,也可以通过设置'''New sieze(MiB)'''中的数字来设置rootfs分区的大小</p><p>[[File:media/image98.png|318x190px]]disp_mode变量支持设置的值如下表所示</p></li></ol>
<span id="wifi连接测试linux5.4系统framebuffer宽度和高度的修改方法"></span>=== WIFI连接测试 ===
在linux系统的'''当开发板没有连接以太网,没有连接HDMI显示器,只连接了串口时,推荐使用此小节演示的命令来连接WIFI网络。因为nmtui在某些串口软件(如minicom)中只能显示字符,无法正常显示图形界面。当然,如果开发板连接了以太网或者HDMI显示屏,也可以使用此小节演示的命令来连接WIFI网络的。/boot/orangepiEnv.txt'''中有fb0_width和fb0_height两个变量,可以通过它们来设置Framebuffer的宽度和高度,linux系统默认设置fb0_width=1920、fb0_height=1080。
'''<span idstyle="服务器版镜像通过图形化方式连接wificolor:#FF0000">fb0_height=1080</span>'''|} fb0_width和fb0_height不同分辨率对应的'''参考值'''如下所示: {| class="wikitable" style="width:800px;"|-| style="text-align: left;"| '''HDMI分辨率'''| style="text-align: left;"| '''fb0_width'''| style="text-align: left;"| '''fb0_height'''|-| style="text-align: left;"| '''480p'''| style="text-align: left;"| '''720'''| style="text-align: left;"| '''480'''|-| style="text-align: left;"| '''576p'''| style="text-align: left;"| '''720'''| style="text-align: left;"| '''576'''|-| style="text-align: left;"| '''720p'''| style="text-align: left;"| '''1280'''| style="text-align: left;"| '''720'''|-| style="text-align: left;"| '''1080p'''| style="text-align: left;"| '''1920'''| style="text-align: left;"| '''1080'''|} 在相同的HDMI分辨下,当fb0_width和fb0_height设置的值越大时,屏幕显示的文字就越小,当fb0_width和fb0_height设置的值越小时,屏幕显示的文字就越大。 <span id="framebuffer光标设置"></span> == 服务器版镜像通过图形化方式连接WIFI =Framebuffer光标设置 ===
<ol style="list-style-type: decimal;">
<li><p>先登录linux系统,有下面三种方式Framebuffer使用的softcursor,设置光标闪烁或者不闪烁的方法如下所示</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>|-| <p>如果开发板连接了网线,可以通过[[\l|root@orangepi:~# '''ssh远程登录linux系统echo <span style="color:#FF0000">1</span> > /sys/class/graphics/fbcon/cursor_blink #光标闪烁''']]</p></li><lip>root@orangepi:~# '''echo <pspan style="color:#FF0000">如果开发板连接好了调试串口,可以使用串口终端登录linux系统(串口软件请使用MobaXterm,使用minicom无法显示图形界面)0</pspan><> /sys/class/li><li><p>如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到linux系统<graphics/p><fbcon/li>cursor_blink #光标不闪烁'''</olp>|}
</li>
<li><p>然后在命令行中输入nmtui命令打开wifi连接的界面</p><p>orangepi@orangepi:~$ '如果需要隐藏光标,可以在''sudo nmtui'''</p><boot/li><li><p>输入nmtui命令打开的界面如下所示</p><p>[[File:media/image109orangepiEnv.png|345x215px]]</p></li><li><p>选择txt'''Activate a connect的'''后回车</p><p>[[File:media/image110.png|349x216px]]</p></li><li><p>然后就能看到所有搜索到的WIFI热点</p><p>[[File:media/image111.png|360x229px]]</p></li><li><p>选择想要连接的WIFI热点后再使用Tab键将光标定位到extraargs'''Activate变量('''后回车</p><p>[[File:media/image112.png|366x230px]]</p></li><li><p>然后会弹出输入密码的对话框,在'''Psswordextraargs'''内输入对应的密码然后回车就会开始连接WIFI</p><p>[[File:media/image113.png|352x225px]]</p></li><li><p>WIFI连接成功后会在已连接的WIFI名称前显示一个”*”</p><p>[[File:media/image114.png|349x223px]]</p></li><li><p>通过的值会赋值给'''ip a s wlan0bootargs'''命令可以查看wifi的IP地址</p><p>orangepi@orangepi:~$ 环境变量最终传递给内核)中加入'''ip a s wlan0vt.global_cursor_default=0'''</p><p>11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p><p>link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff</p><p>inet (如果'''192.168vt.global_cursor_default=1.11'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0则是显示光标),然后重启系统就能看到光标已经消失</p><p>valid_lft 259069sec preferred_lft 259069sec</p><p>inet6 240e{| class="wikitable" style="width:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute</p>800px;" <p>valid_lft 259071sec preferred_lft 172671sec</p>|-<p>inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute</p><p>valid_lft forever preferred_lft forever</p></li><li><p>使用'''ping'''命令可以测试wifi网络的连通性,'''ping'''命令可以通过'''Ctrl+C'''快捷键来中断运行</p>| <p>orangepi@orangepi:~$ '''ping www.orangepisudo vim /boot/orangepiEnv.org -I wlan0txt'''</p><p>PING www.orangepi.org (182.92.236.130) from 192.168.verbosity=1.49 wlan0: 56(84) bytes of data.</p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 timeconsole=43.5 msboth</p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seqdisp_mode=2 ttl=52 time=41.3 ms1080p60</p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 timefb0_width=44.9 ms1920</p><p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 timefb0_height=45.6 ms1080</p><p>64 bytes from 182.92.236.130 (182.92.236.130)'''<span style="color: icmp_seq#FF0000">extraargs=5 ttlvt.global_cursor_default=52 time=48.8 ms0</pspan><p>^C'''</p><p>--- www.orangepi.org ping statistics ---</p><p>5 packets transmitted, 5 received, 0% packet loss, time 4006ms</p>|}<p>rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms</p></li></ol> == 蓝牙使用方法 ==
<span id="桌面版镜像的测试方法-1"></span>=== 桌面版镜像的测试方法 ====
<ol style="list-style-type: decimal;">
<li><p>点击桌面右上角的网络配置图标(测试WIFI时请不要连接网线)点击桌面右上角的蓝牙图标</p><p>[[File:mediazero3-img151.png]]</p></li><li><p>然后选择适配器</image115p><p>[[File:zero3-img152.png|275x121px]]</p></li><li><p>在弹出的下拉框中点击如果有提示下面的界面,请选择'''More networksYes'''可以看到所有扫描到的WIFI热点,然后选择想要连接的WIFI热点</p><p>[[File:mediazero3-img153.png]]</p></image116li><li><p>然后在蓝牙的适配器设置界面中设置'''Visibility Setting'''为'''Always visible''',然后关闭即可</p><p>[[File:zero3-img154.png]]</p></li><li><p>然后打开蓝牙设备的配置界面</p><p>[[File:zero3-img155.png|576x353px]]</p></li><li><p>然后输入WIFI热点的密码,再点击点击'''ConnectSearch'''就会开始连接WIFI即可开始扫描周围的蓝牙设备</p><p>[[File:mediazero3-img156.png]]</image117p></li><li><p>然后选择想要连接的蓝牙设备,再点击鼠标右键就会弹出对此蓝牙设备的操作界面,选择'''Pair'''即可开始配对,这里演示的是和Android手机配对</p><p>[[File:zero3-img157.png|288x147px]]</p></li><li><p>连接好WIFI后,可以打开浏览器查看是否能上网,浏览器的入口如下图所示配对时,桌面的右上角会弹出配对确认框,选择'''Confirm'''确认即可,此时手机上也同样需要进行确认</p><p>[[File:mediazero3-img158.png]]</image118p></li><li><p>和手机配对完后,可以选择已配对的蓝牙设备,然后右键选择'''Send a File'''即可开始给手机发送一张图片</p><p>[[File:zero3-img159.png|465x249px]]</p></li><li><p>打开浏览器后如果能打开其他网页说明WIFI连接正常发送图片的界面如下所示</p><div class="figure"p>[[File:zero3-img160.png]]</p></li></ol>
</divol style="list-style-type: decimal;"></li><p>进入系统后首先可以通过'''hciconfig'''命令来查看是否存在蓝牙的设备节点,如果存在,说明蓝牙初始化正常</olp> <span id{| class="wikitable" style="通过create_ap创建wifi热点的方法width:800px;"|-| <p>orangepi@orangepi:~$ '''sudo apt update && sudo apt install -y bluez'''</spanp>=== 通过create_ap创建WIFI热点的方法 === <p>orangepi@orangepi:~$ '''create_ap是一个帮助快速创建Linux上的WIFI热点的脚本,并且支持bridge和NAT模式,能够自动结合hostapd, dnsmasq和iptables完成WIFI热点的设置,避免了用户进行复杂的配置,github地址如下:hciconfig -a'''</p><p>hci0: Type: Primary Bus: UART</p>:<p>BD Address: 3E:61:3D:19:0E:52 ACL MTU: 1021:8 SCO MTU: 240:3</p>[https:<p>UP RUNNING</p>:<p>RX bytes:925 acl:0 sco:0 events:72 errors:0</p>:<p>TX bytes:5498 acl:0 sco:0 commands:72 errors:0</p>:<p>Features: 0xbf 0xff 0x8d 0xfe 0xdb 0x3d 0x7b 0xc7</p>:<p>Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3</p>:<p>Link policy: RSWITCH SNIFF</p>:<p>Link mode: SLAVE ACCEPT</p>:<p>Name: 'orangepi'</p>:<p>Class: 0x3c0000</p>:<p>Service Classes: Rendering, Capturing, Object Transfer, Audio</p>:<p>Device Class: Miscellaneous,</p>:<p>HCI Version: 5.0 (0x9) Revision: 0x400</githubp>:<p>LMP Version: 5.com0 (0x9) Subversion: 0x400</p>:<p>Manufacturer: Spreadtrum Communications Shanghai Ltd (492)</obliquep>|}</create_ap li><li><p>使用'''bluetoothctl'''扫描蓝牙设备</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''httpssudo bluetoothctl'''</p><p>[NEW] Controller 10:11:12:13:14:15 orangepizero3 [default]</p><p>Agent registered</github.comp><p>[bluetooth]# '''power on #使能控制器'''</obliquep><p>Changing power on succeeded</create_app><p>[bluetooth]# '''discoverable on #设置控制器为可被发现的'''</p><p>Changing discoverable on succeeded</p><p>[CHG]Controller 10:11:12:13:14:15 Discoverable: yes</p> <p>[bluetooth]# '''OPi发布的Linux镜像已经预装了create_ap脚本,可以通过create_ap命令来创建WIFI热点,create_ap的基本命令格式如下所示:pairable on #设置控制器为可配对的'''</p><p>Changing pairable on succeeded</p><p>[bluetooth]# '''create_ap scan on #开始扫描周围的蓝牙设备'''</p><p>Discovery started</p><p>[CHG] Controller 10:11:12:13:14:15 Discovering: yes</p><p>[optionsNEW] <wifiDevice 76:60:79:29:B9:31 76-interface> [<interface60-with79-internet>] [<access29-pointB9-name> 31</p><p>[<passphrase>NEW]Device 9C:2E:A1:42:71:11 小米手机</p><p>'''[NEW]Device DC:72:9B:4C:F4:CF orangepi'''</p> <p>[bluetooth]# '''* options:可以通过该参数指定加密方式、WIFI热点的频段、频宽模式、网络共享方式等,具体可以通过create_ap -h获取到有哪些optionscan off #扫描到想连接的蓝牙设备后就可以关闭扫描了,然后记下蓝牙设备的MAC地址,这里测试的蓝牙设备为Android手机,蓝牙的名字为orangepi,对应的MAC地址为DC:72:9B:4C:F4:CF'''</p><p>Discovery stopped</p><p>[CHG] Controller 10:11:12:13:14:15 Discovering: no</p><p>[CHG] Device DC:72:9B:4C:F4:CF RSSI is nil</p>|}</li><li><p>扫描到想配对的设备后就可以进行配对了,配对需要使用设备的MAC地址</p>{| class="wikitable" style="width:800px;" |-| <p>[bluetooth]# '''* wifi-interface:无线网卡的名称pair DC:72:9B:4C:F4:CF''' '''#使用扫描到的蓝牙设备的MAC地址进行配对'''</p><p>Attempting to pair with DC:72:9B:4C:F4:CF</p><p>[CHG] Device DC:72:9B:4C:F4:CF Connected: yes</p><p>Request confirmation</p><p>[leeb1m[agent] Confirm passkey 764475 (yes/no): '''yes''' '''#在这里输入yes,在手机上也需要确认''* interface'</p><p>[CHG] Device DC:72:9B:4C:F4:CF Modalias: bluetooth:v010Fp107Ed1436</p><p>[CHG] Device DC:72:9B:4C:F4:CF UUIDs: 0000046a-with0000-1000-8000-internet:可以联网的网卡名称,一般是eth000805f9b34fb</p><p>[CHG] Device DC:72:9B:4C:F4:CF ServicesResolved: yes</p><p>[CHG] Device DC:72:9B:4C:F4:CF Paired: yes</p><p>'''Pairing successful #提示配对成功'''</p><p>[CHG] Device DC:72:9B:4C:F4:CF ServicesResolved: no</p><p>[CHG] Device DC:72:9B:4C:F4:CF Connected: no</p>|}</li><li><p>配对成功后,手机蓝牙界面的显示如下所示</p><p>[[File:zero3-img161.png]]</p></li><li><p>连接蓝牙设备需要安装 '''* accesspulseaudio-pointmodule-name:热点名称bluetooth'''软件包,然后再启动'''pulseaudio''' 服务</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''* passphrase:热点的密码sudo apt update'''</p><p>orangepi@orangepi:~$ '''sudo''' '''apt -y install pulseaudio-module-bluetooth'''</p><span id="create_ap以nat模式创建wifi热点的方法"p>orangepi@orangepi:~$ '''pulseaudio --start'''</spanp>==== create_ap以NAT模式创建WIFI热点的方法 ====|}</li><ol li><p>连接蓝牙设备的方法</p>{| class="wikitable" style="list-style-typewidth: decimal800px;"|-| <p>orangepi@orangepi:~$ '''sudo bluetoothctl'''</p><lip>Agent registered</p><p>输入下面的命令以NAT模式创建名称为[bluetooth]# '''orangepipaired-devices #查看已配对的蓝牙设备的MAC地址'''、密码为</p><p>Device DC:72:9B:4C:F4:CF orangepi</p><p>[bluetooth]# '''orangepiconnect DC:72:9B:4C:F4:CF #使用MAC地址连接蓝牙设备'''的WIFI热点</p><p>Attempting to connect to DC:72:9B:4C:F4:CF</p><p>[CHG] Device DC:72:9B:4C:F4:CF Connected: yes</p><p>Connection successful</p><p>[CHG] Device DC:72:9B:4C:F4:CF ServicesResolved: yes</p><p>[CHG] Controller 10:11:12:13:14:15 Discoverable: no</p><p>'''注意,下面的命令中,Debian12需要修改eth0为end0。[orangepi]# #出现这个提示符说明连接成功'''</p>|}</li><li><p>连接完蓝牙设备后,Android手机的蓝牙配置界面就可以看到'''已连接用于通话和媒体的音频'''的提示</olp><div class="figure">
<ol startspan id="7" style="list-style-type: decimal;连接usb存储设备测试"><li><p>在不指定'''--freq-band'''参数的情况下,默认创建的热点是2.4G频段的,如果想要创建5G频段的热点可以通过'''--freq-band 5'''参数指定,具体命令如下</pspan><p>'''注意,下面的命令中,Debian12需要修改eth0为end0。'''</p></li></ol>=== 连接USB存储设备测试 ===
::{| class="wikitable" style="width:800px;"|-|orangepi@orangepi:~$ '''cat /proc/partitions | grep "sd*"'''<br><span style="margin-right: 30px;">major </span><ol startspan style="8margin-right: 40px;" >minor </span><span style="listmargin-right: 30px;">#blocks</span><span style="margin-typeright: decimal50px;">name</span><br><lispan style="margin-right: 70px;">8<p/span><span style="margin-right: 60px;">0</span><span style="margin-right: 50px;">30044160 </span><span style="margin-right: 50px;color:#FF0000">如果需要隐藏SSID,可以指定'''--hiddensda'''参数,具体命令如下</pspan><br><pspan style="margin-right: 70px;">8</span><span style="margin-right: 60px;">1</span><span style="margin-right: 50px;">30043119 </span><span style="margin-right: 50px;color:#FF0000">'''注意,下面的命令中,Debian12需要修改eth0为end0。sda1'''</pspan></li></olbr>|}
test.txt|}</ol><span idol start="create_ap以bridge模式创建wifi热点的方法4" style="list-style-type: decimal;"><li>挂载完后通过'''df -h'''命令就能查看U盘的容量使用情况和挂载点</spanli>==== create_ap以bridge模式创建WIFI热点的方法 ====
<ol start="2" style="list-style-type: decimal;"><li><p>首先将USB网卡插入开发板的USB接口中,然后在USB网卡中插入网线,确保网线能正常上网,如果通过'''dmesg'''命令可以看到下面的log信息,说明USB网卡识别正常</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''dmesg | tail'''</p><p>[ 121.985016] usb 3-1: USB disconnect, device number 2</p><p>[ 126.873772] sunxi-ehci 5311000.ehci3-controller: ehci_irq: highspeed device connect</p><p>[ 127.094054] usb 3-1: new high-speed USB device number 3 using sunxi-ehci</p><p>[ 127.357472] usb 3-1: reset high-speed USB device number 3 using sunxi-ehci</p><p>[ 127.557960] r8152 3-1:1.0 eth1: v1.08.9</p><p>[ 127.602642] r8152 3-1:1.0 enx00e04c362017: renamed from eth1</p><p>[ 127.731874] IPv6: ADDRCONF(NETDEV_UP): enx00e04c362017: link is not ready</p><p>[ 127.763031] IPv6: ADDRCONF(NETDEV_UP): enx00e04c362017: link is not ready</p><p>[ 129.892465] r8152 3-1:1.0 enx00e04c362017: carrier on</p><p>[ 129.892583] IPv6: ADDRCONF(NETDEV_CHANGE): enx00e04c362017: link becomes ready</p>|}</li><li><p>然后通过ifconfig命令可以看到USB网卡的设备节点,以及自动分配的IP地址</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo create_ap ifconfig'''</p><p>'''enx00e04c362017''': flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500</p>::<p>inet '''192.168.1.177''' netmask 255.255.255.0 broadcast 192.168.1.255</p>::<p>inet6 fe80::681f:d293:4bc5:e9fd prefixlen 64 scopeid 0x20<link></p>::<p>ether 00:e0:4c:36:20:17 txqueuelen 1000 (Ethernet)</p>::<p>RX packets 1849 bytes 134590 (134.5 KB)</p>::<p>RX errors 0 dropped 125 overruns 0 frame 0</p>::<p>TX packets 33 bytes 2834 (2.8 KB)</p>::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>|}</li><li><p>测试网络连通性的命令如下</p>{| class="wikitable" style="width:800px;" |-m bridge wlan0 eth0 | <p>orangepi @orangepi :~$ '''ping www.baidu.com -I enx00e04c362017'''</p><p>PING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0: 56(84) bytes of data.</p><p>64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=56 time=6.74 ms</p><p>64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=56 time=6.80 ms</p><p>64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=56 time=6.26 ms</p><p>64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=56 time=7.27 ms</p><p>^C</p><p>--hidden -www.a.shifen.com ping statistics -no-virt'''-</p><p>4 packets transmitted, 4 received, 0% packet loss, time 3002ms</p><p>rtt min/avg/max/mdev = 6.260/6.770/7.275/0.373 ms</p>|}</li></ol>
</li>
<li><p>然后输入下面的命令,其中使用mjpg-streamer测试USB摄像头</p>
<ol style="list-style-type: lower-alpha;">
<li><p>'''"Wired connection 1"''' > 表示设置以太网口的静态IP地址,如果需要设置WIFI的静态IP地址,请修改为WIFI网络接口对应的名字(通过'''nmcli > con show'''命令可以获取到)下载mjpg-streamer</p></liol style="list-style-type: none;"><li><p>'''ipv4.addresses'''后面是要设置的静态IP地址,可以修改为自己想要设置的值a) Github的下载地址:</p></li><li><p>'''ipv4.gateway''' 表示网关的地址</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo nmcli con mod "Wired connection 1" \<br git clone https://>ipv4.addresses "192.168.1github.110" \'''<com/p><p>'''ipv4.gateway "192.168.1.1" \'''<jacksonliam/p><p>'''ipv4.dns "8.8.8.8" \mjpg-streamer'''</p><p>'''ipv4.method "manual"'''</p></li></ol>|}
</li>
<li><p>然后重启linux系统b) Gitee的镜像下载地址为:</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo rebootgit clone https://gitee.com/leeboby/mjpg-streamer'''</p>|}</li></ol></li><li><p>然后重新进入linux系统使用安装依赖的软件包</p><ol style="list-style-type: none;"><li><p>a) Ubuntu系统</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ip addr show eth0sudo apt-get install -y cmake libjpeg8-dev'''命令就可以看到IP地址已经设置为想要的值了</p>|}</li><li><p>b) Debian系统</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ip addr show eth0sudo apt-get install -y cmake libjpeg62-turbo-dev'''</p>|}</li></ol></li><li><p>3编译安装mjpg-streamer</p>{| class="wikitable" style="width: eth0800px;" |-| <p>orangepi@orangepi: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000~$ '''cd mjpg-streamer/mjpg-streamer-experimental'''</p><p>linkorangepi@orangepi:~/mjpg-streamer/ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ffmjpg-streamer-experimental$ '''make -j4'''</p><p>inet orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ '''192.168.1.110sudo make install'''</32 brd 192.168.1.110 scope global noprefixroute eth0p>|}</pli><li><p>valid_lft forever preferred_lft forever然后输入下面的命令启动mjpg_streamer</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>inet6 240e:3b7:3240:c3a0:97de:1d01:b290:fe3a'''注意,video的序号不一定都是video0,请以实际看到的为准。'''</64 scope global dynamic noprefixroutep></pbig>|}{| class="wikitable" style="width:800px;" |-| <p>valid_lft 259183sec preferred_lft 172783secorangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ '''export LD_LIBRARY_PATH=.'''</p><p>inet6 fe80orangepi@orangepi::3312:861a:a589:d3c~/mjpg-streamer/mjpg-streamer-experimental$ '''sudo ./mjpg_streamer -i "./64 scope link noprefixrouteinput_uvc.so -d \'''</p><p>valid_lft forever preferred_lft forever'''/dev/video0 -u -f 30" -o "./output_http.so -w ./www"'''</p>|}</li><li><p>然后在和开发板同一局域网的Ubuntu PC或者Windows > PC或者手机的浏览器中输入【'''开发板的IP地址:8080'''】就能看到摄像头输出的视频了</olp><div class="figure">
<ol style="list-style-type: lower-alpha;">
<li><p>linux5.4系统的输出如下所示,其中'''FR_general_delete_this_file_after_completioncard 0: audiocodec'''变量用来设置第一次启动完后是否删除orangepi_first_run.txt这个文件,默认为1,也就是删除,如果设置为0,第一次启动后会将orangepi_first_run.txt重命名为orangepi_first_run.txt.old,一般保持默认值即可就是耳机播放需要的声卡设备</p></li><li><p>'''FR_net_change_defaults'''变量用于设置是否改变默认网络设置,这个必须要设置为1,否则所有的网络设置都不会生效</p></li>{| class="wikitable" style="width:800px;" |-| <li><p>root@orangepi:~# '''FR_net_ethernet_enabledaplay -l'''变量用来控制是否使能以太网口的配置,如果需要设置以太网口的静态IP地址,请设置为1</p></li><li><p>'''FR_net_wifi_enabled'''变量用来控制是否使能WIFI的配置,如果需要设置开发板自动连接WIFI热点,则必须将其设置为1,另外请注意,如果此变量设置为1,则以太网口的设置就会失效。也就是说WIFI和以太网口不能同时设置(为什么,因为没必要...)**** List of PLAYBACK Hardware Devices ****</p></li><li><p>'''FR_net_wifi_ssidcard 0: audiocodec [audiocodec], device 0: SUNXI-CODEC sun50iw9-codec-0 []'''变量用于设置想要连接的WIFI热点的名字</p></li><li>:<p>'''FR_net_wifi_key'''变量用于设置想要连接的WIFI热点的密码<Subdevices: 1/p></li><li><p>''1'FR_net_use_static'''变量用于设置是否需要设置WIFI或者以太网口的静态IP地址</p></li><li>:<p>'''FR_net_static_ipSubdevice #0: subdevice #0'''变量用于设置静态IP的地址,请根据自己的实际情况设置</p></li><li><p>'''FR_net_static_gateway'''变量用于设置网关,请根据自己的实际情况设置</p></li></ol>|}
</li>
<li><p>下面演示几个具体的设置示例:</p><ol style="list-style-type: lower-alpha;"><li><p>比如想要开发板的Linux系统第一次启动后自动连接WIFI热点,可以这样设置:</p><ol style="list-style-type: lower-alpha;"><li><p>设置'linux6.1系统的输出如下所示,其中''FR_net_change_defaults'''为'''1audiocodec'''就是耳机播放需要的声卡设备</p></li><li><p>设置'''FR_net_wifi_enabled'''为'''1'''</p></li><li><p>设置'''FR_net_wifi_ssid'''为想要连接的WIFI热点的名字</p></li><li><p>设置'''FR_net_wifi_key'''为想要连接的WIFI热点的密码</p></li></ol></li><li><p>比如想要开发板的Linux系统第一次启动后自动连接WIFI热点,并且设置WIFI的IP地址为特定的静态IP地址(这样当Linux系统启动后,可以直接使用设置的静态IP地址ssh远程登录开发板,无需通过路由器后台来查看开发板的IP地址),可以这样设置:</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>设置'''FR_net_change_defaults'''为'''1'''</p></li><li><p>设置'''FR_net_wifi_enabled'''为'''1'''</p></li>|-<li><p>设置'''FR_net_wifi_ssid'''为想要连接的WIFI热点的名字</p></li>| <li><p>设置root@orangepi:~# '''FR_net_wifi_keyaplay -l'''为想要连接的WIFI热点的密码</p></li><li><p>设置'''FR_net_use_static'''为'''1'''**** List of PLAYBACK Hardware Devices ****</p></li><li><p>设置'''FR_net_static_ip'''为想要的IP地址</p></li><li><p>设置'''FR_net_static_gateway'''为对应的网关地址</p></li></ol></li><li><p>比如想要开发板的Linux系统第一次启动后自动设置以太网口的IP地址为想要的静态IP地址,可以这样设置:</p><ol style="list-stylecard 0: audiocodec [audiocodec], device 0: CDC PCM Codec-type: lower0 [CDC PCM Codec-alpha;"><li><p>设置'''FR_net_change_defaults'''为'''10]'''</p></li><li>:<p>设置'''FR_net_ethernet_enabled'''为'''Subdevices: 1'''</p></li><li><p>设置'''FR_net_use_static'''为'''1'''</p></li><li>:<p>设置'''FR_net_static_ipSubdevice #0: subdevice #0'''为想要的IP地址</p></li><li><p>设置'''FR_net_static_gateway'''为对应的网关地址</p></li></ol>|}
</li></ol>
</li>
<li><p>修改完orangepi_first_run.txt文件后,就可以退出TF卡中开发板Linux系统的/boot目录,再卸载TF卡,然后就可以将TF卡插入开发板中启动了然后使用'''aplay'''命令播放音频,耳机就能听到声音了</p></li><li>{| class="wikitable" style="width:800px;" |-| <p>如果没有设置静态IP地址,则还是需要通过路由器后台来查看IP地址,如果设置了静态IP地址,则可以在电脑上ping下设置的静态IP地址,如果能ping说明系统已经正常启动,并且网络也已设置正确,然后就可以使用设置的IP地址ssh远程登录开发板的Linux系统了root@orangepi:~# '''aplay -D hw:0,0 /usr/share/sounds/alsa/audio.wav'''</p></lip>Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</olp>|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''开发板的Linux系统第一次启动完后,orangepi_first_run.txt会被删除或者重命名为orangepi_first_run.txt.old,此时就算重新设置orangepi_first_run.txt配置文件,然后重新启动开发板的Linux系统,orangepi_first_run.txt中的配置也不会再次生效,因为此配置只在烧录完Linux系统后第一次启动才会有作用,这点请特别注意。如果耳机测试有杂音,请将耳机拔出来一些,不要全部插到底。'''</big>|}</li></ol><span id="ssh远程登录开发板hdmi音频播放测试"></span>== SSH远程登录开发板 ==
<span idol style="ubuntu下ssh远程登录开发板list-style-type: decimal;"><li><p>首先使用Micro HDMI 转HDMI线将Orange Pi开发板连接到电视机上(其他的HDMI显示器需要确保可以播放音频)</p></spanli><li><p>HDMI音频播放无需其他设置,直接使用'''aplay'''命令播放即可</p>{| class="wikitable" style== Ubuntu下SSH远程登录开发板 ==="width:800px;" |-| <p>root@orangepi:~# '''aplay -D hw:2,0 /usr/share/sounds/alsa/audio.wav'''</p>|}</li></ol>
<ol start="3" style="list-style-type: decimal;"><li><p>成功登录系统后的显示如下图所示首先需要将13pin扩展板插入到Orange Pi开发板的13pin接口中,插入扩展板后,开发板才能使用红外接收功能</p><p>[[File:media/image142.png|575x273px]]</p><p>'''如果ssh无法正常登陆linux系统,首先请检查下开发板的IP地址是否能ping通,如果ping通没问题的话,可以通过串口或者HDMI显示器登录linux系统然后在开发板上输入下面的命令后再尝试是否能连接:'''</p></li></oldiv class="figure">
orangepi@orangepi:~$ '''sudo''' '''apt-get install -y ir-keytable'''|}</li></ol><ol start="3" style="list-style-type: decimal;"><li><p>首先获取开发板的IP地址</p></li><li><p>在windows下可以使用MobaXterm远程登录开发板,首先新建一个ssh会话然后执行ir-keytable可以查看红外设备的信息</p>
<ol style="list-style-type: lower-alpha;">
<li><p>打开'''Session'''</p>linux5.4系统输出如下所示</li><li><p>然后在{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Session Settingir-keytable'''中选择'''SSH'''</p></li><li><p>然后在'''Remote host'''中输入开发板的IP地址<Found /p></li><li><p>然后在'''Specify > username'''中输入linux系统的用户名'''root'''或'''orangepi'''<sys/p><class/li><li><p>最后点击'''OK'''即可<rc/p><p>[[File:mediarc0/image143.png|576x292px]]<(/p><dev/li><input/ol>event1) with:</li><li><p>然后会提示输入密码,默认root和orangepi用户的密码都为orangepi</p>:Driver: sunxi-rc-recv, table: rc_map_sunxi<p>'''注意,输入密码的时候,屏幕上是不会显示输入的密码的具体内容的,请不要以为是有什么故障,输入完后直接回车即可。'''</p><p>[[File:medialirc device: /image144.png|575x157px]]<dev/p></li>lirc0 :Supported protocols: lirc nec<li><p>成功登录系统后的显示如下图所示</p><p>[[File:media/image145.png|559x388px]]</p></li></ol>Enabled protocols: lirc nec
:Repeat delay = 500 ms, repeat period = 125 ms|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>linux6.1系统的输出如下所示</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ir-keytable'''</p><p>Found /sys/class/rc/rc0/ with:</p>:<p>Name: sunxi-ir</p>:<p>Driver: sunxi-ir</p>:<p>Default keymap: rc-empty</p>:<p>Input device: /dev/input/event5</p>:<p>LIRC device: /dev/lirc0</p>:<p>Attached BPF protocols: Operation not permitted</p>:<p>Supported kernel protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon rc-mm</p>:<p>Enabled kernel protocols: lirc</p>:<p>bus: 25, vendor/product: 0001:0001, version: 0x0100</p>:<p>Repeat delay = 500 ms, repeat period = 125 ms</p>|}</li></ol ></li></ol><!-- --><ol start="4" style="list-style-type: decimal;"><li><p>使用Micro HDMI转HDMI线连接Orange Pi开发板和HDMI显示器测试红外接收功能前需要准备一个Orange Pi专用的红外遥控器,'''<span style="color:#FF0000">其他遥控器不支持</span>'''</p>
<div class="figure">
[[File:media/image13zero3-img170.jpeg|151x151px|IMG_6109(20211221-181051)png]]
</div></li>
<li><p>启动linux系统后如果HDMI显示器有图像输出说明HDMI接口使用正常然后在终端中输入'''ir-keytable -t'''命令,再使用红外遥控器对着Orange Pi开发板的红外接收头按下按键就能在终端中看到接收到的按键编码了</p><ol style="list-style-type: lower-alpha;"></li>linux5.4系统输出如下所示</olli>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''注意,很多笔记本电脑虽然带有HDMI接口,但是笔记本的HDMI接口一般只有输出功能,并没有HDMI in的功能,也就是说并不能将其他设备的HDMI输出显示到笔记本的屏幕上。sudo ir-keytable -t'''
1598339152.260376: event type EV_SYN(0x00). 1598339152.914715: event type EV_MSC(0x04): scancode = 0xfb0410|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>linux6.1系统输出如下所示<span id/p>{| class="hdmi转vga显示测试wikitable"style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo ir-keytable -c -p NEC -t'''</p><p>Old keytable cleared</p><p>Protocols changed to nec</p><p>Testing events. Please, press CTRL-C to abort.</p><p>202.063219: lirc protocol(nec): scancode = 0x45c</spanp><p>202.063249: event type EV_MSC(0x04): scancode = 0x45c</p><p>202.063249: event type EV_SYN(0x00).</p>|}</li></ol></li></ol> == 温度传感器 == === HDMI转VGA显示测试 linux5.4系统查看温度的方法 ===# H618总共有4个温度传感器,查看温度的命令如下所示: ::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''显示的温度值需要除以1000,单位才是摄氏度。'''</big>|}
<ol style="list-style-type: lower-alpha;">
<li><p>HDMI转VGA转换器</p><p>[[File:media/image146.png|155x104px]]</p></li><li><p>一根VGA线和一根Micro HDMI公转HDMI母转接线</p><p>[[File:media/image147.png|148x133px]] [[File:media/image148.jpeg|157x139px|IMG_6140(20220104-134930)]]</p></li><li><p>一个支持VGA接口的显示器或者电视</p>sensor0:CPU的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值</li></ol></li><li><p>HDMI转VGA显示测试如下所示</p><p>[[File:media/image149.png|574x336px]]</p><p>'''使用HDMI转VGA显示时,开发板以及开发板的Linux系统是不需要做任何设置的,只需要开发板Micro HDMI接口能正常显示就可以了。所以如果测试有问题,请检查HDMI转VGA转换器、VGA线以及显示器是否有问题。'''</p></li></ol>
'''注意: 此方法只适用于linux5.4内核的系统。cpu'''_thermal_zone
'''57734'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>sensor1:DDR的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值</p>{| class="wikitable" style="width:800px;"
|-
| style="text-align<p>orangepi@orangepi: left;"| ~$ '''cat /sys/class/thermal/thermal_zone1/type'''</p><p>'''disp_mode支持的值ddr'''_thermal_zone</p>| style="text-align<p>orangepi@orangepi: left;"| ~$ '''cat /sys/class/thermal/thermal_zone1/temp'''</p><p>'''HDMI分辨率57410'''</p>| }</li><li><p>sensor2:GPU的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''HDMI刷新率'''
|-
| style="text-align<p>orangepi@orangepi: left;"| ~$ '''cat /sys/class/thermal/thermal_zone2/type'''</p><p>'''480igpu'''_thermal_zone</p>| style="text-align<p>orangepi@orangepi: left;"| ~$ '''cat /sys/class/thermal/thermal_zone2/temp'''</p><p>'''720x48059273'''</p>| }</li><li><p>sensor3:VE的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''60'''
|-
| style="text-align<p>orangepi@orangepi: left;"| ~$ '''cat /sys/class/thermal/thermal_zone3/type'''</p><p>'''576ive'''_thermal_zone</p>| style="text-align<p>orangepi@orangepi: left;"| ~$ '''cat /sys/class/thermal/thermal_zone3/temp'''</p><p>'''720x48058949'''</p>| }</li></ol> === linux6.1系统查看温度的方法 === {| class="wikitable" style="text-alignwidth: left800px;"| '''50'''
|-
| style="text-align: left;"| '''480p'''| style="text-alignorangepi@orangepi: left;"| ~$ '''720x480sensors'''| style="text-align: left;"| '''60'''|cpu_thermal-| style="textvirtual-align: left;"| '''576p'''0| style="text-align: left;"| '''720x576'''| style="text-alignAdapter: left;"| '''60'''Virtual device|-| style="text-aligntemp1: left "| '''720p50'''| style="text-align: left "| '''1280x720'''| style="text-align: left "| '''50'''|-| style="text-align: left "| +'''720p60'''| <span style="text-aligncolor: left;#FF0000"| ''>47.4°C</span>'1280x720'''| style="text-align: left "| '''60'''|-| style="text-align: left "| '''1080i50'''| style(crit ="text-align: left;"| '''1920x1080'''+110.0°C)| style="text-align: left;"| '''50'''|-| style="text-align: left;"| '''1080i60'''| style="text-align: left;"| '''1920x1080'''| style="text-align: left;"| '''60'''|gpu_thermal-| style="textvirtual-align: left;"| '''1080p24'''0| style="text-align: left;"| '''1920x1080'''| style="text-alignAdapter: left;"| '''24'''|-| style="text-align: left;"| '''1080p50'''| style="text-align: left;"| '''1920x1080'''| style="text-align: left;"| '''50'''|-| style="text-align: left;"| '''1080p60'''| style="text-align: left;"| '''1920x1080'''| style="text-align: left;"| '''60'''|}Virtual device
temp1: +'''注意:Linux系统目前不支持4K分辨率。<span style="color:#FF0000">48.7°C</span>''' (crit = +110.0°C)
temp1: +'''注意: 此方法只适用于linux5<span style="color:#FF0000">47.4内核的系统。8°C</span>''' (crit = +110.0°C)
|-
| style="text-align: left;"| '''HDMI分辨率'''| style="text-align: left;"| '''fb0_width5V'''| style="text-align: left;"| '''fb0_height1'''
|-
| style="text-align: left;"| '''480p'''| style="text-align: left;"| '''720GND'''| style="text-align: left;"| '''4802'''
|-
| style="text-align: left;"| '''576p'''| style="text-align: left;"| '''720USB2-DM'''| style="text-align: left;"| '''5763'''
|-
| style="text-align: left;"| '''720p'''| style="text-align: left;"| '''1280USB2-DP'''| style="text-align: left;"| '''7204'''
|-
| style="text-align: left;"|| style="text-align: left;"| '''USB3-DM'''| style="text-align: left;"| '''5'''|-| style="text-align: left;"|| style="text-align: left;"| '''USB3-DP'''| style="text-align: left;"| '''6'''|-| style="text-align: left;"|| style="text-align: left;"| '''LINEOUTR'''| style="text-align: left;"| '''7'''|-| style="text-align: left;"|| style="text-align: left;"| '''LINEOUTL'''| style="text-align: left;"| '''1080p8'''|-| style="text-align: left;"|| style="text-align: left;"| '''1920TV-OUT'''| style="text-align: left;"| '''10809'''|-| style="text-align: left;"| '''<span style="color:#FF0000">65</span>'''| style="text-align: left;"| '''<span style="color:#FF0000">PC1</span>'''| style="text-align: left;"| '''<span style="color:#FF0000">10</span>'''|-| style="text-align: left;"| '''<span style="color:#FF0000">272</span>'''| style="text-align: left;"| '''<span style="color:#FF0000">PI16</span>'''| style="text-align: left;"| '''<span style="color:#FF0000">11</span>'''|-| style="text-align: left;"| '''<span style="color:#FF0000">262</span>'''| style="text-align: left;"| '''<span style="color:#FF0000">PI6</span>'''| style="text-align: left;"| '''<span style="color:#FF0000">12</span>'''|-| style="text-align: left;"| '''<span style="color:#FF0000">234</span>'''| style="text-align: left;"| '''IR-RX/<span style="color:#FF0000">PH10</span>'''| style="text-align: left;"| '''<span style="color:#FF0000">13</span>'''|}</ol></li></ol> 在相同的HDMI分辨下,当fb0_width和fb0_height设置的值越大时,屏幕显示的文字就越小,当fb0_width和fb0_height设置的值越小时,屏幕显示的文字就越大。<span id="pin接口引脚说明"></span>
<ol style="list-style-type: decimal;">
<li><p>Framebuffer使用的softcursor,设置光标闪烁或者不闪烁的方法如下所示Orange Pi Zero 3开发板26 pin接口引脚的顺序请参开发板上的丝印图</p><p>root@orangepi[[File:~# '''echo zero3-img171-1 > /sys/class/graphics/fbcon/cursor_blink #光标闪烁'''</p><p>root@orangepi:~# '''echo 0 > /sys/class/graphics/fbcon/cursor_blink #光标不闪烁'''.png]]</p></li><li><p>如果需要隐藏光标,可以在'''/boot/orangepiEnv.txt'''的'''extraargs'''变量('''extraargs'''的值会赋值给'''bootargs'''环境变量最终传递给内核)中加入'''vt.global_cursor_default=0'''(如果'''vt.global_cursor_default=1'''则是显示光标),然后重启系统就能看到光标已经消失</p><p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p><p>verbosity=1</p><p>console=both</p><p>disp_mode=1080p60</p><p>fb0_width=1920</p><p>fb0_height=1080</p><p>'''extraargs=vt.global_cursor_default=0'''开发板26 pin接口引脚的功能如下表所示</p></li></ol>
|-
| style="text-align: left;"| 序号'''2'''| style="text-align: left;"| '''5V'''| style="text-align: left;"|| style="text-align: left;"||-| style="text-align: left;"| '''4'''| style="text-align: left;"| '''5V'''| style="text-align: left;"|| style="text-align: left;"||-| style="text-align: left;"| '''6'''| style="text-align: left;"| '''GND'''| style="text-align: left;"|| style="text-align: left;"| 型号
|-
| style="text-align: left;"| 1'''8'''| style="text-align: left;"| RTL8152B USB百兆网卡'''UART5_TX'''| style="text-align: left;"| '''PH2'''| style="text-align: left;"| '''226'''|-| style="text-align: left;"| '''10'''| style="text-align: left;"| '''UART5_RX'''| style="text-align: left;"| '''PH3'''| style="text-align: left;"| '''227'''
|-
| style="text-align: left;"| 2'''12'''| style="text-align: left;"| RTL8153 USB千兆网卡'''PC11'''|} <ol start="2" style="listtext-style-typealign: decimalleft;"><li><p>首先将USB网卡插入开发板的USB接口中,然后在USB网卡中插入网线,确保网线能正常上网,如果通过| '''dmesgPC11'''命令可以看到下面的log信息,说明USB网卡识别正常</p><p>orangepi@orangepi| style="text-align:~$ left;"| '''dmesg | tail75'''</p><p>[ 121.985016] usb 3|-1: USB disconnect, device number 2</p><p>[ 126.873772] sunxi| style="text-ehci 5311000.ehci3-controlleralign: ehci_irq: highspeed device connect</p><p>[ 127.094054] usb 3-1: new high-speed USB device number 3 using sunxi-ehci</p><p>[ 127.357472] usb 3-1: reset high-speed USB device number 3 using sunxi-ehci</p><p>[ 127.557960] r8152 3-1:1.0 eth1: v1.08.9</p><p>[ 127.602642] r8152 3-1:1.0 enx00e04c362017: renamed from eth1</p><p>[ 127.731874] IPv6: ADDRCONF(NETDEV_UP): enx00e04c362017: link is not ready</p><p>[ 127.763031] IPv6: ADDRCONF(NETDEV_UP): enx00e04c362017: link is not ready</p><p>[ 129.892465] r8152 3-1:1.0 enx00e04c362017: carrier on</p><p>[ 129.892583] IPv6: ADDRCONF(NETDEV_CHANGE): enx00e04c362017: link becomes ready</p></li><li><p>然后通过ifconfig命令可以看到USB网卡的设备节点,以及自动分配的IP地址</p><p>orangepi@orangepi:~$ left;"| '''sudo ifconfig14'''</p><p>'''enx00e04c362017''': flags| style=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500</p><p>inet '''192.168.1.177''' netmask 255.255.255.0 broadcast 192.168.1.255</p><p>inet6 fe80"text-align::681f:d293:4bc5:e9fd prefixlen 64 scopeid 0x20<left;link></p><p>ether 00:e0:4c:36:20:17 txqueuelen 1000 (Ethernet)</p><p>RX packets 1849 bytes 134590 (134.5 KB)</p><p>RX errors 0 dropped 125 overruns 0 frame 0</p><p>TX packets 33 bytes 2834 (2.8 KB)</p><p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p></li><li><p>测试网络连通性的命令如下</p><p>orangepi@orangepi:~$ "| '''ping www.baidu.com -I enx00e04c362017GND'''</p><p>PING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0: 56(84) bytes of data.</p><p>64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq| style=1 ttl=56 time=6.74 ms</p><p>64 bytes from 14.215.177.38 (14.215.177.38)"text-align: icmp_seq=2 ttl=56 time=6.80 ms</p>left;"|<p>64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq| style=3 ttl=56 time=6.26 ms</p><p>64 bytes from 14.215.177.38 (14.215.177.38)"text-align: icmp_seq=4 ttl=56 time=7.27 ms</p>left;"|<p>^C</p><p>|--- www.a.shifen.com ping statistics ---</p><p>4 packets transmitted, 4 received, 0% packet loss, time 3002ms</p><p>rtt min/avg/max/mdev = 6.260/6.770/7.275/0.373 ms</p></li></ol> <span id="usb摄像头测试"></span>=== USB摄像头测试 === <ol | style="listtext-style-typealign: decimalleft;"><li><p>首先将USB摄像头插入到Orange Pi开发板的USB接口中</p></li><li><p>然后通过lsmod命令可以看到内核自动加载了下面的模块</p><p>orangepi@orangepi:~$ | '''lsmod16'''</p><p>Module Size Used by</p><p>| style="text-align: left;"| '''uvcvideo 106496 0PC15'''</p></li><li><p>通过v4l2| style="text-ctl命令可以看到USB摄像头的设备节点信息为/dev/video0</p><p>orangepi@orangepialign:~$ left;"| '''sudo apt updatePC15'''</p><p>orangepi@orangepi| style="text-align:~$ left;"| '''sudo79''' |-| style="text-align: left;"| '''apt install -y v4l-utils18'''</p><p>orangepi@orangepi| style="text-align:~$ left;"| '''v4l2-ctl --list-devicesPC14'''</p><p>USB 2.0 Camera (usb| style="text-sunxi-ehci-1)align:</p><p>/dev/video0</p><p>left;"| '''注意v4l2中的l是小写字母l,不是数字1。PC14'''</p><p>| style="text-align: left;"| '''另外video的序号不一定都是video0,请以实际看到的为准。78'''</p></li><li><p>使用fswebcam测试USB摄像头</p>|-<ol | style="listtext-style-typealign: lower-alphaleft;"><li><p>安装fswebcam</p><p>orangepi@orangepi:~$ '''sudo| ''' 20'''apt update'''</p><p>orangepi@orangepi| style="text-align:~$ left;"| '''sudo apt-get install -y fswebcamGND'''</p></li><li><p>安装完fswebcam后可以使用下面的命令来拍照</p><ol | style="listtext-align: left;"|| style="text-typealign: lower-alphaleft;">|<li><p>|-d 选项用于指定USB摄像头的设备节点</p></li><li><p>| style="text--no-banner用于去除照片的水印</p></li><li><p>-r 选项用于指定照片的分辨率</p></li><li><p>-S 选项用设置于跳过前面的帧数</p></li><li><p>./image.jpg 用于设置生成的照片的名字和路径</p><p>orangepi@orangepialign:~$ left;"| '''sudo22''' | style="text-align: left;"| '''fswebcam -d /dev/video0 \PC7'''</p><p>| style="text-align: left;"| '''--no-banner -r 1280x720 -S 5 ./image.jpgPC7'''</p></li></ol></li><li><p>在服务器版的linux系统中,拍完照后可以使用scp命令将拍好的图片传到Ubuntu >| style="text-align: left; PC上镜像观看</p><p>orangepi@orangepi:~$ "| '''scp image.jpg [mailto:test@192.168.1.55:/home/test test@192.168.1.55:/home/test] (根据实际情况修改IP地址和路径)71'''</p></li><li><p>在桌面版的linux系统中,可以通过HDMI显示器直接查看拍摄的图片</p></li></ol></li><li><p>使用mjpg|-streamer测试USB摄像头</p><ol | style="listtext-style-typealign: lower-alphaleft;">| '''24'''<li><p>下载mjpg-streamer</p><ol | style="listtext-style-typealign: lower-alphaleft;"><li><p>Github的下载地址:</p><p>orangepi@orangepi:~$ | '''git clone https://github.com/jacksonliam/mjpg-streamerSPI1_CS'''</p></li><li><p>Gitee的镜像下载地址为:</p><p>orangepi@orangepi| style="text-align:~$ left;"| '''git clone https://gitee.com/leeboby/mjpg-streamerPH9'''</p></li></ol></li><li><p>安装依赖的软件包</p><ol | style="listtext-style-typealign: lower-alphaleft;"><li><p>Ubuntu系统</p><p>orangepi@orangepi:~$ | '''sudo apt-get install -y cmake libjpeg8-dev233'''</p></li><li><p>Debian系统</p>|-<p>orangepi@orangepi| style="text-align:~$ left;"| '''sudo apt-get install -y cmake libjpeg62-turbo-dev26'''</p></li></ol></li><li><p>编译安装mjpg| style="text-streamer</p><p>orangepi@orangepialign:~$ left;"| '''cd mjpg-streamer/mjpg-streamer-experimentalPC10'''</p><p>orangepi@orangepi| style="text-align:~/mjpg-streamer/mjpg-streamer-experimental$ left;"| '''make -j4PC10'''</p><p>orangepi@orangepi| style="text-align:~/mjpg-streamer/mjpg-streamer-experimental$ left;"| '''sudo make install74'''</p></li><li><p>然后输入下面的命令启动mjpg_streamer|}</pdiv><p>'''注意,video的序号不一定都是video0,请以实际看到的为准。'''</pol><p>orangepi@orangepi:~/mjpgol start="3" style="list-streamer/mjpgstyle-streamer-experimental$ '''export LD_LIBRARY_PATH=.'''</ptype: decimal;"><pli>orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ 26pin接口中总共有'''sudo ./mjpg_streamer -i "./input_uvc.so -d \'''</p><p>17'''/dev/video0 -u -f 30" -o "./output_http.so -w ./www"个GPIO口,所有GPIO口的电压都是'''</pspan style="color:#FF0000">3.3v</lispan><li><p>然后在和开发板同一局域网的Ubuntu PC或者Windows > PC或者手机的浏览器中输入【'''开发板的IP地址:8080'''】就能看到摄像头输出的视频了</pli><div class="figure"/ol>
{| class="wikitable" style= 音频测试 =="background-color:#ffffdc;width:800px;" |-| <big>'''注意,Orange Pi发布的linux镜像中已经预装了wiringOP,除非wiringOP的代码有更新,否则无需重新下载编译安装,直接使用即可。'''
'''<span style==== 耳机接口播放音频测试 ===="color:blue">orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb</span>'''
[[File:media/image164zero3-img172.jpeg|126x125px|IMG_256png]]
<ol style="list-style-type: decimal;">
<li><p>首先使用Micro HDMI 转HDMI线将Orange Pi开发板连接到电视机上(其他的HDMI显示器需要确保可以播放音频)下载wiringOP的代码</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt update'''</lip><li><p>HDMI音频播放无需其他设置,直接使用orangepi@orangepi:~$ '''aplaysudo apt install -y git'''命令播放即可</p><p>rootorangepi@orangepi:~# $ '''aplay -D hwgit clone https:2,0 /usr/sharegithub.com/soundsorangepi-xunlong/alsa/audiowiringOP.wavgit -b next'''</p></li></ol>|}
{| class=== 在桌面系统中测试音频方法 === <ol "wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig><p>首先打开文件管理器'''注意,源码需要下载wiringOP next分支的代码,请别漏了-b next这个参数。'''</p><p>[[File:media'''如果从GitHub下载代码有问题,可以直接使用Linux镜像中自带的wiringOP源码,存放位置为:/usr/src/image165.png|257x126px]]wiringOP。'''</p></big>|}</li><li><p>然后找到下面这个文件(如果系统中没有这个音频文件,可以自己上传一个音频文件到系统中)编译安装wiringOP</p>{| class="wikitable" style="width:800px;" |-| <p>[[Fileorangepi@orangepi:media/image166.png|238x189px]]~$ '''cd wiringOP'''</p></li><li><p>然后选中audioorangepi@orangepi:~/wiringOP$ '''sudo .wav文件,右键选择使用vlc打开就可以开始播放/build clean'''</p><p>[[Fileorangepi@orangepi:media~/image167wiringOP$ '''sudo .png|241x195px]]/build'''</p>|}</li><li><p>切换HDMI播放和耳机播放等不同音频设备的方法测试gpio readall命令的输出如下</p>
<ol style="list-style-type: lower-alpha;">
<li><p>首先打开音量控制界面其中1到26号引脚与开发板上的26 Pin引脚是一一对应的</p></li><li><p>27号引脚对应开发板上13pin的10号引脚</p></li><li><p>29号引脚对应开发板上13pin的11号引脚</p></li><li><p>[[File:media31号引脚对应开发板上13pin的12号引脚</p></image168.png|294x161px]]li><li><p>33号引脚对应开发板上13pin的13号引脚</p></li><li><p>播放音频的时候,在'''Playback<span style="color:#FF0000">28、30、32、34号引脚为空,请直接忽略</span>'''中会显示播放软件可以使用的音频设备选项,如下图所示,在这里可以设置需要播放到哪个音频设备</p><div class="figure"p>[[File:zero3-img172.png]]</p></li></ol></li></ol>
<span id="pin-gpio口测试"></span>=== 26pin GPIO口测试 = 红外接收测试 ==
<ol style="list-style-type: decimal;">
<li><p>首先需要将13pin扩展板插入到Orange Pi开发板的13pin接口中,插入扩展板后,开发板才能使用红外接收功能下面以7号引脚——对应GPIO为PC9——对应wPi序号为2——为例演示如何设置GPIO口的高低电平</p><div p>[[File:zero3-img173.png]]</p></li><li><p>首先设置GPIO口为输出模式,其中第三个参数需要输入引脚对应的wPi的序号</p>{| class="wikitable" style="width:800px;" |-| <p>root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> out'''</p>|}</li><li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功</p>{| class="wikitable" style="width:800px;" |-| <p>root@orangepi:~/wiringOP# '''gpio write 2 <span style="color:#FF0000">0</span>'''</p>|}<p>使用gpio readall可以看到7号引脚的值(V)变为了0</p><p>[[File:zero3-img174.png]]</p></li><li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p>{| class="figurewikitable" style="width:800px;" |-| <p>root@orangepi:~/wiringOP# '''gpio write 2 <span style="color:#FF0000">1</span>'''</p>|}<p>使用gpio readall可以看到7号引脚的值(V)变为了1</p><p>[[File:zero3-img175.png]]</p></li><li><p>其他引脚的设置方法类似,只需修改wPi的序号为引脚对应的序号即可</p></li></ol>
</li></ol>
<!-- --><ol startspan id="4" style="listpin-style-type: decimal;i2c测试"><li><p>测试红外接收功能前需要准备一个Orange Pi专用的红外遥控器,'''其他遥控器不支持'''</p><div class="figure"span>
<ol style="list-style-type: decimal;"><li><p>由26pin的原理图可知,可用的i2c为i2c3</divp><p>[[File:zero3-img178.png]]</p></li><li><p>然后在终端中输入'''ir-keytable -t'''命令,再使用红外遥控器对着Orange Pi开发板的红外接收头按下按键就能在终端中看到接收到的按键编码了Linux系统中i2c3默认是关闭的,需要手动打开才能使用。打开步骤如下所示:</p>
<ol style="list-style-type: lower-alpha;">
<li>linux5<p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li><li><p>然后选择'''System'''</p><p>[[File:zero3-img86.png]]</p></li><li><p>然后选择'''Hardware'''</p><p>[[File:zero3-img87.4系统输出如下所示png]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''ph-i2c3'''</p><p>[[File:zero3-img179.png]]</p></li><li><p>然后选择'''<Save>'''保存</p><p>[[File:zero3-img89.png]]</p></li><li><p>然后选择'''<Back>'''</p><p>[[File:zero3-img90.png]]</p></li><li><p>然后选择'''<Reboot>'''重启系统使配置生效</p><p>[[File:zero3-img91.png]]</p></li></ol></li><li><p>启动linux系统后,先确认下/dev下存在i2c3的设备节点</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ls /dev/i2c-3'''</p><p>'''/oldev/i2c-3'''</p>|}</li><li><p>然后开始测试i2c,首先安装i2c-tools</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt-get update'''</p><p>orangepi@orangepi:~$ '''sudo irapt-get install -keytable y i2c-ttools'''</p>|}</li><li><p>然后在26pin接头的i2c3引脚上接一个i2c设备</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" Testing events. Please, press CTRL|-C to abort| <big><p>'''5V和3.3V引脚请根据具体的i2c设备进行选择,不同的i2c设备需要的电压值可能不同。'''</p></big>|}
<ol startspan id="2pin的uart测试" style="list-style-type: lower-alpha;"><li><p>linux6.1系统输出如下所示</p><p>orangepi@orangepi:~$ '''sudo ir-keytable -c -p NEC -t'''</p><p>Old keytable cleared</p><p>Protocols changed to nec</p><p>Testing events. Please, press CTRL-C to abort.</p><p>202.063219: lirc protocol(nec): scancode = 0x45c</p><p>202.063249: event type EV_MSC(0x04): scancode = 0x45c</p><p>202.063249: event type EV_SYN(0x00).</p></li></olspan>
== 温度传感器 = 26pin的UART测试 === # H618总共有4个温度传感器,查看温度的命令如下所示: '''显示的温度值需要除以1000,单位才是摄氏度。'''
<ol style="list-style-type: decimal;">
<li><p>由26pin接口的原理图可知,可用的uart为uart5</p>
<p>[[File:zero3-img181.png]]</p></li>
<li><p>Linux系统中uart5默认是关闭的,需要手动打开才能使用。打开步骤如下所示:</p>
<ol style="list-style-type: lower-alpha;">
<li>sensor0:CPU的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值<p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li><li><p>然后选择'''System'''</p><p>[[File:zero3-img86.png]]</p></li><li><p>然后选择'''Hardware'''</p><p>[[File:zero3-img87.png]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''ph-uart5'''</p><p>[[File:zero3-img182.png]]</p></li><li><p>然后选择'''<Save>'''保存</p><p>[[File:zero3-img89.png]]</p></li><li><p>然后选择'''<Back>'''</p><p>[[File:zero3-img90.png]]</p></li><li><p>然后选择'''<Reboot>'''重启系统使配置生效</p><p>[[File:zero3-img91.png]]</p></li></ol></li><li><p>进入linux系统后,先确认下'''/dev'''下是否存在uart5的设备节点</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''注意,linux5.4系统为/dev/ttyAS5。'''</p></big>|}{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ls /dev/ttyS5'''</p><p>/dev/ttyS5</p>|}</li><li><p>然后开始测试uart5接口,先使用杜邦线短接要测试的uart5接口的rx和tx</p></li>
<ol start="2" style="list-style-typep>Out: 0: lower-alpha>"><li><p>sensor1:DDR的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值0</p><p>orangepi@orangepiOut:~$ '''cat /sys/class/thermal/thermal_zone1/type'''</p><p>'''ddr'''_thermal_zone1: -> 1</p><p>orangepi@orangepiOut:~$ '''cat /sys/class/thermal/thermal_zone1/temp'''</p><p>'''57410'''</p></li><li><p>sensor2:GPU的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值</p><p>orangepi@orangepi2:~$ '''cat /sys/class/thermal/thermal_zone2/type'''-> 2</p><p>'''gpu'''_thermal_zone</p><p>orangepi@orangepiOut:~$ '''cat /sys/class/thermal/thermal_zone2/temp'''</p><p>'''59273'''</p></li><li><p>sensor3:VE的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值</p><p>orangepi@orangepi3:~$ '''cat /sys/class/thermal/thermal_zone3/type'''-> 3^C</p><p>'''ve'''_thermal_zone</p>|}<p>orangepi@orangepi:~$ '''cat /sys/class/thermal/thermal_zone3/temp'''</p><p>'''58949'''</p></li></ol>
<!-- --><ol start="2" stylespan id="list-style-type: decimal;pwm的测试方法"><li>Linux6.1内核的系统还可以使用'''sensors'''命令查看系统当前温度</li></olspan>
root@orangepi:~# '''echo 1 > /sys/class/pwm/pwmchip0/pwm3/enable'''|}</ol><span idol start="pin扩展板接口引脚说明4" style="list-style-type: lower-alpha;"><li>在命令行中输入下面的命令可以让pwm4输出一个50Hz的方波</spanli>== 13 Pin扩展板接口引脚说明 ==
</li></ol>
<span id="wiringop-python的安装使用方法"></span>
== wiringOP-Python的安装使用方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
| <big>'''wiringOP-Python是wiringOP的Python语言版本的库,用于在Python程序中操作开发板的GPIO、I2C、SPI和UART等硬件资源。''' '''另外请注意下面所有的命令都是在<span style="text-aligncolor: left;#FF0000"| '''GPIO序号>root</span>用户下操作的。'''</big>| } <span id="wiringop-python的安装方法"></span>=== wiringOP-Python的安装方法 === <ol style="textlist-style-aligntype: leftdecimal;"| '''功能'''><li><p>首先安装依赖包</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''引脚'''
|-
| style="text<p>root@orangepi:~# '''sudo apt-align: left;"|get update'''</p>| style="text-align<p>root@orangepi: left;"| ~# '''5Vsudo apt-get -y install git swig python3-dev python3-setuptools'''</p>| }</li><li><p>然后使用下面的命令下载wiringOP-Python的源码</p></li> {| class="wikitable" style="textbackground-aligncolor:#ffffdc;width: left800px;"| '''1'''
|-
| style="text<big>'''注意,下面的git clone--recursive命令会自动下载wiringOP的源码,因为wiringOP-align: left;"|Python是依赖wiringOP的。请确保下载过程没有因为网络问题而报错。''' | style="text-align: left;"| '''GND如果从GitHub下载代码有问题,可以直接使用Linux镜像中自带的wiringOP-Python源码,存放位置为:/usr/src/wiringOP-Python'''。</big>| } {| class="wikitable" style="text-alignwidth: left800px;"| '''2'''
|-
| style="textroot@orangepi:~# '''git clone --alignrecursive https: left;"|//github.com/orangepi-xunlong/wiringOP-Python -b next''' | style="textroot@orangepi:~# '''cd wiringOP-alignPython''' root@orangepi: left;"| ~/wiringOP-Python# '''USB2git submodule update -DM-init --remote'''| }</ol><ol start="3" style="textlist-style-aligntype: leftdecimal;"><li><p>然后使用下面的命令编译wiringOP-Python并将其安装到开发板的Linux系统中</p>{| '''3'''class="wikitable" style="width:800px;"
|-
| style="text<p>root@orangepi:~# '''cd wiringOP-alignPython'''</p><p>root@orangepi: left~/wiringOP-Python# '''python3 generate-bindings.py >"bindings.i'''</p><p>root@orangepi:~/wiringOP-Python# '''sudo python3 setup.py install'''</p>|}| style="text</li><li><p>然后输入下面的命令,如果有帮助信息输出,说明wiringOP-align: left;"| Python安装成功,按下'''USB2-DPq'''键可以退出帮助信息的界面</p></li> {| class="wikitable" style="text-alignwidth: left800px;"| '''4'''
|-
| root@orangepi:~/wiringOP-Python# '''python3 -c "import wiringpi; help(wiringpi)"''' Help on module wiringpi: NAME :wiringpi DESCRIPTION : # This file was automatically generated by SWIG (http://www.swig.org). : # Version 4.0.2 : # : # Do not make changes to this file unless you know what you are doing--modify : # the SWIG interface file instead.|}</ol><ol start="5" style="textlist-alignstyle-type: leftdecimal;"|><li><p>在python命令行下测试wiringOP-Python是否安装成功的步骤如下所示:</p>| <ol style="textlist-style-aligntype: leftlower-alpha;"| '''USB3-DM'''><li>首先使用python3命令进入python3的命令行模式</li> {| class="wikitable" style="text-alignwidth: left800px;"| '''5'''
|-
| root@orangepi:~# '''python3'''|}</ol><ol start="2" style="textlist-alignstyle-type: leftlower-alpha;"|><li>然后导入wiringpi的python模块</li> {| styleclass="text-align: left;wikitable"| '''USB3-DP'''| style="text-alignwidth: left800px;"| '''6'''
|-
| style>>> '''import wiringpi;'''|}</ol><ol start="text-align: left;3"|| style="textlist-alignstyle-type: leftlower-alpha;"| ><li>最后输入下面的命令可以查看下wiringOP-Python的帮助信息,按下'''LINEOUTRq'''键可以退出帮助信息的界面</li> {| class="wikitable" style="text-alignwidth: left800px;"| '''7'''
|-
| style="text-align: left;"|| style="text-align: left;"| '''LINEOUTL'''| style="text-align: left;"| '''8'''|-| style="text-align: left;"|| style="text-align: left;"| '''TV-OUT'''| style="text-align: left;"| '''9'''|-| style="text-align: left;"| '''65'''| style="text-align: left;"| '''PC1'''| style="text-align: left;"| '''10'''|-| style="text-align: left>"| '''272'''| style="text-align: left>"| '''PI16'''| style="text-align: left>"| '''11help(wiringpi)'''|-| style="text-alignHelp on module wiringpi: left;"| '''262'''| style="text-align: left;"| '''PI6'''| style="text-align: left;"| '''12'''|-| style="text-align: left;"| '''234'''NAME| style="text-align: left;"| '''IR-RX/PH10'''| style="text-align: left;"| '''13'''|}wiringpi
|-
|-
| style="text<p>root@orangepi:~/wiringOP-align: left;"| Python# '''229'''| style="textpython3 -align: leftc "import wiringpi;"| \'''PH5</p><p>'''| style="text-align: leftfrom wiringpi import GPIO; wiringpi.wiringPiSetup() ;"| \'''TWI3-SDA</p><p>'''| wiringpi.pinMode(<span style="text-aligncolor: left#FF0000">2, GPIO.OUTPUT</span>) ; ""| '''3'''</p>|}| style="text-align: left;"| '''4'''</li>| style="text-align: left;"| '''5V'''<li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功</p>{| styleclass="text-align: left;wikitable"|| style="text-alignwidth: left800px;"|
|-
| style="text<p>root@orangepi:~/wiringOP-align: left;"| Python# '''228'''| style="textpython3 -align: leftc "import wiringpi;"| \'''PH4</p><p>'''| style="text-align: leftfrom wiringpi import GPIO; wiringpi.wiringPiSetup() ;"| \'''TWI3-SCK</p><p>'''| wiringpi.digitalWrite(2, <span style="text-aligncolor: left#FF0000">GPIO.LOW</span>)""| '''5'''</p>|}| style="text-align: left;"| '''6'''</li>| style="text-align: left;"| '''GND'''<li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p>{| styleclass="text-align: left;wikitable"|| style="text-alignwidth: left800px;"|
|-
| style="text<p>root@orangepi:~/wiringOP-align: left;"| 'Python# ''73'''| style="textpython3 -align: leftc "import wiringpi;"| \'''PC9</p><p>'''| style="text-align: leftfrom wiringpi import GPIO; wiringpi.wiringPiSetup() ;"| \'''PC9</p><p>'''| wiringpi.digitalWrite(2, <span style="text-aligncolor: left#FF0000">GPIO.HIGH</span>)""| '''7'''</p>|}</li></ol></li><li><p>在python3的命令行中测试的步骤如下所示:</p>| <ol style="textlist-align: left;"| '''8'''| style="text-aligntype: leftlower-alpha;"| '''UART5_TX'''><li><p>首先使用python3命令进入python3的命令行模式</p>{| styleclass="text-align: left;wikitable"| '''PH2'''| style="text-alignwidth: left800px;"| '''226'''
|-
|-
| style="text-align: left<p>>>>"| '''70wiringpi.wiringPiSetup()'''</p><p>0</p>| style="text-align: left<p>>>"| '''PC6'''| style="text-align: left>"| '''PC6'''| wiringpi.pinMode(<span style="text-aligncolor: left;#FF0000"| '''11>2, GPIO.OUTPUT</span>)'''</p>|}| style="text-align: left;"| '''12'''</li>| style="text-align: left;"| '''PC11'''<li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功</p>{| styleclass="text-align: left;wikitable"| '''PC11'''| style="text-alignwidth: left800px;"| '''75'''
|-
| style="text-align: left<p>>"| '''69'''| style="text-align: left>"| '''PC5'''| style="text-align: left>"| '''PC5'''| wiringpi.digitalWrite(2, <span style="text-aligncolor: left;#FF0000"| '''13>GPIO.LOW</span>)'''</p>|}| style="text-align: left;"| '''14'''</li>| style="text-align: left;"| '''GND'''<li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p>{| styleclass="text-align: left;wikitable"|| style="text-alignwidth: left800px;"|
|-
| style="text-align: left<p>>>>"| '''72'''| wiringpi.digitalWrite(2, <span style="text-aligncolor: left;#FF0000"| '''PC8>GPIO.HIGH</span>)'''</p>| style="text-align: left;"| '''PC8'''}| style="text-align: left;"| '''15'''</li></ol>|</li>| style="text<li><p>wiringOP-align: left;"| Python在python代码中设置GPIO高低电平的方法可以参考下examples中的'''16blink.py'''| style="text-align: left;"| 测试程序,'''PC15blink.py'''测试程序会设置开发板26 pin中所有的GPIO口的电压不断的高低变化</p>{| styleclass="text-align: left;wikitable"| '''PC15'''| style="text-alignwidth: left800px;"| '''79'''
|-
| style="text<p>root@orangepi:~/wiringOP-alignPython# '''cd examples'''</p><p>root@orangepi: left;"|| style="text~/wiringOP-align: left;"|Python/examples# '''ls blink.py'''</p>| style="text-align: left;"| <p>'''3blink.3Vpy'''</p>| style="text<p>root@orangepi:~/wiringOP-align: left;"| Python/examples'''17# python3 blink.py'''</p>|}</li></ol> | <span id="pin-spi测试-1"></span> === 26pin SPI测试 === <ol style="textlist-style-aligntype: leftdecimal;"| '''18'''><li><p>由26pin接口的原理图可知,可用的spi为spi1</p><p>[[File:zero3-img176.png]]</p></li><li><p>Linux系统中spi1默认是关闭的,需要手动打开才能使用。打开步骤如下所示:</p>| <ol style="textlist-alignstyle-type: leftlower-alpha;"| ><li><p>首先运行下'''PC14orangepi-config'''| style="text-align: left;"| ,普通用户记得加'''PC14sudo'''权限</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''78'''
|-
| style="text<p>orangepi@orangepi:~$ '''sudo orangepi-align: left;"config'''</p>| }</li><li><p>然后选择'''231System'''</p>| style="text<p>[[File:zero3-alignimg86.png]]</p></li><li><p>然后选择'''Hardware'''</p><p>[[File: left;"| zero3-img87.png]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''PH7spi1-cs1-spidev'''</p>| style="text<p>[[File:zero3-align: left;"| img177.png]]</p></li><li><p>然后选择'''SPI1_MOSI<Save>'''保存</p>| style="text<p>[[File:zero3-align: left;"| img89.png]]</p></li><li><p>然后选择'''19<Back>'''</p>|<p>[[File:zero3-img90.png]]</p></li>| style="text-align: left;"| <li><p>然后选择'''20<Reboot>'''重启系统使配置生效</p>| style="text<p>[[File:zero3-align: left;"| img91.png]]</p></li></ol></li><li><p>然后查看下linux系统中是否存在'''GNDspidev1.1'''的设备节点,如果存在,说明SPI1的配置已经生效了</p>{| styleclass="text-align: left;wikitable"|| style="text-alignwidth: left800px;"|
|-
| style="text-align: left;"| '''232'''| style="text-align<p>orangepi@orangepi: left;"| ~$ '''PH8ls /dev/spidev1*'''</p>| style="text-align: left;"| '''SPI1_MISO'''<p>/dev/spidev1.1</p>| style="text-align: left;"| '''21'''}|</li>| style="text-align: left;"| <li><p>然后可以使用examples中的'''22spidev_test.py'''| style="text-align: left;"| 程序测试下SPI的回环功能,'''PC7spidev_test.py'''程序需要指定下面的两个参数:</p>| <ol style="textlist-align: left;"| '''PC7'''| style="text-aligntype: leftlower-alpha;"| ''><li><p>'71'''|-| style="text-align: left;"| '''230channel''':指定SPI的通道号</p></li>| style="text-align: left;"| '''PH6<li><p>'''| style="text-align: left;"| '''SPI1_CLK'''| style="text-align: left;"| '''23port''':指定SPI的端口号</p></li></ol>|</li>| style="text-align: left;"| '''24'''<li><p>先不短接 SPI1 的 mosi 和 miso 两个引脚,运行spidev_test.py的输出结果如下所示,可以看到 TX 和 RX 的数据不一致</p>{| styleclass="text-align: left;wikitable"| '''SPI1_CS'''| style="text-align: left;"| '''PH9'''| style="text-alignwidth: left800px;"| '''233'''
|-
| style="text-align: left;"|| style="text-align: left;"|| style="text-align: left;"| '''GND'''| style="text-align: left;"| '''25'''|| style="text-align: left;"| '''26'''| style="text-align: left;"| '''PC10'''| style="text-alignroot@orangepi: left;"| '''PC10'''| style="text~/wiringOP-align: left;"| Python# '''74cd examples'''|}
RX | FF FF FF FF FF FF '''<span idstyle="安装wiringop的方法color:#FF0000">FF FF FF FF FF FF</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |.............….||}</li></ol><ol start="6" style= 安装wiringOP的方法 "list-style-type: decimal;"><li><p>然后使用杜邦线短接SPI1的txd(26pin接口中的第19号引脚)和rxd(26pin接口中的第21号引脚)两个引脚再运行spidev_test.py的输出如下,可以看到发送和接收的数据一样,说明SPI1回环测试正常</p>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''cd examples'''
root@orangepi:~/wiringOP-Python/examples# '''注意,Orange Pi发布的linux镜像中已经预装了wiringOP,除非wiringOP的代码有更新,否则无需重新下载编译安装,直接使用即可。python3 spidev_test.py \'''
'''编译好的wiringOP的deb包在orangepi-build中的存放路径为:-channel 1 --port 1'''
TX | FF FF FF FF FF FF '''wiringOP目前主要适配了设置GPIO口输入输出,设置GPIO口输出高低电平以及设置上下拉电阻的功能,像硬件PWM这样的功能是用不了的。<span style="color:#FF0000">40 00 00 00 00 95</span>'''FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|
RX | FF FF FF FF FF FF '''<ol span style="list-style-typecolor: decimal;#FF0000"><li><p>下载wiringOP的代码40 00 00 00 00 95</p><pspan>orangepi@orangepi:~$ '''sudo apt update'''</p><p>orangepiFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@orangepi:~$ '''sudo apt install -y git'''</p><p>orangepi@orangepi:~$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next'''</p><p>'''注意,源码需要下载wiringOP next分支的代码,请别漏了-b next这个参数。'''</p><p>'''如果从GitHub下载代码有问题,可以直接使用Linux镜像中自带的wiringOP源码,存放位置为:/usr/src/wiringOP。'''</p></li><li><p>编译安装wiringOP</p><p>orangepi@orangepi:~$ '''cd wiringOP'''</p><p>orangepi@orangepi:~/wiringOP$ '''sudo ./build clean'''</p><p>orangepi@orangepi:~/wiringOP$ '''sudo ./build'''</p></li>...…|<li><p>测试gpio readall命令的输出如下</p><ol style="list-style-type: lower-alpha;"><li><p>其中1到26号引脚与开发板上的26 Pin引脚是一一对应的</p></li><li><p>27号引脚对应开发板上13pin的10号引脚</p></li><li><p>29号引脚对应开发板上13pin的11号引脚</p></li><li><p>31号引脚对应开发板上13pin的12号引脚</p></li><li><p>33号引脚对应开发板上13pin的13号引脚</p></li><li><p>'''28、30、32、34号引脚为空,请直接忽略'''</p><p>[[File:media/image172.png|575x365px]]</p></li></ol>}
</li></ol>
<span id="pin接口gpioi2cuartspi和pwm测试pin-i2c测试-1"></span>== 26pin接口GPIO、I2C、UART、SPI和PWM测试 ==
<ol style="list-style-type: decimal;">
<li><p>下面以7号引脚——对应GPIO为PC9——对应wPi序号为2——为例演示如何设置GPIO口的高低电平由26pin的原理图可知,可用的i2c为i2c3</p><p>[[File:media/image173.png|576x128px]]</p></li><li><p>首先设置GPIO口为输出模式,其中第三个参数需要输入引脚对应的wPi的序号</p><p>root@orangepi:~/wiringOP# '''gpio mode 2 out'''</p></li><li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功</p><p>root@orangepi:~/wiringOP# '''gpio write 2 0'''</p><p>使用gpio readall可以看到7号引脚的值(V)变为了0</p><p>[[File:media/image174.png|575x128px]]</p></li><li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p><p>root@orangepi:~/wiringOP# '''gpio write 2 1'''</p><p>使用gpio readall可以看到7号引脚的值(V)变为了1</p><p>[[File:media/image175.png|575x130px]]</p></li><li><p>其他引脚的设置方法类似,只需修改wPi的序号为引脚对应的序号即可</p></li></ol> <span id="pin-gpio口上下拉电阻的设置方法"></span>=== 26 pin GPIO口上下拉电阻的设置方法 === <ol style="list-style-type: decimal;"><li><p>下面以7号引脚——对应GPIO为PC9——对应wPi序号为2——为例演示如何设置GPIO口的上下拉电阻</p><p>[[File:media/image173.png|576x128px]]</p></li><li><p>首先需要设置GPIO口为输入模式,其中第三个参数需要输入引脚对应的wPi的序号</p><p>root@orangepi:~/wiringOP# '''gpio mode 2 in'''</p></li><li><p>设置为输入模式后,执行下面的命令可以设置GPIO口为上拉模式</p><p>root@orangepi:~/wiringOP# '''gpio mode 2 up'''</p></li><li><p>然后输入下面的命令读取GPIO口的电平,如果电平为1,说明上拉模式设置成功</p><p>root@orangepi:~/wiringOP# '''gpio read 2'''</p><p>'''1'''</p></li><li><p>然后执行下面的命令可以设置GPIO口为下拉模式</p><p>root@orangepi:~/wiringOP# '''gpio mode 2 down'''</p></li><li><p>然后输入下面的命令读取GPIO口的电平,如果电平为0,说明下拉模式设置成功</p><p>root@orangepi:~/wiringOP# '''gpio read 2'''</p><p>'''0'''</p></li></ol> <span id="pin-spi测试"></span>=== 26pin SPI测试 === <ol style="listzero3-style-type: decimal;"><li><p>由26pin接口的原理图可知,可用的spi为spi1</p><p>[[File:media/image176img178.png|565x209px]]</p></li><li><p>Linux系统中spi1默认是关闭的,需要手动打开才能使用。打开步骤如下所示:Linux系统中i2c3默认是关闭的,需要手动打开才能使用。打开步骤如下所示:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li>
<li><p>然后选择'''System'''</p>
<p>[[File:media/image86zero3-img86.png|398x194px]]</p></li>
<li><p>然后选择'''Hardware'''</p>
<p>[[File:media/image87zero3-img87.png|393x202px]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''spi1ph-cs1-spidevi2c3'''</p><p>[[File:media/image177zero3-img179.png|392x57px]]</p></li>
<li><p>然后选择'''<Save>'''保存</p>
<p>[[File:media/image89zero3-img89.png|397x92px]]</p></li>
<li><p>然后选择'''<Back>'''</p>
<p>[[File:media/image90zero3-img90.png|395x91px]]</p></li>
<li><p>然后选择'''<Reboot>'''重启系统使配置生效</p>
<p>[[File:media/image91zero3-img91.png|374x187px]]</p></li></ol>
</li>
<li><p>然后查看下linux系统中是否存在'''spidev1.1'''的设备节点,如果存在,说明SPI1的配置已经生效了启动linux系统后,先确认下/dev下存在i2c3的设备节点</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ls /dev/spidev1*i2c-3'''</p><p>/dev/spidev1.1</p></li><li><p>先不短接SPI1的mosi和miso两个引脚,运行spidev_test的输出结果如下所示,可以看到TX和RX的数据不一致</p><p>orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev1.1i2c-3'''</p><p>spi mode: 0x0</p><p>bits per word: 8</p><p>max speed: 500000 Hz (500 KHz)</p><p>TX | FF FF FF FF FF FF '''40 00 00 00 00 95''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.</p>}<p>RX | FF FF FF FF FF FF '''FF FF FF FF FF FF''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................….</p></li><li><p>然后短接SPI1的mosi(26pin接口中的第19号引脚)和miso(26pin接口中的第21号引脚)两个引脚再运行spidev_test的输出如下,可以看到发送和接收的数据一样</p><p>orangepi@orangepi:~$ '''sudo spidev_test -v 然后开始测试i2c,首先安装下i2c-D /dev/spidev1.1'''</p><p>spi mode: 0x0tools</p><p>bits per word: 8</p><p>max speed: 500000 Hz (500 KHz)</p><p>TX {| FF FF FF FF FF FF '''40 00 00 00 00 95''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.</p><p>RX | FF FF FF FF FF FF '''40 00 00 00 00 95''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.</p></li></ol> <span idclass="pin-i2c测试wikitable"></span>=== 26pin I2C测试 === <ol style="list-style-typewidth: decimal800px;"><li><p>由26pin的原理图可知,可用的i2c为i2c3</p><p>[[File:media/image178.png|575x204px]]</p></li><li><p>Linux系统中i2c3默认是关闭的,需要手动打开才能使用。打开步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>| <p>orangepi@orangepi:~$ '''sudo orangepiapt-configget update'''</p></li><li><p>然后选择'''System'''</p><p>[[Fileorangepi@orangepi:media/image86.png|390x190px]]</p></li><li><p>然后选择~$ '''Hardwaresudo'''</p><p>[[File:media/image87.png|393x202px]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''phapt-get install -y i2c-i2c3tools'''</p><p>[[File:media/image179.png|392x57px]]</p></li><li><p>然后选择'''<Save>'''保存</p><p>[[File:media/image89.png|395x91px]]</p></li><li><p>然后选择'''<Back>'''</p><p>[[File:media/image90.png|395x91px]]</p></li><li><p>然后选择'''<Reboot>'''重启系统使配置生效</p><p>[[File:media/image91.png|374x187px]]</p></li></ol>}
</li>
<li><p>启动linux系统后,先确认下/dev下存在i2c3的设备节点</p><p>orangepi@orangepi:~$ '''ls /dev/i2c-3'''</p><p>'''/dev/i2c-3'''</p></li><li><p>然后开始测试i2c,首先安装i2c-tools</p><p>orangepi@orangepi:~$ '''sudo apt-get update'''然后在26pin接头的i2c3引脚上接一个i2c设备,这里以DS1307 RTC模块为例</p><p>orangepi@orangepi[[File:~$ '''sudo aptzero3-get install -y i2c-tools'''</p></li><li><p>然后在26pin接头的i2c3引脚上接一个i2c设备</p><p>'''5V和3img186.3V引脚请根据具体的i2c设备进行选择,不同的i2c设备需要的电压值可能不同。'''png]]</p></li></ol>
{| class="wikitable" style="width:800px;"
|-
| style="text-align: left;"| '''sda引脚RTC模块的引脚'''| style="text-align: left;"| '''对应26pin中3号引脚开发板26pin对应的引脚'''
|-
| style="text-align: left;"| '''sck引脚5V'''| style="text-align: left;"| '''对应26pin中5号引脚2号引脚'''
|-
| style="text-align: left;"| '''5v引脚GND'''| style="text-align: left;"| '''对应26pin中2号引脚6号引脚'''
|-
| style="text-align: left;"| '''3.3v引脚SDA'''| style="text-align: left;"| '''对应26pin中1号引脚3号引脚'''
|-
| style="text-align: left;"| '''gnd引脚SCL'''| style="text-align: left;"| '''对应26pin中6号引脚5号引脚'''
|}
</ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>然后使用'''i2cdetect -y 3'''命令如果能检测到连接的i2c设备的地址,就说明i2c能正常使用命令如果能检测到连接的i2c设备的地址,就说明i2c设备连接正确</p><p>'''不同的i2c设备地址是不同的,下图0x50地址只是一个示例。请以实际看到的为准。'''</p><div class="figure"li>
[[File:mediazero3-img187.png]]</image180ol><ol start="7" style="list-style-type: decimal;"><li><p>然后可以运行'''examples'''中的'''ds1307.pngpy'''测试程序读取RTC的时间</p>{| class="wikitable" style="width:800px;" |-|383x151px<p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p><p>root@orangepi:~/wiringOP-Python/examples# '''python3 ds1307.py --device \'''</p><p>'''"/dev/i2c-3"'''</p><p>Thu 2022-06-16 04:35:46</p><p>Thu 2022-06-16 04:35:47</p><p>Thu 2022-06-16 04:35:48</p><p>^C</p><p>exit</p>|选区_460]]}</li></ol>
</div></lispan id="pin的uart测试-1"></olspan>
=== 26pin的UART测试 ===
<ol style="list-style-type: decimal;">
<li><p>由26pin接口的原理图可知,可用的uart为uart5</p>
<p>[[File:media/image181zero3-img181.png|575x203px]]</p></li>
<li><p>Linux系统中uart5默认是关闭的,需要手动打开才能使用。打开步骤如下所示:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li>
<li><p>然后选择'''System'''</p>
<p>[[File:media/image86zero3-img86.png|398x194px]]</p></li>
<li><p>然后选择'''Hardware'''</p>
<p>[[File:media/image87zero3-img87.png|393x202px]]</p></li>
<li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''ph-uart5'''</p>
<p>[[File:media/image182zero3-img182.png|400x60px]]</p></li>
<li><p>然后选择'''<Save>'''保存</p>
<p>[[File:media/image89zero3-img89.png|397x92px]]</p></li>
<li><p>然后选择'''<Back>'''</p>
<p>[[File:media/image90zero3-img90.png|395x91px]]</p></li>
<li><p>然后选择'''<Reboot>'''重启系统使配置生效</p>
<p>[[File:media/image91zero3-img91.png|374x187px]]</p></li></ol>
</li>
<li><p>进入linux系统后,先确认下'''/dev'''下是否存在uart5的设备节点</p>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''注意,linux5.4系统为/dev/ttyAS5。'''</p></big>|}{| class="wikitable" style="width:800px;" |-|
<p>orangepi@orangepi:~$ '''ls /dev/ttyS5'''</p>
<p>/dev/ttyS5</p>|}</li><li><p>然后开始测试uart5接口,先使用杜邦线短接要测试的uart5接口的rx和tx</p></li></ol>
{| class="wikitable" style="width:800px;"
|-
|
| style="text-align: left;"| '''uart5'''
|-
| '''tx引脚'''| style="text-align: left;"| 对应26pin的8号引脚'''对应26pin中的8号引脚'''
|-
| '''rx引脚'''| style="text-align: left;"| 对应26pin的10号引脚'''对应26pin中的10号引脚'''
|}
</ol>
<ol start="5" style="list-style-type: decimal;">
<li><p>使用wiringOP中的最后可以运行examples中的'''gpioserialTest.py'''命令测试串口的回环功能如下所示,如果能看到下面的打印,说明串口通信正常程序来测试下串口的回环功能,如果能看到下面的打印,说明串口回环测试正常</p>{| class="wikitable" style="width:800px;" |-| <p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p><p>root@orangepi:~$ /wiringOP-Python/examples# '''gpio serial python3 serialTest.py --device "/dev/ttyS5 " # linux-6linux6.1测试命令1使用'''</p><p>orangepiroot@orangepi:~$ /wiringOP-Python/examples# '''gpio serial python3 serialTest.py --device "/dev/ttyAS5 " # linux-5linux5.4测试命令4使用'''</p>
<p>Out: 0: -> 0</p>
<p>Out: 1: -> 1</p>
<p>Out: 2: -> 2</p>
<p>Out: 3: -> 3</p><p>Out: 4:^C</p><p>exit</p>|}</li></ol>
<ol style="list-style-type: lower-alpha;">
<li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p><p>orangepi@orangepi:~$ '''sudo orangepi-config'''第二个参数10表示看门狗的计数时间,如果这个时间内没有喂狗,系统会重启</p></li><li><p>然后选择'''System'''我们可以通过按下键盘上的任意键(ESC除外)来喂狗,喂狗后,程序会打印一行keep alive表示喂狗成功</p><p>[[File{| class="wikitable" style="width:media/image86.png800px;" |398x194px]]</p></li>-<li><p>然后选择'''Hardware'''</p>| <p>[[Fileorangepi@orangepi:media/image87.png|393x202px]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用~$ '''空格sudo watchdog_test 10'''选中pwm对应的配置</p><p>'''由于PWM1、PWM2和26pin接口中UART5的RX、TX引脚是复用的,所以打开PWM1和PWM2(需要选择ph-pwm12)时请确保没有选择UART5的配置(不要勾选ph-uart5)。'''open success</p><p>'''PWM3、PWM4和调试串口中的TX、RX引脚是复用的,所以使用PWM3和PWM4(需要选择phoptions is 33152,identity is sunxi-pwm34)时请将UART0的配置关掉(需要选择disable-uart0),关掉UART0后调试串口就无法使用了。'''wdt</p><p>[[Fileput_usr return,if 0,success:media/image184.png|402x156px]]0</p></li><li><p>然后选择'''<Save>'''保存</p><p>[[FileThe old reset time is:media/image89.png|397x92px]]16</p></li><li><p>然后选择'''<Back>'''</p><p>[[Filereturn ENOTTY,if -1,success:media/image90.png|395x91px]]0</p></li><li><p>然后选择'''<Reboot>'''重启系统使配置生效</p><p>[[Filereturn ENOTTY,if -1,success:media/image91.png|374x187px]]</p></li></ol></li><li><p>重启后就可以开始PWM的测试0</p><p>'''下面的命令请在root用户下执行。'''</p><ol style="list-style-typeput_user return,if 0,success: lower-alpha;"><li><p>在命令行中输入下面的命令可以让pwm1输出一个50Hz的矩形波0</p><p>root@orangepiput_usr return,if 0,success:~# '''echo 1 > /sys/class/pwm/pwmchip0/export'''0</p><p>root@orangepi:~# '''echo 20000000 > /sys/class/pwm/pwmchip0/pwm1/period'''keep alive</p><p>root@orangepi:~# '''echo 1000000 > /sys/class/pwm/pwmchip0/pwm1/duty_cycle'''keep alive</p><p>root@orangepi:~# '''echo 1 > /sys/class/pwm/pwmchip0/pwm1/enable'''keep alive</p></li><li><p>在命令行中输入下面的命令可以让pwm2输出一个50Hz的方波</p></li></ol>|}
</li></ol>
<ol style="list-style-type: decimal;">
<li><p>首先安装依赖包首先安装编译Python需要的依赖包</p>{| class="wikitable" style="width:800px;" |-| <p>rootorangepi@orangepi:~# $ '''sudo apt-get update'''</p><p>rootorangepi@orangepi:~# $ '''sudo apt-get install -y install git swig python3build-essential zlib1g-dev \'''</p><p>'''libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev \'''</p><p>'''libreadline-dev libffi-dev curl libbz2-dev python3'''</p>|}</li><li><p>然后下载最新版本的Python3.9源码并解压</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''wget \'''</p><p>'''https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz'''</p><p>orangepi@orangepi:~$ '''tar xvf Python-3.9.10.tgz'''</p>|}</li><li><p>然后运行配置命令</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''cd Python-3.9.10'''</p><p>orangepi@orangepi:~$ '''./configure --enable-setuptoolsoptimizations'''</p>|}</li><li><p>然后使用下面的命令下载wiringOP然后编译安装Python3.9,编译时间大概需要半个小时左右</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''make -Python的源码j4'''</p><p>orangepi@orangepi:~$ '''sudo make altinstall'''</p>|}</li><li><p>安装完后可以使用下面的命令查看下刚安装的Python的版本号</olp>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''python3.9 --version'''</p><p>'''Python 3.9.10'''</p>|}</li><li><p>然后更新下pip</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''注意,下面的git clone/usr/local/bin/python3.9 -m pip install -recursive命令会自动下载wiringOP的源码,因为wiringOP-Python是依赖wiringOP的。请确保下载过程没有因为网络问题而报错。upgrade pip'''</p>|}</li></ol>
'''<ol start="2" span style="list-style-typecolor: lower-alpha;#FF0000"><li>然后导入wiringpi的python模块</li>Hello from Docker!</olspan>'''
{| class="wikitable" style="background-color:# This file was automatically generated by SWIG (httpffffdc;width:800px;" |-| <big>'''注意,这里只会提供在Ubuntu或者Debian系统中安装Home Assistant的方法,Home Assistant详细的使用方法请参考官方文档或者相应的书籍。'''<//www.swig.org).big>|}
<ol style="list-style-type: decimal;">
<li><p>下面以7号引脚——对应GPIO为PC9 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平</p><p>首先请安装好docker,并确保docker能正常运行。docker的安装步骤请参考[[File:media/image173.pngOrange Pi Zero 3#安装Docker的方法|576x128px'''安装Docker的方法''']]一节的说明。</p></li><li><p>直接用命令测试的步骤如下所示:然后可以搜索下Home Assistant的docker镜像</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>|-| <p>首先设置GPIO口为输出模式,其中orangepi@orangepi:~$ '''pinModedocker search homeassistant'''函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式</p>|}</li><li><p>root然后使用下面的命令下载Home Assistant的docker镜像到本地,镜像大小大概有1GB多,下载时间会比较长,请耐心等待下载完成</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~/wiringOP-Python# $ '''python3 docker pull homeassistant/home-c "import wiringpi; \assistant'''</p><p>'''Using default tag: latest</p><p>latest: Pulling from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \'''homeassistant/home-assistant</p><p>be307f383ecc: Downloading</p><p>5fbc4c07ac88: Download complete</p><p>'''wiringpi.pinMode..... (2, GPIO.OUTPUT省略部分输出) ; "'''</p><p>3cc6a1510c9f: Pull complete</lip><li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功7a4e4d5b979f: Pull complete</p><p>root@orangepiDigest: sha256:~/wiringOP-Python# '''python3 -c "import wiringpi; \'''81d381f5008c082a37da97d8b08dd8b358dae7ecf49e62ce3ef1eeaefc4381bb</p><p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''Status: Downloaded newer image for homeassistant/home-assistant:latest</p><p>'''wiringpidocker.digitalWrite(2, GPIO.LOW)"'''io/homeassistant/home-assistant:latest</p>|}</li><li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功然后可以使用下面的命令查看下刚下载的Home Assistant的docker镜像</p>{| class="wikitable" style="width:800px;" |-| <p>rootorangepi@orangepi:~/wiringOP-Python# $ '''python3 docker images homeassistant/home-c "import wiringpi; \assistant'''</p><p>'''from wiringpi import GPIOREPOSITORY TAG IMAGE ID CREATED wiringpi.wiringPiSetup() \'''SIZE</p><p>'''wiringpi.digitalWrite(homeassistant/home-assistant latest bfa0ab9e1cf5 2, GPIO.HIGH)months ago "nbsp;'''</pspan style="color:#FF0000">1.17GB</lispan>'''</olp>|}
</li>
<li><p>在python3的命令行中测试的步骤如下所示:此时就可以运行Home Assistant的docker容器了</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>首先使用python3命令进入python3的命令行模式</p>|-| <p>rootorangepi@orangepi:~# $ '''python3docker run -d \'''</p></li><li><p>然后导入wiringpi的python模块</p>:<p>>>> '''import wiringpi--name homeassistant \'''</p>:<p>>>> '''from wiringpi import GPIO--privileged \'''</p></li><li>:<p>然后设置GPIO口为输出模式,其中'''pinMode--restart=unless-stopped \'''函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式</p>:<p>>>> '''wiringpi.wiringPiSetup()-e TZ=Asia/Shanghai \'''</p>:<p>0</p><p>>>> '''wiringpi.pinMode(2, GPIO.OUTPUT)-v /home/orangepi/home-assistant:/config \'''</p></li><li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功</p>:<p>>>> '''wiringpi.digitalWrite(2, GPIO.LOW)--network=host \'''</p></li><li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p>:<p>>>> '''wiringpi.digitalWrite(2, GPIO.HIGH)homeassistant/home-assistant:latest'''</p></li></ol>|}
</li>
<li><p>wiringOP然后在浏览器中输入【开发板的IP地址:8123】就能看到Home Assistant的界面</p>{| class="wikitable" style="background-Python在python代码中设置GPIO高低电平的方法可以参考下examples中的'''blink.py'''测试程序,color:#ffffdc;width:800px;" |-| <big><p>'''blink.pyHome Assistant容器的启动需要一段时间,如果下面的界面没有正常显示,请等待几秒钟再刷新。如果等待一分钟以上还没有正常显示下面的界面说明Home Assistant安装有问题,此时需要去检查前面的安装设置过程是否有问题了。'''测试程序会设置开发板26 pin中所有的GPIO口的电压不断的高低变化</p></big>|}<p>root@orangepi[[File:~zero3-img188.png]]</wiringOP-Python# p></li><li><p>然后输入'''姓名、用户名'''和'''密码'''再点击'''cd examples创建账号'''</p><p>root@orangepi[[File:~/wiringOPzero3-Python/examples# '''ls blinkimg189.py'''png]]</p></li><li><p>'''blink.py'''然后按照界面提示根据自己的喜好设置,再点击下一步</p><p>root@orangepi[[File:~/wiringOPzero3-Python/examples'''# python3 blinkimg190.py'''png]]</p></li><li><p>然后点击下一步</olp> <span id="pinp>[[File:zero3-spi测试-1"img191.png]]</p></spanli>=== 26pin SPI测试 ===<li><p>然后点击完成</p><ol style="listp>[[File:zero3-style-type: decimal;"img192.png]]</p></li><li><p>由26pin接口的原理图可知,可用的spi为spi1Home Assistant最终显示的主界面如下图所示</p><p>[[File:media/image176zero3-img193.png|565x209px]]</p></li><li><p>Linux系统中spi1默认是关闭的,需要手动打开才能使用。打开步骤如下所示:停止Home Assistant容器的方法</p>
<ol style="list-style-type: lower-alpha;">
<li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限查看docker容器的命令如下所示</p><p>orangepi@orangepi{| class="wikitable" style="width:~$ '''sudo orangepi-config'''</p></li><li><p>然后选择'''System'''</p>800px;" <p>[[File:media/image86.png|398x194px]]</p></li><li><p>然后选择'''Hardware'''</p><p>[[File:media/image87.png|393x202px]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''spi1-cs1-spidev'''</p><p>[[File:media/image177.png|392x57px]]</p></li><li><p>然后选择'''<Save>'''保存</p><p>[[Fileorangepi@orangepi:media/image89.png|397x92px]]</p></li><li><p>然后选择~$ '''<Back>docker ps -a'''</p><p>[[File:media/image90.png|395x91px]]</p></li><li><p>然后选择'''<Reboot>'''重启系统使配置生效</p><p>[[File:media/image91.png|374x187px]]</p></li></ol>}
</li>
<li><p>然后查看下linux系统中是否存在'''spidev1.1'''的设备节点,如果存在,说明SPI1的配置已经生效了停止Home Assistant容器的命令如下所示</p><p>orangepi@orangepi:~$ '''ls /dev/spidev1*'''</p><p>/dev/spidev1.1</p></li><li><p>然后可以使用examples中的'''spidev_test.py'''程序测试下SPI的回环功能,'''spidev_test.py'''程序需要指定下面的两个参数:</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>'''|--channel''':指定SPI的通道号</p></li><li>| <p>orangepi@orangepi:~$ '''--portdocker stop homeassistant''':指定SPI的端口号</p></li></ol>|}
</li>
<li><p>先不短接 SPI1 的 mosi 和 miso 两个引脚,运行spidev_test.py的输出结果如下所示,可以看到 TX 和 RX 的数据不一致删除Home Assistant容器的命令如下所示</p>{| class="wikitable" style="width:800px;" |-| <p>rootorangepi@orangepi:~/wiringOP-Python# $ '''cd examplesdocker rm homeassistant'''</p>|}</li></ol></li></ol>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''安装前请先更换下pip的源为国内源,加快Python包的安装速度,配置方法见[[Orange Pi Zero 3#Python更换pip源的方法|'''Python更换pip源的方法''--channel 1 --port 1']]一节的说明。'''</big>|}
<ol startstyle="6list-style-type: decimal;"><li><p>安装命令如下所示</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt-get update'''</p><p>orangepi@orangepi:~$ '''sudo apt-get install -y libopencv-dev python3-opencv'''</p>|}</li><li><p>然后使用下面的命令打印OpenCV的版本号输出正常,说明OpenCV安装成功</p><ol style="list-style-type: decimallower-alpha;"><li><p>Ubuntu22.04中OpenCV的版本如下所示:</p>{| class="wikitable" style="width:800px;"|-| <p>orangepi@orangepi:~$ '''python3 -c "import cv2; print(cv2.__version__)"'''</p><p>'''4.5.4'''</p>|}</li><li><p>然后使用杜邦线短接SPI1的txd(26pin接口中的第19号引脚)和rxd(26pin接口中的第21号引脚)两个引脚再运行spidev_testUbuntu20.04中OpenCV的版本如下所示:</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''python3 -c "import cv2; print(cv2.py的输出如下,可以看到发送和接收的数据一样,说明SPI1回环测试正常__version__)"'''</p><p>root'''4.2.0'''</p>|}</li><li><p>Debian11中OpenCV的版本如下所示:</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''python3 -c "import cv2; print(cv2.__version__)"'''</wiringOPp><p>'''4.5.1'''</p>|}</li><li><p>Debian12中OpenCV的版本如下所示:</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''python3 -Python# c "import cv2; print(cv2.__version__)"'''</p><p>''cd examples'4.6.0'''</p>|}</li></ol></li></ol>
</li>
<li><p>启动linux系统后,先确认下/dev下存在i2c3的设备节点</p><p>orangepi@orangepi:~$ '''ls /dev/i2c-3'''</p><p>'''/dev/i2c-3重启后,可以看到'''</p></li><li><p>然后开始测试i2c,首先安装下i2c-tools</p><p>orangepi@orangepi:~$ '''sudo apt-get updatetmp'''空间的大小变为2G了</p><p>orangepi@orangepi:~$ '''sudo''' '''apt-get install -y i2c-tools'''</p></li><li><p>然后在26pin接头的i2c3引脚上接一个i2c设备,这里以DS1307 RTC模块为例</p><p>[[File:media/image186.png|180x153px]]</p></li></ol> {| class="wikitable" style="width:800px;"
|-
| <p>orangepi@orangepi:~$ '''df -h | grep "/tmp"'''</p><p>tmpfs 2.0G 12K '''<span style="text-aligncolor: left;#FF0000"| '''RTC模块的引脚>2.0G</span>'''1% /tmp</p>|}</li><li><p>然后在linux系统中输入下面的命令就可以开始宝塔的安装</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''开发板26pin对应的引脚'''
|-
| style="text-align<p>orangepi@orangepi: left;"~$ '''sudo install_bt_panel.sh'''</p>| }</li><li><p>然后宝塔安装程序会提醒是否安装'''Bt-Panel'''到'''/www'''5V文件夹,此时输入'''y'''即可</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''2号引脚'''
|-
| <p>+----------------------------------------------------------------------</p><p>| Bt-WebPanel FOR CentOS/Ubuntu/Debian</p><p>+----------------------------------------------------------------------</p><p>| Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved.</p><p>+----------------------------------------------------------------------</p><p>| The WebPanel URL will be http://SERVER_IP:8888 when installed.</p><p>+----------------------------------------------------------------------</p> <p>Do you want to install Bt-Panel to the /www directory now?(y/n): '''<span style="text-aligncolor: left;#FF0000">y</span>'''</p>| }</li><li><p>然后要做的就是耐心等待,当看到终端输出下面的打印信息时,说明宝塔已经安装完成,整个安装过程大约耗时34分钟,根据网络速度的不同可能会有一些差别</p><p>[[File:zero3-img195.png]]</p></li><li><p>此时在浏览器中输入上面显示的'''面板地址'''就可以打开宝塔Linux面板的登录界面,然后在对应的位置输入上图显示的'''username'''GND和'''password'''就可以登录进宝塔<br />| style="text[[File:zero3-alignimg196.png]]</p></li><li><p>成功登录宝塔后的会弹出下面的欢迎界面,首先请将中间的用户须知阅读完拖到最下面,然后就可以选择”我已同意并阅读《用户协议》“,接着点击”进入面板”就可以进入宝塔了</p><p>[[File: left;"zero3-img197.png| 1200px]]</p></li><li><p>进入宝塔后首先会提示需要绑定宝塔官网的账号,如果没有账号可以去宝塔的官网('''6号引脚https://www.bt.cn''')注册一个</p><p>[[File:zero3-img198.png]]</p></li><li><p>最终显示的界面如下图所示,可以很直观的看到开发板Linux系统的一些状态信息,比如负载状态、CPU的使用率、内存使用率和存储空间的使用情况等</p><p>[[File:zero3-img199.png|1200px]]</p></li><li><p>宝塔的更多功能可以参考下面资料自行探索</p>{| class="wikitable" style="width:800px;"
|-
| style="text-align<p>使用手册:[http://docs.bt.cn '''http://docs.bt.cn''']</p><p>论坛地址:[https://www.bt.cn/bbs '''https: left;"| //www.bt.cn/bbs''']</p><p>GitHub链接:'''SDAhttps://github.com/aaPanel/BaoTa'''</p>|}</li></ol> == face_recognition人脸识别库的安装和测试方法 == {| class="wikitable" style="textbackground-aligncolor:#ffffdc;width: left800px;"| '''3号引脚'''
|-
| <big>'''注意,此小节的内容都是在<span style="text-aligncolor: left;#FF0000"| >桌面版本</span>的Linux系统中测试的,所以请确保开发板使用的系统为桌面版本的系统。'''SCL '''| 另外下面的安装测试都是在<span style="text-aligncolor: left;#FF0000"| >orangepi</span>用户下进行的,请保持环境一致。''' '''5号引脚Debian12目前没有适配。'''</big>
|}
<ol style="list-style-type: decimal;">
<li><p>由26pin接口的原理图可知,可用的uart为uart5首先在桌面中打开一个终端,然后下载'''face_recognition_install.sh'''</p><p>[[File:media/image181.png{|575x203px]]</p></li><li><p>Linux系统中uart5默认是关闭的,需要手动打开才能使用。打开步骤如下所示:</p><ol class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>首先运行下'''orangepi|-config''',普通用户记得加'''sudo'''权限</p>| <p>orangepi@orangepi:~/Desktop$ '''sudo orangepi-configwget \'''</p></li><li><p>然后选择'''System'''<https:/p><p>[[File:media/image86gitee.png|398x194px]]<com/leeboby/p><face_recognition_install/li><li><p>然后选择'''Hardware'''<raw/p><p>[[File:mediamaster/image87face_recognition_install.png|393x202px]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''ph-uart5sh'''</p><p>[[File:media/image182.png|400x60px]]</p>}</li><li><p>然后选择然后执行下面的命令开始安装'''<Save>face_recognition'''保存</p><p>[[File{| class="wikitable" style="width:media/image89.png800px;" |397x92px]]</p></li>-<li><p>然后选择'''<Back>'''</p>| <p>[[Fileorangepi@orangepi:media~/image90.png|395x91px]]</p></li><li><p>然后选择Desktop$ '''<Reboot>bash face_recognition_install.sh'''重启系统使配置生效</p><p>[[File:media/image91.png|374x187px]]</p></li></ol>}
</li>
<li><p>进入linux系统后,先确认下'''/dev'''下是否存在uart5的设备节点face_recognition安装完后会自动下载face_recognition的源码,然后自动运行face_recognition中的一些示例,如果最后能看到桌面上弹出了下面的这些图片就说明face_recognition安装测试成功了</p><p>'''注意,linux5[[File:zero3-img200.4系统为/dev/ttyAS5。'''</p><p>orangepi@orangepi:~$ '''ls /dev/ttyS5'''</p><p>/dev/ttyS5</p></li><li><p>然后开始测试uart5接口,先使用杜邦线短接要测试的uart5接口的rx和txpng]]</p></li></ol> === 手动安装face_recognition的方法 ===
<ol style="list-style-type: decimal;"><li><p>首先新建'''~/.pip'''目录,再添加'''pip.conf'''配置文件,并在其中设置pip的镜像源为清华源,需要执行的命令如下所示:</p>{| class="wikitable" style="width:800px;"
|-
|| style<p>orangepi@orangepi:~$ '''mkdir -p ~/.pip'''</p><p>orangepi@orangepi:~$ '''cat <<EOF > ~/.pip/pip.conf'''</p><p>'''[global]'''</p><p>'''timeout ="text6000'''</p><p>'''index-alignurl = https: left;"| //pypi.tuna.tsinghua.edu.cn/simple'''</p><p>'''trusted-host = pypi.tuna.tsinghua.edu.cn'''</p><p>'''uart5EOF'''</p>|}</li><li><p>然后安装依赖包</p>{| class="wikitable" style="width:800px;"
|-
| <p>orangepi@orangepi:~$ '''sudo apt update'''</p><p>orangepi@orangepi:~$ '''sudo apt install -y python3-pip libopencv-dev \'''</p><p>'''python3-opencv imagemagick python3-scipy python3-setuptools python3-wheel \'''</p><p>'''tx引脚python3-dev cmake python3-testresources'''</p>|}</li><li><p>然后更新下pip3</p>{| class="wikitable" style="text-alignwidth: left800px;"| '''对应26pin中的8号引脚'''
|-
| <p>orangepi@orangepi:~$ '''python3 -m pip install -U pip setuptools wheel'''</p>|}</li><li><p>安装'''face_recognition'''前首先需要安装下''rx引脚'dlib'''这个库,由于dlib这个库在开发板上编译安装比较慢,所以我在'''gitee'''上保存了一份编译好的dlib whl文件,下载后直接安装就可以了。dlib whl文件下载地址如下所示:</p>{| class="wikitable" style="text-alignwidth: left800px;"| -| <p>'''对应26pin中的10号引脚https://gitee.com/leeboby/python_whl'''</p>
|}
<ol style="list-style-type: lower-alpha;">
<li><p>第二个参数10表示看门狗的计数时间,如果这个时间内没有喂狗,系统会重启首先将python_whl仓库下载到开发板的Linux系统中</p></li><li><p>我们可以通过按下键盘上的任意键(ESC除外)来喂狗,喂狗后,程序会打印一行keep alive表示喂狗成功</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo watchdog_test 10'''</p><p>open success</p><p>options is 33152,identity is sunxigit clone --wdt</p><p>put_usr return,if 0,successdepth=1 https:0</p><p>The old reset time is: 16</p><p>return ENOTTY,if -1,success:0<gitee.com/p><p>return ENOTTY,if -1,success:0<leeboby/p><p>put_user return,if 0,success:0python_whl'''</p><p>put_usr return,if 0,success:0</p>|}<p>keep alive</pli><pli>keep alive</p><p>keep alive在python_whl文件夹中可以看到有多个版本的dlib安装包''','''dlib不同版本对应的Linux系统如下所示:</p></li></ol>
{| class="wikitable" style="width:800px;" |-| style="text-align: left;"| '''Ubuntu20.04'''| style="text-align: left;"| '''dlib-19.24.0-cp38-cp38-linux_aarch64.whl'''|-| style="text-align: left;"| '''Ubuntu22.04'''| style="text-align: left;"| '''dlib-19.24.0-cp310-cp310-linux_aarch64.whl'''|-| style="text-align: left;"| '''Debian11'''| style="text-align: left;"| '''dlib-19.24.0-cp39-cp39-linux_aarch64.whl'''|}</ol><span idol start="3" style="查看h618芯片的chipidlist-style-type: lower-alpha;"><li><p>然后就可以开始安装dlib,命令如下所示</spanp><ol style="list-style-type: none;"><li><p>a) Ubuntu20.04</p>{| class= 查看H618芯片的chipid "wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''cd python_whl'''</p><p>orangepi@orangepi:~/python_whl$ '''python3 -m pip install dlib-19.24.0-cp38-cp38-linux_aarch64.whl'''</p>|}</li><li><p>b) Ubuntu22.04</p>{| class="wikitable" style="width:800px;" |-查看H618芯片chipid的命令如下所示,每个芯片的chipid都是不同的,所以可以使用chipid来区分多个开发板。| <p>orangepi@orangepi:~$ '''cd python_whl'''</p><p>orangepi@orangepi:~/python_whl$ '''cat python3 -m pip install dlib-19.24.0-cp310-cp310-linux_aarch64.whl'''</p>|}</sysli><li><p>c) Debian11</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''cd python_whl'''</p><p>orangepi@orangepi:~/python_whl$ '''python3 -m pip install dlib-19.24.0-cp39-cp39-linux_aarch64.whl'''</p>|}</li></ol></sunxi_infoli><li><p>安装完后如果使用下面的命令能正常打印dlib的版本号,就说明dlib安装正确</sys_info p>{| grep class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~/python_whl$ '''python3 -c "chipidimport dlib; print(dlib.__version__)"'''</p><p>'''19.24.0'''</p>|}</li></ol></li></ol><!-- --><ol start="5" style="list-style-type: decimal;"><li><p>然后安装下'''face_recognition_models-0.3.0-py2.py3-none-any.whl'''</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~/python_whl$ '''python3 -m pip install face_recognition_models-0.3.0-py2.py3-none-any.whl'''</p>|}</li><li><p>然后安装'''face_recognition'''</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''python3 -m pip install face_recognition'''</p>|}</li><li><p>然后'''<span style="color:#FF0000">需要重新打开一个终端</span>''',才能找到并运行'''face_detection'''和'''face_recognition'''这两个命令</p><ol style="list-style-type: lower-alpha;"><li><p>face_recognition命令用来在单张图片或一个图片文件夹中识别是谁的脸</p></li><li><p>face_detection命令用来在单张图片或一个图片文件夹中定位人脸的位置</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''which face_detection'''</p><p>/usr/local/bin/face_detection</p><p>orangepi@orangepi:~$ '''which face_recognition'''</p><p>/usr/local/bin/face_recognition</p>|}</li></ol>
<ol style="list-style-type: decimal;">
<li><p>首先安装编译Python需要的依赖包</p><p>orangepi@orangepi:~$ 在'''sudo apt-get updateface_recognition'''</p><p>orangepi@orangepi:~$ '''sudo apt-get install -y build-essential zlib1g-dev \'''</p><p>'''libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev \'''</p><p>'''libreadline-dev libffi-dev curl libbz2-dev'''</p></li><li><p>然后下载最新版本的Python3.9源码并解压</p><p>orangepi@orangepi:~$ '''wget \'''</p><p>[https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz '''https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz''']</p><p>orangepi@orangepi:~$ '''tar xvf Python-3.9.10.tgz'''</p></li><li><p>然后运行配置命令</p><p>orangepi@orangepi:~$ '''cd Python-3.9.10'''</p><p>orangepi@orangepi:~$ '''./configure --enable-optimizations'''</p></li><li><p>然后编译安装Python3.9,编译时间大概需要半个小时左右</p><p>orangepi@orangepi:~$ '''make -j4'''</p><p>orangepi@orangepi:~$ '''sudo make altinstall'''</p></li><li><p>安装完后可以使用下面的命令查看下刚安装的Python的版本号</p><p>orangepi@orangepi:~$ '''python3.9 --version'''</p><p>'''Python 3.9.10'''</p></li><li><p>然后更新下pip</p><p>orangepi@orangepi:~$ '''/usr/local/bin/python3.9 -m pip install --upgrade pip'''</p></li></ol> <span id="python更换pip源的方法"></span>=== Python更换pip源的方法 === '''Linux系统pip默认使用的源为Python官方的源,但是国内访问Python官方的源速度是很慢的,并且经常会由于网络原因导致Python软件包安装失败。所以在使用pip安装Python库时,请记得更换下pip源。''' <ol style="list-style-type: decimal;"><li><p>首先安装下'''python3-pip'''</p><p>orangepi@orangepi:~$ '''sudo apt-get update'''</p><p>orangepi@orangepi:~$ '''sudo apt-get install -y python3-pip'''</p></li><li><p>Linux下永久更换pip源的方法的源码中有一些示例代码,我们可以直接用来测试,face_recognition源码的下载地址如下所示:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>先新建'''~/.pip'''目录,然后添加'''pip.conf'''配置文件,并在其中设置pip的源为清华源GitHub官方的下载地址</p><p>orangepi@orangepi{| class="wikitable" style="width:~$ '''mkdir 800px;" |-p ~/.pip'''</p>| <p>orangepi@orangepi:~$ '''cat <<EOF > ~/.pip/pip.conf'''</p><p>'''[global]'''</p><p>'''timeout = 6000'''</p><p>'''index-url = git clone https://pypigithub.tuna.tsinghua.edu.cncom/simple'''<ageitgey/p><p>'''trusted-host = pypi.tuna.tsinghua.eduface_recognition.cngit'''</p><p>'''EOF'''</p></li><li><p>然后使用pip3安装Python库速度就会很快了</p></li></ol>|}
</li>
<li><p>Linux下临时更换pip源的方法,其中的'''<packagename>'''需要替换为具体的包名Gitee镜像下载地址</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''pip3 install <packagename>git clone [https://github.com/ageitgey/face_recognition https://gitee.com/leeboby/face_recognition.git]'''</p>|}</li></ol></li><li><p>face_recognition示例代码的路径如下所示</p>{| class="wikitable" style="width:800px; " |-i \| <p>'''face_recognition/examples'''</p>|}</li><li><p>face_recognition的中文说明文档链接如下所示,使用face_recognition前请仔细阅读下</p>{| class="wikitable" style="width:800px;" |-| <p>[https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.md '''https://pypigithub.tunacom/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.tsinghuamd''']</p>|}</li><li><p>'''find_faces_in_picture.edu.cnpy'''用来在图片中定位人脸的位置,测试步骤如下所示</simple p><ol style="list-style-trustedtype: lower-alpha;"><li><p>在桌面中打开一个终端,然后进入'''face_recognition/examples'''目录,再执行下面的命令</p>{| class="wikitable" style="width:800px;" |-host pypi| <p>orangepi@orangepi:~$ '''cd face_recognition/examples'''</p><p>orangepi@orangepi:~/face_recognition/examples$ '''python3 find_faces_in_picture.tunapy'''</p><p>'''I found 1 face(s) in this photograph.tsinghua.edu.cn'''</p><p>'''A face is located at pixel location Top: 241, Left: 419, Bottom: 562, Right: 740'''</p>|}</li><li><p>等待一段时间会弹出下面的图片,这就是在测试图片中定位到的人脸</p><p>[[File:zero3-img201.png]]</p></li></ol></li><span idli><p>'''find_facial_features_in_picture.py'''用来识别单张图片中人脸的关键点,测试步骤如下所示</p><ol style="安装docker的方法list-style-type: lower-alpha;"><li><p>在桌面中打开一个终端,然后进入'''face_recognition/examples'''目录,再执行下面的命令</spanp>{| class="wikitable" style= 安装Docker的方法 =="width:800px;" |-| Orange Pi提供的linux镜像已经预装了Docker,只是Docker服务默认没有打开。使用<p>orangepi@orangepi:~$ '''enable_docker.shcd face_recognition/examples'''脚本可以使能docker服务,然后就可以开始使用docker命令了,并且在下次启动系统时也会自动启动docker服务。</p><p>orangepi@orangepi:~/face_recognition/examples$ '''enable_dockerpython3 find_facial_features_in_picture.shpy'''</p>|}</li><li><p>等待一段时间会弹出下面的图片,可以看到将人脸轮廓都标注出来了</p><p>[[File:zero3-img202.png]]</p></li></ol></li>可以使用下面的命令测试下docker,如果能运行<li><p>'''helloidentify_and_draw_boxes_on_faces.py'''用来识别人脸并使用方框标注,测试步骤如下所示</p><ol style="list-style-type: lower-worldalpha;"><li><p>在桌面中打开一个终端,然后进入'''说明docker能正常使用了。face_recognition/examples'''目录,再执行下面的命令</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''docker run hello-worldcd face_recognition/examples'''</p> Unable to find image <p>orangepi@orangepi:~/face_recognition/examples$ '''python3 identify_and_draw_boxes_on_faces.py''hello-world:latest' locally</p>|}</li>latest<li><p>等待一段时间会弹出下面的图片,可以看到将图片中的人脸都使用方框标注出来了,并且正确显示了人物的名字</p><p>[[File: Pulling from libraryzero3-img203.png]]</p></li></hello-worldol></li>256ab8fe8778<li><p>'''face_distance.py'''用来在不同精度上比较两个人脸是否属于一个人,首先打开一个终端,然后进入'''face_recognition/examples'''目录,再执行下面的命令就可以看到测试的输出结果</p>{| class="wikitable" style="width: Pull complete800px;" |-| Digest<p>orangepi@orangepi: sha256~$ '''cd face_recognition/examples'''</p><p>orangepi@orangepi:7f0a9f93b4aa3022c3a4c147a449ef11e0941a1fd0bf4a8e6c9408b2600777c5~/face_recognition/examples$ '''python3 face_distance.py'''</p><p>'''The test image has a distance of 0.35 from known image #0'''</p>Status: Downloaded newer <p>'''- With a normal cutoff of 0.6, would the test image match the known image for hello? True'''</p><p>'''-world:latestWith a very strict cutoff of 0.5, would the test image match the known image? True'''</p>
<p>'''This message shows The test image has a distance of 0.82 from known image #1'''</p><p>'''- With a normal cutoff of 0.6, would the test image match the known image? False'''</p><p>'''- With a very strict cutoff of 0.5, would the test image match the known image? False'''</p>|}</li><li><p>'''recognize_faces_in_pictures.py'''用来识别未知图片中的人脸是谁。首先打开一个终端,然后进入'''face_recognition/examples'''目录,再执行下面的命令,等待一端时间后就能看到测试结果</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''cd face_recognition/examples'''</p><p>orangepi@orangepi:~/face_recognition/examples$ '''python3 recognize_faces_in_pictures.py'''</p><p>'''Is the unknown face a picture of Biden? False'''</p><p>'''Is the unknown face a picture of Obama? True'''</p><p>'''Is the unknown face a new person that your installation appears to be working correctlywe've never seen before? False'''</p>|}</li><li><p>'''facerec_from_webcam_faster.py'''用来识别USB摄像头中的人脸,测试步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先请将USB摄像头插入开发板的USB接口中,然后通过'''v4l2-ctl'''('''<span style="color:#FF0000">注意v4l2中的l是小写字母l,不是数字1</span>''')命令查看下USB摄像头的设备节点的序号</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt update'''</p><p>orangepi@orangepi:~$ '''sudo apt install -y v4l-utils'''</p><p>orangepi@orangepi:~$ '''v4l2-ctl --list-devices'''</p><p>cedrus (platform:cedrus):</p>::<p>/dev/video0</p>
<ol style="list-style-type: lower-alpha;">
<li><p>查看docker容器的命令如下所示</p><p>orangepi@orangepi:~$ face_detection命令行工具可以在单张图片或一个图片文件夹中定位人脸位置(输出像素点坐标)。使用'''docker ps face_detection -a-help'''可以查看下face_detection命令的帮助信息</p></li><li><p>停止Home Assistant容器的命令如下所示</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''docker stop homeassistantface_detection --help'''</p></li><li><p>删除Home Assistant容器的命令如下所示</p><p>orangepi@orangepiUsage:~$ '''docker rm homeassistant'''face_detection [OPTIONS] IMAGE_TO_CHECK</p></li></ol></li></ol>
:<span id="opencv的安装方法"p>--model TEXT Which face detection model to use. Options are "hog" or "cnn".</spanp>== OpenCV的安装方法 ==
:<ol style="listp>-style-type: decimal;"help Show this message and exit.</p>|}</li><li><p>安装命令如下所示检测单张图片的示例如下所示:</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt-get updatecd face_recognition/examples'''</p><p>orangepi@orangepi:~/face_recognition/examples$ '''sudo apt-get install -y libopencv-dev python3-opencvface_detection obama2.jpg'''</p><p>obama2.jpg,302,474,611,164</p>|}</li><li><p>然后使用下面的命令打印OpenCV的版本号输出正常,说明OpenCV安装成功使用多核并行检测多张图片的示例如下所示:</p><ol style="list-style-type: lower-alphanone;"><li><p>Ubuntu22.04中OpenCV的版本如下所示:a) 首先进入'''face_recognition/examples'''文件夹</p></li><li><p>orangepi@orangepi:~$ '''python3 -c "import cv2; print(cv2.__version__b)"'''然后新建一个test文件夹</p></li><li><p>'''4.5.4'''c) 然后将jpg图片都拷贝到test文件夹中</p></li><li><p>Ubuntu20.04中OpenCV的版本如下所示:d) 然后使用所有的cpu并行运行'''face_detection'''来检查test文件夹中的图片,其中'''--cpus -1'''表示使用所有的cpu</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''python3 -c "import cv2; print(cv2.__version__)"cd face_recognition/examples'''</p><p>orangepi@orangepi:~/face_recognition/examples$ '''4.2.0mkdir test'''</p></li><li><p>Debian11中OpenCV的版本如下所示:orangepi@orangepi:~/face_recognition/examples$ '''cp *.jpg test'''</p><p>orangepi@orangepi:~/face_recognition/examples$ '''python3 face_detection -c "import cv2; print(cv2.__version__)"-cpus -1 test'''</p><p>'''4test/obama-240p.jpg,29,261,101,189</p><p>test/obama_small.jpg,65,215,169,112</p><p>test/obama2.5jpg,302,474,611,164</p><p>test/two_people.1'''jpg,62,394,211,244</p><p>test/two_people.jpg,95,941,244,792</lip><lip>test/obama.jpg,136,624,394,366</p><p>Debian12中OpenCV的版本如下所示:test/obama-480p.jpg,65,507,189,383</p><p>orangepi@orangepi:~$ '''python3 test/obama-c "import cv2; print(cv2720p.__version__)"'''jpg,94,751,273,572</p><p>'''4test/obama-1080p.6jpg,136,1140,394,882</p><p>test/biden.0'''jpg,233,749,542,439</p>|}</li></ol>
</li></ol>
</li>
<li><p>'''face_recognition'''命令测试示例</p>
<ol style="list-style-type: lower-alpha;">
<li><p>'''face_recognition'''命令行工具可以在单张图片或者一个图片文件夹中认出是谁的脸。使用'''face_recognition --help'''可以查看下face_recognition命令的帮助信息</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''face_recognition --help'''</p>
<p>Usage: face_recognition [OPTIONS] KNOWN_PEOPLE_FOLDER IMAGE_TO_CHECK</p>
<p>Options:</p>
:<p>--cpus INTEGER number of CPU cores to use in parallel (can speed up processing lots of images). -1 means "use all in system"</p>
:<p>--tolerance FLOAT Tolerance for face comparisons. Default is 0.6. Lower this if you get multiple matches for the same person.</p>
:<span id="宝塔linux面板的安装方法"p>--show-distance BOOLEAN Output face distance. Useful for tweaking tolerance setting.</spanp>== 宝塔Linux面板的安装方法 ==
:<ol style="listp>-style-type: decimalhelp "Show this message and exit.</p>|}</li><li><p>首先需要扩展下首先新建一个已知名字的人脸图片文件夹'''known_people'''/tmp,然后复制两张图片到'''known_people'''中,然后将'''obama2.jpg'''空间的大小,设置完后需要复制为'''重启下开发板的linux系统unkown.jpg''',命令如下所示:,也就是我们要识别的图片</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo sed -i cd face_recognition/examples'''s</nosuidp><p>orangepi@orangepi:~/&,size=2Gface_recognition/examples$ '' 'mkdir known_people'''</p><p>orangepi@orangepi:~/etcface_recognition/fstabexamples$ '''cp biden.jpg obama.jpg known_people'''</p><p>orangepi@orangepi:~/face_recognition/examples$ '''sudo rebootcp obama2.jpg unkown.jpg'''</p>|}</li><li><p>重启后,可以看到然后就可以使用下面的命令识别下'''/tmpunkown.jpg'''空间的大小变为2G了图片中人物的名字,可以看到识别到unkown.jpg图片为obama</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~/face_recognition/examples$ '''df -h | grep "/tmp"face_recognition known_people \'''</p><p>tmpfs 2.0G 12K '''2unkown.0Gjpg''' 1% </tmpp><p>unkown.jpg,obama</p>|}</li><li><p>然后在linux系统中输入下面的命令就可以开始宝塔的安装如果我们识别一张不相关的图片,就会显示unknown_person</p>{| class="wikitable" style="width:800px;" |-| <p>orangepiroot@orangepi:~/face_recognition/examples$ '''sudo install_bt_panel.shface_recognition known_people \'''</p></li><li><p>然后宝塔安装程序会提醒是否安装'''Btalex-Panel'''到'''/www''lacamoire.png'文件夹,此时输入'''y'''即可</p><p>+---------------------------------------------------------------------alex-lacamoire.png,unknown_person</p><p>| Bt-WebPanel FOR CentOS/Ubuntu/Debian}</pli><li><p>+----------------------------------------------------------------------我们还可以新建一个test文件夹,然后在其中放入多张图片,然后就可以使用所有的CPU来并行识别所有的图片</p>{| class="wikitable" style="width:800px;" |-| <p>| Copyright © 2015-2099 BT-SOFT(httporangepi@orangepi:~/face_recognition/www.bt.cn) All rights reserved.examples$ '''mkdir test'''</p><p>+----------------------------------------------------------------------</p><p>| The WebPanel URL will be httporangepi@orangepi:~/face_recognition/SERVER_IP:8888 when installedexamples$ '''cp *.jpg *.png test'''</p><p>+-------------------------------------------------------------------orangepi@orangepi:~/face_recognition/examples$ '''face_recognition --cpus -1 \'''</p><p>Do you want to install Bt-Panel to the /www directory now?(y/n): '''yknown_people test'''</p></li><li><p>然后要做的就是耐心等待,当看到终端输出下面的打印信息时,说明宝塔已经安装完成,整个安装过程大约耗时34分钟,根据网络速度的不同可能会有一些差别test/obama-240p.jpg,obama</p><p>[[File:mediatest/image195alex-lacamoire.png|576x233px]],unknown_person</p></li><li><p>此时在浏览器中输入上面显示的'''面板地址'''就可以打开宝塔Linux面板的登录界面,然后在对应的位置输入上图显示的'''username'''和'''password'''就可以登录进宝塔<br test/>[[File:media/image196obama_small.png|575x281px]]jpg,obama</p></li><li><p>成功登录宝塔后的会弹出下面的欢迎界面,首先请将中间的用户须知阅读完拖到最下面,然后就可以选择”我已同意并阅读《用户协议》“,接着点击”进入面板”就可以进入宝塔了test/unkown.jpg,obama</p><p>[[File:mediatest/image197obama2.png|575x317px]]jpg,obama</p></li><li><p>进入宝塔后首先会提示需要绑定宝塔官网的账号,如果没有账号可以去宝塔的官网('''https:test//wwwlin-manuel-miranda.bt.cn''')注册一个png,unknown_person</p><p>[[File:mediatest/image198two_people.png|576x300px]]jpg,biden</p></li><li><p>最终显示的界面如下图所示,可以很直观的看到开发板Linux系统的一些状态信息,比如负载状态、CPU的使用率、内存使用率和存储空间的使用情况等test/two_people.jpg,obama</p><p>[[File:mediatest/image199obama-720p.png|575x306px]]jpg,obama</p></li><li><p>宝塔的更多功能可以参考下面资料自行探索test/obama.jpg,obama</p><p>使用手册:[http:test//docsobama-480p.bt.cn '''http://docs.bt.cn''']jpg,obama</p><p>论坛地址:[https:/test/wwwbiden.bt.cn/bbs '''https://www.bt.cn/bbs''']jpg,biden</p><p>GitHub链接:'''https:test//githubobama-1080p.com/aaPanel/BaoTa'''jpg,obama</p>|}</li></ol> == face_recognition人脸识别库的安装和测试方法 == '''注意,此小节的内容都是在桌面版本的Linux系统中测试的,所以请确保开发板使用的系统为桌面版本的系统。''' '''另外下面的安装测试都是在orangepi用户下进行的,请保持环境一致。''' '''Debian12目前没有适配。''' '''face_recognition源码仓库的地址为:''' [https:</li></github.com/ageitgey/face_recognition '''https://github.com/ageitgey/face_recognition'''] '''face_recognition中文版本的说明文档为:'''ol>
{| class="wikitable" style== 使用脚本自动安装face_recognition的方法 ==="background-color:#ffffdc;width:800px;" |-| <big>'''注意,安装中文输入法前请确保开发板使用的Linux系统为桌面版系统。'''</big>|}
<ol stylespan id="listdebian-style-type: decimal;系统的安装方法"><li><p>首先在桌面中打开一个终端,然后下载'''face_recognition_install.sh'''</p><p>orangepi@orangepi:~/Desktop$ '''wget \'''</pspan><p>'''https://gitee.com/leeboby/face_recognition_install/raw/master/face_recognition_install.sh'''</p></li><li><p>然后执行下面的命令开始安装'''face_recognition'''</p><p>orangepi@orangepi:~/Desktop$ '''bash face_recognition_install.sh'''</p></li><li><p>face_recognition安装完后会自动下载face_recognition的源码,然后自动运行face_recognition中的一些示例,如果最后能看到桌面上弹出了下面的这些图片就说明face_recognition安装测试成功了</p><p>[[File:media/image200.png|576x324px]]</p></li></ol> === 手动安装face_recognition的方法 Debian 系统的安装方法 ===
<ol style="list-style-type: decimal;">
<li><p>首先新建首先设置默认'''~/.pip'''目录,再添加'''pip.conf'''配置文件,并在其中设置pip的镜像源为清华源,需要执行的命令如下所示:</p><p>orangepi@orangepi:~$ '''mkdir -p ~/.pip'''</p><p>orangepi@orangepi:~$ '''cat <<EOF > ~/.pip/pip.conf'''</p><p>'''[global]'''</p><p>'''timeout = 6000'''</p><p>'''index-url = https://pypi.tuna.tsinghua.edu.cn/simple'''</p><p>'''trusted-host = pypi.tuna.tsinghua.edu.cn'''</p><p>'''EOF'''</p></li><li><p>然后安装依赖包</p><p>orangepi@orangepi:~$ '''sudo apt update'''</p><p>orangepi@orangepi:~$ '''sudo apt install -y python3-pip libopencv-dev \'''</p><p>'''python3-opencv imagemagick python3-scipy python3-setuptools python3-wheel \'''</p><p>'''python3-dev cmake python3-testresources'''</p></li><li><p>然后更新下pip3</p><p>orangepi@orangepi:~$ '''python3 -m pip install -U pip setuptools wheel'''</p></li><li><p>安装'''face_recognition'''前首先需要安装下'''dlib'''这个库,由于dlib这个库在开发板上编译安装比较慢,所以我在'''gitee'''上保存了一份编译好的dlib whl文件,下载后直接安装就可以了。dlib whl文件下载地址如下所示:</p><p>'''https://gitee.com/leeboby/python_whllocale'''为中文</p>
<ol style="list-style-type: lower-alpha;">
<li><p>首先将python_whl仓库下载到开发板的Linux系统中输入下面的命令可以开始配置'''locale'''</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''git clone sudo dpkg-reconfigure locales'''</p>|}</li><li><p>然后在弹出的界面中选择'''zh_CN.UTF-8 > UTF-depth=1 https8'''(通过键盘上的上下方向按键来上下移动,通过空格键来选择,最后通过Tab键可以将光标移动到'''<OK>''',然后回车即可)</p><p>[[File:zero3-img210.png|1400px]]</p></giteeli><li><p>然后设置默认'''locale'''为'''zh_CN.com/leeboby/python_whlUTF-8'''</p><p>[[File:zero3-img211.png|1400px]]</p></li><li><p>在python_whl文件夹中可以看到有多个版本的dlib安装包退出界面后就会开始''',locale'''dlib不同版本对应的Linux系统如下所示:的设置,命令行显示的输出如下所示</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''</lip><p>Generating locales (this might take a while)...</p>:<p>en_US.UTF-8... done</p>:<p>zh_CN.UTF-8... done</p><p>Generation complete.</olp>|}
</li></ol>
</li><li><p>然后打开'''Input Method'''</p><p>[[File:zero3-img212.png]]</p></li><li><p>然后选择'''OK'''</p><p>[[File:zero3-img213.png]]</p></li><li><p>然后选择'''Yes'''</p><p>[[File:zero3-img214.png]]</p></li><li><p>然后选择'''fcitx'''</p><p>[[File:zero3-img215.png]]</p></li><li><p>然后选择'''OK'''</p><p>[[File:zero3-img216.png]]</p></li><li><p>'''<span style="color:#FF0000">然后重启Linux系统才能使配置生效</span>'''</p></li><li><p>然后打开'''Fcitx configuration'''</p><p>[[File:zero3-img217.png]]</p></li><li><p>然后点击下图所示位置的'''+'''号</p><p>[[File:zero3-img218.png]]</p></li><li><p>然后搜索'''Google Pinyin'''再点击'''OK'''</p><p>[[File:zero3-img219.png]]</p></li><li><p>然后将'''Google Pinyin'''放到最前面</p><p>[[File:zero3-img220.png]]</p><p>[[File:zero3-img221.png]]</p></li><li><p>然后打开'''Geany'''这个编辑器测试下中文输入法</p><p>[[File:zero3-img222.png]]</p></li><li><p>中文输入法测试如下所示</p><p>[[File:zero3-img223.png]]</p></li><li><p>通过'''Ctrl+Space'''快捷键可以切换中英文输入法</p></li><li><p>如果需要整个系统都显示为中文,可以将'''/etc/default/locale'''中的变量都设置为'''zh_CN.UTF-8'''</p>{| class="wikitable" style="width:800px;"
|-
| style="text-align<p>orangepi@orangepi: left;"| ~$ '''Ubuntu20.04sudo vim /etc/default/locale'''</p><p># File generated by update-locale</p>| <p>LC_MESSAGES='''<span style="text-aligncolor: left;#FF0000"| '''dlib-19.24>zh_CN.0-cp38-cp38UTF-linux_aarch64.whl8</span>'''</p>|-| style<p>LANG="text-align: left;"| '''Ubuntu22.04'''| <span style="text-aligncolor: left;#FF0000"| '''dlib-19.24>zh_CN.0-cp310-cp310UTF-linux_aarch64.whl8</span>'''</p>|-| style<p>LANGUAGE="text-align: left;"| '''Debian11'''| <span style="text-aligncolor: left;#FF0000"| '''dlib-19>zh_CN.24.0UTF-cp39-cp39-linux_aarch64.whl8</span>'''</p>
|}
</li>
<li><p>安装完后如果使用下面的命令能正常打印dlib的版本号,就说明dlib安装正确</p><p>orangepi@orangepi:~/python_whl$ 然后'''python3 -c "import dlib; print(dlib.__version__)"重启系统'''就能看到系统显示为中文了</p><p>'''19[[File:zero3-img224.24.0'''png]]</p></li></ol>
<!-- --><ol startspan id="5" style="listubuntu-style-type: decimal;20.04系统的安装方法"><li><p>然后安装下'''face_recognition_models-0.3.0-py2.py3-none-any.whl'''</pspan><p>orangepi@orangepi:~/python_whl$ '''python3 -m pip install face_recognition_models-0=== Ubuntu 20.3.0-py2.py3-none-any.whl'''</p></li><li><p>然后安装'''face_recognition'''</p><p>orangepi@orangepi:~$ '''python3 -m pip install face_recognition'''</p></li><li><p>然后'''需要重新打开一个终端''',才能找到并运行'''face_detection'''和'''face_recognition'''这两个命令</p><ol style04系统的安装方法 ==="list-style-type: lower-alpha;"><li><p>face_recognition命令用来在单张图片或一个图片文件夹中识别是谁的脸</p></li><li><p>face_detection命令用来在单张图片或一个图片文件夹中定位人脸的位置</p><p>orangepi@orangepi:~$ '''which face_detection'''</p><p>/usr/local/bin/face_detection</p><p>orangepi@orangepi:~$ '''which face_recognition'''</p><p>/usr/local/bin/face_recognition</p></li></ol></li></ol>
<span id=== face_recognition的测试方法 ==="ubuntu-22.04系统的安装方法"></span>
<ol style="list-style-type: decimal;">
<li><p>在首先打开'''face_recognitionLanguage Support'''的源码中有一些示例代码,我们可以直接用来测试,face_recognition源码的下载地址如下所示:</p><p>[[File:zero3-img225.png]]</p></li><li><p>然后找到'''汉语(中国)'''选项</p><p>[[File:zero3-img234.png]]</p></li><li><p>然后请使用鼠标左键选中'''汉语(中国)'''并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示:</p><p>[[File:zero3-img235.png]]</p></li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''注意,这一步不是很好拖动的,请耐心多试几次。'''</big>|}</ol><ol start="4" style="list-style-type: lower-alphadecimal;"><li><p>GitHub官方的下载地址然后选择'''Apply System-Wide'''将中文设置应用到整个系统</p><p>orangepi@orangepi[[File:~$ zero3-img236.png]]</p></li><li><p>'''git clone https<span style="color:#FF0000">然后重启Linux系统使配置生效<//github.com/ageitgey/face_recognition.gitspan>'''</p></li><li><p>Gitee镜像下载地址重新进入系统后,在下面的界面请选择'''不要再次询问我''',然后请根据自己的喜好决定标准文件夹是否也要更新为中文</p><p>orangepi@orangepi:~$ '''git clone [https[File:zero3-img230.png]]</p></github.comli><li><p>然后可以看到桌面都显示为中文了</ageitgey/face_recognition httpsp><p>[[File:zero3-img231.png]]</p></gitee.comli><li><p>然后打开Fcitx5配置程序</leeboby/face_recognitionp><p>[[File:zero3-img237.gitpng]]'''</p></li><li><p>然后选择使用拼音输入法</olp><p>[[File:zero3-img238.png]]</p></li><li><p>face_recognition示例代码的路径如下所示选择后的界面如下所示,再点击确定即可</p><p>[[File:zero3-img239.png]]</p></li><li><p>然后我们可以打开'''face_recognition/examplesGeany'''测试下中文输入法,打开方式如下图所示</p><p>[[File:zero3-img232.png]]</p></li><li><p>face_recognition的中文说明文档链接如下所示,使用face_recognition前请仔细阅读下打开'''Geany'''后,默认还是英文输入法,我们可以通过'''Ctrl+Space'''快捷键来切换成中文输入法,然后就能输入中文了</p><p>[https[File://githubzero3-img240.compng]]</ageitgeyp></face_recognitionli></blobol> <span id="远程登录linux系统桌面的方法"></masterspan> == 远程登录Linux系统桌面的方法 == <span id="使用nomachine远程登录"></README_Simplified_Chinese.md span>=== 使用NoMachine远程登录 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''请确保开发板安装的Ubuntu或者Debian系统为桌面版本的系统。另外NoMachine也提供了详细的使用文档,强烈建议通读此文档来熟悉NoMachine的使用,文档链接如下所示:''' '''https://githubknowledgebase.nomachine.com/ageitgeyDT10R00166'''</face_recognitionbig>|} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''NoMachine支持Windows、Mac、Linux、iOS和安卓平台,所以我们可以在多种设备上通过NoMachine来远程登录控制Orange Pi开发板。下面演示下在Windows中通过NoMachine来远程登录Orange Pi开发板的Linux系统桌面。其他平台的安装方法请参考下NoMachine的官方文档。'''</blob/master/README_Simplified_Chinese.mdbig>|} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。''']</pbig>|} </liol style="list-style-type: decimal;"><li><p>首先下载NoMachine软件Linux '''find_faces_in_picture.py<span style="color:#FF0000">arm64</span>'''用来在图片中定位人脸的位置,测试步骤如下所示deb版本的安装包,然后安装到开发板的Linux系统中</p>
<ol style="list-style-type: lower-alpha;">
<li>由于H618是ARMv8架构的SOC,我们使用的系统为Ubuntu或者Debian,所以这里需要下载'''NoMachine > for ARM ARMv8 DEB'''安装包,下载链接如下所示: {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <pbig>在桌面中打开一个终端,然后进入'''face_recognition注意,这个下载链接可能会变,请认准Armv8/examplesArm64版本的deb包。'''目录,再执行下面的命令</pbig><p>orangepi@orangepi|} {| class="wikitable" style="width:800px;" |-| [https:~$ //www.nomachine.com/download/download&id=112&s=ARM '''cd face_recognitionhttps:/examples/downloads.nomachine.com/download/?id=118&distro=ARM''']|} [[File:zero3-img241.png]]</li></pol><ol start="2" style="list-style-type: lower-alpha;"><li><p>orangepi@orangepi:~/face_recognition/examples$ 另外在'''官方工具'''中也可以下载到'''python3 find_faces_in_picture.pyNoMachine'''的安装包</p><p>'''I found 1 face(s) in this photograph[[File:zero3-img242.'''png]]</p><p>先进入'''A face is located at pixel location Top: 241, Left: 419, Bottom: 562, Right: 740远程登录软件-NoMachine'''文件夹</p><p>[[File:zero3-img243.png]]</lip><li><p>等待一段时间会弹出下面的图片,这就是在测试图片中定位到的人脸然后下载arm64版本的deb安装包</p><p>[[File:media/image201zero3-img244.png|575x311px]]</p></li><li><p>然后将下载的'''nomachine_x.x.x_x_arm64.deb'''上传到开发板的Linux系统中</olp></li><li><p>然后使用下面的命令在开发板的Linux系统中安装'''find_facial_features_in_pictureNoMachine'''</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo dpkg -i nomachine_x.pyx.x_x_arm64_arm64.deb'''用来识别单张图片中人脸的关键点,测试步骤如下所示</p>|}</li></ol ></li></ol><!-- --><ol start="2" style="list-style-type: lower-alphadecimal;"><li>然后下载NoMachine软件Windows版本的安装包,下载地址如下所示</li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <pbig>在桌面中打开一个终端,然后进入'''face_recognition/examples注意,这个下载链接可能会变。'''目录,再执行下面的命令</pbig><p>orangepi@orangepi|} {| class="wikitable" style="width:~$ 800px;" |-| '''cd face_recognitionhttps://examplesdownloads.nomachine.com/download/?id=9'''|} [[File:zero3-img245.png]]</pol><ol start="3" style="list-style-type: decimal;"><li><p>orangepi@orangepi:~/face_recognition/examples$ 然后在Windows中安装NoMachine,'''python3 find_facial_features_in_picture.py安装完后请重启下电脑'''</p></li><li><p>等待一段时间会弹出下面的图片,可以看到将人脸轮廓都标注出来了然后在Window中打开'''NoMachine'''</p><p>[[File:media/image202zero3-img246.png|575x302px]]</p></li><li><p>NoMachine启动后会自动扫描局域网内其他安装有NoMachine的设备,进入NoMachine的主界面后就可以看到开发板已经在可连接的设备列表里了,然后点击下图红色方框所示的位置即可开始登录开发板的Linux系统桌面</olp><p>[[File:zero3-img247.png]]</p></li><li><p>然后点击'''identify_and_draw_boxes_on_faces.pyOK'''用来识别人脸并使用方框标注,测试步骤如下所示</p><ol style="list-style-typep>[[File: lowerzero3-alpha;"img248.png]]</p></li><li><p>在桌面中打开一个终端,然后进入然后在下图对应的位置输入开发板Linux系统的用户名和密码,再点击'''face_recognition/examplesOK'''目录,再执行下面的命令开始登陆</p><p>orangepi@orangepi[[File:~$ '''cd face_recognitionzero3-img249.png]]</examples'''p></pli><li><p>orangepi@orangepi:~/face_recognition/examples$ '''python3 identify_and_draw_boxes_on_faces.py'''然后在接下来的界面中都点击OK</p></li><li><p>等待一段时间会弹出下面的图片,可以看到将图片中的人脸都使用方框标注出来了,并且正确显示了人物的名字最后就能看到开发板Linux系统的桌面了</p><p>[[File:media/image203zero3-img250.png|461x250px]]</p></li></ol> <span id="使用vnc远程登录"></lispan> === 使用VNC远程登录 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <li><pbig>'''face_distance.py操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。'''用来在不同精度上比较两个人脸是否属于一个人,首先打开一个终端,然后进入 '''face_recognition<span style="color:#FF0000">Ubuntu20.04测试VNC很多问题,请不要使用这种方法。</examplesspan>'''目录,再执行下面的命令就可以看到测试的输出结果</pbig>|} <ol style="list-style-type: decimal;"><li><p>orangepi@orangepi:~$ 首先运行'''set_vnc.sh'''脚本设置下vnc,'''cd face_recognition/examples记得加sudo权限'''</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~/face_recognition/examples$ '''python3 face_distancesudo set_vnc.pysh'''</p><p>'''The test image has You will require a distance of 0password to access your desktops.35 from known image #0'''</p> <p>Password: '''- With a normal cutoff of 0.6, would the test image match the known image? True<span style="color:#FF0000">#在这里设置vnc的密码,8位字符</span>'''</p><p>Verify: '''- With a very strict cutoff of 0.5, would the test image match the known image? True<span style="color:#FF0000">#在这里设置vnc的密码,8位字符</span>'''</p><p>Would you like to enter a view-only password (y/n)? '''The test image has a distance of 0.82 from known image <span style="color:#1FF0000">n</span>'''</p><p>'''- With a normal cutoff of 0xauth: file /root/.6, would the test image match the known image? False'''Xauthority does not exist</p> <p>New 'X''- With a very strict cutoff of 0.5, would the test image match the known image? False'''desktop is orangepi:1</p> <p>Creating default startup script /liroot/.vnc/xstartup</p><li><p>'''recognize_faces_in_picturesStarting applications specified in /root/.py'''用来识别未知图片中的人脸是谁。首先打开一个终端,然后进入'''face_recognitionvnc/examples'''目录,再执行下面的命令,等待一端时间后就能看到测试结果xstartup</p><p>orangepi@Log file is /root/.vnc/orangepi:~$ '''cd face_recognition/examples'''1.log</p> <p>orangepi@orangepi:~/face_recognition/examples$ '''python3 recognize_faces_in_pictures.py'''Killing Xtightvnc process ID 3047</p> <p>New 'X''Is the unknown face a picture of Biden? False'''desktop is orangepi:1</p> <p>'''Is the unknown face a picture of Obama? True'''Starting applications specified in /root/.vnc/xstartup</p><p>'''Is the unknown face a new person that we've never seen before? False'''Log file is /root/.vnc/orangepi:1.log</p>|}</li><li><p>'''facerec_from_webcam_faster.py'''用来识别USB摄像头中的人脸,测试步骤如下所示:使用MobaXterm软件连接开发板linux系统桌面的步骤如下所示:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>首先请将USB摄像头插入开发板的USB接口中,然后通过'''v4l2-ctl'''('''注意v4l2中的l是小写字母l,不是数字1''')命令查看下USB摄像头的设备节点的序号首先点击Session,然后选择VNC,再填写开发板的IP地址和端口,最后点击OK确认</pli><p>orangepi@orangepi:~$ '''sudo apt update'''</p><p>orangepi@orangepi[[File:~$ '''sudo apt install zero3-y v4l-utils'''img251.png]]</pol><p>orangepi@orangepi:~$ '''v4l2ol start="2" style="list-ctl style-type: lower-list-devices'''</palpha;"><pli>cedrus (platform:cedrus):</p><p>/dev/video0然后输入前面设置的VNC的密码</p><p>USB2.0 UVC PC Camera[[File: USB2.0 UV (usbzero3-5311000img252.usb-1):</p><p>'''/dev/video1'''</p><p>/dev/video2png]]</p></li><li><p>然后在桌面中打开一个终端,进入'''face_recognition/examples'''目录后,首先修改下'''facerec_from_webcam_faster.py'''中使用的摄像头的设备序号。比如上面通过'''v4l2-ctl > --list-devices'''命令查看到USB摄像头为'''/dev/video1''',那就修改'''cv2.VideoCapture(0)'''中的'''0'''为'''1'''登录成功后的界面显示如下图所示,然后就可以远程操作开发板linux系统的桌面了</p><p>orangepi@orangepi:~$ '''cd face_recognition/examples'''</pli><p>orangepi@orangepi[[File:~/face_recognition/examples$ '''vim facerec_from_webcam_fasterzero3-img253.py'''png]]</pol><p>'''video_capture = cv2.VideoCapture(1)'''</pli></liol><li><pspan id="qt的安装方法">然后执行下面的命令运行'''facerec_from_webcam_faster.py'''</pspan> == QT的安装方法 == <p>orangepi@orangepiol style="list-style-type:~/face_recognition/examples$ '''python3 facerec_from_webcam_faster.py'''</p></lidecimal;"><li><p>等待一段时间会弹出摄像头的显示画面使用下面的脚本可以安装QT5和QT Creator</p><p>[[File{| class="wikitable" style="width:media/image204.png800px;" |314x245px]]</p></li>-<li><p>此时可以将摄像头对准自己,当摄像头检测到人脸时,会将检测到的人脸使用方框框起来。'''注意,检测人脸时,摄像头显示的画面会比较卡顿,请不要移动过快'''</p></li>| <li><p>还可以打开一张奥巴马的图片,然后使用摄像头对准打开的图片,可以看到不仅能将人脸标注出来,还能正确显示检测到的人脸的名字。orangepi@orangepi:~$ '''注意,检测人脸时,摄像头显示的画面会比较卡顿,请不要移动过快install_qt.sh'''</p><p>[[File:media/image205.png|358x284px]]</p></li></ol>}
</li>
<li><p>'''web_service_example.py'''是一个非常简单的使用Web服务上传图片运行人脸识别的案例,后端服务器会识别这张图片是不是奥巴马,并把识别结果以json键值对输出,测试步骤如下所示:安装完后会自动打印QT的版本号</p>
<ol style="list-style-type: lower-alpha;">
<li><p>在桌面中打开一个终端,然后进入Ubuntu20.04自带的qt版本为'''face_recognition/examples5.12.8'''目录,再执行下面的命令('''如果是使用脚本自动安装的face_recognition,那么就不需要安装flask了''')</p><p>orangepi@orangepi{| class="wikitable" style="width:~$ '''python3 800px;" |-m pip install flask'''</p>| <p>orangepi@orangepi:~$ '''cd face_recognition/examples'''</p><p>root@orangepi:~/face_recognition/examples$ '''python3 web_service_exampleinstall_qt.py'sh''</p><p>* Serving Flask app 'web_service_example' (lazy loading)</p><p>* Environment: production</p><p>WARNING: This is a development server. Do not use it in a production deployment.</p><p>Use a production WSGI server instead.</p><p>* Debug mode: on</p><p>* Running on all addresses (0.0.0.0)</p><p>WARNING: This is a development server. Do not use it in a production deploymentQMake version 3.1</p><p>* Running on httpUsing Qt version '''<span style="color://127.0#FF0000">5.012.1:50018</pspan><p>* Running on http:''' in /usr/192.168.1.79:5001 (Press CTRL+C to quit)<lib/p><p>* Restarting with stataarch64-linux-gnu</p><p>* Debugger is active!</p>|}<p>* Debugger PIN: 500-161-390</p></li><li><p>然后另外打开一个终端,再运行下面的命令就可以返回图片识别的结果(注意,下面的命令执行路径为Ubuntu22.04自带的QT版本为'''face_recognition/examples5.15.3''')</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~/face_recognition/examples$ '''curl -XPOST -F \install_qt.sh'''</p><p>'''"file=@obama2.jpg" http://127.0.0.1:5001'''..</p><p>'''{'''QMake version 3.1</p><p>Using Qt version '''"face_found_in_image"<span style="color: true,'''#FF0000">5.15.3</p><pspan>'''"is_picture_of_obama": true'''in /usr/lib/aarch64-linux-gnu</p><p>'''|}'''</p></li><li><p>我们也可以将Debian11自带的QT版本为'''face_recognition/examples/obama25.jpg'''这张图片拷贝到其他的Linux电脑中,当然也可以自己准备一张名为'''obama215.jpg2'''的图片,然后在Linux电脑中可以使用下面的命令远程通过开发板运行的服务来识别人脸('''注意命令中的IP地址需要替换为开发板的IP地址,file后的文件名需要替换为想要测试的图片的名字''')</p>{| class="wikitable" style="width:800px;" |-| <p>testorangepi@testorangepi:~$ '''curl -XPOST -F "file=@obama2.jpg" http://192.168.1install_qt.79:5001sh'''</p><p>'''{'''......</p><p>'''"face_found_in_image": true,'''QMake version 3.1</p><p>Using Qt version '''"is_picture_of_obama"<span style="color: true'''#FF0000">5.15.2</p><pspan>'''}'''<in /usr/p><lib/li><li><p>使用浏览器测试的方法如下所示:aarch64-linux-gnu</p>|}<ol style="list-style-type: lower-alpha;"/li><li><p>首先打开浏览器,然后在浏览器的地址栏输入Debian12自带的QT版本为'''开发板的IP地址:50015.15.8''',然后就能看到下面的页面</p><p>[[File{| class="wikitable" style="width:media/image206.png800px;" |575x150px]]</p></li>-<li><p>然后将obama2.jpg复制到桌面</p>| <p>orangepi@orangepi:~/face_recognition/examples$ '''cp obama2install_qt.jpg /home/orangepi/Desktop/sh'''</p></li><li><p>然后在浏览器中选择刚才复制的图片......</p><p>[[File:media/image207QMake version 3.png|575x217px]]1</p></li><li><p>然后点击'''UploadUsing Qt version '''上传刚才选择的图片进行人脸识别</pspan style="color:#FF0000">5.15.8<p/span>[[File:media''' in /image208.png|575x145px]]<usr/p><lib/li><li><p>等待一段时间后就会显示检测的结果aarch64-linux-gnu</p><p>[[File:media/image209.png|314x149px]]</p></li></ol>}
</li></ol>
</li>
<li><p>然后在'''face_detectionApplications'''命令测试示例中就可以看到QT Creator的启动图标</p><p>[[File:zero3-img254.png]]</p><p>也可以使用下面的命令打开QT Creator</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''qtcreator'''</p>|}</li><li><p>QT Creator打开后的界面如下所示</p><p>[[File:zero3-img255.png]]</p></li><li><p>QT Creator的版本如下所示</p>
<ol style="list-style-type: lower-alpha;">
<li><p>face_detection命令行工具可以在单张图片或一个图片文件夹中定位人脸位置(输出像素点坐标)。使用QT Creator在'''face_detection > --helpUbuntu20.04'''可以查看下face_detection命令的帮助信息中的默认版本如下所示</p><p>orangepi@orangepi[[File:~$ '''face_detection zero3--help'''img256.png]]</p><p/li>Usage: face_detection [OPTIONS] IMAGE_TO_CHECK</pli><p>Options:QT Creator在'''Ubuntu22.04'''中的默认版本如下所示</p><p>[[File:zero3--cpus INTEGER number of CPU cores to use in parallelimg257. -1 means "use all inpng]]</p><p>system"</pli><pli>--model TEXT Which face detection model to use. Options are "hog" or</p><p>"cnn".QT Creator在'''Debian11'''中的默认版本如下所示</p><p>[[File:zero3--help Show this message and exitimg258.png]]</p></li><li><p>检测单张图片的示例如下所示:</p><p>orangepi@orangepi:~$ QT Creator在'''cd face_recognition/examplesDebian12'''中的默认版本如下所示</p><p>orangepi@orangepi[[File:~/face_recognition/examples$ '''face_detection obama2zero3-img259.jpg'''png]]</p><p/li>obama2.jpg,302,474,611,164</pol></li><li><p>使用多核并行检测多张图片的示例如下所示:然后设置下QT</p>
<ol style="list-style-type: lower-alpha;">
<li><p>首先进入首先打开'''face_recognition/examplesHelp'''文件夹</p></li><li><p>然后新建一个test文件夹</p></li><li><p>然后将jpg图片都拷贝到test文件夹中</p></li><li><p>然后使用所有的cpu并行运行'''face_detection'''来检查test文件夹中的图片,其中'''--cpus > -1'''表示使用所有的cpu</p><p>orangepi@orangepi:~$ '''cd face_recognition/examplesAbout Plugins...'''</p><p>orangepi@orangepi[[File:~/face_recognition/examples$ '''mkdir test'''zero3-img260.png]]</p><p>orangepi@orangepi:~/face_recognition/examples$ '''cp *.jpg test'''</pli><li><p>orangepi@orangepi:~/face_recognition/examples$ 然后去掉'''face_detection --cpus -1 testClangCodeModel'''的那个勾</p><p>test/obama[[File:zero3-240pimg261.jpg,29,261,101,189png]]</p><p>test/obama_small.jpg,65,215,169,112</pli><pli>test/obama2.jpg,302,474,611,164</p>'''<pspan style="color:#FF0000">test/two_people.jpg,62,394,211,244设置完后需要重启下QT Creator</pspan><p>test/two_people.jpg,95,941,244,792</p>'''<p>test/obama.jpg,136,624,394,366</p><p>test/obama-480p.jpg,65,507,189,383</p><p>test/obama-720p.jpg,94,751,273,572</p><p>test/obama-1080p.jpg,136,1140,394,882</p><p>test/biden.jpg,233,749,542,439</p></li></ol></li></ol></li><li><p>'''face_recognition'''命令测试示例然后确保QT Creator使用的GCC编译器,如果默认为Clang,请修改为GCC</p><ol {| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig><p>'''face_recognition'''命令行工具可以在单张图片或者一个图片文件夹中认出是谁的脸。使用'''face_recognition > --helpDebian12请跳过这步。'''可以查看下face_recognition命令的帮助信息</p><p>orangepi@orangepi:~$ '''face_recognition --help'''</pbig>|}<p>Usage[[File: face_recognition [OPTIONSzero3-img262.png]] KNOWN_PEOPLE_FOLDER IMAGE_TO_CHECK</p><p>Options[[File:</p><p>zero3--cpus INTEGER number of CPU cores to use in parallel (can speed</p><p>up processing lots of images)img263. -1 means "use all in</p><p>system"png]]</p><p>--tolerance FLOAT Tolerance for face comparisons. Default is 0.6.</pli><p>Lower this if you get multiple matches for the same</pol><p>person.</pli><p>--show-distance BOOLEAN Output face distance. Useful for tweaking tolerance</pli><p>setting.然后就可以打开一个示例代码</p><p>[[File:zero3--help Show this message and exitimg264.png]]</p></li><li><p>首先新建一个已知名字的人脸图片文件夹'''known_people''',然后复制两张图片到'''known_people'''中,然后将'''obama2.jpg'''复制为'''unkown.jpg''',也就是我们要识别的图片点击示例代码后会自动打开对应的说明文档,可以仔细看下其中的使用说明</p><p>orangepi@orangepi[[File:~$ '''cd face_recognition/examples'''zero3-img265.png]]</p><p/li>orangepi@orangepi:~/face_recognition/examples$ '''mkdir known_people'''</pli><p>orangepi@orangepi:~/face_recognition/examples$ 然后点击下'''cp biden.jpg obama.jpg known_peopleConfigure Project'''</p><p>orangepi@orangepi[[File:~/face_recognition/examples$ '''cp obama2zero3-img266.jpg unkown.jpg'''png]]</p></li><li><p>然后就可以使用下面的命令识别下'''unkown.jpg'''图片中人物的名字,可以看到识别到unkown.jpg图片为obama然后点击左下角的绿色三角形编译运行下示例代码</p><p>orangepi@orangepi[[File:~/face_recognition/examples$ '''face_recognition known_people \'''</p><p>'''unkownzero3-img267.jpg'''</p><p>unkown.jpg,obamapng]]</p></li><li><p>如果我们识别一张不相关的图片,就会显示unknown_person等待一段时间后,会弹出下图所示的界面,此时就说明QT能正常编译运行</p><p>root@orangepi[[File:~/face_recognition/examples$ '''face_recognition known_people \'''</p><p>'''alexzero3-lacamoireimg268.png'''</p><p>alex-lacamoire.png,unknown_person]]</p></li><li><p>我们还可以新建一个test文件夹,然后在其中放入多张图片,然后就可以使用所有的CPU来并行识别所有的图片参考资料</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi[https:~/face_recognition/examples$ ''wiki.qt.io/Install_Qt_5_on_Ubuntu 'mkdir test'''</p><p>orangepi@orangepihttps:~/face_recognition/examples$ '''cp *wiki.jpg *qt.png testio/Install_Qt_5_on_Ubuntu''']</p><p>orangepi@orangepi[https:~/face_recognition/examples$ '''face_recognition --cpus -1 \'''<download.qt.io/archive/p><p>qtcreator '''known_people test'''<https:/p><p>test/obama-240pdownload.jpg,obama</p><p>test/alex-lacamoireqt.png,unknown_person<io/p><p>testarchive/obama_small.jpg,obamaqtcreator''']</p><p>test/unkown.jpg,obama<[https:/p><p>test/obama2download.jpg,obama</p><p>test/lin-manuel-mirandaqt.png,unknown_person</p><p>testio/two_people.jpg,biden<archive/p><p>test/two_people.jpg,obama</p><p>testqt '''https:/obama-720p.jpg,obama</p><p>test/obamadownload.jpg,obama</p><p>test/obama-480pqt.jpg,obama<io/p><p>testarchive/biden.jpg,bidenqt''']</p><p>test/obama-1080p.jpg,obama</p></li></ol>|}
</li></ol>
<span id="ros安装方法"></span> = 设置中文环境以及安装中文输入法 =ROS安装方法 == <span id="ubuntu20.04安装ros-1-noetic的方法"></span>=== Ubuntu20.04安装ROS 1 Noetic的方法 === # ROS 1当前活跃的版本如下所示,推荐版本为'''Noetic Ninjemys''' ::[[File:zero3-img269.png]] ::[[File:zero3-img270.png]]
::{| class="wikitable" style="width:800px;" |-| [http://docs.ros.org/ '''注意,安装中文输入法前请确保开发板使用的Linux系统为桌面版系统。http://docs.ros.org''']
<ol start="2" style="list-style-type: decimal;"><li><p>首先设置默认ROS 1 '''localeNoetic Ninjemys'''为中文官方安装文档链接如下所示:</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>输入下面的命令可以开始配置'''locale'''</p>|-| <p>orangepi@orangepi[http:~$ //wiki.ros.org/noetic/Installation/Ubuntu '''sudo dpkg-reconfigure localeshttp://wiki.ros.org/noetic/Installation/Ubuntu''']</p>|}</li><li><p>然后在弹出的界面中选择ROS '''zh_CN.UTF-8 > UTF-8Noetic Ninjemys'''(通过键盘上的上下方向按键来上下移动,通过空格键来选择,最后通过Tab键可以将光标移动到官方安装文档中Ubuntu推荐使用Ubuntu20.04,所以请确保开发板使用的系统为'''<OK><span style="color:#FF0000">Ubuntu20.04桌面版系统</span>''',然后回车即可)</p>{| class="wikitable" style="width:800px;" |-| <p>[[Filehttp:media/image210/wiki.png|575x296px]]<ros.org/p><noetic/li><li><p>然后设置默认Installation '''locale'''为'''zh_CNhttp://wiki.ros.UTF-8org/noetic/Installation''']</p>|}<p>[[File:media/image211zero3-img271.png|575x160px]]</p></li><li><p>退出界面后就会开始'''locale'''的设置,命令行显示的输出如下所示然后使用下面的脚本安装ros1</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo dpkg-reconfigure localesinstall_ros.sh ros1'''</p><p>Generating locales (this might take a while)...</p><p>en_US.UTF-8... done</p><p>zh_CN.UTF-8... done</p><p>Generation complete.</p></li></ol>|}
</li>
<li><p>然后打开'''Input Method'''</p><p>[[File:media/image212.png|575x361px]]</p></li><li><p>然后选择'''OK'''</p><p>[[File:media/image213.png|295x212px]]</p></li><li><p>然后选择'''Yes'''</p><p>[[File:media/image214.png|303x192px]]</p></li><li><p>然后选择'''fcitx'''</p><p>[[File:media/image215.png|307x220px]]</p></li><li><p>然后选择'''OK'''</p><p>[[File:media/image216.png|305x216px]]</p></li><li><p>'''然后重启Linux系统才能使配置生效'''</p></li><li><p>然后打开'''Fcitx configuration'''</p><p>[[File:media/image217.png|575x376px]]</p></li><li><p>然后点击下图所示位置的'''+'''号</p><p>[[File:media/image218.png|280x187px]]</p></li><li><p>然后搜索'''Google Pinyin'''再点击'''OK'''</p><p>[[File:media/image219.png|291x196px]]</p></li><li><p>然后将'''Google Pinyin'''放到最前面</p><p>[[File:media/image220.png|299x202px]]</p><p>[[File:media/image221.png|300x202px]]</p></li><li><p>然后打开'''Geany'''这个编辑器测试下中文输入法</p><p>[[File:media/image222.png|349x212px]]</p></li><li><p>中文输入法测试如下所示</p><p>[[File:media/image223.png|575x325px]]</p></li><li><p>通过'''Ctrl+Space'''快捷键可以切换中英文输入法</p></li><li><p>如果需要整个系统都显示为中文,可以将'''/etc/default/locale'''中的变量都设置为'''zh_CN.UTF-8'''</p><p>orangepi@orangepi:~$ '''sudo vim /etc/default/locale'''</p><p># File generated by update-locale</p><p>LC_MESSAGES='''zh_CN.UTF-8'''</p><p>LANG='''zh_CN.UTF-8'''</p><p>LANGUAGE='''zh_CN.UTF-8'''使用ROS工具前,首先需要初始化下rosdep,然后编译源码时就能快速的安装一些系统依赖和一些ROS中的核心组件</p></li><li><p>然后'''重启系统'''就能看到系统显示为中文了</p><p>[[File:media/image224.png|576x356px]]</p></li></ol>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''<span idstyle="ubuntu-20.04系统的安装方法color:#FF0000">注意,运行下面的命令需要确保开发板能正常访问github,否则会由于网络问题而报错。</span>=== Ubuntu 20.04系统的安装方法 ==='''
'''注意,这一步不是很好拖动的,请耐心多试几次。install_ros.sh脚本会尝试修改/etc/hosts并自动运行下面的命令。但是这种方法无法保证每次都能正常访问github,如果install_ros.sh安装完ros1后有提示下面的错误,请自己想其它办法让开发板的linux系统能正常访问github,然后再手动运行下面的命令。'''
'''注意,这一步不是很好拖动的,请耐心多试几次。<span style="color:#FF0000">ERROR: error loading sources list:</span>'''
updated cache in /home/orangepi/.ros/rosdep/sources.cache|}</ol><ol start="6" style="list-style-type: decimal;"><li><p>然后在'''桌面'''中打开一个命令行终端窗口,再使用'''test_ros.sh'''脚本可以启动一个小海龟的例程来测试下ROS是否能正常使用</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''test_ros.sh'''</p>|}</li><li><p>运行完'''test_ros.sh'''脚本后,会弹出下图所示的一个小海龟</p><p>[[File:media/image270zero3-img272.png|576x210px]]</p></li><li><p>然后请保持刚才打开终端窗口在最上面</p></li>
[http[File:zero3-img273.png]]</ol><ol start="9" style="list-style-type: decimal;"><li><p>此时按下键盘上的方向按键就可以控制小海龟上下左右移动了</docsp><p>[[File:zero3-img274.ros.orgpng]]</ '''http:p></li></docs.ros.org''']ol>
<ol style="list-style-type: decimal;"><li><p>ROS 2当前活跃的版本如下所示,推荐版本为'''注意,运行下面的命令需要确保开发板能正常访问github,否则会由于网络问题而报错。Galactic Geochelone'''</p><p>[[File:zero3-img275.png]]</p><p>[[File:zero3-img276.png]]</p>{| class="wikitable" style="width:800px;" |-| <p>[http://docs.ros.org/ '''http://docs.ros.org''']</p><p>'''http://docs.ros.org/en/galactic/Releases.html'''</p>|}</li><li><p>ROS 2 '''Galactic Geochelone'''官方安装文档链接如下所示:</p>{| class="wikitable" style="width:800px;" |-| <p>'''docs.ros.org/en/galactic/Installation.html'''</p><p>'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''</p>|}</li><li><p>ROS 2 '''Galactic Geochelone'''官方安装文档中Ubuntu Linux推荐使用Ubuntu20.04,所以请确保开发板使用的系统为'''<span style="color:#FF0000">Ubuntu20.04桌面版系统</span>'''。安装ROS 2有几种方法,下面演示下通过'''Debian packages'''的方式来安装ROS 2 '''Galactic Geochelone'''</p></li><li><p>使用'''install_ros.sh'''脚本可以安装ros2</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p>|}</li><li><p>'''install_ros.sh'''脚本安装完ros2后会自动运行下'''ros2 -h'''命令,如果能看到下面的打印,说明ros2安装完成</p>{| class="wikitable" style="width:800px;" |-| <p>usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...</p>
<ol style="list-style-type: decimal;"><li><p>使用'''install_ros.sh'''脚本可以安装ros2</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''rosdep updateinstall_ros.sh ros2'''</p>|}</li><li><p>'''install_ros.sh'''脚本安装完ros2后会自动运行下'''ros2 -h'''命令,如果能看到下面的打印,说明ros2安装完成</p>{| class="wikitable" style="width:800px;" |-| <p>usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...</p>
<ol style="list-style-type: decimal;">
<li><p>使用'''install_ros.sh'''脚本可以安装ros2Debian Bookworm默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p><p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p></li><li><p>'''install_ros.sh'''脚本安装完ros2后会自动运行下'''ros2 ol style="list-style-h'''命令,如果能看到下面的打印,说明ros2安装完成</p><p>usagetype: ros2 [lower-h] Call `ros2 <command>alpha; -h` for more detailed usage. ...</p"><pli>ros2 is an extensible command-line tool for ROS 2.</p><p>optional arguments:gcc的版本如下所示</p><p>-h, --help show this help message and exit</p><p>Commands{| class="wikitable" style="width:</p>800px;" <p>action Various action related sub-commands</p><p>bag Various rosbag related sub|-commands</p><p>component Various component related sub-commands</p><p>daemon Various daemon related sub-commands</p><p>doctor Check ROS setup and other potential issues</p><p>interface Show information about ROS interfaces</p><p>launch Run a launch file</p><p>lifecycle Various lifecycle related sub-commands</p><p>multicast Various multicast related sub-commands</p><p>node Various node related sub-commands</p><p>param Various param related sub-commands</p><p>pkg Various package related sub-commands</p><p>run Run a package specific executable</p><p>security Various security related sub-commands</p><p>service Various service related sub-commands</p><p>topic Various topic related sub-commands</p><p>wtf Use `wtf` as alias to `doctor`</p><p>Call `ros2 <command> -h` for more detailed usage.</p></li><li><p>然后可以使用 '''test_ros.sh'''脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行</p>| <p>orangepi@orangepi:~$ '''test_ros.shgcc --version'''</p><p>[INFO] [1671174101gcc (Debian 12.200091527] [talker]: Publishing: 'Hello World: 1'</p><p>[INFO] [16711741012.235661048] [listener]: I heard: [Hello World: 1]</p><p>[INFO] [16711741020-14) 12.199572327] [talker]: Publishing: 'Hello World: 2'.0</p><p>[INFO] [1671174102Copyright (C) 2022 Free Software Foundation, Inc.204196299] [listener]: I heard: [Hello World: 2]</p><p>[INFO] [1671174103This is free software; see the source for copying conditions.199580322] [talker]: Publishing: 'Hello World: 3'There is NO</p><p>[INFO] [1671174103warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.204019965] [listener]: I heard: [Hello World: 3]</p>|}</li><li><p>运行下面的命令可以打开rviz2</p><p>orangepi@orangepi:~$ 编写C语言的'''source /opt/ros/humble/setuphello_world.bashc'''程序</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p><p>[[File:media/image278.png|575x323px]]</p></li><li><p>参考文档</p><p>'''http://docs.ros.org/en/humble/indexvim hello_world.htmlc'''</p><p>[http://docs#include <stdio.ros.org/en/galactic/Tutorials.html '''http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html''']h></p></li></ol>
<p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p>
<p>orangepi@orangepi:~$ '''./hello_world'''</p>
<p>Hello World!</p>|}</li></ol>
</li>
<li><p>Debian Bullseye默认安装有Python3Bookworm默认安装有Python3</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Python具体版本如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''python3'''</p>
<p>'''Python 3.911.2''' (defaultmain, Feb 28 2021Mar 13 2023, 1712:0318:4429)</p><p>[GCC 1012.2.1 202101100] on linux</p>
<p>Type "help", "copyright", "credits" or "license" for more information.</p>
<p>>>></p>
|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''使用Ctrl+D快捷键可退出python的交互模式。'''</p></big>|}</li>
<li><p>编写Python语言的'''hello_world.py'''程序</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''vim hello_world.py'''</p>
<p>print('Hello World!')</p>|}</li>
<li><p>运行'''hello_world.py'''的结果如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p>
<p>Hello World!</p>|}</li></ol>
</li>
<li><p>Debian Bullseye默认没有安装Java的编译工具和运行环境Bookworm默认没有安装Java的编译工具和运行环境</p>
<ol style="list-style-type: lower-alpha;">
<li><p>可以使用下面的命令安装openjdk,Debian > Bullseye中最新版本为openjdkBookworm中最新版本为openjdk-17</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p>|}</li>
<li><p>安装完后可以查看下Java的版本</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''java --version'''</p>|}</li>
<li><p>编写Java版本的'''hello_world.java'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''vim hello_world.java'''</p>
<p>public class hello_world</p>
<p>{</p>
:<p>public static void main(String[] args)</p>:<p>{</p>::<p>System.out.println("Hello World!");</p>:<p>}</p>
<p>}</p>
<li><p>然后编译运行'''hello_world.java'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''javac hello_world.java'''</p>
<p>orangepi@orangepi:~$ '''java hello_world'''</p>
<p>Hello World!</p></li></ol>|}
</li></ol>
</li></ol>
<span id="ubuntu-focal系统"></span>
<ol style="list-style-type: decimal;">
<li><p>Debian Bookworm默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序Ubuntu Focal默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p>
<ol style="list-style-type: lower-alpha;">
<li><p>gcc的版本如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''gcc --version'''</p>
<p>gcc (Debian 12Ubuntu 9.24.0-141ubuntu1~20.04.1) 129.24.0</p><p>Copyright (C) 2022 2019 Free Software Foundation, Inc.</p>
<p>This is free software; see the source for copying conditions. There is NO</p>
<p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>|}</li>
<li><p>编写C语言的'''hello_world.c'''程序</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''vim hello_world.c'''</p>
<p>#include <stdio.h></p>
<p>int main(void)</p>
<p>{</p>
:<p>printf("Hello World!\n");</p> :<p>return 0;</p><p>}</p>|}</li>
<li><p>然后编译运行'''hello_world.c'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p>
<p>orangepi@orangepi:~$ '''./hello_world'''</p>
<p>Hello World!</p>|}</li></ol>
</li>
<li><p>Debian Bookworm默认安装有Python3Ubuntu Focal默认安装有Python3</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Python具体版本如下所示Python3具体版本如下所示</p>{| class="wikitable" style="width:800px;" |-|
<p>orangepi@orangepi:~$ '''python3'''</p>
<p>Python 3.118.2 10 (maindefault, Mar 13 2023Nov 14 2022, 12:1859:2947) </p><p>[GCC 129.24.0] on linux</p>
<p>Type "help", "copyright", "credits" or "license" for more information.</p>
<p>>>></p>
|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''使用Ctrl+D快捷键可退出python的交互模式。'''</p></big>|}</li>
<li><p>编写Python语言的'''hello_world.py'''程序</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''vim hello_world.py'''</p>
<p>print('Hello World!')</p>|}</li>
<li><p>运行'''hello_world.py'''的结果如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p>
<p>Hello World!</p>|}</li></ol>
</li>
<li><p>Debian Bookworm默认没有安装Java的编译工具和运行环境Ubuntu Focal默认没有安装Java的编译工具和运行环境</p>
<ol style="list-style-type: lower-alpha;">
<li><p>可以使用下面的命令安装openjdk,Debian > Bookworm中最新版本为openjdk可以使用下面的命令安装openjdk-17</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p>|}</li>
<li><p>安装完后可以查看下Java的版本</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''java --version'''</p><p>openjdk 17.0.2 2022-01-18</p><p>OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)</p><p>OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)</p>|}</li>
<li><p>编写Java版本的'''hello_world.java'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''vim hello_world.java'''</p>
<p>public class hello_world</p>
<p>{</p>
:<p>public static void main(String[] args)</p>:<p>{</p>::<p>System.out.println("Hello World!");</p>:<p>}</p>
<p>}</p>
<li><p>然后编译运行'''hello_world.java'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''javac hello_world.java'''</p>
<p>orangepi@orangepi:~$ '''java hello_world'''</p>
<p>Hello World!</p></li></ol>|}
</li></ol>
</li></ol>
<span id="ubuntu-jammy系统"></span>
<ol style="list-style-type: decimal;">
<li><p>Ubuntu Focal默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p>
<ol style="list-style-type: lower-alpha;">
<li><p>gcc的版本如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''gcc --version'''</p>
<p>gcc (Ubuntu 911.43.0-1ubuntu1~2022.04.1) 9'''11.43.0'''</p><p>Copyright (C) 2019 2021 Free Software Foundation, Inc.</p>
<p>This is free software; see the source for copying conditions. There is NO</p>
<p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>|}</li>
<li><p>编写C语言的'''hello_world.c'''程序</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''vim hello_world.c'''</p>
<p>#include <stdio.h></p>
<p>int main(void)</p>
<p>{</p>
:<p>printf("Hello World!\n");</p> :<p>return 0;</p><p>}</p>|}</li>
<li><p>然后编译运行'''hello_world.c'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p>
<p>orangepi@orangepi:~$ '''./hello_world'''</p>
<p>Hello World!</p>|}</li></ol>
</li>
<li><p>Ubuntu Focal默认安装有Python3Jammy默认安装有Python3</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Python3具体版本如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''python3'''</p>
<p>Python 3.810.10 6 (defaultmain, Nov 14 2022May 29 2023, 1211:5910:4738)</p><p>[GCC 911.43.0] on linux</p>
<p>Type "help", "copyright", "credits" or "license" for more information.</p>
<p>>>></p>
|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''使用Ctrl+D快捷键可退出python的交互模式。'''</p></big>|}</li>
<li><p>编写Python语言的'''hello_world.py'''程序</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''vim hello_world.py'''</p>
<p>print('Hello World!')</p>|}</li>
<li><p>运行'''hello_world.py'''的结果如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p>
<p>Hello World!</p>|}</li></ol>
</li>
<li><p>Ubuntu Focal默认没有安装Java的编译工具和运行环境Jammy默认没有安装Java的编译工具和运行环境</p>
<ol style="list-style-type: lower-alpha;">
<li><p>可以使用下面的命令安装openjdk-1718</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-1718-jdk'''</p>|}</li>
<li><p>安装完后可以查看下Java的版本</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''java --version'''</p>
<p>openjdk 1718.0.2 -ea 2022-0107-1819</p><p>OpenJDK Runtime Environment (build 1718.0.2-ea+89-Ubuntu-120222.04)</p><p>OpenJDK 64-Bit Server VM (build 1718.0.2-ea+89-Ubuntu-120222.04, mixed mode, sharing)</p>|}</li>
<li><p>编写Java版本的'''hello_world.java'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''vim hello_world.java'''</p>
<p>public class hello_world</p>
<p>{</p>
:<p>public static void main(String[] args)</p>:<p>{</p>::<p>System.out.println("Hello World!");</p>:<p>}</p>
<p>}</p>
<li><p>然后编译运行'''hello_world.java'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''javac hello_world.java'''</p>
<p>orangepi@orangepi:~$ '''java hello_world'''</p>
<p>Hello World!</p></li></ol>|}
</li></ol>
</li></ol>
<span id="上传文件到开发板linux系统中的方法"></span>
<span id="在ubuntu-pc中上传文件到开发板linux系统中的方法"></span>=== 在Ubuntu PC中上传文件到开发板Linux系统中的方法 === ==== 使用scp命令上传文件的方法 ==== <ol style="list-style-type: decimal;"><li><p>Ubuntu Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序使用scp命令可以在Ubuntu PC中上传文件到开发板的Linux系统中,具体命令如下所示</p><ol style="list-style-type: lower-alpha;"><li><p>gcc的版本如下所示</p><p>orangepi@orangepi:~$ '''gcc --versionfile_path:'''需要替换为要上传文件的路径</p></li><li><p>gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) '''11.3.0orangepi:'''</p><p>Copyright (C) 2021 Free Software Foundation, Inc.</p><p>This is free software; see the source for copying conditions. There is NO</p><p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.为开发板linux系统的用户名,也可以替换成其它的,比如root</p></li><li><p>编写C语言的'''hello_world192.c'''程序</p><p>orangepi@orangepi168.xx.xx:~$ '''vim hello_world.c'''</p><p>#include <stdio.h></p><p>int main(void)</p><p>{</p><p>printf("Hello World!\n");</p><p>return 0;</p><p>}为开发板的IP地址,请根据实际情况进行修改</p></li><li><p>然后编译运行'''hello_world.c/home/orangepi:'''开发板linux系统中的路径,也可以修改为其它的路径</p><p>orangepi@orangepi{| class="wikitable" style="width:~$ '''gcc 800px;" |-o hello_world hello_world.c'''</p>| <p>orangepitest@orangepitest:~$ '''scp file_path orangepi@192.168.xx.xx:/home/orangepi/hello_world'''</p><p>Hello World!</p>|}</li></ol>
</li>
<li><p>Ubuntu Jammy默认安装有Python3如果要上传文件夹,需要加上-r参数</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>Python3具体版本如下所示</p>|-| <p>orangepitest@orangepitest:~$ '''python3'''scp </p><p>Python 3.10.6 (main, May 29 2023, 11span style="color:10:38) [GCC 11.3.0] on linux</p#FF0000"><p>Type "help", "copyright", "credits" or "license" for more information.-r</p><p>>>></p><p>'''使用Ctrl+D快捷键可退出python的交互模式。'''</p></li><li><p>编写Python语言的'''hello_world.py'''程序</p><pspan>dir_path orangepi@orangepi192.168.xx.xx:~$ '''vim hello_world.py'''</p><p>print('Hello World!')<home/p><orangepi/li><li><p>运行'''hello_world.py'''的结果如下所示</p><p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p><p>Hello World!</p></li></ol>|}
</li>
<li><p>Ubuntu Jammy默认没有安装Java的编译工具和运行环境scp还有更多的用法,请使用下面的命令查看man手册</p><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>可以使用下面的命令安装openjdk-18</p><p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-18-jdk'''</p></li><li><p>安装完后可以查看下Java的版本</p><p>orangepi@orangepi:~$ '''java --version'''</p><p>openjdk 18.0.2-ea 2022-07-19</p><p>OpenJDK Runtime Environment (build 18.0.2-ea+9-Ubuntu-222.04)</p><p>OpenJDK 64|-Bit Server VM (build 18.0.2-ea+9-Ubuntu-222.04, mixed mode, sharing)</p></li><li><p>编写Java版本的'''hello_world.java'''</p>| <p>orangepitest@orangepitest:~$ '''vim hello_world.javaman scp'''</p><p>public class hello_world</p><p>{</p><p>public static void main(String[] args)</p><p>{</p><p>System.out.println("Hello World!");</p><p>|}</p><p>}</p></li><li><p>然后编译运行'''hello_world.java'''</p><p>orangepi@orangepi:~$ '''javac hello_world.java'''</p><p>orangepi@orangepi:~$ '''java hello_world'''</p><p>Hello World!</p></li></ol>
</li></ol>
==== 使用filezilla上传文件的方法 ====
<ol style="list-style-type: decimal;">
<li><p>首先在Ubuntu PC中安装filezilla</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''sudo apt install -y filezilla'''</p>|}</li>
<li><p>然后使用下面的命令打开filezilla</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''filezilla'''</p>|}</li>
<li><p>filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的</p>
<div class="figure">
[[File:media/image279zero3-img279.png|576x453px|截图 2022-12-03 19-04-40]]
</div></li>
<li><p>连接开发板的方法如下图所示</p></li></ol>
<div class="figure">
[[File:media/image280zero3-img280.png|577x128px|IMG_256]]
</div>
</li></ol>
<ol start="5" style="list-style-type: decimal;">
<li><p>然后选择'''保存密码''',再点击'''确定'''</p>
<p>[[File:media/image281zero3-img281.png|249x181px]]</p></li><li><p>然后选择'''总是信任该主机''',再点击'''确定'''</p></li></ol>
<div class="figure">
[[File:media/image282zero3-img282.png|278x150px|IMG_256]]
</div></li></ol>
<ol start="7" style="list-style-type: decimal;">
<li>连接成功后在filezilla软件的右边就可以看到开发板linux文件系统的目录结构了</li></ol>
<div class="figure">
[[File:media/image283zero3-img283.png|533x330px|IMG_256]]
</div></ol>
<ol start="8" style="list-style-type: decimal;">
<li>然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Ubuntu PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了。</li></ol>
<div class="figure">
[[File:media/image284zero3-img284.png|529x414px|IMG_256]]
</div></ol>
<ol start="9" style="list-style-type: decimal;">
<li><p>上传完成后就可以去开发板linux系统中的对应路径中查看上传的文件了</p></li>
<span id="在windows-pc中上传文件到开发板linux系统中的方法"></span>
=== 在Windows PC中上传文件到开发板Linux系统中的方法 ===
# 首先下载filezilla软件Windows版本的安装文件,下载链接如下所示
::{| class="wikitable" style="width:800px;" |-| [https://filezilla-project.org/download.php?type=client '''https://filezilla-project.org/download.php?type=client''']|}::[[File:media/image285zero3-img285.png|472x171px|IMG_256]]
::[[File:media/image286zero3-img286.png|384x276px]]
<ol start="2" style="list-style-type: decimal;">
<li><p>下载的安装包如下所示,然后双击直接安装即可</p>
{| class="wikitable" style="width:800px;" |-| <p>'''FileZilla_Server_1.5.1_win64-setup.exe'''</p></li></ol>|}
安装过程中,下面的安装界面请选择'''Decline''',然后再选择'''Next>'''
<div class="figure">
[[File:media/image287zero3-img287.png|355x279px|IMG_256]]
</div></li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的</li></ol>
<div class="figure">
[[File:media/image288zero3-img288.png|451x357px|IMG_256]]
</div></li></ol>
<ol start="4" style="list-style-type: decimal;">
<li>连接开发板的方法如下图所示:</li></ol>
<div class="figure">
[[File:media/image289zero3-img289.png|522x108px|IMG_256]]
</div></li></ol>
<ol start="5" style="list-style-type: decimal;">
<li>然后选择'''保存密码''',再点击'''确定'''</li></ol>
<div class="figure">
[[File:media/image290zero3-img290.png|207x146px|IMG_256]]
</div></li></ol>
<ol start="6" style="list-style-type: decimal;">
<li>然后选择'''总是信任该主机''',再点击'''确定'''</li></ol>
<div class="figure">
[[File:media/image291zero3-img291.png|221x109px|IMG_256]]
</div></li></ol>
<ol start="7" style="list-style-type: decimal;">
<li>连接成功后在filezilla软件的右边就可以看到开发板linux文件系统的目录结构了</li></ol>
<div class="figure">
[[File:media/image292zero3-img292.png|449x332px|IMG_256]]
</div></li></ol>
<ol start="8" style="list-style-type: decimal;">
<li>然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Windows PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了</li></ol>
<div class="figure">
[[File:media/image293zero3-img293.png|461x340px|IMG_256]]
</div></li></ol>
<ol start="9" style="list-style-type: decimal;">
<li><p>上传完成后就可以去开发板linux系统中的对应路径中查看上传的文件了</p></li>
<li><p>开关机logo默认只在桌面版的系统中才会显示</p></li>
<li><p>在'''/boot/orangepiEnv.txt'''中设置'''bootlogo'''变量为'''false'''可以关闭开关机logo</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p>
<p>verbosity=1</p>
<p>'''<span style="color:#FF0000">bootlogo=false</span>'''</p>|}</li>
<li><p>在'''/boot/orangepiEnv.txt'''中设置'''bootlogo'''变量为'''true'''可以开启开关机logo</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p>
<p>verbosity=1</p>
<p>'''<span style="color:#FF0000">bootlogo=true</span>'''</p>|}</li>
<li><p>开机logo图片在linux系统中的位置为</p>
{| class="wikitable" style="width:800px;" |-| <p>'''/usr/share/plymouth/themes/orangepi/watermark.png'''</p>|}</li>
<li><p>替换开机logo图片后需要运行下命令才能生效</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo update-initramfs -u'''</p>|}</li></ol>
== 关机和重启开发板的方法 ==
<ol style="list-style-type: decimal;">
<li><p>在Linux系统运行的过程中,如果直接拔掉电源断电,可能会导致文件系统丢失某些数据,建议断电前先使用'''poweroff'''命令关闭开发板的Linux系统,然后再拔掉电源</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''sudo poweroff'''</p>
|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''注意,关闭开发板后需要重新拔插电源才能开机。'''</p></big>|}</li>
<li><p>使用'''reboot'''命令即可重启开发板中的Linux系统</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo''' '''reboot'''</p>|}</li></ol>
<span id="linux-sdkorangepi-build使用说明"></span>
= '''Linux SDK——orangepi-build使用说明 ''' =
== 编译系统需求 ==
Linux SDK,即'''orangepi-build''',只支持在安装有'''<span style="color:#FF0000">Ubuntu 22.04</span>'''的X64电脑上运行,所以下载orangepi-build前,请首先确保自己电脑已安装的Ubuntu版本是Ubuntu 22.04。查看电脑已安装的Ubuntu版本的命令如下所示,如果Release字段显示的不是'''<span style="color:#FF0000">22.04</span>''',说明当前使用的Ubuntu版本不符合要求,请更换系统后再进行下面的操作。
{| class="wikitable" style="width:800px;"
|-
|
test@test:~$ '''lsb_release -a'''
Description: Ubuntu 22.04 LTS
Release: '''<span style="color:#FF0000">22.04</span>'''
Codename: '''jammy'''
|}
如果电脑安装的是Windows系统,没有安装有Ubuntu 22.04的电脑,可以考虑使用'''VirtualBox'''或者'''VMware'''来在Windows系统中安装一个Ubuntu 22.04虚拟机。但是请注意,不要在WSL虚拟机上编译orangepi-build,因为orangepi-build没有在WSL虚拟机中测试过,所以无法确保能正常在WSL中使用orangepi-build,另外请不要在'''开发板'''的Linux系统中使用orangepi-build。Ubuntu 22.04 '''<span style="color:#FF0000">amd64</span>'''版本的安装镜像下载地址为:
{| class="wikitable" style="width:800px;"
|-
|
[https://repo.huaweicloud.com/ubuntu-releases/21.04/ubuntu-21.04-desktop-amd64.iso '''https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso''']
|}
在电脑中或者虚拟机中安装完Ubuntu 22.04后,请先设置Ubuntu 22.04的软件源为清华源(或者其它你觉得速度快的国内源),不然后面安装软件的时候很容易由于网络原因而出错。替换清华源的步骤如下所示:
<ol style="list-style-type: lower-alpha;">
<li>替换清华源的方法参考这个网页的说明即可。</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
[https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ '''https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/''']
|}</li></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>注意Ubuntu版本需要切换到22.04。</p>
<p>[[File:media/image294zero3-img294.png|576x241px]]</p></li>
<li><p>需要替换的'''/etc/apt/sources.list'''文件的内容为:</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~$ '''sudo mv /etc/apt/sources.list cat /etc/apt/sources.list.bak'''</p>
<p>test@test:~$ '''sudo vim /etc/apt/sources.list'''</p>
<p>deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse</p>
<p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse</p>
<p># 预发布软件源,不建议启用</p>
<p># deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>
<p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>|}</li>
<li><p>替换完后需要更新下包信息,并确保没有报错。</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''sudo apt-get update'''</p>|}</li><li><p>'''<span style="color:#FF0000">另外,由于内核和U-boot等源码都是存放在GitHub上的,所以编译镜像的时候请确保电脑能正常从GitHub下载代码,这点是非常重要的。</span>'''</p></li></ol>
<span id="获取linux-sdk的源码"></span>
== 获取linux sdk的源码 ==
linux sdk指的是orangepi-build这套代码,orangepi-build是基于armbian build编译系统修改而来的,使用orangepi-build可以编译出多个版本的linux镜像。使用下面的命令可以下载orangepi-build的代码:
{| class="wikitable" style="width:800px;"
|-
|
test@test:~$ '''sudo apt-get update'''
test@test:~$ '''sudo apt-get install -y git'''
test@test:~$ '''git clone https://github.com/orangepi-xunlong/orangepi-build.git <span style="color:#FF0000">-b next</span>'''|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''注意,使用H618 Soc的开发板是需要下载orangepi-build的next分支源码的,上面的git build的<span style="color:#FF0000">next</span>分支源码的,上面的git clone命令需要指定orangepi-build源码的分支为next。'''</big>
[[File:media/image295zero3-img295.png|576x288px]]|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''通过git clone命令下载orangepi-build的代码是不需要输入github账号的用户名和密码的(下载本手册中的其他代码也是一样的),如果如输入git clone命令后Ubuntu PC提示需要输入github账号的用户名和密码,一般都是git clone后面的orangepi-build仓库的地址输入错误了,请仔细检查命令拼写是否有错误,而不是以为我们这里忘了提供github账号的用户名和密码。'''</big>|}
H618系列开发板当前使用的u-boot和linux内核版本如下所示:
{| class="wikitable" style="width:800px;"
|-
| style="text-align: left;"| '''分支'''
|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''这里所说的分支和orangepi-build源代码的分支不是同一个东西,请不要搞混了。此分支主要是用来区分不同内核源码版本的。'''
'''目前全志提供的linux5.4 bsp内核我们定义为current分支。最新的linux6.1 LTS内核定义为next分支。'''</big>|}
orangepi-build下载完后会包含下面的文件和文件夹:
<ol style="list-style-type: lower-alpha;">
<li><p>'''build.sh''': 编译启动脚本</p></li>
<li><p>'''external''': > 包含编译镜像需要用的配置文件、特定的脚本以及部分程序的源码等</p></li>
<li><p>'''LICENSE''': GPL 2许可证文件</p></li>
<li><p>'''README.md''': orangepi-build说明文件</p></li>
<li><p>'''scripts''': 编译linux镜像的通用脚本</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~/orangepi-build$ '''ls'''</p>
<p>'''build.sh external LICENSE README.md scripts'''</p>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''如果是从github下载的orangepi-build的代码,下载完后你可能会发现orangepi-build中并没有包含u-boot和linux内核的源码,也没有编译u-boot和linux内核需要用到交叉编译工具链,这是正常的,因为这些东西都存放在其它单独的github仓库或者某些服务器上了(下文会详述其地址)。orangepi-build在脚本和配置文件中会指定u-boot、linux内核和交叉编译工具链的地址,运行orangepi-build时,当其发现本地没有这些东西,会自动去相应的地方下载的。'''</p></big>|}</li></ol>
=== 下载交叉编译工具链 ===
<div class="figure">
[[File:media/image296zero3-img296.png|575x278px|选区_3961400px]]
</div>
交叉编译工具链在中国境内的镜像网址为清华大学的开源软件镜像站:
{| class="wikitable" style="width:800px;"
|-
|
[https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/ '''https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/''']
|}
'''toolchains'''下载完后会包含多个版本的交叉编译工具链:
{| class="wikitable" style="width:800px;"
|-
|
test@test:~/orangepi-build$ '''ls toolchains/'''
gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi gcc-linaro-aarch64-none-elf-4.8-2013.11_linux gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux
gcc-arm-119.2-20222019.0212-x86_64-arm-none-linux-gnueabihf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi gcc-linaro-aarch64-none-elf-4.8-2013.11_linux
gcc-armlinaro-97.4.21-2019.1202-x86_64-aarch64-nonex86_64_aarch64-linux-gnu gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux
编译H618 Linux内核源码使用的交叉编译工具链为:
<ol style="list-style-type: lower-alpha;">
<li><p>linux5.4</p>
{| class="wikitable" style="width:800px;" |-| <p>'''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu'''</p>|}</li>
<li><p>linux6.1</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>'''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu'''</p>
|}</li></ol><p>编译H618 u-boot源码使用的交叉编译工具链为:</p></li></ol>
<!-- -->
<ol style="list-style-type: lower-alpha;">
<li><p>v2018.05</p>
{| class="wikitable" style="width:800px;" |-| <p>'''gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi'''</p>|}</li>
<li><p>v2021.07</p>
{| class="wikitable" style="width:800px;" |-| <p>'''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu'''</p>|}</li></ol>
=== orangepi-build完整目录结构说明 ===
<ol style="list-style-type: lower-alpha;">
<li><p>linux内核源码存放的git仓库如下,注意切换linux-orangepi仓库的分支为</p>
<ol style="list-style-type: lower-alphanone;"><li><p>a) Linux5.4</p>{| class="wikitable" style="width:800px;" |-| <p>https://github.com/orangepi-xunlong/linux-orangepi/tree/'''orange-pi-5.4-sun50iw9'''</p>|}</li><li><p>b) Linux6.1</p>{| class="wikitable" style="width:800px;" |-| <p>https://github.com/orangepi-xunlong/linux-orangepi/tree/'''orange-pi-6.1-sun50iw9'''</p>|}</li></ol>
</li>
<li><p>u-boot源码存放的git仓库如下,注意切换u-boot-orangepi仓库的分支为</p>
<ol style="list-style-type: lower-alphanone;"><li><p>a) v2018.05</p>{| class="wikitable" style="width:800px;" |-| <p>https://github.com/orangepi-xunlong/u-boot-orangepi/tree/'''v2018.05-h618'''</p>|}</li><li><p>b) v2021.07</p>{| class="wikitable" style="width:800px;" |-| https://github.com/orangepi-xunlong/u-boot-orangepi/tree/'''v2021.07-sunxi'''|}</li></ol>
</li></ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li><p>orangepi-build第一次运行的时候会去下载交叉编译工具链、u-boot和linux内核源码,成功编译完一次linux镜像后在orangepi-build中可以看到的文件和文件夹有</p>
<ol style="list-style-type: lower-alpha;">
<li><p>'''build.sh''': 编译启动脚本</p></li>
<li><p>'''external''': > 包含编译镜像需要用的配置文件、特定功能的脚本以及部分程序的源码,编译镜像过程中缓存的rootfs压缩包也存放在external中</p></li>
<li><p>'''kernel''': 存放linux内核的源码</p></li>
<li><p>'''LICENSE''': GPL 2许可证文件</p></li>
<li><p>'''README.md''': orangepi-build说明文件</p></li>
<li><p>'''output''': > 存放编译生成的u-boot、linux等deb包、编译日志以及编译生成的镜像等文件</p></li>
<li><p>'''scripts''': 编译linux镜像的通用脚本</p></li>
<li><p>'''toolchains''': 存放交叉编译工具链</p></li>
<li><p>'''u-boot''': 存放u-boot的源码</p></li>
<li><p>'''userpatches''': 存放编译脚本需要用到的配置文件</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~/orangepi-build$ '''ls'''</p>
<p>'''build.sh external kernel LICENSE output README.md scripts toolchains u-boot userpatches'''</p>|}</li></ol>
</li></ol>
<ol style="list-style-type: decimal;">
<li><p>运行build.sh脚本,记得加sudo权限</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p>|}</li>
<li><p>选择'''U-boot package''',然后回车</p>
<div class="figure">
[[File:media/image297zero3-img297.png|576x132px|选区_238]]
</div></li>
<li><p>接着选择开发板的型号</p>
<p>[[File:media/image298zero3-img298.png|576x123px]]</p></li>
<li><p>然后选择u-boot的分支类型</p>
<ol style="list-style-type: lower-alpha;">
<li><p>current分支会编译linux5.4镜像需要使用的u-boot v2018.05版本的代码</p></li>
<li><p>next分支会编译linux6.1镜像需要使用的u-boot v2021.07版本的代码</p>
<p>[[File:mediazero3-img299.png]]</p></li></ol></li><li><p>如果选择的next分支还会提示需要选择内存的大小,current分支不需要选择</p><ol style="list-style-type: lower-alpha;"><li><p>如果购买的开发板为1.5GB内存大小的,请选择第一项</p></li><li><p>如果购买的开发板为1GB或2GB或4GB内存大小的,请选择第二项</image299p><p>[[File:zero3-img299-1.png|576x77px1000px]]</p></li></ol>
</li>
<li><p>然后就会开始编译u-boot,编译next分支时提示的部分信息说明如下所示:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>u-boot源码的版本</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Compiling u-boot [ '''v2021.07''' ]</p>|}</li>
<li><p>交叉编译工具链的版本</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Compiler version [ '''aarch64-linux-gnu-gcc 11''' ]</p>|}</li>
<li><p>编译生成的u-boot deb包的路径</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Target directory [ '''orangepi-build/output/debs/u-boot''' ]</p>|}</li>
<li><p>编译生成的u-boot deb包的包名</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] File name [ '''linux-u-boot-next-orangepizero3_x.x.x_arm64.deb''' ]</p>|}</li>
<li><p>编译使用的时间</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Runtime [ '''1 min''' ]</p>|}</li>
<li><p>重复编译u-boot的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译u-boot</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepizero3 BRANCH=next BUILD_OPT=u-boot''' ]</p>|}</li></ol>
</li>
<li><p>查看编译生成的u-boot deb包</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~/orangepi-build$ '''ls output/debs/u-boot/'''</p>
<p>'''linux-u-boot-next-orangepizero3_x.x.x_arm64.deb'''</p>|}</li>
<li><p>orangepi-bulid编译系统编译u-boot源码时首先会将u-boot的源码和github服务器的u-boot源码进行同步,所以如果想修改u-boot的源码,首先需要关闭源码的下载更新功能('''需要完整编译过一次u-boot后才能关闭这个功能,否则会提示找不到u-boot的源码'''),否则所作的修改都会被还原,方法如下:</p>
<p>设置'''userpatches/config-default.conf'''中的IGNORE_UPDATES变量为”yes”</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''</p>
<p>......</p>
<p>IGNORE_UPDATES="'''<span style="color:#FF0000">yes</span>'''"</p><p>......</p>|}</li>
<li><p>调试u-boot代码时,可以使用下面的方法来更新linux镜像中的u-boot进行测试</p>
<ol style="list-style-type: lower-alpha;">
<li><p>首先将编译好的u-boot的deb包上传到开发板的linux系统中</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~/orangepi-build$ '''cd output/debs/u-boot'''</p>
<p>test@test:~/orangepi_build/output/debs/u-boot$ '''scp \'''</p>
<p>'''linux-u-boot-next-orangepizero3_x.x.x_arm64.deb [mailto:root@192.168.1.xxx:/root root@192.168.1.xxx:/root]'''</p>|}</li>
<li><p>再安装刚才上传的新的u-boot的deb包</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo dpkg -i''' '''linux-u-boot-next-orangepizero3_x.x.x_arm64.deb'''</p>|}</li>
<li><p>然后运行 nand-sata-install脚本</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo nand-sata-install'''</p>|}</li>
<li><p>然后选择'''5 Install/Update the bootloader on SD/eMMC'''</p>
<p>[[File:media/image300zero3-img300.png|320x174px]]</p></li><li><p>按下回车键后首先会弹出一个Warring按下回车键后首先会弹出一个'''Warning'''</p><p>[[File:media/image301zero3-img301.png|314x170px]]</p></li>
<li><p>再按下回车键就会开始更新u-boot,更新完后会显示下面的信息</p>
<p>[[File:media/image302zero3-img302.png|292x164px]]</p></li>
<li><p>然后就可以重启开发板来测试u-boot的修改是否生效了</p></li></ol>
</li></ol>
<ol style="list-style-type: decimal;">
<li><p>运行'''build.sh'''脚本,记得加sudo权限</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p>|}</li>
<li><p>选择'''Kernel package''',然后回车</p>
<div class="figure">
[[File:media/image303zero3-img303.png|575x116px|选区_240]]
</div></li>
<li><p>然后会提示是否需要显示内核配置界面,如果不需要修改内核配置,则选择第一个即可,如果需要修改内核配置,则选择第二个</p>
<p>[[File:media/image304zero3-img304.png|576x87px]]</p></li>
<li><p>接着选择开发板的型号</p>
<p>[[File:media/image298zero3-img298.png|576x123px]]</p></li>
<li><p>然后选择内核源码的分支类型</p>
<ol style="list-style-type: lower-alpha;">
<li><p>current分支会编译linux5.4内核源码</p></li>
<li><p>next分支会编译linux6.1内核源码</p>
<p>[[File:media/image299zero3-img299.png|576x77px]]</p></li></ol>
</li>
<li><p>如果第3)步选择了需要显示内核配置菜单(第二个选项),则会弹出通过'''make menuconfig'''打开的内核配置的界面,此时可以直接修改内核的配置,修改完后再保存退出即可,退出后会开始编译内核源码。</p>
<p>[[File:media/image305zero3-img305.png|575x357px]]</p></li></ol>
<!-- -->
<ol style="list-style-type: lower-alpha;">
<li><p>如果不需要修改内核的配置选项,在运行build.sh脚本时,传入'''KERNEL_CONFIGURE=no'''就可临时屏蔽弹出内核的配置界面了</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~/orangepi-build$ '''sudo ./build.sh KERNEL_CONFIGURE=no'''</p>|}</li>
<li><p>也可以设置orangepi-build/userpatches/config-default.conf配置文件中的'''KERNEL_CONFIGURE=no''',这样可以永久禁用这个功能</p></li>
<li><p>编译内核的时候如果提示下面的错误,这是由于Ubuntu > PC的终端界面太小,导致make menuconfig的界面无法显示,请把Ubuntu > PC的终端调到最大,然后重新运行build.sh脚本</p>
<p>[[File:media/image306zero3-img306.png|574x234px]]</p></li></ol>
<!-- -->
<ol style="list-style-type: lower-alpha;">
<li><p>linux内核源码的版本</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Compiling current kernel [ '''6.1.31''' ]</p>|}</li>
<li><p>使用的交叉编译工具链的版本</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Compiler version [ '''aarch64-linux-gnu-gcc 11''' ]</p>|}</li>
<li><p>内核默认使用的配置文件以及它存放的路径如下所示</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Using kernel config file [ '''orangepi-build/external/config/kernel/linux-6.1-sun50iw9-next.config''' ]</p>|}</li>
<li><p>编译生成的内核相关的deb包的路径</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Target directory [ '''output/debs/''' ]</p>|}</li>
<li><p>编译生成的内核镜像deb包的包名</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] File name [ '''linux-image-next-sun50iw9_x.x.x_arm64.deb''' ]</p>|}</li>
<li><p>编译使用的时间</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Runtime [ '''10 min''' ]</p>|}</li>
<li><p>最后会显示重复编译上一次选择的内核的编译命令,使用下面的命令无需通过图形界面选择,可以直接开始编译内核源码</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepizero3 BRANCH=next BUILD_OPT=kernel KERNEL_CONFIGURE=no''' ]</p>|}</li></ol>
</li>
<li><p>查看编译生成的内核相关的deb包</p>
<li><p>'''linux-headers-next-sun50iw9_x.x.x_arm64.deb'''包含内核头文件</p></li>
<li><p>'''linux-image-next-sun50iw9_x.x.x_arm64.deb'''包含内核镜像和内核模块</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~/orangepi-build$ '''ls output/debs/linux-*'''</p>
<p>output/debs/linux-dtb-next-sun50iw9_x.x.x_arm64.deb</p>
<p>output/debs/linux-headers-next-sun50iw9_x.x.x_arm64.deb</p>
<p>output/debs/linux-image-next-sun50iw9_x.x.x_arm64.deb</p>|}</li></ol>
</li>
<li><p>orangepi-bulid编译系统编译linux内核源码时首先会将linux内核源码和github服务器的linux内核源码进行同步,所以如果想修改linux内核的源码,首先需要关闭源码的更新功能('''需要完整编译过一次linux内核源码后才能关闭这个功能,否则会提示找不到linux内核的源码'''),否则所作的修改都会被还原,方法如下:</p>
<p>设置'''userpatches/config-default.conf'''中的IGNORE_UPDATES变量为”yes”</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''</p>
<p>IGNORE_UPDATES="'''<span style="color:#FF0000">yes</span>'''"</p>|}</li>
<li><p>如果对内核做了修改,可以使用下面的方法来更新开发板linux系统的内核和内核模块</p>
<ol style="list-style-type: lower-alpha;">
<li><p>将编译好的linux内核的deb包上传到开发板的linux系统中</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~/orangepi-build$ '''cd output/debs'''</p>
<p>test@test:~/orangepi-build/output/debs$ '''scp \'''</p>
<p>'''linux-image-next-sun50iw9_x.x.x_arm64.deb root@192.168.1.xxx:/root'''</p>|}</li>
<li><p>再安装刚才上传的新的linux内核的deb包</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo dpkg -i linux-image-next-sun50iw9_x.x.x_arm64.deb'''</p>|}</li>
<li><p>然后重启开发板,再查看内核相关的修改是否已生效</p>
{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo''' '''reboot'''</p>|}</li></ol>
</li></ol>
<ol style="list-style-type: decimal;">
<li><p>运行build.sh脚本,记得加sudo权限</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p>|}</li><li><p>选择'''Rootfs and all deb packages''',然后回车</p></li></ol>
<div class="figure">
[[File:media/image307zero3-img307.png|576x119px|选区_241]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>接着选择开发板的型号</p>
<p>[[File:media/image298zero3-img298.png|576x123px]]</p></li>
<li><p>然后选择内核源码的分支类型,不同版本的内核源码维护的rootfs类型有区别</p>
<ol style="list-style-type: lower-alpha;">
<li><p>current分支可以看到debian11、ubuntu20.04、ubuntu22.04三个选项</p></li>
<li><p>next分支可以看到debian11、debian12、ubuntu22.04三个选项</p>
<p>[[File:media/image299zero3-img299.png|576x77px]]</p></li></ol>
</li>
<li><p>然后选择rootfs的类型</p>
<p>[[File:media/image308zero3-img308.png|576x79px]]</p></li>
<li><p>然后选择镜像的类型</p>
<ol style="list-style-type: lower-alpha;">
<li><p>'''Image with console interface > (server)'''表示服务器版的镜像,体积比较小</p></li>
<li><p>'''Image with desktop environment'''表示带桌面的镜像,体积比较大</p>
<div class="figure">
[[File:media/image309zero3-img309.png|576x75px|选区_245]]
</div></li></ol>
<div class="figure">
[[File:media/image310zero3-img310.png|576x78px|选区_397]]
</div></li>
<li><p>如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前只维护XFCE,所以请选择XFCE类型的桌面</p>
<p>[[File:media/image311zero3-img311.png|576x76px]]</p><p>[[File:media/image312zero3-img312.png|576x74px]]</p>
<p>然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。</p>
<p>[[File:media/image313zero3-img313.png|575x264px]]</p></li>
<li><p>然后就会开始编译rootfs,编译时提示的部分信息说明如下</p>
<ol style="list-style-type: lower-alpha;">
<li><p>rootfs的类型</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] local not found [ Creating new rootfs cache for '''bullseye''' ]</p>|}</li>
<li><p>编译生成的rootfs压缩包的存放路径</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Target directory [ '''orangepi-build/external/cache/rootfs''' ]</p>|}</li>
<li><p>编译生成的rootfs压缩包的名字</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] File name [ '''bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4''' ]</p>|}</li></ol>
</li>
<li><p>查看编译生成的rootfs压缩包</p>
<ol style="list-style-type: lower-alpha;">
<li><p>'''bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4'''是rootfs的压缩包,名字各字段的含义为</p>
<ol style="list-style-type: lower-alphanone;"><li><p>a) '''bullseye'''表示rootfs的linux发行版的类型</p></li><li><p>b) '''xfce'''表示rootfs为桌面版的类型,如果为'''cli'''则表示服务器版类型</p></li><li><p>c) '''arm64'''表示rootfs的架构类型</p></li><li><p>d) '''25250ec7002de9e81a41de169f1f89721'''是由rootfs安装的所有软件包的包名生成的MD5哈希值,只要没有修改rootfs安装的软件包的列表,那么这个值就不会变,编译脚本会通过这个MD5哈希值来判断是否需要重新编译rootfs</p></li></ol>
</li>
<li><p>'''bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4.list'''列出了rootfs安装的所有软件包的包名</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~/orangepi-build$ '''ls external/cache/rootfs/'''</p>
<p>bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4</p>
<p>bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4.current</p>
<p>bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4.list</p>|}</li></ol>
</li>
<li><p>如果需要的rootfs在'''external/cache/rootfs'''下已经存在,那么再次编译rootfs就会直接跳过编译过程,不会重新开始编译,编译镜像的时候也会去'''external/cache/rootfs'''下查找是否已经有缓存可用的rootfs,如果有就直接使用,这样可以节省大量的下载编译时间</p></li></ol>
<ol style="list-style-type: decimal;">
<li><p>运行'''build.sh'''脚本,记得加sudo权限</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p>|}</li><li><p>选择'''Full OS image for flashing''',然后回车</p></li></ol>
<div class="figure">
[[File:media/image314zero3-img314.png|576x128px|选区_242]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>然后选择开发板的型号</p>
<p>[[File:media/image298zero3-img298.png|576x123px]]</p></li>
<li><p>然后选择内核源码的分支类型,不同版本的内核源码维护的rootfs类型有区别</p>
<ol style="list-style-type: lower-alpha;">
<li><p>current分支可以看到debian11、ubuntu20.04、ubuntu22.04三个选项</p></li>
<li><p>next分支可以看到debian11、debian12、ubuntu22.04三个选项</p>
<p>[[File:mediazero3-img299.png]]</p></li></ol></li><li><p>如果选择的next分支还会提示需要选择内存的大小,current分支不需要选择</p><ol style="list-style-type: lower-alpha;"><li><p>如果购买的开发板为1.5GB内存大小的,请选择第一项</p></li><li><p>如果购买的开发板为1GB或2GB或4GB内存大小的,请选择第二项</image299p><p>[[File:zero3-img299-1.png|576x77px]]</p></li></ol>
</li>
<li><p>然后选择rootfs的类型</p>
<p>[[File:media/image308zero3-img308.png|576x79px]]</p></li>
<li><p>然后选择镜像的类型</p>
<ol style="list-style-type: lower-alpha;">
<li><p>'''Image with console interface > (server)'''表示服务器版的镜像,体积比较小</p></li>
<li><p>'''Image with desktop environment'''表示带桌面的镜像,体积比较大</p>
<div class="figure">
[[File:media/image309zero3-img309.png|576x75px|选区_245]]
</div></li></ol>
<div class="figure">
[[File:media/image310zero3-img310.png|576x78px|选区_397]]
</div></li></ol>
<!-- -->
<ol start="128" style="list-style-type: decimal;">
<li><p>如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前只维护XFCE,所以请选择XFCE类型的桌面</p>
<p>[[File:media/image311zero3-img311.png|576x76px]]</p><p>[[File:media/image312zero3-img312.png|576x74px]]</p>
<p>然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。</p>
<p>[[File:media/image313zero3-img313.png|575x264px]]</p></li></ol>
<!-- -->
<ol start="89" style="list-style-type: decimal;">
<li><p>然后就会开始编译linux镜像,编译的大致流程如下</p>
<ol style="list-style-type: lower-alpha;">
<ol style="list-style-type: lower-alpha;">
<li><p>编译生成的镜像的存放路径</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Done building [ '''output/images/orangepizero3_x.x.x_debian_bullseye_linux6.1.xx_xfce_desktop/orangepizero3_x.x.x_debian_bullseye_linux6.1.xx_xfce_desktop.img''' ]</p>|}</li><li><p>编译使用的时间</p></li></ol></li></ol>{| class="wikitable" style="width:800px;" |-|
'''[ o.k. ] Runtime [ 19 min ]'''
<li><p>重复编译镜像的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译镜像</p>
{| class="wikitable" style="width:800px;" |-| <p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepizero3 BRANCH=next BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes''' ]</p>|}</li></ol></li></ol><span id="android-12-tv系统使用说明"></span>
<span id="已支持的android版本"></span>
== 已支持的Android版本 ==
{| class="wikitable" style="width:600px;"
|-
| style="text-align: left;"| Android版本
<span id="android-12-tv功能适配情况"></span>
== Android 12 TV功能适配情况 ==
{| class="wikitable" style="width:600px;"
|-
| style="text-align: left;"| 功能
<span id="板载led灯显示说明"></span>
== 板载LED灯显示说明 ==
{| class="wikitable" style="width:600px;"
|-
|
<span id="android返回上一级界面的方法"></span>
== Android返回上一级界面的方法 ==
<ol style="list-style-type: decimal;">
<li><p>我们一般都是使用鼠标和键盘来控制开发板的安卓系统,当进入某些界面,需要返回上一级界面或者桌面时,只能通过'''<span style="color:#FF0000">鼠标右键</span>'''来返回,键盘是无法返回的</p></li>
<li><p>如果有购买开发板配套的红外遥控(其他遥控不行)和扩展板,将扩展板插入开发板后,还可以通过遥控中的返回键来返回上一级菜单,返回键的位置如下图所示</p>
<p>[[File:media/image315zero3-img315.png|231x199px]]</p></li></ol>
<span id="adb的使用方法"></span>
== ADB的使用方法 ==
=== 使用网络连接adb调试 ===
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''使用网络adb无需USB Typc C接口的数据线来连接电脑和开发板,而是通过网络来通信,所以首先请确保开发板的有线或者无线网络已经连接好了,然后获取开发板的IP地址,后面要用到。'''</big>|}
<ol style="list-style-type: decimal;">
<li><p>确保Android系统的'''service.adb.tcp.port'''设置为5555端口号</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>apollo-p2:/ # '''getprop | grep "adb.tcp"'''</p>
<p>[service.adb.tcp.port]: [5555]</p>|}</li><li><p>如果'''service.adb.tcp.port'''没有设置,可以在串口中使用下面的命令设置网络adb的端口号</p>< {| class="wikitable" style="width:800px;" |-| apollo-p2:/li></ol># '''setprop service.adb.tcp.port 5555'''
apollo-p2:/ # '''stop adbd'''
apollo-p2:/ # '''start adbd'''
|}</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>在Ubuntu PC上安装adb工具</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~$ '''sudo apt-get update'''</p>
<p>test@test:~$ '''sudo apt-get install -y adb'''</p>|}</li>
<li><p>然后在Ubuntu PC上连接网络adb</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~$ '''adb connect 192.168.1.xxx:5555''' '''(需要修改为开发板的IP地址)'''</p>
<p>* daemon not running; starting now at tcp:5037</p>
<p>* daemon started successfully</p>
<p>connected to 192.168.1.xxx:5555</p>
<p>test@test:~$ '''adb devices'''</p>
<p>List of devices attached</p>
<p>192.168.1.xxx:5555 device</p>|}</li><li><p>然后在Ubuntu PC上通过adb shell就可以登录android系统</p></li></ol>
{| class="wikitable" style="width:800px;"
|-
|
test@test:~$ '''adb shell'''
apollo-p2:/ #
|}
</li></ol>
=== 使用数据线连接adb调试 ===
<div class="figure">
[[File:media/image15zero3-img15.jpeg|172x172px|IMG_4194(20201104-125502)png]]
</div></li>
<li><p>在Ubuntu PC上安装adb工具</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~$ '''sudo apt-get update'''</p>
<p>test@test:~$ '''sudo apt-get install -y adb'''</p>|}</li>
<li><p>查看识别到ADB设备</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>test@test:~$ '''adb devices'''</p>
<p>List of devices attached</p>
<p>4c00146473c28651dd0 device</p>|}</li><li><p>然后在Ubuntu PC上通过adb shell就可以登录android系统</p></li></ol>
{| class="wikitable" style="width:800px;"
|-
|
test@test:~$ '''adb shell'''
apollo-p2:/ $
|}
</li></ol>
<span id="查看设置hdmi显示分辨率的方法"></span>
== 查看设置HDMI显示分辨率的方法 ==
<ol style="list-style-type: decimal;">
<li><p>首先进入'''Settings'''</p>
<p>[[File:media/image316zero3-img316.png|234x83px]]</p></li>
<li><p>然后选择'''Device Preferences'''</p>
<p>[[File:media/image317zero3-img317.png|415x170px]]</p></li>
<li><p>然后选择'''Display & Sound'''</p>
<p>[[File:media/image318zero3-img318.png|420x133px]]</p></li>
<li><p>然后选择'''Advanced display settings'''</p>
<p>[[File:media/image319zero3-img319.png|423x96px]]</p></li><li><p>然后选择'''HDMI outpu output mode'''</p><p>[[File:media/image320zero3-img320.png|423x101px]]</p></li>
<li><p>然后就能看到显示器支持的分辨率列表了。此时点击对应的选项就会切换到对应的分辨率。请注意,不同显示器支持的分辨率可能是不同的,如果接到电视上,一般会看到比下图更多的分辨率选项。</p>
<p>[[File:media/image321zero3-img321.png|429x136px]]</p></li>
<li><p>开发板的HDMI输出是支持4K显示的,当接到4K电视时就可以看到4K分辨率的选项</p>
<p>[[File:media/image322zero3-img322.png|429x242px]]</p></li></ol>
<span id="hdmi转vga显示测试-1"></span>
== HDMI转VGA显示测试 ==
<ol style="list-style-type: lower-alpha;">
<li><p>HDMI转VGA转换器</p>
<p>[[File:media/image146zero3-img146.png|155x104px]]</p></li>
<li><p>一根VGA线和一根Micro HDMI公转HDMI母转接线</p>
<p>[[File:media/image147zero3-img147.png|148x133px]] [[File:media/image148zero3-img148.jpeg|157x139px|IMG_6140(20220104-134930)png]]</p></li>
<li><p>一个支持VGA接口的显示器或者电视</p></li></ol>
</li>
<li><p>HDMI转VGA显示测试如下所示</p>
<p>[[File:media/image323zero3-img323.png|576x330px]]</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''使用HDMI转VGA显示时,开发板以及开发板的Android系统是不需要做任何设置的,只需要开发板Micro HDMI接口能正常显示就可以了。所以如果测试有问题,请检查HDMI转VGA转换器、VGA线以及显示器是否有问题。'''</p></big>|}</li></ol>
<span id="wi-fi的连接方法"></span>
== WI-FI的连接方法 ==
<ol style="list-style-type: decimal;">
<li><p>首先选择'''Settings'''</p>
<p>[[File:media/image316zero3-img316.png|234x83px]]</p></li>
<li><p>然后选择'''Network & Internet'''</p>
<p>[[File:media/image324zero3-img324.png|373x103px]]</p></li>
<li><p>然后打开WI-FI</p>
<p>[[File:media/image325zero3-img325.png|381x50px]]</p></li>
<li><p>打开WI-FI后在'''Available networks'''下面就可以看到搜索到的信号</p>
<p>[[File:media/image326zero3-img326.png|381x187px]]</p></li>
<li><p>选择想连接的WI-FI后会弹出下图所示的密码输入界面</p>
<div class="figure">
[[File:media/image327zero3-img327.png|386x180px|Screenshot_20220104-164114]]
</div></li>
<li><p>然后使用键盘输入WI-FI对应的密码,再使用'''鼠标'''点击虚拟键盘中的回车按钮就会开始连接WI-FI了</p>
<p>[[File:media/image328zero3-img328.png|388x160px]]</p></li>
<li><p>WI-FI连接成功后的显示如下图所示</p>
<p>[[File:media/image329zero3-img329.png|402x141px]]</p></li></ol>
<span id="wi-fi-hotspot的使用方法"></span>
<li><p>首先请确保以太网口已连接网线,并且能正常上网</p></li>
<li><p>然后选择'''Settings'''</p>
<p>[[File:media/image316zero3-img316.png|234x83px]]</p></li>
<li><p>然后选择'''Network & Internet'''</p>
<p>[[File:media/image324zero3-img324.png|373x103px]]</p></li>
<li><p>然后选择'''WIFI hotspot'''</p>
<p>[[File:media/image330zero3-img330.png|378x104px]]</p></li>
<li><p>然后打开'''Hotspot Enable''',下图中还可以看到生成的热点的名字和密码,记住它们,在连接热点的时候要用到(如果需要修改热点的名字和密码,需要先关闭'''Hotspot Enable''',然后才能修改)</p>
<p>[[File:media/image331zero3-img331.png|402x174px]]</p></li>
<li><p>此时可以拿出你的手机,如果一切正常,在手机搜索到的WI-FI列表中就能找到上图'''Hotspot name'''下面显示的同名('''这里为AndroidAP_7132''')的WIFI热点了。然后可以点击'''AndroidAP_7132'''连接热点,密码在上图的'''Hotspot password'''下面可以看到</p>
<p>[[File:media/image332zero3-img332.png|269x191px]]</p></li>
<li><p>连接成功后显示如下图所示(不同手机界面会有区别,具体界面以你手机显示的为准)。此时就可以在手机上打开一个网页看下能否上网了,如果能正常打开网页,说明开发板的'''WI-FI Hotspot'''能正常使用</p>
<p>[[File:media/image333zero3-img333.png|269x125px]]</p></li></ol>
<span id="查看以太网口ip地址的方法"></span>
<li><p>首先请确保开发板的千兆网口连接到了路由器或者交换机</p></li>
<li><p>然后打开'''Settings'''</p>
<p>[[File:media/image334zero3-img334.png|431x161px]]</p></li>
<li><p>然后选择'''Network & Internet'''</p>
<p>[[File:media/image335zero3-img335.png|576x186px]]</p></li>
<li><p>然后在下图所示的位置就能看到开发板有线网口的IP地址了</p>
<p>[[File:media/image336zero3-img336.png|576x200px]]</p></li></ol>
== 蓝牙的连接方法 ==
<ol style="list-style-type: decimal;">
<li><p>首先选择'''Settings'''</p>
<p>[[File:media/image316zero3-img316.png|234x83px]]</p></li>
<li><p>然后选择'''Bluetooth'''</p>
<p>[[File:media/image337zero3-img337.png|377x111px]]</p></li>
<li><p>然后打开'''Bluetooth Enable'''</p>
<p>[[File:media/image338zero3-img338.png|384x180px]]</p></li>
<li><p>然后点击'''Pair new device'''开始扫描周围的蓝牙设备</p>
<p>[[File:media/image339zero3-img339.png|389x129px]]</p></li>
<li><p>搜索到的蓝牙设备会在'''Available devices'''下面显示出来</p>
<p>[[File:media/image340zero3-img340.png|407x181px]]</p></li>
<li><p>然后点击想要连接的蓝牙设备就可以开始配对了,当弹出下面的界面时,请使用鼠标选择'''Pair'''选项</p>
<p>[[File:media/image341zero3-img341.png|420x115px]]</p></li><li><p>这里测试的是开发板和'''<span style="color:#FF0000">安卓手机</span>'''蓝牙的配置过程,此时在手机上会弹出下面的确认界面,在手机上也点击配对按钮后就会开始配对过程</p><p>[[File:media/image342zero3-img342.png|178x200px]]</p></li>
<li><p>配对完成后,再打开'''Paired devices'''下面就可以看到已配对的蓝牙设备</p>
<p>[[File:media/image343zero3-img343.png|430x136px]]</p></li>
<li><p>此时可以使用手机蓝牙给开发板发送一张图片,发送后,在开发板的安卓系统中可以看到下面的确认界面,然后点击'''Accept'''就可以开始接收手机发过来的图片了</p>
<p>[[File:media/image344zero3-img344.png|433x113px]]</p></li>
<li><p>开发板Android系统蓝牙接收到的图片可以打开'''Received files'''中查看</p>
<p>[[File:media/image345zero3-img345.png|432x209px]]</p></li></ol>
<span id="usb摄像头使用方法"></span>
== USB摄像头使用方法 ==
<li><p>首先在开发板的USB接口中插入USB(UVC协议)摄像头</p></li>
<li><p>USB摄像头如果识别正常,在/dev下会生成相应的video设备节点</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>console:/ # '''ls /dev/video0'''</p>
<p>/dev/video0</p>|}</li><li><p>然后确保Ubuntu PC和开发板的adb连接正常,adb的使用方法请参考[[\lOrange Pi Zero 3#ADB的使用方法|'''ADB的使用方法''']]一小节的说明</p></li>
<li><p>在开发板资料下载页面的'''官方工具'''中下载USB摄像头测试APP</p>
<p>[[File:media/image346zero3-img346.png|576x172px]]</p><p>[[File:media/image347zero3-img347.png|575x145px]]</p></li>
<li><p>然后使用adb命令安装USB摄像头测试APP到Android系统中,当然也可以使用U盘拷贝的方式进行安装</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''adb install usbcamera.apk'''</p>|}</li>
<li><p>安装完后在Android的桌面可以看到USB摄像头的启动图标</p>
<p>[[File:media/image348zero3-img348.png|576x132px]]</p></li>
<li><p>然后双击打开USB摄像头APP就可以看到USB摄像头的输出视频了</p></li></ol>
<span id="android系统root说明"></span>
== Android系统ROOT说明 ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''<span class="mark">Orange Pi发布的Android系统已经ROOT,可以使用下面的方法来测试。</span>'''</big>|}
<ol style="list-style-type: decimal;">
<li><p>在开发板资料下载页面的'''官方工具'''中下载'''rootcheck.apk'''</p>
<p>[[File:media/image346zero3-img346.png|576x172px]]</p><p>[[File:media/image349zero3-img349.png|575x124px]]</p></li>
<li><p>然后确保Ubuntu PC和开发板的adb连接正常,adb的使用方法请参考[[\l|'''ADB的使用方法''']]一小节的说明</p></li>
<li><p>然后使用adb命令安装rootcheck.apk到Android系统中,当然也可以使用U盘拷贝的方式进行安装</p>
{| class="wikitable" style="width:800px;" |-| <p>test@test:~$ '''adb install rootcheck.apk'''</p>|}</li>
<li><p>安装完后在Android的桌面可以看到ROOT测试工具的启动图标</p>
<p>[[File:media/image350zero3-img350.png|575x119px]]</p></li>
<li><p>第一次打开'''ROOT测试工具'''后的显示界面如下图所示</p>
<p>[[File:media/image351zero3-img351.png|575x162px]]</p></li>
<li><p>然后就可以点击'''CHECK NOW'''开始Android系统的ROOT状态的检查,检查完后的显示如下所示,可以看到Android系统已取得ROOT权限</p>
<p>[[File:media/image352zero3-img352.png|575x161px]]</p></li></ol>
<span id="使用miracastreceiver将手机屏幕投屏到开发板的方法"></span>
== 使用MiracastReceiver将手机屏幕投屏到开发板的方法 ==
<ol style="list-style-type: decimal;">
<li><p>首先请确保开发板和手机都连接了同一个WIFI热点,开发板连接WIFI的方法请参考[[\lOrange Pi Zero 3#WI-FI的连接方法|'''WI-FI的连接方法''']]一小节的说明</p></li>
<li><p>然后打开开发板安卓系统中的'''MiracastReceiver'''应用</p>
<p>[[File:media/image353zero3-img353.png|576x124px]]</p></li>
<li><p>'''MiracastReceiver'''打开后的界面如下所示</p>
<div class="figure">
[[File:media/image354zero3-img354.png|420x236px|Screenshot_20230625-193535]]
</div></li>
<li><p>然后在手机设置中找到投屏功能,'''这里以小米12S Pro手机为例''',其他品牌的手机请自行研究下,如下图所示,点击红色方框位置的按钮即可打开手机的投屏功能</p>
<p>[[File:media/image355zero3-img355.png|167x266px]]</p></li>
<li><p>等待一段时间后在手机上就能看到搜索到的可连接的设备,然后我们选择开发板对应的设备连接即可</p>
<p>[[File:media/image356zero3-img356.png|146x308px]]</p></li>
<li><p>然后在开发板的'''MiracastReceiver'''应用界面会弹出下图所示的选择框,这里我们选择'''Accept'''即可</p>
<p>[[File:media/image357zero3-img357.png|468x265px]]</p></li>
<li><p>然后就能在开发板连接的HDMI屏幕上看到手机屏幕的内容了</p>
<p>[[File:media/image358zero3-img358-1.png|576x352px]]</p></li></ol>
<span id="pin-接口-gpiouartspi-测试"></span>
== 26pin 接口 GPIO、UART、SPI 测试 ==
<ol style="list-style-type: decimal;">
<li><p>首先在桌面中打开wiringOP APP</p>
<p>[[File:media/image359zero3-img359.png|576x133px]]</p></li>
<li><p>然后点击'''GPIO_TEST'''按钮打开GPIO测试界面</p>
<p>[[File:media/image360zero3-img360.png|413x77px]]</p></li>
<li><p>GPIO测试界面如下图所示,左边的两排'''CheckBox'''按钮跟26pin引脚('''左下角的PC1/PI16/PI6/PH10是13pin引脚中的GPIO口''')是一一对应的关系。当勾选'''CheckBox'''按钮时,对应的GPIO引脚会被设置为'''OUT'''模式,引脚电平设置为高电平;当取消勾选时,GPIO引脚电平设置为低电平;当点击右边的'''GPIO READALL'''按钮时,可以获取到wPi号、GPIO模式、引脚电平等信息。</p>
<p>[[File:media/image361zero3-img361.png|425x236px]]</p></li>
<li><p>然后点击'''GPIO READALL'''按钮,输出信息如下图所示:</p>
<div class="figure">
[[File:media/image362zero3-img362.png|444x249px|Screenshot_20230609-155643]]
</div></li>
<li><p>开发板26pin中总共有17个GPIO口可以使用('''如果加上13pin中的4个GPIO口,那么总共就是有21个'''),下面以7号引脚——对应GPIO为PC9 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平。首先点击7号引脚对应的'''CheckBox'''按钮,当按钮为选中状态时,7号引脚会设置为高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为'''3.3v''',说明设置高电平成功</p>
<p>[[File:media/image363zero3-img363.png|432x210px]]</p></li>
<li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的7号引脚模式为'''OUT''',引脚电平为高电平</p>
<p>[[File:media/image364zero3-img364.png|430x207px]]</p></li>
<li><p>再次点击下图的'''CheckBox'''按钮取消勾选状态,7号引脚会设置为低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为'''0v''',说明设置低电平成功</p>
<p>[[File:media/image365zero3-img365.png|434x212px]]</p></li>
<li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的7号引脚模式为OUT,引脚电平为低电平</p>
<p>[[File:media/image366zero3-img366.png|438x217px]]</p></li></ol>
<span id="pin的uart测试方法"></span>
<ol style="list-style-type: decimal;">
<li><p>Android中默认打开了'''UART5''',对应的设备节点为'''/dev/ttyAS5'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>apollo-p2:/ # '''ls /dev/ttyAS5'''</p>
<p>/dev/ttyAS5</p>|}</li>
<li><p>首先在桌面中打开wiringOP APP</p>
<p>[[File:media/image359zero3-img359.png|576x133px]]</p></li>
<li><p>然后点击'''UART_TEST'''按钮打开UART测试界面</p>
<p>[[File:media/image367zero3-img367.png|505x94px]]</p></li><li><p>wiringOP的串口测试界面如下图所示</p></li></ol> [[File:media/image368.png|511x133px]]
[[File:zero3-img368.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li><p>然后在选择框中选择'''/dev/ttyAS5'''节点</p>
<p>[[File:media/image369zero3-img369.png|499x269px]]</p></li><li><p>再在编辑框中输入想要设置的波特率,然后点击'''OPEN'''按钮打开'''/dev/ttyAS5'''节点,打开成功后,'''OPEN'''按钮变为不可选中状态,'''CLOSE'''按钮和'''SEND'''按钮变为可选中状态</p></li></ol> [[File:media/image370.png|334x107px]]
[[File:zero3-img370.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li>然后使用杜邦线短接uart5的rx和tx引脚</li></ol>
{| class="wikitable" style="width:600px;"
|-
|
| style="text-align: left;"| 对应26pin的10号引脚
|}
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>然后可以在下面的发送编辑框中输入一段字符,点击'''SEND'''按钮开始发送</li></ol> [[File:media/image371.png|376x189px]]
[[File:zero3-img371.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li>如果一切正常,接收框内会显示已接收到的字符串</li></ol>
[[File:media/image372zero3-img372.png|382x196px]]</ol><span id="pin的spi测试方法"></span>
=== 26pin的SPI测试方法 ===
<ol style="list-style-type: decimal;">
<li><p>26pin中可以用的SPI为SPI1,对应的设备节点为'''/dev/spidev1.1'''</p>
<p>[[File:media/image359zero3-img359.png|576x133px]]</p></li><li><p>这里演示下通过'''w25q64'''模块来测试SPI1接口,首先在SPI1接口接入w25q64模块</p></li></ol> '''<span class="mark">如果没有</span>w25q64模块也没关系,因为开发板上有一个SPIFlash接在了SPI0上,在安卓中SPI0的配置默认也打开了,所以我们也可以直接使用板载的SPIFlash测试。'''
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''如果没有 w25q64 模块也没关系,因为开发板上有一个SPIFlash接在了SPI0上,在安卓中SPI0的配置默认也打开了,所以我们也可以直接使用板载的SPIFlash测试。'''</big>
|}
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>然后在桌面中打开wiringOP APP</p></li>
<li><p>然后点击'''SPI_TEST'''按钮打开SPI的测试界面</p>
<p>[[File:media/image373zero3-img373.png|518x96px]]</p></li>
<li><p>然后在左上角选择spi的设备节点,如果直接测试板载的SPIFlash,那么保持默认的'''/dev/spidev0.0'''即可,如果在26pin的spi1上接了'''w25q64'''模块,那么就请选择'''/dev/spidev1.1'''</p>
<p>[[File:media/image374zero3-img374.png|296x135px]]</p></li><li><p>然后点击'''OPEN'''按钮初始化SPI</p></li></ol> [[File:media/image375.png|295x168px]]
[[File:zero3-img375.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li><p>然后填充需要发送的字节,比如读取板载SPIFlash的ID信息,在data[0]中填入地址0x9f,然后点击'''TRANSFER'''按钮</p>
<p>[[File:media/image376zero3-img376.png|294x169px]]</p></li><li><p>最后APP会显示读取到的板载SPI Flash的ID信息</p></li></ol> [[File:media/image377.png|299x217px]]
[[File:zero3-img377-1.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li><p>如果是读取接在26pin SPI1上的w25q64模块,那么读取到的ID信息如下图所示</p>
<p>[[File:media/image378zero3-img378.png|302x201px]]</p></li>
<li><p>w25q64模块的MANUFACTURER ID为EFh,Device ID为4017h,跟上面读取到的值是对应的(h代表是16进制)</p>
<p>[[File:media/image379zero3-img379.png|336x113px]]</p></li></ol>
<span id="pin的i2c测试方法"></span>
=== 26pin的I2C测试方法 ===
<ol style="list-style-type: decimal;">
<li><p>Android中默认打开了26pin中的i2c3,对应的设备节点为'''/dev/i2c-3'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>apollo-p2:/ # '''ls /dev/i2c-3'''</p>
<p>/dev/i2c-3</p>|}</li>
<li><p>首先在桌面中打开wiringOP APP</p>
<p>[[File:media/image359zero3-img359.png|576x133px]]</p></li>
<li><p>然后点击'''I2C_TEST'''按钮打开i2c的测试界面</p>
<p>[[File:media/image380zero3-img380.png|506x110px]]</p></li><li><p>wiringOP的i2c测试界面如下图所示,可以看到默认使用的i2c为'''/dev/i2c-3''',所以我们无需重新选择了</p></li></ol> [[File:media/image381.png|353x159px]]
[[File:zero3-img381.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li><p>然后在26pin的i2c3引脚上接一个i2c设备,这里以ds1307 rtc模块为例</p>
<p>[[File:media/image186zero3-img186.png|121x103px]]</p></li></ol>
{| class="wikitable" style="width:600px;"
|-
| style="text-align: left;"| '''RTC模块的引脚'''
| style="text-align: left;"| '''5号引脚'''
|}
</ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>ds1307 rtc模块的i2c地址为0x68,接好线后,我们可以在串口命令行中使用'''i2cdetect -y 3'''命令查看下是否能扫描到ds1307 rtc模块的i2c地址。如下图所示,如果能看到0x68这个地址,说明ds1307 rtc模块接线正确。</p>{| class="wikitable" style="width:800px;" |-| <p>apollo-p2:/ # '''i2cdetect -y 3'''</p>|}<p>[[File:media/image382zero3-img382.png|424x186px]]</p></li><li><p>然后在wiringOP中设置i2c的地址为0x68,再点击'''OPEN'''按钮打开i2c3</p><p>[[File:media/image383zero3-img383.png|354x177px]]</p></li><li><p>点击'''OPEN'''按钮打开i2c3后的显示如下所示:</p><p>[[File:media/image384zero3-img384.png|355x171px]]</p></li><li><p>然后我们测试下往rtc模块的寄存器中写入一个值,比如往0x1c地址写入0x55</p><ol style="list-style-type: lower-alpha;"><li><p>我们首先设置需要写入的寄存器的地址为0x1c</p><p>[[File:media/image385zero3-img385.png|322x152px]]</p></li><li><p>然后设置需要写入的值为0x55</p><p>[[File:media/image386zero3-img386.png|315x177px]]</p></li><li><p>然后点击'''WRITE BYTE'''按钮执行写入的动作</p><p>[[File:media/image387zero3-img387.png|314x173px]]</p></li></ol></li><li><p>然后点击'''READ BYTE'''按钮读取下0x1c寄存器的值,如果显示为0x55,就说明i2c读写测试通过</p><p>[[File:media/image388zero3-img388.png|316x170px]]</p></li></ol> = '''附录 ''' = == 用户手册更新历史 == {| class="wikitable" style="width:800px;"|-| style="text-align: left;"| '''版本'''| style="text-align: left;"| '''日期'''| style="text-align: left;"| '''更新说明'''|-| style="text-align: left;"| v1.0| style="text-align: left;"| 2023-07-0510| style="text-align: left;"| 初始版本|} == 镜像更新历史 == {| class="wikitable" style="width:800px;"|-| * *'''日期**''' | '''更新说明'''|-| 202 32023-07-0510| Orangepizero3_1.0.0_ubuntu_jammy_server_linux5.4.125.7z Orangepizero3_1.0.0_debian_bullseye_server_linux5.4.125.7z Orangepizero3_1.0.0_ubuntu_focal_desktop_xfce_linux5.4.125.7z Orangepizero3_1.0.0_ubuntu_jammy_desktop_xfce_linux5.4.125.7z Orangepizero3_1.0.0_debian_bullseye_desktop_xfce_linux5.4.125.7z Orangepizero3_1.0.0_ubuntu_jammy_server_linux6.1.31.7z Orangepizero3_1.0.0_debian_bookworm_server_linux6.1.31.7z Orangepizero3_1.0.0_debian_bullseye_server_linux6.1.31.7z Orangepizero3_1.0.0_ubuntu_jammy_desktop_xfce_linux6.1.31.7z Orangepizero3_1.0.0_debian_bookworm_desktop_xfce_linux6.1.31.7z Orangepizero3_1.0.0_debian_bullseye_desktop_xfce_linux6.1.31.7z OrangePi_Zero3_Android12_v1.0.tar.gz
* 初始版本
|}