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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

2回答

6224閲覧

RaspberryPiでBluetoothを生かしつつシリアル通信がしたい

huroku

総合スコア12

Raspberry Pi

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

1クリップ

投稿2018/09/28 09:51

編集2018/09/28 09:57

前提・実現したいこと

RaspberryPiからArduinoにシリアル通信でデータを送りたいです。
その過程でBluetoothを無効化せずにシリアル通信をしたいです。

発生している問題・エラーメッセージ

Arduinoへデータが来てない(つまり、シリアル通信ができてない)様子です。 下のコードでいうならLEDが光らないという状態です。

該当のソースコード

RaspberryPi側

python

1# coding: utf-8 2 3import serial 4import time 5 6ser = serial.Serial('/dev/ttyS0', 115200) 7time.sleep(2) #Arduinoのブート待ち 8print ser.portstr 9while 1: 10 ser.write('a') 11ser.close() 12

Arduino側

Arduino

1#define LED_PIN (3) 2byte val; 3 4void setup(){ 5 Serial.begin(115200); 6 pinMode(LED_PIN, OUTPUT); 7 pinMode(8,OUTPUT); 8 pinMode(9,INPUT); 9 digitalWrite(LED_PIN, LOW); 10 digitalWrite(8,HIGH); 11 //Serial.write(val); 12} 13 14void loop(){ 15 if(Serial.available() > 0){ 16 val = Serial.read(); 17 //Serial.write(val); 18 if(val == 'a'){ 19 if(digitalRead(9)==LOW){ 20 digitalWrite(LED_PIN, HIGH); 21 }else{ 22 digitalWrite(LED_PIN, LOW); 23 } 24 }else{ 25 digitalWrite(LED_PIN, LOW); 26 } 27 } 28}

試したこと

sudo raspi-configにてシリアル通信の設定

/boot/config.txtに「enable_uart=1」と「core_freq=250」と「dtoverlay=pi3-miniuart-bt」を書き込む

ボーレートを115200だけでなく9600なども試す

補足情報

RaspberryPiにはUSB to microUSBのケーブルを差し、USBシリアル変換モジュール(http://akizukidenshi.com/catalog/g/gM-08461/)を介してジャンパー線でArduinoのVin,GND,RXに接続してます

Arduino側からRaspberryPiへはデータを送信しないです

ArduinoとRaspberryPi間でシリアル通信ができたら、後々はRX232Cとシリアル通信をするつもりなので、USB to Type-Bのケーブルを使わない方法を教えていただきたいです
(USB to Type-Bのケーブルを使用したところ、シリアル通信はできました)

PythonもArduino言語もまだまだでプログラマーとして知識も浅く、至らない点も多くありますが、何卒よろしくお願いします

〇〇のファイルを見せてほしい、等ありましたら仰って下さい

また、「このやり方の方がやりやすい/わかりやすいよ」というのがありましたら教えていただきたいです

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

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

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

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

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

guest

回答2

0

ベストアンサー

PCラズパイ間、PC Arduino間でのシリアル通信はできたとのことで、PCとArduinoは多分「USB to Type-Bのケーブル」を使ったと推測して話を進めます。
プログラムを確認したところ、特に問題はなさそうなので...まずは「USB to microUSBのケーブル」と「USBシリアル変換モジュール」が断線等していないかの確認をして、もし断線していないようでしたら他の物に替えてみてください。
USBケーブルには充電専用(データの通信ができない)の物があるということを忘れていませんか?
僕も同じ様な経験をして時間を無駄にしてしまった事があります。

投稿2018/10/02 08:43

itoika

総合スコア19

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

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

huroku

2018/10/02 08:49

確認したところ、両方のケーブルとも断線はしていなかったのですが、貴方の仰るとおりどうやら充電専用のUSBケーブルであることがわかりました。 また、USBシリアル変換モジュールを他のものに変えてやってみたところ、無事にデータ送信ができました! ケーブルやラズパイに相性とかあるんでしょうか...? 本当にありがとうございます。
itoika

2018/10/02 08:52

やはりそうでしたか。 僕は2週間近く無駄にしてしまったので、あなたの被害が少なくすんで良かったです。
guest

0

ラズパイでシリアル通信をしたい、ということであろうかと思いますが、
まずはラズパイとPCをシリアルでつないで双方通信させてみましょう。
それできちんと送受信ができる、というのを確認してからArduinoと接続せさてみましょう。

投稿2018/09/29 09:51

y_waiwai

総合スコア87774

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

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

huroku

2018/10/01 08:32

回答、ありがとうございます。 この質問をする前、ラズパイとPCでやってみたところできたんですが、Arduinoとはできませんでした。
y_waiwai

2018/10/01 08:33

なら次に、ArduinoとPCとでシリアル通信をやってみましょう。それはできるでしょうか
huroku

2018/10/01 10:06

それも質問をする前にやってみましたが、できました。
y_waiwai

2018/10/01 10:25

なら、ラズパイにシリアルターミナルをインストールしてArduinoとシリアル通信をやってみましょう。 できるはずですよね?
huroku

2018/10/02 08:15

シリアルターミナルがLXterminalと同義であるならば無理でした。
y_waiwai

2018/10/02 08:20

PCでやることをラズパイでするだけのはなしですが なら、基本的なところから。 Arduinoで1秒毎に'A'の文字を出力し、それをラズパイのターミナルで受信してみましょう
huroku

2018/10/02 08:22

送受信を逆にするんですか?
y_waiwai

2018/10/02 08:25

逆にします。 ラズパイで送信してArduinoで受信でもいいですが、受信の確認ができないでしょう。 まずはそこから。 それができたら、 Arduinoで受信した文字をそのまま送信するようにして、それをラズパイのターミナルで送受信できるようにします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問