香橙派Orange Pi i96这个主板是香橙派最便宜的一样主板,功能也不少,我觉得可以满足我的需求,如果可以用好的话,可以做很多东西,批量买也便宜,做出来的产品,定价也不用很高,符合效益
但是不知是否由于Orange Pi i96比较便宜(包邮费一共47元)的原因,官方对这个型号的软件代码更新比较慢,在使用的时候会遇到一些问题,没办法走下去。。
我折腾了3天,把问题摸清楚了,记录下来,后人看到避免踩坑
1、系统装好,重启第二次后进不去系统(声卡问题)
2、连接wifi,重启后,一直报wlan相关错误,刷屏,无法操作(网络接收不好问题)
3、gpio无法使用问题(官方说明书里的不用能用,我找客服提供了别的库)
4、串口连接电脑使用时,有时候会显示比较乱(关掉重连)
5、说明书提到的用orangepi热点,是不行的,一定要用ttl转usb线连接电脑登录,再配置wifi
开造
推荐你用官方提供的ubuntu, tf卡烧好后,一定,一定要用串口连接电脑,也只能用串口连接
配置wifi:
nmtui
问题:设置完成后,重启板子,出现无法进入系统的情况。原因一直没有找到。在这里卡了很久,每次都要重新烧录镜像才行。
这里说到了这个问题,因为声卡驱动有问题!
首次进入系统后,不能着急重启,要先把声卡相关的删除。
sudo apt purge alsa-utils
使用以上命令,删除alsa的相关东西,然后才能重启!这点非常重要
配置好wifi,删除声卡相关后重启
问题:重启后啥也没干,就出现这个一直刷,目测是网卡相关问题
还要修改以下wifi的所在地域。
sudo vim /etc/default/crda
查看到里面的内容 REGDOMAIN= 我设置为
REGDOMAIN=US
我想设成中国,但不知道配置啥,网上说配置成us可以,目前看是好使的。
设完之后,还有可能会在 你之前配置的 wifi连接不上的时候,还会继续刷报信息出来,可以不用管,或者移到路由器近一些,就不会再刷了。。。原因是板子的天线接收能力不好,要靠近路由才行,连不上就报错, 或者你换一跟大一点的天线
系统搞定了
问题:gpio readall 查看 用不了
官方提供的安装wiringOP是太老旧了,用不了的,我折腾了很久,安装就报错,无解的
于是问客服,提供了另一种方法,使用一个国外提供的库,我下了回来 放到gitee上面给大家使用
https://gitee.com/yihong-lin/opio-for-orange-i96
用这个就可以了
下回来后执行下面指令
//升权限
su
//授 权
chmod 777 /usr/dotnet/opio/opio readall
//查看gpio
/usr/dotnet/opio/opio readall
出来结果
问题:ssh连接慢,老是断开
在串口转usb模式下 ifconfig 查看网卡ip
用ssh连接,在离路由器远的情况下(尽管手机连接信号很好),会比较慢,断开,都是天线接收网络有限问题
然后我用c#写了代码
sdk用.net6的 官网下载即可 :aspnetcore-runtime-6.0.8-linux-arm.tar.gz
调用,即可以实现继电器的开关
///
/// 由于i96比较特别,不能用wiringOP, 官方推荐以下方法,通过opoi进行i96引脚操作,,
/// 类库为于项目:opio_file下,复制到你的/usr/dotnet/自建目录下面即可 或在线上下载opoi, https://wiki.pbeirne.com/patb/opio
/// https://discuss.96boards.org/t/resources-for-the-i96-orangepi/11444
///
public class Device_OrangeI96_GpioModeService
{
//运行调用例子
public static void test()
{
while (true)
{
Console.WriteLine("输入o打开,输入c关闭");
//控制台中输入内容
string command = Console.ReadLine();
if (!string.IsNullOrWhiteSpace(command))
{
setGpioModeOutPut(28, "on");
}
}
}
///
/// opio存放目录
///
static string opioPath="/usr/dotnet/opio/";
///
/// pin输入高电平或低电平
///
///
///
public static void setGpioModeOutPut(int pin, string state)
{
string command = opioPath+"opio mode " + pin + " out";
processCommond(command);
if (state == "on")
{
command = opioPath + "opio write " + pin + " on";
processCommond(command);
}
else if (state == "off")
{
command = opioPath + "opio write " + pin + " off";
processCommond(command);
}
}
///
/// pin输入高电平或低电平
///
///
///
public static void setGpioModeInPut(int pin, string state)
{
string command = opioPath + "opio mode " + pin + " in";
processCommond(command);
if (state == "on")
{
command = opioPath + "opio write " + pin + " on";
processCommond(command);
}
else if (state == "off")
{
command = opioPath + "opio write " + pin + " off";
processCommond(command);
}
}
///
/// 读取pin值 返回 1 高电平,0低电平
///
///
///
public static string getGpioRead(int pin)
{
string command = opioPath + "opio read " + pin + "";
return processCommond(command);
}
//执行
public static string processCommond(string command)
{
var process = new Process
{
StartInfo = new ProcessStartInfo("/bin/bash", "")
};
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.Start();
process.StandardInput.WriteLine(command);
process.StandardInput.Close();
var cpuInfo = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Dispose();
var lines = cpuInfo.Split('\n');
foreach (var item in lines)
{
Console.WriteLine(item);
}
return cpuInfo;
}
}
代码已开源,里面还有很多关于香橙派和传感器的调用方法
见:
https://gitee.com/yihong-lin/IotDeviceForCsharp.git
搜索
复制