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