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。
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[编辑 | 编辑源代码]
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中的“工具”->“处理器”)可能有助于解决上传失败的问题。