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

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

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

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

Arduino

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

Q&A

解決済

1回答

629閲覧

ESP32同士のBluetoothシリアル通信について

PX00

総合スコア1

Bluetooth

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

Arduino

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

0グッド

0クリップ

投稿2023/07/15 06:25

編集2023/07/16 07:06

○ 実現したいこと
ESP32でbluetoothシリアル通信を用いてスイッチを使ったLEDの点灯回路を作りたい。

○ 前提
https://rcj-lightweight.hateblo.jp/entry/try_esp32このサイトを参考にプログラムを書き込みました。
動かしてみると、スイッチを押してもシリアルモニタには「LED-OFF」しか表示されず、LEDの操作ができませんでした。

○エラーメッセージ
エラーは出ていませんでした。

該当のソースコード

ソースコード ~Bluetoothの接続はうまくいっているのでそこは省略します。~ <マスタ> pinMode(15, INPUT_PULLUP); void loop() { if (digitalRead(15) == LOW) { Serial.println("LED is ON."); SerialBT.write('T'); } if (digitalRead(15) == HIGH) { Serial.println("LED is OFF."); SerialBT.write('L'); } delay(20); } <スレーブ> char databox; void loop() { if (SerialBT.available()) { databox = SerialBT.read(); Serial.println(databox); if (databox == 'L') { digitalWrite(13, LOW); } if (databox == 'T') { digitalWrite(13, HIGH); } } delay(20); } ○試したこと ピンの変更 スイッチの動作確認 ○ 補足情報(FW/ツールのバージョンなど) ArduinoIDEバージョン:2.1.1 ESP32:ESP-WROOM-32 ○配線 (マスター) G15ピン→タクトスイッチ→GND (スレーブ) G13ピン→抵抗(330Ω)→LED→GND

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

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

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

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

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

thkana

2023/07/15 09:53

> スイッチを押してもシリアルモニタには「LED-OFF」しか表示されず この時点でBluetooth以前の問題のように思いますがいかが? avoid loop() { if (digitalRead(15) == LOW) { Serial.println("LED is ON."); } if (digitalRead(15) == HIGH) { Serial.println("LED is OFF."); } delay(20); } として、スイッチONして'LED is ON.'が表示されますか? スイッチをピンとVdd間につないでいたりしませんか?
PX00

2023/07/15 13:30

コメントありがとうございます。 スイッチをonにしてもマスター側もスレーブ側もずっとoffのときの処理を行ったままでした。 スイッチの配線は15ピン→スイッチ→GNDのようにつないでいます。
thkana

2023/07/15 21:59

電子工作に手を出そうと言うならテスターぐらい持っているでしょうから、スイッチON/OFFのときのそれぞれの15ピンの電圧を計ってみてください。
PX00

2023/07/16 02:02

おはようございます。 スイッチON-OFFの電圧を測ってみると、どちらも電圧値がほぼ0Vでした。スイッチ自体は正常でした。
thkana

2023/07/16 04:21

> スイッチ自体は正常でした。 なぜそう言えるのかの根拠を教えてください。 > スイッチON-OFFの電圧を測ってみると、どちらも電圧値がほぼ0V それは正常ですか? 異常ですか? 現状の「シリアルモニタには「LED-OFF」しか表示されず」という状況に対して納得できますか?
PX00

2023/07/16 04:38 編集

スイッチが正常であるとお伝えしたのは、スイッチの接点自体がダメになっていなかったよという意味でした。上手くお伝えできず申し訳ありません。 スイッチは、ONで抵抗0Ω、OFFで抵抗∞Ωとなっていたので、スイッチは壊れていないとわかりました。
PX00

2023/07/16 04:35 編集

電圧値がONでもOFFでも0Vであるのは異常であることはわかります。 ただ、ONで0V,OFFで3.3Vになるはずなのにそうならない原因はわからないです。
thkana

2023/07/16 05:48

> そうならない原因はわからない そうですね。現在与えられている情報では(回路についての情報はなにひとつ与えられていないので)私にもわかりません。なにか間違っているはず、とは言えますが。 さらに、電圧が0のはずなのに、プログラムの分岐で if (digitalRead(15) == HIGH) { Serial.println("LED is OFF."); SerialBT.write('L'); } こちらが実行される理由も私にはわかりません。こちらを考えるための情報も皆無です。 自分で調べるとしたら 1. 外部回路の接続を(USB以外)全て取り外し、その状態での15ピンの電圧を測定する。 期待値は3.3Vです。これで0Vなら、基板に異常があるか、電圧の測定方法が正しくないことを疑います。 - 基板の異常は、15ピンを出力ポートにして、いわゆるLチカをしてみることで確認できるでしょう。 - 電圧の測定方法は、同じ操作で3.3V(3V3)端子の電圧を測って3.3Vが得られるかで見当がつくでしょう。 2. 15ピンをGNDに直結し、プログラムの動作を調べる LED is ON. が出力されることが期待値です。出力されないとすれば...基板の異常かマイコンの故障を疑うことになります。基板の異常の検出は前述の通りです。基板に異常がなくて入力を拾えていないのなら...マイコンの故障と考えるしかなくなります。そうそう壊れるものじゃないはずではありますが。
PX00

2023/07/16 07:44

教えて頂いた方法を試しました。 1.Lチカで15ピンの出力電圧を調べると、3.3V 近くを出力しました。 抵抗とLEDをはさみ15ピンとGNDで測定しました。 2.15ピンを直接いれると、スレーブ側のLEDは光りました。 マスタのシリアルモニタには[LED is ON]となり、スレーブのシリアルモニタには[T]が送られていました。 ピンとピンで電圧測定をすると3.3Vが出るのに、スイッチを挟むと0Vとなります。 写真の容量が大きくてはれなかったので文で配線を記します。すいません。 (マスター) G15ピン→タクトスイッチ→GND (スレーブ) G13ピン→抵抗(330Ω)→LED→GND
PX00

2023/07/16 07:45

すいません、原因がわかりました。どうやら自分のつかっているブレッドボードがおかしかったようで、別のブレッドボードで行うとうまくいきました。
guest

回答1

0

自己解決

自分のつかっているブレッドボードが不良品であった。

投稿2023/07/16 09:56

PX00

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.41%

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

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

質問する

関連した質問