Ubuntu16.04 Arduino UNO R3开发板

时间:2023-03-08 21:44:10

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

Ubuntu16.04 Arduino UNO R3开发板

设备连接

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

$ lsmod
Module Size Used by
ch341
usbserial ch341 $ dmesg
...
[16219.440832] usb -1.2: new full-speed USB device number using ehci-pci
[16219.550581] usb -1.2: New USB device found, idVendor=1a86, idProduct=
[16219.550589] usb -1.2: New USB device strings: Mfr=, Product=, SerialNumber=
[16219.550603] usb -1.2: Product: USB2.-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 -1.2:1.0: ch341-uart converter detected
[16220.590330] usb -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(); } void loop() {
Serial.println("Hello World");
delay();
}

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

$ ll /dev/tty*
crw-rw---- root dialout , Feb : /dev/ttyS9
crw-rw---- root dialout , Feb : /dev/ttyUSB0 $ sudo usermod -a -G dialout 当前用户名

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

开发板LED闪灯测试

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

int ledPin = ;
int ledMode = HIGH; void setup() {
Serial.begin();
pinMode(ledPin, OUTPUT);
} void loop() {
// LED
if (ledMode == HIGH) {
ledMode = LOW;
} else {
ledMode = HIGH;
}
delay();
}