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

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

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

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

Arduino

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

Q&A

2回答

6957閲覧

ESP-32を用いたBLE通信

42kyabetu

総合スコア6

Bluetooth

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

Arduino

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

0グッド

0クリップ

投稿2018/07/30 02:13

編集2022/01/12 10:55
```### 前提・実現したいこと ESP-32を用いて加速度センサーの値をbluetooth通信によりシリアルモニタに表示させる arduino環境で加速度センサーの値をESP-32を用いてbluetooth通信によりシリアルモニタに表示させるシステムを作っています。ボードに書き込み、実行すると通信は繋がるのですが加速度の値の変化が読み取れず、一定の値が表示され続けてしまいます。bluetooth通信ではなく有線であればセンサーの値の変化も正確に表示できている状況です。 ### 発生している問題・エラーメッセージ

エラーメッセージなどは表示されていません。

実際にシリアルモニタ表示される文字列

x:175.0xg y:175.0yg z:175.0zg
上記の値が変化することなく表示され続けます。

### 該当のソースコード

#include "BluetoothSerial.h"

BluetoothSerial bt;
const char *bt_name = "ESP32";

int S1_PIN = 4;
int S2_PIN = 13;
int S3_PIN = 14;

void setup() {
Serial.begin(115200);
bt.begin(bt_name);

pinMode(S1_PIN, OUTPUT);
pinMode(S2_PIN, OUTPUT);
pinMode(S3_PIN, OUTPUT);

}

void loop() {

// 地球の重力である1Gの加速度(m/s^2)
float ms2 = 9.80665;

// 電源電圧5V時のオフセット電圧(0G = 2.5V = 2500mV)
float offset_voltage = 2500.0;

// XYZの電圧(mV)を取得する
float x = (analogRead(S1_PIN) / 1024.0) * 5.0 * 1000;
float y = (analogRead(S2_PIN) / 1024.0) * 5.0 * 1000;
float z = (analogRead(S3_PIN) / 1024.0) * 5.0 * 1000;

// XYZからオフセット電圧を引いた電圧を求める
x = x - offset_voltage;
y = y - offset_voltage;
z = z - offset_voltage;

// XYZから重力を求める
float xg = x / 1000.0;
float yg = y / 1000.0;
float zg = z / 1000.0;

// XYZの重力から加速度(m/s^2)を算出して出力する
bt.print("X : ");
bt.print(xg * ms2);
bt.print(" Y : ");
bt.print(yg * ms2);
bt.print(" Z : ");
bt.print(zg * ms2);
bt.println(" m/s^2");

delay(100);
}

### 試したこと 加速度センサーの表示させる値を三軸ではなくX軸のみで行い、データ量を少なくしましたが効果はありませんでした。 ### 補足情報(FW/ツールのバージョンなど) ```ここに言語を入力 int S1_PIN = 4; int S2_PIN = 13; int S3_PIN = 14; void setup() { Serial.begin(115200); pinMode(S1_PIN, OUTPUT); pinMode(S2_PIN, OUTPUT); pinMode(S3_PIN, OUTPUT); } void loop() { // 地球の重力である1Gの加速度(m/s^2) float ms2 = 9.80665; // 電源電圧5V時のオフセット電圧(0G = 2.5V = 2500mV) float offset_voltage = 2500.0; // XYZの電圧(mV)を取得する float x = (analogRead(S1_PIN) / 1024.0) * 5.0 * 1000; float y = (analogRead(S2_PIN) / 1024.0) * 5.0 * 1000; float z = (analogRead(S3_PIN) / 1024.0) * 5.0 * 1000; // XYZからオフセット電圧を引いた電圧を求める x = x - offset_voltage; y = y - offset_voltage; z = z - offset_voltage; // XYZから重力を求める float xg = x / 1000.0; float yg = y / 1000.0; float zg = z / 1000.0; // XYZの重力から加速度(m/s^2)を算出して出力する Serial.print("X : "); Serial.print(xg * ms2); Serial.print(" Y : "); Serial.print(yg * ms2); Serial.print(" Z : "); Serial.print(zg * ms2); Serial.println(" m/s^2"); delay(100); }

上記のBLE回線を使用しないコードであれば値の変化を正しく読み取れるので配線に問題はないと思われます。

arduino ide
ESP32-DevKitC ESP-WROOM-32開発ボード
三軸加速度センサー

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

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

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

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

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

y_waiwai

2018/07/30 02:19

実際にどういう文字列が送られているのか提示してください
guest

回答2

0

BLEで通信する相手は?仮にスマホならば通信ソフトは?
またESP32側に接続に必要な記述がないのですが。。

参考にはESP32用にArduinoIDEを設定すればBLEサンプルがあるので接続部分はこれを参考に。

投稿2018/07/30 06:47

MasahikoHirata

総合スコア3747

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

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

0

なんか、コードと実際に送信されるメッセージが違うのが気になりますが、

それはともかく、

計算結果を流すのではなく、直接analogRead(...)の値を出力してみて、それが変化するかをみてみたらどうでしょうか。
それも変化しない、という場合はアナログ入力回路がなにかおかしなことになってそうな気がしますが。

投稿2018/07/30 02:42

y_waiwai

総合スコア87719

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問