11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry Pi と Arduino をシリアル通信する

Last updated at Posted at 2018-06-30

参考

[RaspberryPiとArduinoを連携する【USBシリアル編】 (uepon日々の備忘録)] (http://uepon.hatenadiary.com/entry/2017/01/01/141220)

環境

スケッチする

Raspberry Pi 上で書いたスケッチを platformio を使って書き込みます。
Raspberry Pi と platformio については以前に記事にしているので興味のある方はそちらをどうぞ。
[CUI で Raspberry Pi から Arduino のスケッチを書き込む(platformio)] (https://qiita.com/ancolin/items/d4291b994c422a01b6b3)

プロジェクトを作る

まずはプロジェクトを作ります。
$ mkdir -p Arduino/Lchika && cd Arduino/Lchika

プロジェクトを構築する

platformio で初期化します。
$ platformio init --board=uno

Arduino の場所を platformio に教えてあげます。
$ echo 'upload_port = /dev/ttyACM0' >> platformio.ini

スケッチする

スケッチを作成します。
$ vi src/Lchika.ino

Lchika.ino
#define LED_PIN 13 /**< LEDを接続したデジタルピン */

void setup()
{
    Serial.begin(9600);
    pinMode(LED_PIN, OUTPUT);
    digitalWrite(LED_PIN, HIGH);
}

void loop()
{
    // シリアル通信で1行(改行コードまで)読み込む
    String inString = Serial.readStringUntil('\n');

    if (inString.startsWith("ON")) {
        Serial.println("<--HI-->");
        digitalWrite(LED_PIN, HIGH);
    }
    else if (inString.startsWith("OFF")) {
        Serial.println("<--LOW-->");
        digitalWrite(LED_PIN, LOW);
    }
}

Python でシリアル通信して L チカする

python コマンドで動作確認しましょう。
$ python

次のようなプロンプトが表示されると思います。

pi@raspberrypi:~/Arduino/Lchika $ python
Python 2.7.13 (default, Nov 24 2017, 17:33:09) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

以下のプログラムを順番に渡してチカチカしちゃいます。

import serial
s = serial.Serial('/dev/ttyACM0', 9600)
s.write("OFF\n")
s.write("ON\n")

順に実行すると以下のような感じになるかと思います。

pi@raspberrypi:~/Arduino/Lchika $ python
Python 2.7.13 (default, Nov 24 2017, 17:33:09) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> 
>>> s = serial.Serial('/dev/ttyACM0', 9600)
>>> 
>>> s.write("OFF\n")
4
>>> 
>>> s.write("ON\n")
3
>>> 

思う存分チカチカしたら終わりましょう。
s.close() して quit() します。

>>> s.close()
>>> quit()
pi@raspberrypi:~/Arduino/Lchika $ 

ちかちかしていただけましたでしょうか。

謝辞

@KeitetsuWorksさんよりシンプルなスケッチを頂戴しましたので、そちらに差し替えさせていただきました。
ありがとうございます。

11
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?