Arduino (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 Arduino翻译。上次翻译日期:2019-12-17。如果英文版本有所更改,则您可以帮助同步翻译。

Arduino 是一款便捷灵活、方便上手的开源电子原型平台。它适用于艺术家,设计师,业余爱好者以及任何对创建交互式对象或环境感兴趣的人。

安装

AVR Boards

要使用Arduino Uno等AVR板,您可以选择安装 arduino-avr-core,以使用archlinux上游avr-gcc代替捆绑的旧版avr-core。如果您仍然想使用较旧的arduino-core,则需要将它安装在arduino的开发板管理器中[1]。您始终可以在“工具>面板”菜单中的不同内核之间切换。

Pinoccio Scout

Pinoccio Scouts 也可以使用Arduino IDE编写程序。可以在这里找到相关介绍。 此外你可以通过AUR来安装arduino-pinoccioAUR

Intel Galileo

要将Intel Galileo开发板与Archlinux一起使用,请安装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 IDE,屏幕,picocom ...)直接与您的板通信,则需要禁用此功能。如果您有Leonardo面板,则不必担心,因为它不会自动重置。如果您有Uno板,请在RESET和GND引脚之间连接一个10 µF电容器。如果有另一块板,则在RESET和5V引脚之间连接一个120欧姆的电阻。 有关更多详细信息,请参见 https://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection

读取Arduino发送的信息

$ cat /dev/ttyACM0

Arduino-Builder

您也可以使用arduino-builder命令行工具来构建Arduino的内置例程。 为了使用所提供的arduino-avr-core与上游avr-gccavrdude你需要创建一个小的设置文件:

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-NGCMake,您可以在命令行下使用多个构建系统来构建Arduino固件。CMake可以让您使用自己喜欢的工具生成适合您需求的构建系统。它可以生成任何类型的构建系统,从简单的Makefile到Eclipse,Visual Studio,XCode等的完整项目。

要求: cmake, arduino, avr-gcc, avr-binutils, avr-libc, avrdude.

Makefile

注意: 更新2015-03-23。由于Arduino≥v1.5中的最新更改,许多旧的Makefile在不进行某些修改的情况下无法正常工作。可以在GitHub上找到一个简单的Arduino 1.5+版本的Makefile [2]

除了使用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-libcavrdude

Scons

结合使用sconsarscons,可以很容易地从命令行编译和上传Arduino项目。 Scons基于python,您将需要python-pyserial才能使用串行接口。安装python-pyserialscons

那也将获得您需要的依赖项。您还将需要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搜索和包含库。

安装

安装platformioAURplatformio-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 uploadArduino-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.

Application not resizing with WM, menus immediately closing

see Java#Gray window, applications not resizing with WM, menus immediately closing

上传失败

将处理器设置从ATmega328P更改为ATmega328P (Old Bootloader) (请参阅Arduino IDE中的“工具”->“处理器”)可能有助于解决上传失败的问题。

See also