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

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

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

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

Arduino

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

Q&A

解決済

1回答

7486閲覧

ESP32を用いたBluetoothによるシリアル通信

talkje

総合スコア7

Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

Arduino

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

0グッド

0クリップ

投稿2019/01/17 06:56

前提・実現したいこと

ArudinoIDEシリアルモニタから、Bluetoothで繋がれたesp32の制御をしたいと考えています。

使用しているデベロッパーボード
https://www.switch-science.com/catalog/3210/

ESP32にはRGBLEDが接続してあります。

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

PCと接続している状態で、シリアルモニタ上でLEDの制御することは成功したのですが、Bluetooth接続したあとにシリアルモニタからの制御ができていない状態です

https://qiita.com/keitasumiya/items/5b4961de169299e902db#serail%E9%80%9A%E4%BF%A1-via-bluetooth

こちらを参考してコード作成しました。

該当のソースコード

java

1#include "BluetoothSerial.h" 2 3BluetoothSerial SerialBT; 4 5int green = 5; 6int red = 16; 7int blue = 17; 8 9bool g = false; 10bool r = false; 11bool b = false; 12 13void setup() { 14 15 pinMode(green, OUTPUT); //green 16 pinMode(red, OUTPUT); //red 17 pinMode(blue, OUTPUT); //blue 18 19 digitalWrite(red, LOW); 20 digitalWrite(green, LOW); 21 digitalWrite(blue, LOW); 22 SerialBT.begin("esp"); 23} 24 25void loop() { 26 27 28 int inputchar; 29 30 // シリアルポートより1文字読み込む 31 inputchar = Serial.read(); 32 33 if (inputchar != -1 ) { 34 // 読み込んだデータが -1 以外の場合 以下の処理を行う 35 36 switch (inputchar) { 37 case 'r': 38 if (r == false) { 39 Serial.print("red ON\n"); 40 digitalWrite(red, HIGH); 41 r = true; 42 } else if (r == true) { 43 Serial.print("red OFF\n"); 44 digitalWrite(red, LOW); 45 r = false; 46 } 47 break; 48 case 'g': 49 if (g == false) { 50 Serial.print("green ON\n"); 51 digitalWrite(green, HIGH); 52 g = true; 53 } else if (g == true) { 54 Serial.print("green OFF\n"); 55 digitalWrite(green, LOW); 56 g = false; 57 } 58 break; 59 case 'b': 60 if (b == false) { 61 Serial.print("blue ON\n"); 62 digitalWrite(blue, HIGH); 63 b = true; 64 } else if (b == true) { 65 Serial.print("blue OFF\n"); 66 digitalWrite(blue, LOW); 67 b = false; 68 } 69 break; 70 } 71 } else { 72 73 } 74 delay(30); 75 76 77} 78 79

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

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

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

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

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

y_waiwai

2019/01/17 07:08

PCと接続している状態、と、Bluetooth接続したあと、というのはどう違うんでしょうか
talkje

2019/01/17 07:17

PCと接続している状態ではそのボードのシリアルポートを選択してシリアルモニタを開いているのですが、 Bluetooth接続後では、新しく作られたシリアルポートを選択してシリアルモニタを開いています。 説明不足ですみません、 https://qiita.com/keitasumiya/items/5b4961de169299e902db#serial%E9%80%9A%E4%BF%A1 とその次の項で説明されています。
y_waiwai

2019/01/17 07:31

その2つの状態の接続の手順を具体的に説明できるでしょうか
talkje

2019/01/17 07:40

1 PCと接続している状態 ESP32をUSBで接続し、portを /dev/cu.usbserial-〇〇 に選択 boardをESPdev Module選択 ボードに書き込み、シリアルモニタを開く。 この際は上記のコードで使っているBluetoothSerial.hは使っておらず、代わりにデフォルト(?)のシリアルを使っています。 2 Bluetoothによる接続 1を行った後から始めると仮定すると、 Bluetoothによるシリアル通信を行うためにコードを書き換える。 (本文にあるコードが書き換え後のコードです。) ボードに書き込み、Mac OSのBluetooth設定からESPを選択し接続する。 Arduinoのポートをcu.ESP32-ESP32_SPP_SERVERに接続してシリアルモニタを開く。
guest

回答1

0

ベストアンサー

BluetoothSerial SerialBT; // Bluetoothのシリアルポートだよ! /* 中略 */ // シリアルポートより1文字読み込む inputchar = Serial.read();

はい、SerialBT使ってないですね。
SerialSerialBTは全くの別窓口です。

投稿2019/01/17 07:37

編集2019/01/17 07:43
ozwk

総合スコア13521

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

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

talkje

2019/01/17 07:56

解決しました、回答していただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問