Arduino (简体中文)
Arduino 是一款便捷灵活、方便上手的开源电子原型平台。它适用于艺术家,设计师,业余爱好者以及任何对创建交互式对象或环境感兴趣的人。
安装
- 安装 arduino 和 arduino-docs 以便获得离线文档。
- 将用户添加到
uucp
和lock
Users and groups (简体中文) ( 详情#访问串口 )。 - 你可能需要将
cdc_acm
加载到Kernel module (简体中文)。
AVR Boards
要使用Arduino Uno等AVR板,您可以选择安装 arduino-avr-core,以使用Arch Linux上游avr-gcc代替捆绑的旧版avr-core。如果您仍然想使用较旧的arduino-core,则需要将它安装在arduino的开发板管理器中[1]。您始终可以在“工具>面板”菜单中的不同内核之间切换。
Pinoccio Scout
Pinoccio Scouts 也可以使用Arduino IDE编写程序。可以在这里找到相关介绍。 此外你可以通过AUR来安装arduino-pinoccioAUR。
Intel Galileo
要将Intel Galileo开发板与Arch Linux一起使用,请安装Arduino IDE,然后通过“工具->板->板管理器”下载Galileo工具包。 修复安装问题,请访问github。
On Arm7 devices
相关内容可以参考这里。
RedBear Duo
You might need to install perl-archive-zip or you will get an error about missing crc32.
配置
访问串口
arduino开发板通过串口或USB连接到计算机,因此用户需要对串口设备文件具有可读/写访问权限。Udev创建 uucp
组拥有的 / dev / ttyUSB0
之类的文件,因此将用户添加到 uucp
组将提供所需的读/写访问权限。另外,如果您打算使用默认的Java IDE,请将您的用户添加到 lock
组以进行 / var / lock / lockdev
访问。有关详细信息,请参见Users and groups (简体中文)#用户组管理。
在上传固件到Arduino之前,请确保在“工具”菜单中设置正确的串口,开发板类型和处理器。
stty
设置:
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
通过终端发送命令,无换行
# echo -n "Hello World" > /dev/ttyACM0
读取Arduino发送的信息
$ cat /dev/ttyACM0
Arduino-Builder
您也可以使用arduino-builder命令行工具来构建Arduino的内置例程。 为了使用所提供的arduino-avr-core与上游avr-gcc和avrdude你需要创建一个小的设置文件:
build.options.json
{ "fqbn": "archlinux-arduino:avr:uno", "hardwareFolders": "/usr/share/arduino/hardware", "toolsFolders": "/usr/bin" }
通过下面的命令来编译一个内置例程:
$ arduino-builder -build-options-file build.options.json blink.ino
或通过命令行传递所有选项:
$ arduino-builder -fqbn archlinux-arduino:avr:uno -hardware /usr/share/arduino/hardware -tools /usr/bin blink.ino
IDE 替代
ArduIDE
ArduIDE是基于QT的Arduino IDE。已在AUR中可用arduide-gitAUR。
gnoduino
gnoduinoAUR[损坏的链接:package not found]是AUR中可用的GNOME原始Arduino IDE实现。原始的Arduino IDE软件是用Java编写的。这是一个Python的实现,针对GNOME,但可以在xfce4和其他WM上使用。其目的是减轻重量,同时保持与原始Arduino IDE的兼容性。源代码编辑器基于gtksourceview。
如果您更喜欢在终端上工作,则下面还有一些其他选项可供选择。
Arduino-CMake
阅读Arduino-CMake-NG和CMake,您可以在命令行下使用多个构建系统来构建Arduino固件。CMake可以让您使用自己喜欢的工具生成适合您需求的构建系统。它可以生成任何类型的构建系统,从简单的Makefile到Eclipse,Visual Studio,XCode等的完整项目。
要求: cmake, arduino, avr-gcc, avr-binutils, avr-libc, avrdude.
Makefile
除了使用Arduino IDE,还可以使用其他编辑器和Makefile。设置目录以对Arduino进行编程,然后将Makefile复制到该目录中。
可以从/usr/share/arduino/hardware/cores/arduino/Makefile
获取Makefile的副本。
您必须在此稍作修改以反映您的设置。Makefile应该很容易说明。这是您可能需要编辑的几行:
PORT = usually /dev/ttyUSBx, where x is the usb serial port your arduino is plugged into TARGET = your sketch's name ARDUINO = /usr/share/arduino/lib/targets/arduino
根据您在例程代码中调用的库函数,您可能需要编译库的某些部分。为此,您需要编辑SRC和CXXSRC以包括所需的库。
现在,您应该可以make && make upload
编译并上传您的程序到板子了。
Arduino-mk
arduino-mkAUR是另一种Makefile方法。它允许用户使用包含Arduino.mk的本地Makefile。参见project page。
对于Arduino 1.5,请尝试以下本地Makefile(因为Arduino 1.5的库目录结构略有不同):
ARDUINO_DIR = /usr/share/arduino ARDMK_DIR = /usr/share/arduino AVR_TOOLS_DIR = /usr AVRDUDE_CONF = /etc/avrdude.conf ARDUINO_CORE_PATH = /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino BOARDS_TXT = /usr/share/arduino/hardware/archlinux-arduino/avr/boards.txt ARDUINO_VAR_PATH = /usr/share/arduino/hardware/archlinux-arduino/avr/variants BOOTLOADER_PARENT = /usr/share/arduino/hardware/archlinux-arduino/avr/bootloaders BOARD_TAG = uno ARDUINO_LIBS = include /usr/share/arduino/Arduino.mk
在某些情况下,您可能需要安装avr-libc和avrdude。
Scons
结合使用scons和arscons,可以很容易地从命令行编译和上传Arduino项目。 Scons基于python,您将需要python-pyserial才能使用串行接口。安装python-pyserial和scons。
那也将获得您需要的依赖项。您还将需要Arduino本身,因此如上所述安装它。创建项目目录(例如test),然后在新目录中创建arduino项目文件。使用与目录相同的名称并添加.ino(例如test.ino)。从arscons获取SConstruct脚本并将其放在目录中。稍微窥视一下,如有必要,对其进行编辑。这是一个python脚本。根据需要编辑项目,然后运行
$ scons # This will build the project $ scons upload # This will upload the project to your Arduino
PlatformIO
PlatformIO是一个python工具,用于为多个硬件平台构建和上传示例程序,在编写本文时,它们是基于Arduino/AVR的板卡TI MSP430和TI TM4C12x板。作者计划在不久的将来添加一个库功能,该功能允许直接从GitHub搜索和包含库。
安装
安装platformioAUR 或 platformio-gitAUR.
使用
$ platformio platforms install atmelavr $ platformio init $ vim platformio.ini
# # Atmel AVR based board + Arduino Wiring Framework # [env:ArduinoMega2560] platform = atmelavr framework = arduino board = megaatmega2560 upload_port = /dev/ttyACM0 targets = upload
$ platformio run
Emacs
当然可以将Emacs配置为IDE。
从AUR安装软件包emacs-arduino-mode-gitAUR,以便在emacs中启用arduino-mode
。
添加到初始化脚本:
~/.emacs
;; arduino-mode (require 'cl) (autoload 'arduino-mode "arduino-mode" "Arduino editing mode." t) (add-to-list 'auto-mode-alist '("\.ino$" . arduino-mode))
您可以使用M-x compile
make upload
和Arduino-mk
(见上文)来编译和上传程序。
参见: [3].
Troubleshooting
Version 1.6
一些老的第三方工具可能仅适用于Arduino 1.0 (arduino10AUR[损坏的链接:package not found])。部分工具可能只会工作在Arduino version 1.6 (arduino)及更高版本。 如果工具不起作用,请检查版本。请注意,某些较新的开发板不适用于旧的Arduino IDE。
Arduino设备命名
如果您有多个arduino,您可能已经注意到,它们的名称/ dev / ttyUSB [0-9]是按连接顺序分配的。在IDE中,这并不是什么大问题,但是当您编写了自己的软件以在后台与arduino项目进行通信时,这可能会很烦人。使用以下udev规则为arduino分配静态符号链接:
/etc/udev/rules.d/52-arduino.rules
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"
您的arduino将以"/dev/sensors/ftdi_A700dzaF"之类的名称提供。如果您愿意,还可以为多个设备分配更有意义的名称,如下所示:
/etc/udev/rules.d/52-arduino.rules
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"
这将在/dev/arduino/nano中创建到具有指定序列号的设备的符号链接。
您需要将arduino拔出并重新插入才能使它生效或运行。
udevadm trigger
常见的idVendor
/idProduct
对可在发行包中的hardware/arduino/avr/boards.txt
中找到。
请注意,其中一些(尤其是FTDI)并不是Arduino平台所独有的。
使用serial
属性是区分各种设备的好方法。
串口错误
在IDE启动时,您可能最初会看到串行端口,但是在上传固件时,TX/RX指示灯不起作用。您以前可能已经将串口中的波特率更改为了它不喜欢的内容。编辑~/.arduino/preferences.txt,使serial.debug_rate和Arduino设备相匹配。
使用Uno/Mega2560
Arduino Uno和Mega2560具有一个板载USB接口(Atmel 8U2),用来接收串口数据,因此,在USB插入后,可以通过cdc-acm内核模块创建的/dev/ttyACM0来访问它们。
您可以通过将Uno置于环回模式并在115200波特的arduino串行监视器中键入字符来对Uno进行常规功能测试。它应将字符回显给您。要将其置于回送状态,请在数字端短接引脚0->1,并在键入时按住复位按钮或将GND->RESET引脚短路。
Mega2560无法识别USB端口
安装驱动: i2c-ch341-dkmsAUR.
see Java#Gray window, applications not resizing with WM, menus immediately closing
上传失败
将处理器设置从ATmega328P
更改为ATmega328P (Old Bootloader)
(请参阅Arduino IDE中的“工具”->“处理器”)可能有助于解决上传失败的问题。
See also
- Official website
- https://bbs.archlinux.org/viewtopic.php?pid=295312
- https://bbs.archlinux.org/viewtopic.php?pid=981348
- https://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/
- https://www.reddit.com/r/archlinux/comments/8j53dq/how_do_i_install_ch340_chip_drivers_on_arch/