次のページを参考にしました。
Arduino CLI Installation
arduino-cliの使い方
RaspberryとArduinoをシリアル通信する
Raspberry PI 4 と、ArduinoUNO を使いました。
- ダウンロード
wget https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_ARMv7.tar.gz
- 解凍
tar xvfz arduino-cli_latest_Linux_ARMv7.tar.gz
次のファイルが出来ました。
27369208 May 14 13:41 arduino-cli
このファイルはそのまま実行ができます。
- バージョンの確認
$ arduino-cli version
arduino-cli alpha Version: 0.18.3 Commit: d710b642 Date: 2021-05-14T12:36:58Z
- ポートの確認
$ ls -al /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Aug 27 01:50 /dev/ttyACM0
- /dev/ttyACM0 を使えるようにする
ユーザーが uchida の場合
sudo adduser uchida dialout
- ボードの確認
$ arduino-cli board list
Port Type Board Name FQBN Core
/dev/ttyACM0 Serial Port (USB) Arduino Uno arduino:avr:uno arduino:avr
/dev/ttyAMA0 Serial Port Unknown
- パッケージのインストール
arduino-cli core install arduino:avr
- Arduino のプログラムの作成
hello_world/hello_world.ino
// ---------------------------------------------------------------
/*
hello_world.uno
Aug/27/2021
*/
// ---------------------------------------------------------------
int count = 0;
// ---------------------------------------------------------------
void setup()
{
Serial.begin(9600);
Serial.println("*** start ***");
}
// ---------------------------------------------------------------
void display_proc(char msg[])
{
Serial.print(msg);
Serial.println(" " + String(count));
delay(2000);
}
// ---------------------------------------------------------------
void loop()
{
display_proc("aaaa");
display_proc("bbbb");
display_proc("cccc");
display_proc("dddd");
display_proc("eeee");
count++;
}
// ---------------------------------------------------------------
- コンパイル
arduino-cli compile --fqbn arduino:avr:uno hello_world
- アップロード
arduino-cli upload -b arduino:avr:uno -p /dev/ttyACM0 hello_world
プログラムはアップロードされるとすぐに実行されます。
- Raspberry Pi で受信
必要なライブラリーのインストール
pip3 install pyserial
受信プログラム
receive.py
#! /usr/bin/python3
import serial
if __name__ == '__main__':
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
ser.flush()
while True:
if ser.in_waiting > 0:
line = ser.readline().decode('utf-8').rstrip()
print(line)
実行結果
$ ./receive.py
*** start ***
aaaa 0
bbbb 0
cccc 0
dddd 0
eeee 0
aaaa 1
bbbb 1
cccc 1
dddd 1
eeee 1
aaaa 2
bbbb 2
cu でも受信できます。
インストール
sudo apt install cu
実行結果
$ cu -s 9600 -l /dev/ttyACM0
Connected.
*** start ***
aaaa 0
bbbb 0
cccc 0
dddd 0
eeee 0
aaaa 1
bbbb 1