• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【你购物我买单】+UNO Q试用

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矩阵也是非常的好玩。

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

全部回复(0)
正序查看
倒序查看
现在还没有回复呢,说说你的想法