Arduino终于推出新品了UNO Q。得捷这边也总是缺货。心心念了好久,终于买到了一块2G内存版本。

板子到手后,连上wifi上电就是要求升级。升级好慢啊!通上电,跑了一夜才算是暂时升级完毕。升级完成后,就可以通过ssh登录板子的linux操作系统了。


在linux下再对操作系统做一下更新。


更新完毕,可以看出这里的linux是使用的Debian操作系统。
既然是一个linux系统,就想尝试一下从linux上去控制开发板。首先找到文件夹/sys/class,可惜在这个文件夹下没有看见GPIO文件夹,意味着没有办法通过文件句柄方式控制板子上的GPIO。

但是看见有个leds文件夹,通过文件可以控制板子右上角的led灯颜色的亮灭。


还有个文件夹i2c-dev,应该是用来控制I2C总线的文件,于是在板子的QCIIC上连接了个i2c设备,然后通过i2cdetect来扫描i2c总线。但是很可惜三个i2c设备树上都没能找到挂载的设备信息。

然后启动arduino编程工具,安装UNO Q的开发板的开发包。

#include <Wire.h>
#define WIRE Wire1
void setup()
{
WIRE.begin();
Serial.begin(115200);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
char buf[20];
Serial.println("Scanning...");
nDevices = 0;
for (address = 1; address < 127; address++)
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
WIRE.beginTransmission(address);
error = WIRE.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address < 16)
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");
nDevices++;
}
else if (error == 4)
{
Serial.print("Unknow error at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(2000); // wait 5 seconds for next scan
}
在Arduino下扫描I2C总线,这里设备是接在QWIIC接口上的,所以这里的I2C总线是wire1总线。串口输出是输出到1脚,所以额外还用了一个USE转TTL模块接到1脚上,然后读取到设备信息。

这里就感觉到这块UNO Q板子,arduino和linux操作系统结合的不是太紧密。arduino中的总线感觉没有加载到linux的内核中。甚至这里我将linux关机后,arduino的I2C_SCAN程序依然正常运行。串口依然有输出。
UNO Q还是一块非常优秀的板子,可以玩arduino,可以玩linux,也可以在linux下玩arduino。只是我还不够熟悉,很多地方还没掌握到。板子上的led矩阵也是非常的好玩。

最后,还是感谢电源网举办的这次活动,能够接触到这最前沿科技的板子。
