出自 Arch Linux 中文维基

Arduino 是一款便捷靈活、方便上手的開源電子原型平台。它適用於藝術家,設計師,業餘愛好者以及任何對創建交互式對象或環境感興趣的人。

安裝

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 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

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

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中的「工具」->「處理器」)可能有助於解決上傳失敗的問題。

參見