質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

1回答

1137閲覧

Raspberry PiからArduinoへのシリアル通信の問題

masa_flyu

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2018/07/31 04:50

前提・実現したいこと

Raspberry Pi 3からArduino DueへUSBを介したシリアル通信で値を送信しようとしています.
以下のコードは10msごとに値を送信するものですが,非常に重く,実行直後は10秒に1つほどしか送れません.その後1秒近くまで縮まりますが,10msには遠く及びません.

ところがコード5行目のシリアル通信の速度を115200から
57600など他の速度に変えると正常に動作します.

これはどうしてでしょうか.

念の為,Arduino側のプログラムを載せますが,Arduino側が受信していようといまいと,速度に変わりはありません.

また,ArduinoからRaspberry Piへの通信はすでに試しており,115200bpsでも問題なく送信できることを確認しています.

USBケーブルが原因??とも思いましたが,片方向は正常に動いている上に,ごく普通の1mのケーブルなので,たかだか115200bpsでどうにかなるものにも思えません.

ArduinoDueからRaspberry Piへの送信は問題なくできました.

該当のソースコード

実行するとエラーなどは出ませんが,whileのループにものすごく時間がかかります.
ser.writeの1行で止まっているようです.

  • Raspberry Pi側コード()

python

1import serial 2import time 3 4def main(): 5 ser = serial.Serial('/dev/ttyACM0', 115200) 6 time.sleep(2) 7 t0 = time.time() 8 9 while True: 10 sendbytes = str(int(4096 * (time.time() - t0) / 5 % 4096)).encode() + b$ 11 ser.write(sendbytes) 12 print(str(int(4096 * (time.time() - t0) / 5 % 4096)) + "." ) 13 time.sleep(0.01) 14
  • 実験の際にArduinoに書き込まれているプログラム

c

1void setup() { 2 //シリアル通信(USB)の設定 3 Serial.begin(115200); 4} 5 6void loop() { 7 if(Serial.available() > 0){ 8 String receiveline = Serial.readStringUntil('.'); 9 Serial.println(receiveline); 10 } 11}

補足情報(FW/ツールのバージョンなど)

  • Raspberry PI 3 Model B
  • Raspbian GNU/Linux 9.4 (stretch)
  • Arduino Due

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

そのシリアルポートのフロー制御の設定が気になりますね。
フロー制御をなしに設定できないでしょうか

投稿2018/07/31 05:11

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問