問題タブ [arduino-esp32]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arduino - ESP32 で 2 つの I2C と 1 つの UART が同時に動作しない
被験者の加速度、位置、脈拍 + SpO2 を監視する必要があるプロジェクトがあります。そこで、ESP32 を使用して MAX30100 Pulse Oxi センサーと MPU6050 Accelero および Gyroscope センサーからのデータをチェックするために、このプログラムを作成しました -
このプログラムは完全に正常に動作します。まったく問題ありません。
GPSを追加したので、場所も追跡できます。GPS は加速度計と一緒に動作していますが、パルス酸素濃度計センサーは動作していません。出力は 0 で、残りのセンサーは期待どおりの出力を生成しています。そのためのプログラムを以下に示します
これで私を助けてくれませんか。プログラムの何が問題なのですか。
c++ - RTC_NOINIT_ATTR (ESP32) として格納されている場合の C++ int の未定義の動作
VSCode を使用して ESP32 をプログラミングしています。次の簡単なスクリプトがあります。
出力は次のようになると思います。
しかし、代わりに私は得ています:
(ここで、counter2の値はランダムな値です)。int、uint32_tなどのさまざまな組み合わせを試しましたが、それでもランダムな値が得られます。これはRTC_NOINIT_ATTR定義が原因ですが、最終的なアプリケーションに必要なものです。私が別の方法でできることはありますか?
bluetooth - ESP32: BLE の通信速度が非常に遅い
BLE を使用して ESP32 とやり取りする Android アプリを構築しようとしています。Android 側には Vincent Masselis の RxBluetoothKotlin ライブラリを使用しています。ESP32 側では、Arduino IDE に含まれている既定の Kolban ライブラリを使用しています。私の電話は OnePlus 5T で、ESP32 は MH ET Live ESP32DevKIT です。私の Android アプリはここにあり、私の ESP32 プログラムはここにあります。
純粋な機能に関しては、システム全体がほぼ完璧に機能します。つまり、すべてのボタンが本来の機能を果たし、期待どおりの動作が得られます。ただし、通信自体は非常に遅いです。約 200 バイト/秒。Android アプリのテスト ボタンは、ESP32 から一連のテキスト データを要求し、これをダイアログに表示します。また、リクエストから受信までの時間をミリ秒単位で表す数値も表示されます。これを使用すると、440 バイトのデータに対して約 2 秒かかります。より少ないデータを送信すると、時間はデータ サイズにほぼ比例して減少します。40 バイトのデータには約 200 ミリ秒かかり、20 バイト以下では通常 100 ミリ秒未満かかります。
これは私にはかなり遅いようです。私が理解していることから、少なくとも毎秒数キロバイトを取得できるはずです。nRF Connect を使用して速度を確認しようとしましたが、データ転送のタイムスパンは同じ 2 秒です。これは、まったく別のアプリでも問題が発生しているため、問題が私のアプリにないことを示唆しています。代わりにコールバック内のメインループにコードを入れました (おそらく最初にそうすべきだったでしょう) が、これは状況をまったく変えませんでした。干渉を排除することを期待して、マイクロコントローラーと電話をいくつかの異なる場所に持って行こうとしました。Android 側で RxBluetoothGatt.requestMtu(500) を設定するだけでなく、BLEDevice::setPower と BLEDevice::setMTU をいじろうとしました。これまでのところ、すべてがほとんどまたはまったく影響を与えていないようです。何もしなかった唯一のことは、「pServer->updatePeerMTU(0,500);」という行を追加していました。接続フェーズ中の私のループで。これにより、アプリでテスト ボタンを押すたびにデータの最初の 23 バイトが繰り返され、データ転送に約 3 秒かかりました。運が良ければ、440 バイトで 1.8 秒を少し下回る可能性がありますが、1 桁の差が予想される場合、これは非常に小さな変更であり、私が考えたものではなく純粋な偶然によるものでさえある可能性があります。やりました。
転送速度を上げる方法を知っている人はいますか?