使用的是国内改过的版本, 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); }