Ubuntu16.04 Arduino UNO R3开发板

2018/02/08 16:49
阅读数 69

使用的是国内改过的版本, usb芯片换成了ch341, 晶振不是原版的16MHz而是12MHz, 杜邦线孔布局和原版一致.

 

设备连接

在Ubuntu16.04下不需要驱动, 能直接认出ch341设备

$ lsmod
Module                  Size  Used by
ch341                  16384  0
usbserial              45056  1 ch341

$ dmesg
...
[16219.440832] usb 2-1.2: new full-speed USB device number 3 using ehci-pci
[16219.550581] usb 2-1.2: New USB device found, idVendor=1a86, idProduct=7523
[16219.550589] usb 2-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[16219.550603] usb 2-1.2: Product: USB2.0-Serial
[16220.585604] usbcore: registered new interface driver usbserial
[16220.585633] usbcore: registered new interface driver usbserial_generic
[16220.585651] usbserial: USB Serial support registered for generic
[16220.588829] usbcore: registered new interface driver ch341
[16220.588951] usbserial: USB Serial support registered for ch341-uart
[16220.588973] ch341 2-1.2:1.0: ch341-uart converter detected
[16220.590330] usb 2-1.2: ch341-uart converter now attached to ttyUSB0

 

开发环境

Arduino下载 https://www.arduino.cc/en/Main/Software Linux 64bit版本 https://downloads.arduino.cc/arduino-1.8.5-linux64.tar.xz

1. 安装: 解压后移动到/opt目录下, 然后sudo ./install.sh 会自动创建应用程序图表

2. 运行Arduino IDE. 在Tools / Board 下选择 Arduino/Genuino UNO, 在Port下选择端口. IDE右下角看到“Arduino XXXX on /dev/XXXX”, 分别指示了当前指定的设备类型和连接的端口. 类型和端口不能选错, 否则无法写入设备.

3. 写入测试代码

void setup() {
  Serial.begin(9600);

}

void loop() {
  Serial.println("Hello World");
  delay(1000);
}

4. 点击左上角的Verify图标检查, 通过后点击右箭头Upload图标上载到开发板
 如果出现 avrdude: ser_open(): can't open device "/dev/ttyUSB0": Permission denied 错误, 则检查一下/dev/ttyUSB0所属的用户组, 将当前用户加入用户组, 执行完后要退出当前登录用户, 再次登录后才有效

$ ll /dev/tty*
crw-rw---- 1 root dialout   4, 73 Feb  8 11:05 /dev/ttyS9
crw-rw---- 1 root dialout 188,  0 Feb  8 16:50 /dev/ttyUSB0

$ sudo usermod -a -G dialout 当前用户名

5. 打开 Tools / Serial Monitor 查看从开发板发来的串口消息, 如果上述步骤正常的话, 就能每隔一秒收到一条"Hello World"数据

开发板LED闪灯测试

开发板自带的发光LED在第13脚, 可以通过以下代码让LED以半秒的间隔亮和灭

int ledPin = 13;
int ledMode = HIGH;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // LED
  if (ledMode == HIGH) {
    ledMode = LOW;
  } else {
    ledMode = HIGH;
  }
  delay(500);
}

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部