主页
开发板系列
键盘电脑
平板电脑
开源手机
开源游戏机
Orange Pi OS
通用问题
开发板常见问题
英文网站
中文网站
英文论坛
中文论坛
打开主菜单
Wiki-Orange Pi
β
搜索
查看“Orange Pi 2G-IoT”的源代码
←
Orange Pi 2G-IoT
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 介绍 == === 什么是 Orange Pi 2G-IoT === 香橙派是一款开源的单板电脑,新一代的 arm 开发板,它可以运行 Android4.4、Ubuntu、Debian 等操作系统。Orange Pi 2G-IoT 使用 RDA8810 系统级芯片,同时集成 256MB LPDDR2 SDRAM 内存。<br> === Orange Pi 的用途 === 我们可以用它搭建:<br> * 一台计算机 * 一个无线网络服务器 * 游戏机 * 音乐播放器 * 高清视频播放器 * 扬声器 * Android * Scratch <br><br> 当然还有其他更多的功能,因为Orange Pi是开源的<br> === Orange Pi 2G-IoT 是为谁设计的 === Orange Pi 2G-IoT 不仅仅是一款消费品,同时也是给任何想用技术来进行创作创新的人设计的。它是一款非常简单、有趣、实用的工具,你可以用它去打造你身边的世界。 === Orange Pi 2G-IoT 的硬件特性 === {| class="wikitable" style="width:800px;" |- | CPU || RDA8810PL ARM Cortex-A5 32 位@up to 1.0 GHz |- | GPU || Vivante GC860 3D GPU |- | 内存 || 集成 256MB LPDDR2 SDRAM |- | 板载存储 || TF 卡/集成 500MB 8 位 1.8V 4K SLC Nand Flash |- | 板载网络 || RDA5991, WIFI+BT |- | 2G 模块 || 四频单卡,GSM/GPRS 专用加速器,SIM卡槽 |- | 摄像头 || MIPI CSI-2 Connector for camera sensor up to 2MP |- | 视频输入 || 具有 CSI 接口的摄像头模块 |- | 视频输出 || LCD |- | 音频输入 || 3.5 mm 音频接口、MIC |- | 音频输出 || 3.5 mm 音频接口、 FM、SPEAK(可选) |- | 电源 || USB OTG 供电,电池供电(可选) |- | USB 端口 || 1 个 USB 2.0 HOST, 1 个 USB 2.0 OTG |- | Low-level peripherals || 40 pin 接头 |- | GPIO(1x3)口 || UART, ground. |- | LED灯 || 电源指示灯 |- | 按键 || 电源按键(SW602) |- | 支持的操作系统 || Android4.4,Ubuntu,Debian 等操作系统. |- |colspan=2|<div style="text-align:center"><big>'''外观规格介绍'''</big></div> |- | 产品尺寸 || 67mm×42mm |- | 重量 || 35g |} <big>'''(顶层视图)'''</big><br><br> [[Image:2GIoT-1.png]]<br><br> <big>'''(底层视图)'''</big><br> [[Image:2GIoT-2.png]]<br><br> <big>'''接口详情图'''</big><br> [[Image:2GIoT-3.png]]<br><br> [[Image:2GIoT-4.png]]<br><br> === CSI 摄像头接口规格 === CSI摄像头接口是一个可以通过适当的信号引脚映射来连接外部摄像头模块的24pin FPC接口。CSI接口的引脚定义如下所示。在香橙派上标有“CON1”的就是摄像头接口。<br><br> [[Image:winPlus-28.png]]<br><br> <big>'''OrangePi-CSI接口引脚定义'''</big><br><br> <table width="800" border="1" cellspacing="0" cellpadding="0" style="text-align:center; border-color:#999999; line-height:35px"> <tr> <td width="33%" bgcolor="#666666">CON1-P01</td> <td width="33%" bgcolor="#666666">NC</td> <td> </td> </tr> <tr> <td bgcolor="#666666">CON1-P02</td> <td bgcolor="#666666">GND</td> <td> </td> </tr> <tr bgcolor="#1cdcdc"> <td>CON1-P03</td> <td>TWI2-SDA</td> <td>PE13</td> </tr> <tr> <td bgcolor="#666666">CON1-P04</td> <td bgcolor="#666666">VCC-CSI</td> <td> </td> </tr> <tr bgcolor="#1cdcdc"> <td>CON1-P05</td> <td>TWI2-SCK</td> <td>PE12</td> </tr> <tr bgcolor="#1cdcdc"> <td>CON1-P06</td> <td>CSI-RESET#</td> <td>PE15</td> </tr> <tr bgcolor="#ff9b05"> <td>CON1-P07</td> <td>CSI-VSYNC</td> <td>PE3</td> </tr> <tr bgcolor="#d99694"> <td>CON1-P08</td> <td>CSI-STBY-EN</td> <td>PE15</td> </tr> <tr bgcolor="#ff9b05"> <td >CON1-P09</td> <td >CSI-HSYNC</td> <td>PE2</td> </tr> <tr > <td bgcolor="#666666">CON1-P10</td> <td bgcolor="#666666">VDD1V8-CSI</td> <td></td> </tr> <tr> <td bgcolor="#666666">CON1-P11</td> <td bgcolor="#666666">VCC-CSI</td> <td></td> </tr> <tr bgcolor="#ff9b05"> <td>CON1-P12</td> <td>CSI-D7</td> <td>PE11</td> </tr> <tr bgcolor="#ff9b05"> <td>CON1-P13</td> <td>CSI-MCLK</td> <td>PE1</td> </tr> <tr bgcolor="#ff9b05"> <td>CON1-P14</td> <td>CSI-D6</td> <td>PE10</td> </tr> <tr> <td bgcolor="#666666">CON1-P15</td> <td bgcolor="#666666">GND</td> <td></td> </tr> <tr bgcolor="#ff9b05"> <td>CON1-P16</td> <td>CSI-D5</td> <td>PE9</td> </tr> <tr bgcolor="#ff9b05"> <td >CON1-P17</td> <td >CSI-PCLK</td> <td>PE0</td> </tr> <tr bgcolor="#ff9b05"> <td>CON1-P18</td> <td>CSI-D4</td> <td>PE8</td> </tr> <tr bgcolor="#ff9b05"> <td>CON1-P19</td> <td>CSI-D0</td> <td>PE4</td> </tr> <tr bgcolor="#ff9b05"> <td >CON1-P20</td> <td>CSI-D3</td> <td>PE7</td> </tr> <tr bgcolor="#ff9b05"> <td>CON1-P21</td> <td>CSI-D1</td> <td>PE5</td> </tr> <tr bgcolor="#ff9b05"> <td>CON1-P22</td> <td>CSI-D2</td> <td>PE6</td> </tr> <tr> <td bgcolor="#d99694">CON1-P23</td> <td bgcolor="#d99694">GND</td> <td></td> </tr> <tr> <td bgcolor="#d99694">CON1-P24</td> <td bgcolor="#d99694">AFVCC-CSI</td> <td></td> </tr> </table> <br> == 快速入门 == 按照如下步骤,你可以在很短的时间内配置并使用你的香橙派开发板。启动你的香橙派开发板需要完成以下几步。<br><br> === 步骤1: 准备需要的配件 === 第一次使用香橙派开发板,你至少需要准备如下的一些配件:<br> {| class="wikitable" style=" min-width:800px;" |- ! 编号 !! 项目 !! 最低要求及说明 |- | 1 || TF卡 || 8 GB 容量,class 10(目前暂不支持其他容量的卡)。建议使用品牌 TF 卡,它们更加可靠。 |- | 2 || 电源适配器 || 至少 5V/2A 高品质电源适配器,OTG 用作电源输入。 |- | 3 || 键盘鼠标 || 任何标准usb接口的键盘鼠标都可以。键盘和鼠标可能会需要较大的功率,所以可能需要使用一个 USB 集线器。 |- | 4 || 调试串口线 || 支持串口登录。 |- | 5 || 你可以选择一个3.5 mm 接口的音频线来体验立体音效。 |- | 6 || 音频线(可选) || 你可以选择一个 3.5 mm 接口的音频线来体验立体音效。 |}<br> [[Image:2GIoT-5.png]]<br> === 步骤2: 准备TF 卡 === 为了能够正常使用香橙派开发板,必须先在TF卡或者 Nand 上安装操作系统。以下将会详细说明如何在Windows和Linux环境下向TF卡写入操作系统镜像文件。<br> 目前支持 T 卡启动 Android 和 Linux 发行版,仅支持 Nand 启动 Android 系统, 后续段落介绍 Nand 烧录方法。<br><br> '''<big>1)Windows 平台 SD 卡制卡介绍</big>'''<br><br> a.把TF卡插入电脑中,TF卡的容量必须比操作系统镜像大,通常需要 8GB或更大的容量。<br> b.格式化TF卡<br> i 下载TF卡格式化工具,例如TF Formatter,下载地址 '''https://www.sdcard.org/downloads/formatter_4/eula_Windows/''' <br> ii 解压下载的文件,并运行 setup.exe iii 在“选项设置”选项里, 设置“格式化类型”选项为快速格式化,“逻辑大小调整”选项为“开启(ON)” [[Image:winPlus-30.png]]<br><br> iv 确认插入的TF卡盘符和选择的盘符一致<br> v 点击“格式化”按钮<br> c.从下载页面下载操作系统镜像文件,页面地址如下:<br> '''http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-2G-IoT.html'''<br> d.解压下载的文件(除Android系统外的系统可用该方法来烧写,Android系统需要用其他的模式来烧写)<br> e.右键单击下载的文件,选择 “解压文件”写入镜像文件到TF卡i 下载镜像写入工具,例如 Win32Diskimager,下载页面: '''http://sourceforge.net/projects/Win32diskimager/files/Archive/'''<br> ii选择已经解压的镜像文件路径<br> [[Image:winPlus-31.png]]<br><br> iii点击 “Write” 按钮,耐心等待镜像写入<br> iv镜像写入完成后,点击“Exit”按钮 <big>'''2)Linux 平台 SD 卡制卡介绍'''</big><br> a.把 TF 卡插入电脑,TF卡的容量必须比操作系统镜像大,通常需要 8GB或更大<br> b.格式化 TF 卡<br> i运行 fdisk –l 命令确认 TF 卡的盘符<br> ii运行 umount /dev/sdx 卸载 TF 卡的所有分区<br> iii运行 sudo fdisk /dev/sdx 命令. 使用 o 命令去删除 TF 卡的所有分区,然后使用 n 命令去添加一个新的分区,最后使用 w 命令保存退出<br> iv运行 sudo mkfs.vfat /dev/sdx1 命令去格式化刚生成的 TF 卡分区为 FAT32 格式(根据你的 TF 卡盘符来替换 x )<br> c.从下载页面下载操作系统镜像文件,页面地址如下:<br> '''http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-2G-IoT.html'''<br> d.解压下载的文件右键单击下载的文件,选择 “解压文件”<br> e.写入镜像文件到 TF 卡<br> i运行 sudo fdisk –l 命令确认TF卡的盘符<br> ii确认镜像文件的hash key或者是md5 和下载页面提供的一致(可选) sha1sum '''''[path]/[imagename]'''''<br><br> 这将会输出一长串数字,应该和你下载的镜像页面的"SHA-1" 那一行匹配<br> iii运行 umount /dev/sdxx 命令卸载TF卡的所有分区 iv运行 sudo dd bs=4M if=[path]/[imagename] of=/dev/sdx 命令去写入镜像文件,耐心等待镜像写入。你可以使用 sudo pkill –USR1 –n –x dd 命令去查看烧写进度。 === 步骤3: 启动你的香橙派开发板 === * 将写好镜像的 TF 卡插入香橙派开发板左边缘底部的 TF 卡槽中<br> [[Image:2GIoT-6.png]]<br><br> * 将 Orange Pi 2G-IOT 开发板上的拨动开关调至下图,并接上跳线帽,采用 SD 卡启动。<br> [[Image:2GIoT-7.png]]<br><br> * 将 USB 键盘或鼠标插入右边缘的 USB 接口 * 连接好 wifi 天线 [[Image:2GIoT-8.png]]<br><br> * 连接 LCD 和摄像头(可选) [[Image:2GIoT-9.png]]<br><br> [[Image:2GIoT-10.png]]<br><br> [[Image:2GIoT-11.png]]<br><br> * 连接调试串口线,并参考本文的串口调试方法<br> Android 和 Linux 系统采用不同的波特率,请注意波特率设置。Android 波特率为 921600, Linux 波特率为 '''<span style="color:red;">921600</span>'''。<br> 串口线使用 TTL 转 USB 串口线。<br><br> [[Image:2GIoT-12.png]]<br><br> * 下边缘的最右边是电源输入接口,连接一个至少 5V/2A 的电源适配器。比 2A 大也可以。避免使用较小功率的 GSM 手机充电器,即使上面标明了“5V 2A”,它也不一定能够输出 2A<br> [[Image:2GIoT-13.png]]<br><br> 如果上述步骤都进行顺利的话,Orange Pi 2G-IOT 将会在几分钟内启动。LCD 屏上将显示Android的图形界面。首次启动时可能会需要很长的时间,请耐心等待。往后的启动时间将会很短。 === 步骤4:正确关闭你的香橙派开发板 === 你可以使用界面中的关机按键来安全关闭香橙派开发板。你也可以在 shell 里面输入命令来关闭系统:<br> sudo halt <br>or<br> sudo shutdown –h<br><br> 这将安全地关闭香橙派开发板,如果直接使用电源按键关闭系统可能会损坏TF 卡或者是文件系统。系统关闭后可以长按 5 秒以上的电源案件进行断电。如果以上步骤能顺利进行,你的香橙派就可以关闭了。<br><br> === 初始化设置您的 Linux 系统 === 第一次在 Orange Pi 2G-IOT 上使用 Linux,需要进行基础的系统设置,如 wifi设置, 音频设置,系统用户设置等,本节重点介绍如何连接 wifi 和音频设置。<br> '''1)串口设置 wifi'''<br><br> 在使用串口方式登录系统后,输入登录密码,系统会提示使用 orangepi-config 工具进行基础设置,其中包括 wifi 设置。你可以在命令行使用如下命令进入设置界面:<br> sudo orangepi-config<br> > wifi settings<br><br> 该设置包括 WIFI 状态设置,WIFI 搜网和连接到 AP 的功能。你可以使用该方法设置 wifi。<br><br> 2)'''ssh 方式连接 wifi'''<br> 该方法需要使用两个手机。可参考使用Orange Pi 2G-IoT 默认连接到热点名为orangepi 的热点上,连接密码也是 orangepi。使用其中一个手机热点功能,将手机的热点名设置为 orangepi, 热点连接密码为 orangepi,<br> 这样系统启动后就会默认连接到 orangepi热点上。接着使用另外一个手机连接到前一个手机的热点上,并在该手机上使用 “WIFI 助手”工具查看 Orange Pi 2G-IoT 的 IP 地址。<br> 获得 Orange Pi 2G-IoT IP 地址之后,通过在 Linux 主机或者 Windows 主机上使用 SSH 进行远程登录。使用如下命令:<br> ssh orangepi@192.168.xxx.xxx<br> 登录密码都是 orangepi<br> 通过 ssh 登录系统之后,运行如下命令进行路由器连接<br> sudo OrangePi_Settings<br><br> === 烧写 Android 系统到 Nand === Orange Pi 2G-IoT 支持 Nand 启动 Android 系统,也支持更新 Nand 里的 Android系统<br><br> '''1)NAND 启动 Android 系统'''<br><br> 首先通过短接跳线帽,切换系统的启动方式为 NAND<br><br> [[Image:2GIoT-14.png]]<br><br> 连接电源,正常开机,OrangePi 2G-IOT 将从 NAND 启动系统。具体开机操作,请操作步骤 2.<br><br> '''2)升级 NAND 里的 Android 系统'''<br> 首先短接跳接帽为 NAND 启动,并拨动开关为 1234 UP, 5678 Down,如图<br><br> [[Image:2GIoT-15.png]]<br><br> '''3)Windows 上安装烧写工具'''<br> 目前 Nand 烧录工具只支持 Windows 版本,请从 OrangePi 官网下载该工具, 连接为:<br> '''http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-2G-IoT.html'''<br><br> [[Image:Xiazai3.png]]<br><br> '''4)Windows 上安装 USB 驱动'''<br> 解压下载后的工具包,安装 USB 驱动。路径为:<br> '''http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-2G-IoT.html''' <br><br> [[Image:Xiazai3.png]]<br><br> 根据你的平台进行安装,32 位系统安装 x86 USB驱动。64 位系统安装 x64 驱动。<br><br> '''5)下载 NAND 版 Android 镜像'''<br> 下载地址为:<br> http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-2G-IoT.html <br><br> [[Image:Xiazai3.png]]<br><br> '''6)使用烧写工具'''<br> 使用安装包中的烧录工具进行 NAND 烧录<br> */OrangePi_2G-IOT_Toolschain/OrangePi_2G-IOT_NandUpdate_Tools/OrangePi_2G-I OT_Update.e<br><br> [[Image:I96-15.png]]<br><br> 点击 “load BIN”,将从官网下载的 NAND 版Android 镜像导入到工具里。加载完成之后,点击 Download 按钮进行下载。此时,工具正等待 OrangePi 2G-IOT 的下载连接。<br><br> '''7)下载镜像'''<br> 准备好一个根 Android 数据线,先连接到Orange Pi 2G-IoT 的OTG口,接着同时按下电源键 5s不放,将数据线一段连接到 Windows 主机。<br> 此时下载器会显示连接成功并开始下载程序,预计花费 3 分钟。下载完毕之后,重新启动系统,系统就是运行更新后的 Android 系统。<br><br> [[Image:I96-16.png]]<br><br> 注意! 如果一直无法下载,请确认短接帽和开关是否设置正确。<br><br> === ADB 调试无屏模式下的 Android 系统 === * 设置 adb 模式: 将拨动开关拨动为 1234 “UP”,5678 为 “Down”,此时系统处于 adb 模式,该模式下 USB 口不能使用 <br> [[Image:2GIoT-16.png]]<br><br> * 将数据线一端连接 OragnePi 2G-IoT 的 OTG 口,另外一端连接电脑,按下电源键, 系统启动进入 Android 系统。 * 如果主机还未配置 adb,请在网上参考 Ubuntu 或 windows adb 配置教程。在主机终端上使用 adb 命令进行 adb 连接,如下:adb shell * 通过 adb 连接到 OrangePi 2G-IoT 之后,可以参考网上 adb 调试方法使用OrangePi 2G-IOT。 * 推荐使用 Chrome 浏览器插件 Vysor,该工具可以通过 adb 进入 Android 屏幕,如图: [[Image:I96-18.png]]<br><br>[[Image:I96-19.png]]<br><br> === 通用软件配置 === '''1)更改默认账号'''<br> 香橙派默认的登陆账号和密码为 orangepi/orangepi 或 root/orangepi,为了安全, 建议修改这个默认的 orangepi 账号成为你自己的账号,例如 zhangsan,步骤如下: a.root 账号登陆 b.$ usermod -l zhangsan orangepi 修改 orangepi 的账号为 zhangsan<br> [[Image:I96-20.png]]<br><br> c.$ groupmod -n zhangsan orangepi 修改组<br> [[Image:I96-21.png]]<br><br> d.$ mv /home/orangepi /home/zhangsan 把原来 orangepi 目录改掉<br> [[Image:I96-22.png]]<br><br> e.$ usermod -d /home/orangepi orangepi 把这目录设置成 orangepi 用户的 home 目录<br> [[Image:I96-23.png]]<br><br> f.$ cat /etc/passwd [[Image:I96-24.png]]<br><br> 以上修改完后就可以使用新账号 zhangsan 登陆了。<br><br> '''2)配置系统源''' 配置系统源为国内源可以使更新,安装软件时速度更快,下面以 Ubuntu 为例 a.打开源文件 $ sudo vi /etc/apt/sources.list b.编辑源文件 把源文件替换成自己喜欢的源,例如 Ubuntu 16.04 的中科大源为:<br> deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe<br> deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe<br> deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe<br> deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe<br> deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe<br> deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe<br> deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe<br> deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe<br> deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe<br> deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe<br> (注:在此源中xenial字样是版本代号,若是Ubuntu其他版本替换成相应版本代号即可,版本代号可在网上查到)<br><br> '''3)SSH方式登录系统'''<br> 参考 5. 2) 中的通过 SSH 连接 wifi.<br><br> '''4)如何修改ext4 文件系统的大小'''<br><br> 做好系统运行卡之后立即进行文件系统 rootfs 分区的扩展,这将大大提升系统的性能,避免空间不足带来的各种繁琐问题。<br> 在PC机上扩展TF卡的文件系统rootfs分区:<br> 用GParted调整分区的大小:<br> 选择指定盘符,右键相应的盘符,选择“更改大小”调整成自己想要的大小,单击“调整大小”,关闭对话框单击“应用全部操作”,选择应用,完成扩容操作。<br> a.扩大文件系统 i启动到 Linux,umount /dev/sdb1 和/dev/sdb2,若提示磁盘忙的话使用 fuser将正在使用磁盘的程序破坏掉。(推荐使用另外的 Linux 启动盘来引导系统)<br> ii使用 fdisk /dev/sdb 调整分区大小,进去之后,输入 p,记下要扩大分区起始位置的大小。<br> iii输入 d 删除需要变化的分区(我的文件系统是/dev/sdb2,也就是第二个分区) iv 输入 n 建立新分区,注意分区起始位置和之前删除分区保持一致,结束输入你期望的大小。<br> v输入 w 保存分区表<br> vi使用下面命令检查文件系统(保证文件系统没有错误,为修改文件系统做准备):e2fsck -f /dev/sdb2 <br> vii 调整分区大小:resize2fs /dev/sdb2<br> viii 可以挂载一个磁盘分区,看大小是否改变 b.缩小文件系统 i启动到 Linux,umount 掉/dev/sdb1 和/dev/sdb2,若提示磁盘忙的话使用 fuser将正在使用磁盘的程序破坏掉。(推荐使用另外的 Linux 启动盘来引导系统)。<br> ii使用 fsck 检查文件系统(保证文件系统没有错误,为修改文件系统做准备) e2fsck -f /dev/sdb2<br> iii修改文件系统的大小(使用 resize2fs) resize2fs /dev/sdb2 900M数字后面的“s”表示通过扇区数(按每扇区 512 字节算)来指定文件系统的大小。还可以指定 K(KB),M(MB),G(GB)等。<br> iv使用 fdisk /dev/sdb 调整分区大小,进去之后,输入 p,记下要扩大分区起始位置的大小。因为 fdisk 无法动态的修改分区大小,所以只能先删除分区,然后再重建一个小一点的分区(size 要计算好,必须要能容纳下我们在上一步调整后的文件系统)。<br> v输入 d 删除需要变化的分区(我的文件系统是/dev/sdb2,也就是第二个分区) vi 输入 n 建立新分区,注意分区起始位置和之前删除分区保持一致,结束输入你期望的大小。<br>另外,如果你修改的是可引导分区,注意它的可引导标志要保留, 否则可能导致系统无法 boot。 上述方法是使用 fdisk 和 resize2fs 来修改分区和文件系统,也可以使用 gparted。gparted 提供了图形界面,而且它在 resize 分区的同时会帮你 resize 文件系统,用起来更方便,不容易出错。目前官网的 Lubuntu 和 raspbian 暂不可用。<br><br> === GPIO 及 WiringPi 的使用 === '''OrangePi 2G-IOT 上使用 WiringPi'''<br> OrangePi 2G-IOT 已经支持 WiringPi,开发者可以根据本节介绍实现在 OrangePi 2G-IOT 上使用 WiringPi,下图为 OrangePi 2G-IOT 的 40 Pin 定义图。<br><br> a.在 OrangePi 2G-IOT 上下载最新的 OrangePi 版 WiringPi 源码<br><br> [[Image:2GIoT-17.png]]<br><br> 在下载最新源码之前,请确保 OrangePi 2G-IOT 已经成功连接上 wifi 或有线网络,如果未能连接上网络,请参考官方 OrangePi 2G-IOT 用户手册。<br> 在连接网络的情况下,安装必要的工具,开发者可以使用如下命令进行安装:<br> sudo apt-get install git gcc make b.下载最新的源码<br> 开发者可以从 OrangePi 官网 github 上获得 OrangePi 版 WiringPi 最新源码,该项目由官方进行维护。<br> 发者也可以使用如下命令进行下载:<br> env GIT_SSL_NO_VERIFY=true git clone https://github.com/OrangePiLibra/WiringPi.git c.编译并安装 WiringPi<br> 开发者在获得最新的源码后,对源码进行编译并安装,使用如下命令:<br> cd WiringOP/<br> ./build OrangePi_2G-IOT<br> ./build OrangePi_2G-IOT install<br> d.使用 gpio 命令测试 WiringPi<br> 在安装好 WringPi 的 OrangePi 2G-IOT 上,可以使用 gpio 命令对 40 Pin 的GPIO 进行测试。<br> 使用 "gpio readall" 命令打印所有的 WiringPi 管脚映射。从下图所示: OrangePi 2G-IOT 的 40 Pin 引脚映射图。<br> '''BCM 栏数据'''代表硬件实际 GPIO 编号,OrangePi 2G-IOT 共支持 4 组<br> GPIO,每组 32 个引脚,编号从第一组 PA 组开始编号。<br> PA0 对应 BCM 编号为0,PB0 对应 BCM 编号为 32,PC0 对应 BCM 编号为 64,PD0 对应 BCM 编号96, PE0 对应 BCM 编号 128<br> PF0 对应 BCM 编号为 160,PG0 对应 BCM 编号为 192...... PL0 对应 BCM 编号 352。<br><br> '''wPi 栏数据'''代表 wiringPi 定义的引脚,开发者在基于 wiringPi 的 C 库或gpio 命令中, pin 定义应使用这组数据。 如硬件 37 号引脚对应的wiringPi 引脚为 26,开发者通过使用 26 就能操作该引脚。<br> '''Name 栏'''代表硬件 Pin 脚定义的名字。<br> '''Mode 栏'''代表引脚的模式,可以为输入也可以是输出。V 栏代表当前引脚的电压值。<br> '''Physical 栏'''代码是实际的硬件编号。<br><br> [[Image:I96-27.png]]<br><br> * 使用 "gpio export pin mode" 导出一个 wiringPi GPIO 到 /sys/class/gpio 目录下,并设置 GPIO 模式为 mode。 例子如下:<br> 根据上图可知,硬件管脚 29 对应的 WiringPi 管脚为 GPIO 25, 将其导出并设置为输出模式<br><br> [[Image:2GIoT-18.png]]<br><br>[[Image:2GIoT-19.png]]<br><br> * 使用 “gpio unexport pin”取消 pin 导出到 /sys/class/gpio.例子: orangepi# gpio unexport 25<br> [[Image:2GIoT-20.png]]<br><br> * 使用 “gpio exports” 查看当前系统已经导出的 gpio 例子: orangepi# gpio exports<br> [[Image:2GIoT-21.png]]<br><br> * 使用命令 “gpio mode pin mode” 设置 wiringPi 引脚模式。<br> 例子: 设置 wiringPi 25 引脚为输出模式 orangepi# gpio mode 25 out<br> 设置 wiringPi 26 引脚为输入模式 orangepi# gpio mode 26 in<br> * 使用命令 "gpio write pin value" 向输出模式的 pin 写值。<br> 例子: 设置 wiringPi 25 引脚为输出引脚:orangepi# gpio mode 25 out 向 wiringPi 25 引脚写 0:orangepi# gpio write 25 0向 wiringPi 25 引脚写 1:orangepi# gpio write 25 1<br> * 使用命令 "gpio read pin" 读取输入模式 pin 的值。<br> 例子:设置 wiringPi 25 引脚为输入引脚:orangepi# gpio mode 25 in 从 wiringPi 25 中读取值:orangepi# gpio read 25<br><br> [[Image:I96-28.png]]<br><br> * 更多 “gpio” 命令用法,请参考 "gpio -h" 获得。<br> * 使用 WiringPi C 库<br> WiringPi 支持 C 库和 python 库,开发者可以使用 C 语言直接操作 GPIO 口,代码样例位于源码目录 /example/OrangePi/ 目录下。<br> 开发者在 C 代码中使用 GPIO 的简单样例如下: 编写 GPIO 呼吸灯<br><br> [[Image:I96-29.png]]<br> C 库调用 wiringPi 流程基本如下:<br><br> 首先,为了调用 wiringPi C 库,开发者需要导入 <wiringPi.h> 头文件。<br> 接着在使用 GPIO 之前,需要初始化 wiringPi,使用函数 wiringPiSetup() 进行初始化。<br> 然后设置 pin 脚的模式,可以为 INPUT 或 OUTPUT 模式,注意 pin 脚的编号因以wiringPi 定义的为依据。<br> 最后使用 digitalWrite() 和 digitalRead() 对 Pin 进行读写操作。<br><br> === 使用 GSM 上网,打电话和发短信 === 目前官方 OrangePi 2G-IoT Linux 发行版支持 Ubuntu, Debian 和 Raspbian, 这些发新版已经支持 SMS 发短信功能,开发者请到官网<br> (http://www.orangepi.cn/html/serviceAndSupport/index.html) <br> 下载最新的 Linux 发行版镜像。在使用 SMS 功能之前,请自行准备一张移动或联通 SIM 卡,并确保激活可以使用。<br> * SMS 前期准备<br> 准备一张中国联通或移动 SIM 卡,国外开发者可以根据频段选择对应的运用商 SIM 卡,OrangePi 2G-IoT 支持的频段如下:<br> 准好 SIM 卡之后,将其安装到 OrangePi 2G-IoT 卡槽中,注意,OrangePi2G-IoT SIM 卡槽支持 Micro 类型的卡。<br><br> [[Image:2GIoT-22.png]]<br><br> 安装 SIM 卡,注意插入的方向,SIM 卡缺角方向在外侧<br><br> [[Image:2GIoT-23.png]]<br><br> * 登录 Linux<br> 插好卡之后,上电启动 Linux 系统,用户可以使用多种方式连接系统,其中包括串口方式连接,ssh 方式连接等。<br><br> * 如果使用串口方式连接,波特率请设置为 921600。<br><br> [[Image:2GIoT-24.png]]<br><br> 1)多种方式使用 SMS<br> OrangePi 2G-IoT 的 Linux 发行版有多种方式可以使用 SMS 功能,本文重点介绍串口方式和 C 程序方式。<br><br> '''a.串口方式'''<br> 该方式需要在 OrangePi 2G-IOT 上安装串口工具 minicom,开发者可以在OrangePi 2G-IoT 上进行安装,安装之前请确保 OrangePi 2G-IOT 已经连上wifi。<br> 开发者使用如下命令进行 minicom 的安装:<br> sudo apt-get install minicom OrangePi 中 AP 核与 Modem 之间通过串口进行通信,Linux 系统启动之后, 会在 /dev/ 目录下生成 modem0 节点。<br> 开发者可以使用串口工具连接到 /dev/modem0 节点上。其中推荐使用 minicom 进行连接,开发者也可以参照使用其他串口工具。<br> 开发者在使用 minicom 或其他串口工具进行连接时,请参考一下步骤:<br> 在 OrangePi 2G-IOT Linux 系统上使用 minicom 连接 /dev/modem0, 用户可以使用如下命令进行配置<br> sudo minicmo -s 输入命令之后,进入配置界面,如下图,选择 "Serial port setup"<br><br> [[Image:2GIoT-25.png]]<br><br> 按下 “A” 修改 '''Serial Device 为 /dev/modem0'''<br><br> [[Image:2GIoT-26.png]]<br><br> '''b.使用 AT 指令集进行短信的发送'''<br> 首先输入 AT 命令对 Modem 状态进行检查,如果 Modem 回复 OK,表示 Modem 连接正常。<br><br> [[Image:2GIoT-27.png]]<br><br> 接着输入 AT +cfun=1 命令打开 Modem 的全功能, Modem 将返回命令执行的结果<br><br> [[Image:2GIoT-28.png]]<br><br> +CIEV 代表<br> 接着设置短信的明码或暗码方式,例子使用明码方式。<br> 使用 "AT +CMGF=1" 进行指定,设置成功后,Modem 将返回 OK。<br><br> [[Image:2GIoT-29.png]]<br><br> 然后设置消息中心号码,这个设置很重要,如果这个设置不对,信息无法发送。每个城市有不同的消息中心号码,具体消息中心号码,请参考本文关于消息中心号码的介绍。<br> 例如,测试卡所在的城市是'''深圳''',深圳对应的消息中心号码为: '''8613010888500''' 或者 '''008613010888500'''<br> 开发者可以使用 “'''AT+CSCA?'''” 查询当前的消息中心号码,如果消息中心号码与本城市对应的消息中心号码不同,可以使用 '''AT +CSCA="+86xxxxx"''' 指定。<br><br> [[Image:2GIoT-30.png]]<br><br> 最后使用命令 AT +CMGS 进行短信的发送,命令后面紧接要发送的号码,号码以 + 号开始,后接国家编号,具体国家编号可以执行 google,中国编号为 86, 在接上接收方号码。<br> 输入该命令之后,串口会打印 > 提示输出短信的内容,然后开发者输入要发送的内容。<br> 输入完之后,同时按下 Ctrl + Z 来进行短信的发送。<br><br> [[Image:2GIoT-31.png]]<br><br> '''c.C 程序方式发短信'''<br><br> C 代码中发短信的流程与 AT 发端的流程一样,也使用串口和 Modem 进行通信,然后交换 AT 命令。具体流程如下:<br> 首先,初始化串口:<br> [[Image:2GIoT-32.png]]<br><br> 发送 AT 命令函数<br><br> [[Image:2GIoT-33.png]]<br><br> AT 发短信流程<br><br> [[Image:2GIoT-34.png]]<br><br> 完整程序见附录 “'''OrangePi_2G_IOT_GSM_Demo.c'''” <br> 运行 C 程序效果如下:<br><br> [[Image:2GIoT-35.png]]<br><br>[[Image:2GIoT-36.png]]<br><br>[[Image:2GIoT-37.png]]<br><br>[[Image:2GIoT-38.png]]<br><br>[[Image:2GIoT-39.png]]<br><br> 最终,手机收到来自 OrangePi 2G-IOT 的短信。<br><br> [[Image:2GIoT-40.png]]<br><br> * OrangePi_2G_IOT_GSM_Demo.c<br> {| class="wikitable" style="width:800px;" |- | <nowiki>/*</nowiki><br> <nowiki>*</nowiki>OrangePi 2G-IOT GSM Demo<br> <nowiki>/*</nowiki> (C) Copyright 2017 OrangePi<br> <nowiki>/*</nowiki><br> <nowiki>#</nowiki>include <stdio.h><br> <nowiki>#</nowiki>include <stdlib.h> <br> <nowiki>#</nowiki>include <unistd.h> <br> <nowiki>#</nowiki>include <fcntl.h> <br> <nowiki>#</nowiki>include <string.h> <br> <nowiki>#</nowiki>include <termios.h> <br> <nowiki>#</nowiki>include <sys/types.h> <br> <nowiki>#</nowiki>include <sys/stat.h><br><br> <nowiki>#</nowiki>define NR_CITY 30<br> <nowiki>#</nowiki>define MODEM_PATH "/dev/modem0" <br> <nowiki>#</nowiki>define VERSION "0.1.0"<br> struct Centry_number <br> { char *city;<br> char *number;<br> } <br><br> City_Number[NR_CITY] = {<br> { "ShenZhen", "13010888500" },<br> { "Beijing", "13010112500" },<br> { "Shanghai", "13010314500" },<br> { "Shandong", "13010171500" },<br> { "Jiangsu" , "13010341500" },<br> { "Zhejiang", "13010360500" },<br> { "Fujian", "13010380500" },<br> { "Sichuan", "13010811500" },<br> { "Chongqing", "13010831500" },<br> { "Hainan" , "13010501500" },<br> { "Heilongjiang","13010980500" },<br> { "Jilin", "13010911500" },<br> { "Tianjin", "13010130500" },<br> { "Hebei", "13010180500" },<br> { "Inner Mongolia","13010950500" },<br> { "Shanxi", "13010701500" },<br> { "Anhui", "13010305500" },<br> { "Xinjiang", "13010969500" },<br> { "Qinghai", "13010776500" },<br> { "Gansu", "13010879500" },<br> { "Ningxia", "13010796500" },<br> { "Guizhou", "13010788500" },<br> { "Yunnan", "13010868500" },<br> { "Hunan", "13010731500" },<br> { "Hubei", "13010710500" },<br> { "Guangdong", "13010200500" },<br> { "Guangxi", "13010591500" },<br> { "Henan", "13010761500" },<br> { "Jiangxi", "13010720500" },<br> { "Liaoning", "13010240500"},<br> };<br><br> <nowiki>/*</nowiki><br> <nowiki>/</nowiki> Initialize serial<br> <nowiki>/*</nowiki><br> void serial_init(int fd)<br> {<br> struct termios options;<br><br> tcgetattr(fd, &options); <br> options.c_cflag |= (CLOCAL | CREAD); <br> options.c_cflag &= ~CSIZE; <br> options.c_cflag &= ~CRTSCTS; <br> options.c_cflag |= CS8; <br> options.c_cflag &= ~CSTOPB; <br> options.c_iflag |= IGNPAR;<br> options.c_oflag = 0;<br> options.c_lflag = 0; <br> cfsetispeed(&options, B9600); <br> cfsetospeed(&options, B9600); <br> tcsetattr(fd, TCSANOW, &options);<br> }<br><br> void display_message(int direction, const char *message)<br> {<br> if (direction) {<br> printf("Send Message ------> %s\n", MODEM_PATH); printf(">> %s\n", message);<br> } else {<br> printf("Rece Message <------ %s\n", MODEM_PATH); printf("<< %s\n", message);<br> }<br> }<br><br> void Send_AT(int fd, const char *str1, const char *str2, const char *str3)<br> {<br> char buff[128];<br> char answer[128];<br> memset(buff, 0, sizeof(buff)); if (str1 != NULL)<br> strcpy(buff, str1); if (str2 != NULL)<br> strcat(buff, str2); if (str3 != NULL)<br> strcat(buff, str3); write(fd, buff, strlen(buff)); display_message(1, buff);<br><br> memset(answer, 0, sizeof(answer)); sleep(1);<br> read(fd, answer, sizeof(answer)); display_message(0, answer);<br><br> }<br><br> int send(int fd, char *cmgf, char *cmgs, char *csca, char *message)<br> {<br> /* AT Test */ <br> Send_AT(fd, "AT\r", NULL, NULL);<br> /* Set Modem Full Function */ Send_AT(fd, "AT +CFUN=", "1", "\r");<br> /* Set CMGF */<br> Send_AT(fd, "AT +CMGF=", cmgf, "\r");<br> /* Set Message Centr Number */ Send_AT(fd, "AT +CSCA=", csca, "\r");<br> /* Set Receive Number */<br> Send_AT(fd, "AT +CMGS=", cmgs, "\r");<br> /* Send Message */<br> Send_AT(fd, message, NULL, NULL);<br> }<br><br> int Send_Message(int fd)<br> {<br> char buff[128]; char num1[64]; char num2[64]; int i;<br> int choice;<br><br> printf("********* City Select **********\n"); for (i = 0; i < NR_CITY; i++)<br> printf("[%2d] %s\n", i, City_Number[i].city); printf("Please select your City!\n"); scanf("%d", &choice);<br> do {<br> memset(num1, 0, sizeof(num1));<br> printf("\nPlease Entry Receive phone number:\n"); scanf("%s", num1);<br> } while (strlen(num1) != 11);<br><br> sleep(1);<br> memset(buff, 0, sizeof(buff)); printf("Please input Meesage:\n"); scanf("%s", buff);<br> /* Restruct buff */ i = strlen(buff); buff[i] = 0x1A; buff[i+1] = '\r';<br> buff[i+2] = '\0';<br><br> memset(num2, 0, sizeof(num2));<br> strcpy(num2, "+86"); strcat(num2, num1);<br><br> memset(num1, 0, sizeof(num1));<br> strcpy(num1, "+86");<br> strcat(num1, City_Number[choice].number);<br><br> send(fd, "1", num2, num1, buff); } <nowiki>/*</nowiki><br> <nowiki>*</nowiki> Call Phone.<br> <nowiki>/*</nowiki><br> void Call_Phone(int fd)<br> {<br> char buff[128]; char number[20];<br> do {<br> memset(number, 0, sizeof(number)); printf("\nPlease input phone number:"); scanf("%s", number);<br> } while (strlen(number) != 11);<br><br> memset(buff, 0, sizeof(buff));<br> strcpy(buff, "+86"); strcat(buff, number); strcat(buff, ";");<br><br> /* AT Test */<br> Send_AT(fd, "AT\r", NULL, NULL);<br> /* Call */<br> Send_AT(fd, "AT", " DT ", buff);<br> }<br><br> int main(int argc, char *argv[])<br> {<br> int fd; char choice;<br> fd = open(MODEM_PATH, O_RDWR | O_NOCTTY | O_NDELAY);<br> if (fd < 0) {<br> printf("Can't open %s\n", MODEM_PATH); return -1;<br> }<br><br> /* Initialize /dev/modem0 */ serial_init(fd);<br> printf("************************************************\n"); <br> printf("\tWelcome to OrangePi 2G-IOT\n");<br> printf("\tModem version %s\n", VERSION); <br> printf("************************************************\n");<br> printf("Entry your select:\n");<br> printf("1. Send Message\n"); <br> printf("2. Call Phone\n"); <br> printf("3. Exit\n");<br> choice = getchar();<br><br> switch (choice) { case '1':<br> Send_Message(fd); break;<br> case '2':<br> Call_Phone(fd); break;<br> default:<br> break;<br> }<br> close(fd);<br><br> return 0;<br><br> }<br> |} '''2)OrangePi 2G-IOT Linux 发行版打电话'''<br> 目前官方 OrangePi 2G-IoT Linux 发行版支持 Ubuntu, Debian 和 Raspbian, 这些发新版已经支持 SMS 发短信功能,开发者请到官网<br> (http://www.orangepi.cn/html/serviceAndSupport/index.html) <br> 下载最新的 Linux 发行版镜像。在使用 SMS 功能之前,请自行准备一张移动或联通 SIM 卡,并确保激活可以使用。<br> * SMS 前期准备<br> 准备一张中国联通或移动 SIM 卡,国外开发者可以根据频段选择对应的运用商 SIM 卡,OrangePi 2G-IoT 支持的频段如下:<br> 准好 SIM 卡之后,将其安装到 OrangePi 2G-IoT 卡槽中,注意,OrangePi2G-IoT SIM 卡槽支持 Micro 类型的卡。<br><br> [[Image:2GIoT-22.png]]<br><br> 安装 SIM 卡,注意插入的方向,SIM 卡缺角方向在外侧<br><br> [[Image:2GIoT-23.png]]<br><br> 插入耳机<br><br> [[Image:2GIoT-41.png]]<br><br> * 登录 Linux<br> 插好卡之后,上电启动 Linux 系统,用户可以使用多种方式连接系统,其中包括串口方式连接,ssh 方式连接等。<br><br> * 如果使用串口方式连接,波特率请设置为 921600。<br><br> [[Image:2GIoT-24.png]]<br><br> 1)多种方式使用 SMS<br> OrangePi 2G-IoT 的 Linux 发行版有多种方式可以使用 SMS 功能,本文重点介绍串口方式和 C 程序方式。<br><br> '''a.串口方式'''<br> 该方式需要在 OrangePi 2G-IOT 上安装串口工具 minicom,开发者可以在OrangePi 2G-IoT 上进行安装,安装之前请确保 OrangePi 2G-IOT 已经连上wifi。<br> 开发者使用如下命令进行 minicom 的安装:<br> sudo apt-get install minicom OrangePi 中 AP 核与 Modem 之间通过串口进行通信,Linux 系统启动之后, 会在 /dev/ 目录下生成 modem0 节点。<br> 开发者可以使用串口工具连接到 /dev/modem0 节点上。其中推荐使用 minicom 进行连接,开发者也可以参照使用其他串口工具。<br> 开发者在使用 minicom 或其他串口工具进行连接时,请参考一下步骤:<br> 在 OrangePi 2G-IOT Linux 系统上使用 minicom 连接 /dev/modem0, 用户可以使用如下命令进行配置<br> sudo minicmo -s 输入命令之后,进入配置界面,如下图,选择 "Serial port setup"<br><br> [[Image:2GIoT-25.png]]<br><br> 按下 “A” 修改 '''Serial Device 为 /dev/modem0'''<br><br> [[Image:2GIoT-26.png]]<br><br> '''b.使用 AT 指令集进行短信的发送'''<br> 首先输入 '''AT''' 命令对 Modem 状态进行检查,如果 Modem 回复 OK,表示 Modem 连接正常。<br><br> [[Image:2GIoT-27.png]]<br><br> 接着使用 "'''AT DT'''" 命令拨打电话,命令之后紧跟被呼叫的电话号码,并在电话号码前加上国家编号,中国区为 +86。<br> 输入完电话号码之后,以 “;” 结尾,例如 '''AT DT "+86135xxxxxxx;"'''<br> [[Image:2GIoT-42.png]]<br><br> 以上为一次完整的通话过程。 '''c.C 程序方式发短信'''<br><br> C 代码中发短信的流程与 AT 发端的流程一样,也使用串口和 Modem 进行通信,然后交换 AT 命令。具体流程如下:<br> 首先,初始化串口:<br> [[Image:2GIoT-32.png]]<br><br> 发送 AT 命令函数<br><br> [[Image:2GIoT-33.png]]<br><br> AT 发短信流程<br><br> [[Image:2GIoT-34.png]]<br><br> 完整程序见附录 “'''OrangePi_2G_IOT_GSM_Demo.c'''” <br> 运行 C 程序效果如下:<br><br> [[Image:2GIoT-43.png]]<br><br> * OrangePi_2G_IOT_GSM_Demo.c <br> Demo 程序请参考上一节。<br><br> '''3)OrangePi 2G-IOT Linux 发行版 GSM 上网''' 目前官方 OrangePi 2G-IoT Linux 发行版支持 Ubuntu, Debian 和 Raspbian, 这些发新版已经支持 SMS 发短信功能,开发者请到官网<br> (http://www.orangepi.cn/html/serviceAndSupport/index.html) <br> 下载最新的 Linux 发行版镜像。在使用 SMS 功能之前,请自行准备一张移动或联通 SIM 卡,并确保激活可以使用。<br> * SMS 前期准备<br> 准备一张中国联通或移动 SIM 卡,国外开发者可以根据频段选择对应的运用商 SIM 卡,OrangePi 2G-IOT 支持的频段如下:<br> 准好 SIM 卡之后,将其安装到 OrangePi 2G-IOT 卡槽中,注意,OrangePi 2G-IOT SIM 卡槽支持 Nano 类型的卡。<br><br> [[Image:2GIoT-22.png]]<br><br> 安装 SIM 卡,注意插入的方向,SIM 卡缺角方向在外侧<br><br> [[Image:2GIoT-23.png]]<br><br> * 登录 Linux<br> 插好卡之后,上电启动 Linux 系统,用户可以使用多种方式连接系统,其中包括串口方式连接,ssh 方式连接等。具体连接方法,请参考官方 OrangePi 2G-IOT 的用户手册。<br><br> 如果使用串口方式连接,波特率请设置为 921600。<br><br> [[Image:2GIoT-24.png]]<br><br> * 使用开源工具拨号上网<br> OrangePi 2G-IOT 目前支持 ppp 方式上网,其上网基于 ppp 和 wvdial 两个开源工具。<br> 开发者首先在 OrangePi 2G-IOT 上安装这两个开源工具,可使用如下命令: sudo apt-get install ppp wvdial<br> * 配置 wvdial<br> 安装完毕后,对 wvdial 工具进行配置,修改 /etc/wvdial.conf 文件, 如下<br> [Dialer defaults] ISDN = 0 Modem Type = Analog Modem Phone = *99***1# Stupid Mode = 1 Dial Command = ATDT Modem = /dev/modem0 Baud = 460800 Init1 = AT+COPS=0 Init2 = AT+CFUN=1 Init3 = AT+CGATT=1 Init4 = AT+CGDCONT=1,"IP","OrangePi_2G-IOT","",0,0 Init5 = AT+CGACT=1,1 Username = " " Password = " " * 配置 ppp 工具<br> 安装完 ppp 之后,对 ppp 进行配置,修改 /etc/ppp/peers/wvdial 文件, 如下:<br> noauth name wvdial defaultroute replacedefaultroute * 拨号上网<br> 配置好 ppp 和 wvdial 之后,使用命令进行拨号上网,开发者可以使用如下命令:<br> wvdial Tom & [[Image:2GIoT-44.png]]<br><br> 使用 ifconfig 查看网络信息<br><br> [[Image:2GIoT-45.png]]<br><br> 使用 ping 命令测试连通状态<br><br> [[Image:2GIoT-46.png]]<br><br> '''* 中国短信中心号码表'''<br><br> {| class="wikitable" style="width:800px; line-height:35px;" |- ! 城市/省份 !! 短信中心号码1 !! 短信中心号码2 |- | 深圳 || 8613010888500 || 008613010888500 |- | 北京 || 8613010112500 || 008613010112500 |- | 上海 || 8613010314500 || 008613010314500 |- | 山东省 || 8613010171500 || 008613010171500 |- | 江苏省 || 8613010341500 || 008613010341500 |- | 浙江省 || 8613010360500 || 008613010360500 |- | 福建省 || 8613010380500 || 008613010380500 |- | 四川省 || 8613010811500 || 008613010811500 |- | 重庆市 || 8613010831500 || 008613010831500 |- | 海南省 || 8613010501500 || 008613010501500 |- | 黑龙江省 || 8613010980500 || 008613010980500 |- | 吉林省 || 8613010911500 || 008613010911500 |- | 天津市 || 8613010130500 || 008613010130500 |- | 河北省 || 8613010180500 || 008613010180500 |- | 内蒙古自治区 || 8613010950500 || 008613010950500 |- | 陕西省 || 8613010701500 || 008613010701500 |- | 安徽省 || 8613010305500 || 008613010305500 |- | 新疆自治区 || 8613010969500 || 008613010969500 |- | 青海省 || 8613010776500 || 008613010776500 |- | 甘肃省 || 8613010879500 || 008613010879500 |- | 宁夏自治区 || 8613010796500 || 008613010796500 |- | 贵州省 || 8613010788500 || 008613010788500 |- | 云南省 || 8613010868500 || 008613010868500 |- | 湖南省 || 8613010731500 || 008613010731500 |- | 湖北省 || 8613010710500 || 008613010710500 |- | 广东省 || 8613010200500 || 008613010200500 |- | 广西省 || 8613010591500 || 008613010591500 |- | 河南省 || 8613010761500 || 008613010761500 |- | 江西省 || 8613010720500 || 008613010720500 |- | 辽宁省 || 8613010240500 || 008613010240500 |} == Android 及 Linux 源码编译 == '''硬件:'''下图 Orange Pi 开发板一块,读卡器一个,TF卡一张和电源适配器一个<br><br> [[Image:2GIoT-6.png]]<br><br> '''软件:'''Linux主机硬盘空间至少 50G(可满足一次完全编译) Linux<br> 主机中配置要求:<br> Python 的 2.7.3 版本;<br> GNU Make 的 3.81-3.82 版本;<br> JDK 1.6;<br> git 的 1.7 或更高版本;<br> === JDK 的安装 === 1) 从官网上获得编译需要的 JDK 2) 解压获得 jdk-6u31-linux-x64.bin, 将其拷贝到 /opt 目录下 3) 修改 jdk-6u31-linux-x64.bin 的权限,使用如下命令:sudo chmod 755 jdk-6u31-linux-x64.bin 4) 安装 jdk1.6 ./jdk-6u31-linux-x64.bin 5) 配置多版本 java 共存机制,使用如下命令<br> sudo update-alternatives --install /user/bin/java java /opt/jdk1.6.0_31/bin/java 300<br> sudo update-alternatives --install /user/bin/javap javap /opt/jdk1.6.0_31/bin/javap 300<br> sudo update-alternatives --install /user/bin/javac javac /opt/jdk1.6.0_31/bin/javac 300<br> sudo update-alternatives --install /user/bin/jar jar /opt/jdk1.6.0_31/bin/jar 300<br> sudo update-alternatives --install /user/bin/javaws javaws /opt/jdk1.6.0_31/bin/javaws 300<br> sudo update-alternatives --install /user/bin/javapdoc javadoc /opt/jdk1.6.0_31/bin/javadoc 300 6) 切换 java 版本,java 版本选择 1.6。可以使用如下命令:<br> sudo update-alternatives --config java<br> sudo update-alternatives --config javac<br> sudo update-alternatives --config jar<br> sudo update-alternatives --config javap<br> sudo update-alternatives --config javaws<br> sudo update-alternatives --config javadoc 7) 确定 java 版本为 1.6,可以使用如下命令: java -version<br><br> [[Image:I96-31.png]]<br><br> === 安装平台支持软件 === $ sudo apt-get install git gnupg flex bison gperf build-essential \ <br> zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ <br> libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ <br> libgl1-mesa-dev g++-multilib mingw32 tofrodos \<br> python-markdown libxml2-utils xsltproc zlib1g-dev:i386<br><br> $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so === 下载源码 === 官网目前提供了 Android 源码的下载,详细情况请访问官方英文网站:<br> http://www.orangepi.org/html/serviceAndSupport/index.html<br> 或者中文网站:<br> http://www.orangepi.cn/html/serviceAndSupport/index.html<br><br> 下载分两种,一种为 MEGA 上下载,另一种为百度云。<br><br> 1)如果从 MEGA 上下载,请按如下进行解压下载好压缩包<br> <span style=" color:red;">$cat OrangePi_2G-IOT* > tar.tar.gz </span><br> <span style=" color:red;">$ tar –xvzf tar.tar.gz </span><br> 解压出来得到 trunk 目录,使用终端进入该目录<br> 如果从百度云上下载,下载完后进行解压,即可获得 trunk 目录。<br><br> === Android 源码编译 === Android 源码编译之前,请确保 java 已经安装,并且 Java 版本为 1.6. 如果未安装,或者 Java 版本不对,请参考前两节关于 Java 的安装与配置。<br> Java 安装成功之后,客户可以开始编译 Android 源码。<br> 在编译 Android 之前,无论 Tcard Startup 还是 Nand Startup,都需要编译modem。modem 核是 misp 架构,需要使用对应的交叉编译工具。交叉编译工具请从移交任务压缩包进行解压,可以使用如下命令:<br> $ tar -xvjf OrangePi_Doc.tar.bz2<br> $ cd Platform/RDA/modem-cross<br> $ tar -xvzf modem-cross-compiler-linux.tar.gz<br> $ cd cross-compiler <br> 获得相应的工具之后,对 modem 的交叉编译工具进行安装,按如下步骤进行安装<br> 步骤 1:安装交叉编译工具<br> $ sudo tar -xzf ~/modem-cross-compiler-linux.tar.gz -C /opt <br> $ ls /opt/cross-compiler<br> $ sudo chown -R root:root /opt/cross-compiler<br> $ sudo chmod +x /opt/cross-compiler/bin/* <br> 步骤 2:环境编译<br> $ sudo sh -c 'echo export PATH=$PATH:/opt/cross-compiler/bin > /etc/profile.d/cross-compiler.sh'<br> $ sudo sh -c 'echo /opt/cross-compiler/lib > /etc/ld.so.conf.d/cross-compiler.conf'<br> $ sudo ldconfig -v<br> $ sudo ldconfig -v | grep '/opt/cross-compiler/lib'<br> $ mips-elf-gcc -v 1)源码选择<br> 在命令行切换到 Android 源代码下<br> cd */trunk/<br><br> 2)导入开发变量<br> $ source build/envsetup.sh<br><br> 3)选择工程<br> $ lunch<br> 目前 OrangePi 2G-IOT 支持 T-Card 启动和 Nand 启动,不同的启动方式, 选择如下:<br> T 卡启动,请选择 slt-userdebug ,接着选择 NollecA9V2VV8810P_ext4 Nand 启动,请选择 etu-userdebug,接着选择 NollecA9V2VV8810P<br><br> 4)编译系统<br> Make -j<br><br> 5)T 卡启动方式更新镜像<br> T 卡方式启动的 Android 源码编译,在编译完成之后,在*/trunk/out/target/product/slt**/ 目录下会生成对应的镜像, 使用如下命令进行更新:<br> sudo dd if=bootloader.img of=/dev/sdc bs=512 seek=256 count=4096 && sync <br> sudo dd if=modem.img of=/dev/sdc bs=512 seek=12544 count=8192 && sync <br> sudo dd if=boot.img of=/dev/sdc bs=512 seek=20736 count=16384 && sync <br> sudo dd if=recovery.img of=/dev/sdc bs=512 seek=37120 count=20480 && sync<br> sudo dd if=system.ext4.img of=/dev/sdc bs=512 seek=57600 count=512000 && sync <br> sudo dd if=vendor.ext4.img of=/dev/sdc bs=512 seek=569600 count=512000 && sync <br> /dev/sdc 为 SD 卡在系统上的挂载编号<br><br> 6)Nand 系统更新<br> 编译完镜像之后,在目录*/trunk/out/target/product/etu**/ 目录下生成对应的镜像<br> 将生成的镜像使用 Nand 更新工具更新到系统里,具体更新步骤, 请参考本文档关于 Android Nand 更新方法。<br><br> === Linux 源码编译 === OrangePi 2G-IOT 的 Linux 源码已经更新到 github 上,客户可以从 github 上获得最新的源代码。Linux 源码的编译需要在 Linux 下进行,请先准备一台 Linux 电脑,推荐使用 Ubuntu 16.04 系统。准备好电脑之后,按如下步骤进行操作。<br> 1) 下载 Linux 源码<br> Linux 源码已经同步到 github 上,请使用如下命令进行下载:<br> Github 链接:<br> https://github.com/OrangePiLibra/OrangePi<br> 客户也可以使用 git 命令进行同步,如下:<br> git clone https://github.com/OrangePiLibra/OrangePi.git<br> 2) 编译源码<br> 客户在获得源码之后,进入源码目录,可使用如下命令:cd */OrangePi <br> 进入目录之后,运行脚本:./Build_OrangePi.sh<br> 输入 root 密码<br><br> [[Image:I96-32.png]]<br><br> Root 密码输入成功之后,进入主界面,并按回车键<br><br> [[Image:I96-33.png]]<br><br> 在功能界面选择 “Build system with kernel/uboot/rootfs”,并按回车键<br><br> [[Image:I96-34.png]]<br><br> 继续在界面中选择 “OrangePi 2G-IOT”, 并按回车键进行源码更新<br><br> [[Image:I96-35.png]]<br><br> 至此,系统会更新 OrangePi 2G-IOT 的源代码及相关编译脚本。该操作会花费40 分钟左右,请耐心等待。更新完最新的代码之后,系统会在和 OrangePi 同级的目录下生成 OrangePiRDA 目录。该目录包含 Linux 源码和编译脚本,如下图:<br><br> [[Image:I96-36.png]]<br><br> 3) 编译 Linux<br> 在获得最新的 Linux 源码后,进入 OrangePiRDA 目录,运行如下命令:./build.sh<br> 该脚本是一个客户化界面的自动脚本,客户可以根据界面提供的选项,选择要编译的板子,这里选择 “OrangePi 2G-IOT”<br><br> [[Image:I96-37.png]]<br><br> 如果是第一次运行该脚本,系统会自动安装必须的开发工具,请确保网络的联通。<br><br> [[Image:I96-38.png]]<br><br> 安装完工具之后,需要输入 root 密码,正确输入 root 密码并按回车<br><br> [[Image:I96-39.png]]<br><br> 输入完密码之后,系统会进入编译主界面,客户可以根据需求进行选择。<br><br> [[Image:I96-40.png]]<br><br> 该版本目前只支持 Linux 内核的全编译、Linux 内核单独编译和 Linux 模块编译三个选项,选择对应的选项后,系统会进行自动编译。<br><br> [[Image:I96-41.png]]<br><br> 系统编译完成之后,会提示生成的内核镜像和模块位置。<br><br> [[Image:I96-42.png]]<br><br> 4) 更新 Linux 内核和模块<br> 通过编译完上面的步骤之后,客户可以将新的内核和模块更新到开发板上运行。在更新之前,请按第二章“烧写 Linux 镜像”的教程在 SD 卡上烧写一个 Linux 发行版镜像。<br> 烧写完成之后,将 SD 卡重新插入到电脑上,此时,电脑会将 SD 卡识别为两个分区,第一个为 BOOT 分区,里面存储着 uboot,kernel 和 Ramdisk 等文件。第二个为 rootfs 分区,该分区包含根文件系统。<br> 新编译生成的内核位置上面已经给出,将生成的 zImage 文件拷贝到 SD 卡的第一个分区,替换里面的 zImage 文件,至此,新内核更新完成。<br> 同时,新编译生成的模块位置也已经给出,SD 卡第二分区,也就是 Rootfs 分区,将该分区目录下 rootfs/lib/modules/3.xxx 目录删除,该操作可能需要 root 权限, 可使用如下命令:<br> sudo rm -rf */rootfs/lib/modules/3.xxx<br> 新生成的模块拷贝到 rootfs 分区,使用如下命令:<br> <span style=" color:red;">sudo cp -rf */OrangePi_2G-IOT/output/lib/modules/3.xxx*/rootfs/lib/modules/ sync<br> 至此,内核和模块更新完成。<br> 将烧录好的 SD 卡插入 OrangePi,将板子上跳线帽连接图下图,开机即可进入 Linux 系统。</span><br><br> [[Image:2GIoT-47.png]]<br><br> == Orange Pi 驱动程序开发 == 为帮助开发者更加熟悉 Orange Pi,本手册主要描述如何在开发板上使用简单设备驱动模块和应用程序。<br> '''硬件:'''下图Orange Pi开发板一块,读卡器一个,TF卡一张和电源适配器一个<br><br> [[Image:2GIoT-6.png]]<br><br> === 设备驱动和应用程序的编写 === '''1)应用程序(app.c):'''<br> [[Image:I96-45.png]]<br><br> '''2)驱动程序(OrangePi_misc.c)'''<br> [[Image:I96-46.png]]<br><br>[[Image:I96-47.png]]<br><br> === 设备驱动的编译 === OrangePi_misc.c 拷贝到源码目录下<br> */OrangePi_i96/kernel/driver/misc<br> 进入*/OrangePi_i96/kernel/driver/misc<br> 修改当前文件的Makefile(如下图所示)<br><br> [[Image:I96-48.png]]<br><br> 和Makefile同级的文件夹下有Kconfig,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单,在内核配置make menuconfig时候,从Kconfig中读取配置菜单, <br> 用户配置后保存到.config中。在内核编译时,主Makefile调用这个.config,就知道用户对内核的配置情况。<br> 所以Kconfig就是对应着内核的配置菜单。加入要添加新的驱动到内核源码中, 可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就可以在menuconfig里面选择我们驱动是否被编译。<br><br> [[Image:I96-49.png]]<br><br> 回到源码目录下 /OrangePi_2G-IOT <br> $ ./build.sh<br> 参考本文档 Linux 编译步骤,对模块进行编译和更新。将新生产的模块文件更新到 Linux 系统上生对应.ko文件,这就是刚刚的OrangePi_misc.c经过编译之后产生的模块。<br> 插上U盘(注意此时SD卡已经烧好镜像) 如果此时SD卡挂载到系统的/dev/sdc 目录下,SD 将会挂载 rootfs,将 ko 文件更新到系统中/tru具体更新方法,请参考本文档 Linux 编译章节<br><br> [[Image:I96-50.png]]<br><br> === 应用程序的编译方法 === 查询是否有下面这个交叉编译器,没有下载安装 $ arm-linux-gnueabihf-gcc -v<br><br> [[Image:I96-51.png]]<br><br> 编译应用程序,发现所需要的交叉编译器arm-linux-gnueabihf-gcc,网上下载并安装<br><br> [[Image:I96-52.png]]<br><br> 解压并进入解压之后的目录<br><br> [[Image:I96-53.png]]<br><br> 进入 bin 目录下,查看内容<br><br> [[Image:I96-54.png]]<br><br> pwd显示该路径,并将这个路径倒到全局<br><br> [[Image:I96-55.png]]<br><br> $ ll /etc/environment 发现该文件只能读,需要<br> $ chmod 755 /etc/environment<br> 修改权限<br><br> [[Image:I96-56.png]]<br><br> 把路径加入全局环境变量中<br><br> [[Image:I96-57.png]]<br><br> 有了交叉编译器,编译应用程序<br><br> $ arm-linux-gnueabihf-gcc app.c –o aq<br> 之后在目录下产生一个aq的应用程序,将应用程序aq复制到开发板文件系统 (rootfs的/home/orangepi/下)<br> $ cp aq /media/*/home/orangepi/<br><br> === 驱动和程序的运行方式 === 将卡取下,插入开发板,上电开机。<br> 首先要切换成root用户,开发板下加载模块驱动模块<br> $ insmod /lib/modules/orangepi.ko<br><br> [[Image:I96-58.png]]<br><br> $ lsmod 看下是否加载上<br><br> [[Image:I96-59.png]]<br><br> $ ll /dev/orangepimisc(杂项设备自动生成设备文件,具体看驱动代码)<br><br> [[Image:I96-60.png]]<br><br> 执行应用程序(注意应用程序的用法,具体看代码)<br> $ ./aq /dev/orangepimisc == 串口调试工具介绍 == '''硬件:'''下图Orange Pi开发板一块,下图TTL转USB线一根,读卡器一个,TF卡一张和电源适配器一个<br><br> [[Image:2GIoT-6.png]]<br><br>[[Image:2GIoT-53.png]]<br><br> === Windows平台下的操作 === 在使用 OrangePi 做项目开发过程中,为了获得更多的调试信息,OrangePi 默认支持串口信息调试。对于开发者而言,只需准备上面提到的材料,即可简单的获得串口调试信息。<br> 不同的上位机使用的串口调试工具大同小异,基本可以参考下文的方法进行部署。使用Windows平台进行串口调试的工具很多,通常使用的工具是putty。本节以putty作为例子进行部署讲解。<br> Android 波特率设置为 921600<br> Linux 波特率设置为 921600<br><br> '''1)Windows下USB驱动安装'''<br> * 目前最新版的驱动PL2303_Prolific_DriverInstaller_v130.zip,下载解压。<br> [[Image:I96-62.png]]<br><br> * 以管理员身份选择应用程序安装<br> [[Image:I96-63.png]]<br><br> * 等待安装完成<br> [[Image:I96-64.png]]<br><br> '''2)Windows下Putty安装'''<br> * 下载 putty 安装包<br> * 等待安装完成<br> [[Image:I96-65.png]]<br><br> * 等待安装完成<br> [[Image:I96-66.png]]<br><br> * 解压安装<br> * 安装好之后打开程序如下图所示<br> * 等待安装完成<br> [[Image:I96-67.png]]<br><br> '''3)调试的连接方式'''<br> [[Image:2GIoT-51.png]]<br><br> 使用 TTL 转串口线,一端连接 OrangePi,另一端连接 PC<br><br> '''4)设备信息的获取'''<br><br> * 开始菜单选择控制面板<br> [[Image:I96-69.png]]<br><br> * 点击设备管理器,查看端口号<br> [[Image:I96-70.png]]<br><br> * Putty配置<br> [[Image:I96-71.png]]<br><br> 串行口设置成相应的端口号(COM5),速度设置成 921600<br> '''6)调试串口'''<br> OrangePi 上电开机,串口自动打印串口 log<br> [[Image:I96-72.png]]<br><br> === Linux平台下的操作 === 使用Linux平台进行串口调试工具有minicom和kermit。本文以kermit作为例子进行讲解。<br> '''1)Kermit 安装''' * 使用命令进行安装:<br> $ sudo apt-get install ckermit<br> [[Image:I96-73.png]]<br><br> * 配置 kermit<br> $ sudo vi /etc/kermit/kermrc<br> [[Image:I96-74.png]]<br><br> * 添加行:<br> set line /dev/ttyUSB1<br> set speed 921600<br> set carrier-watch off set handshake none<br> set flow-control none<br> robust<br> set file type bin<br> set file name lit<br> set rec pack 1000<br> set send pack 1000<br> set window 5<br><br> [[Image:I96-75.png]]<br><br> '''2)调试的连接方式'''<br> [[Image:2GIoT-52.png]]<br><br> 使用 TTL 转串口线,一端连接 Orange Pi,另一端连接 PC<br><br> '''3)设备信息的获取'''<br> $ ls /dev/ (在 PC 终端输入命令,查询 TTL 转串口线的设备号)<br> [[Image:I96-77.png]]<br> a.从图中可以看出,“TTL 转串口”线被识别为 “ttyUSB0”,配置 /ect/kermit/kermitc文件,更新串口信息。 $ sudo vi /etc/kermit/kermitc<br> b.将 setline 的值设置为 /dev/ttyUSB0 [[Image:I96-78.png]]<br><br> '''4)开始调试串口'''<br> a.在上位机终端输入命令,进入 kermit 模式: $ sudo kermit –c [[Image:I96-79.png]]<br><br> b.Orange Pi 上电开机,串口自动打印串口 log,登录密码为 root/orangepi 和orangepi/orangepi <br> == 下载Orange Pi 2G-IoT用户手册 == <br> 更多关于Orange Pi 2G-IoT的使用信息,请查看 [http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-2G-IoT.html Orange Pi 2G-IoT 用户手册](下载-产品使用说明书)
返回至
Orange Pi 2G-IoT
。