格安wifiモジュール「esp8266」「esp32」 2個目 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
今、注目の格安wifiモジュール「esp8266」と「esp32」
前スレ
格安wifiモジュール「esp8266」
http://wc2014.2ch.net/test/read.cgi/denki/1432042649/ このチップのBTは不安定すぎて使えない
オマケレベル。 easy esp megaのNormal IR版が特定の板で起動出来ない
dev版やtest版は問題ないんだけども何でやろか?
Wemos NodeMCU V3って言う勝手バージョンらしい怪しい板 8266の頃は、リセット、フリーズ、速度が極端に落ちるとか酷かったけど
32になって問題なくなったってきいたぞ
もう今は使う理由がないから触って無いが 家のはwifi接続が不安定・・
レギュレーターがかなり熱もってる >>462
電源入れる度に挙動が異なる。
特定のAPIで時間が立つと必ずコールバックが帰って来なくなる。
突然リブートするw >>466
ふうん、で、原因はチップにあり、
自分の回路設計は完璧だって自信があるわけね。 wroom02 20個足らず使ってみて、最初動いていたのがいつの間にかダメになっている、
再プログラムができないのとできるのとあるが、まともにWiFi通信できない
というものが10個くらい出てしまった。 標準のプロトコルスタックがBluedroidなんで
これをbtstackに変えてみるとどうだろう
と雑なアドバイス ESP Easyで赤外線受信使ってるんだけど
データの正誤率が半分くらいしかない
センサーのデータシート通りに抵抗とコンデンサ入れてるんだけどな
センサーの実力だろうか? >>470
受信信号オンオフの時間をシリアル出力とかで確認してる?コードとか使ってるセンサがわからんと答えようが無い >>472
こういう奴に限って偉そうにしてるけどクソみたいな間違いをしてる
間違いを認めない
指摘されても謝らない ハードの製にしているけど、ほんとはプログラムが糞何だろうねww 再現する事象ならデバッグ出力ぐらいは確認しろよとは思う。開発環境にバグがある場合もあるけど。古いバージョンのesp8266arduinoでhttpclientのメモリリークのバグに引っかかったときはコード確認しても原因がわからなくて困った。 Rev0とRev1でも大分挙動が違うし
公開されているエラッタだけではない気はするな。
使う機能にもよるが、正直使いにくい。 再現するに必要な最低限の部分だけでもソースを晒したらいいのに
それ出来ないのは、推して知るべしだわなぁ 普通にBLEとかのサンプル実装すれば再現するだろうw サンプルでも落ちると言ってるから待機してるんだけど、まだ? ArduinoIDE でのライブラリはうちでもまだ安定利用できてないけど(centralに使う場合)
明らかにハード関係無いところ(notify コールバック関数の登録とか)でも heap corrupt でリセットかかったりするので
ESP32 の問題ではないような気がしている、が調査中 そいえば、めっちゃ disconnect くらうので(BLE_client の sampleでは端折られている) ClientCallback 入れて onDisconnect を厳しく監視してないと
切断後のオブジェクトを接続前提の操作しようとしてエラーからのリセット行きが多かった
onDisconnect が来るタイミングは毎回違う=毎回挙動が違ってたが、監視入れて、 registerForNotify を呼ばないようにしたらリセットかかるような死に方はなくなった
registerForNotify も通ったり通らなかったりなので調べないとという状況 チップRev何でやってますか?
Rev0に耐えかねてモジュールだけ載せ変えたんですが、またもRev0を引き当ててしまって^_^
これは落とし穴から這い上がるのが好きな人には
たまらない材料かもしれませんね。
もう小休止してNordic蝉を攻めてますが。 こんなところにメモリリークの原因があるとはあまり思えないが
BLEAdvertising.cpp
BLEAdvertisementData::setName
を1100回ぐらい実行するとおかしくなる。
ちなみに独自に関数を追加して
m_payload=="";
して毎回m_payloadは空にしている。
今は
BLEAdvertisementData::addData
でName追加して逃げてる。 >>482
それのどれで落ちるの?
テスターなら、最短の再現手順を示すもんだろ ArduinoIDE で複数の処理を同時にやろうとしたら Heap corrupt というのはたくさん報告があるけど
うちは同時になにもしてないのになぁ……と思っていたが起動直後に時刻合わせに WiFi 使ってたのを放置してたわ
WiFi.disconnect(true); したらBLE 切断ラッシュもなくなり目的のものが完成
無駄電波飛ばさせてた俺がアホってことでおさわがせしました 俺はURL貼った奴では無いけど
URLのUARTのやつを、対抗側と只管ずっとループバックで送受信してただけで、リセット、フリーズ体験したぞ
arduino ideのスケッチ例にあったやつだから、多分URLのUARTのやつ このクラスの石ならArduinoじゃなくて普通にRTOS使ったらアカンの? 俺はURL貼った奴だけど
Rev0チップならどれでも激しく再現する。
Gpio でもバグってるとかゴミw
Rev1チップはそれなりに動くが、ライブラリに
メモリリークがあったり(apiレベルでは今のところ問題は発見してないが)基本apiのコールバックを確認してからつぎのapiに行くように調停しないと安定しない。だからまー今のところそのまんまサンプル動かしても望んだ結果にはならんと思うよ。
それからおんぶに抱っこもここまでだ^_^ Arduino IDE についてるライブラリやサンプルが腐ってるのを >>460 のように言うから反発くらったんじゃないの?っていう >>491
それでも問題ないよ
コンパイラも揃ってるしやって出来なくはない ふつうの頭してたらArduino版のライブラリが腐ってるならESP-IDF版で試そうとするもんだと思うけど 凝った使い方する訳でもなく、サンプルが動かないってところで
環境なりライブラリなり石が問題ってわかるものか?
つかARDUINO IDEのサンプルが不安定とか初めて知ったぞ
でて随分経つのに今でもなのか? 取っ掛かりArduinoの方がやり易いが
結局問題あるとapiまで行くからどっちでも一緒。
サンプルのままではダメだね。
まー生半可動いてるようには見えるけどw IDF版の .c がコンパイルされて .o を経て .a という拡張子なライブラリファイルになってarduino版でリンクされるので
基本的には挙動はIDF版と同じなんだけど、arduinoのライブラリが更新されないという点がarduino版の問題だと思う。 つまり7月から放置されてるのが諸悪の根源って意味ね ただいま、約1時間でWI-FI Clientがフリーズするバグの試験中。 アプリのアクセス周期が100msで、メモリリークが発生していると推測。
楽しいなESP32 Arduino、、、 キターー フリーズ 1時間2分
変な記号羅列が出たのみで、期待していたレジスター表示無し。
client.read()辺りで吹っ飛んでいるようだ。
-------------------------
Client Disconnected.
New Client.
{
"COMMAND": "READ_IN",
"VALUE": ""
}<EOF>[D][WiFiClient.cpp:452] connected(): Disconnected: RES: 0, ERR: 128
Client Disconnected.
New Client.
{
"COMMAND": "READ_IN",
"VALUE": ""
}<EOF>[D][WiFiClient.cpp:452] connected(): Disconnected: RES: 0, ERR: 128
Client Disconnected.
New Client.
---------------------------------------
void loop() {
WiFiClient client = server.available(); // listen for incoming clients
if (client) { // if you get a client,
#ifdef DEBUG
Serial.println("New Client."); // print a message out the serial port
#endif
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected()) { // loop while the client's connected
if (client.available()) { // if there's bytes to read from the client,
char c = client.read(); // read a byte, then
#ifdef DEBUG
Serial.write(c); // print it out the serial monitor
#endif >>506
秋月から購入のDev0開発キット。 Dev1キットは未購入 ガベージコレクション発生しないようにいたわってやれよ >>508
ん? String currentLineのようにスタックに切るなという事? >>505
19028回ですた。
--------------------------------------
Client Disconnected.
New Client.
19027
{
"COMMAND": "READ_IN",
"VALUE": ""
}<EOF>[D][WiFiClient.cpp:452] connected(): Disconnected: RES: 0, ERR: 128
Client Disconnected.
New Client.
19028
{
"COMMAND": "READ_IN",
"VALUE": ""
}<EOF>Guru Meditation Error: Core 0 panic'ed (Interrupt wdt timeout on CPU0)
Core 0 register dump:
void loop() {
WiFiClient client = server.available(); // listen for incoming clients
if (client) { // if you get a client,
#ifdef DEBUG
Serial.println("New Client."); // print a message out the serial port
static long accesscount = 0;
Serial.println(++accesscount);
#endif てか、Core0 Panicってどうなってんの? 使ってねぇぞ。 xTaskCreatePinnedToCoreは・・・ 単につなぎに行って帰ってこないということなら、ルータのNATあふれとか他の原因も
疑うけれど 単純にclient.stop使ってないとかそのあたりかね 海外でESP8266でPC-XTのエミュ作ったと。
Ichigo Jamの互換機くらい作れるなw DebugMode を Debug にしてると思うけど「なし」でも試してみるよろし
違いがあれば、>>508 の可能性 ESP32でI2Cバス二つとタイマーを同時に使えてる方いませんか? esp32
100k〜1MSPSの外部AD使えるのか?
I recently got a task to do using the AD7767 128 kSPS 24-bit ADC.
で
So, I should be getting around 46 ksps. However, practically I only get around 22ksps
しかでてないらしい。
esp32の限界スペックが知りたいのだが
24bitバッファ問題で12bitだと1Mspsでるかな?
Meanwhile, using an ESP32 board that I have, I've tried using the internal
4MB flash memory (GD25Q32C) that's hooked up on the SPI interface to store
ADC data @32ksps (I've used a slower ADC) and.... success. :)
It works with 128ksps too.
SPI接続4MBフラッシュに格納すれば128kspsも成功と(その後バッファあふれて止まるらしい)
12bit 1Mspsできますかね? 40Mhz以上あるのでできるはずだが >>523
まず大量のデータをストレージにキャプチャーする限界性能だが、PSRAM 付きの WROVER 使うとすれば、4bit 80MHz = 40MB/sec だと思うけどね。
バッファが少なかったり、処理がまずいとダメで詰まるわけだが、上限はそれぐらいある。
次に取り込みだが、I2S モジュール を使えということになる。カメラのようにパラレルで取り込むなら、数十Msps が上限。設定だけなら 160MHz でのパラレルキャプチャだったような。
内蔵ADC は、それ自体に上限があるが、多分 数Msps x2同時。2つの ADC を 1ch づつ占有して割り当てれば、安定した値が得られるかも。
外部ADC も I2S 使えば、bitclock 160MHz まで設定できそう。実用になるのは 40MHz ぐらいが上限だと思うけど。
限界スペックと言った時には、とにかく I2S なんでもかんでも I2S だよ。 Meanwhile, using an ESP32 board that I have, I've tried using the internal
4MB flash memory (GD25Q32C) that's hooked up on the SPI interface to store
ADC data @32ksps (I've used a slower ADC) and.... success. :)
Down bellow you'll find the graph. It does correspond to the action that
I was performing on the load cell (3 compressions in a row). It works with 128ksps too.
あなたはグラフを見つけることができます。これは、ロードセルで実行していた
動作(3つの圧縮行)に対応しています。 128kspsでも動作します。
したがって、RAMにバッファを使用してFlashでデータをダンプすることはできますが、
コストはかかります。フラッシュが一杯になるまで、数秒間の録画しかできません。
24bit 128kSPSだと
24x128 000=3072kbit/s=3Mbit/s
4MB flash memory (GD25Q32C
が1秒ちょっとしか持たない。
内部処理する場合にはギリかもしれないが
バッファがあふれないように厳しい制限が必要
GD25Q32C 8ピンで4Mbitこれほしいな 秋月出さないかな(秋月のSRAMは最大1Mbitしかない) なのでスペック上はesp32は24bit 100kSPSは一応出せるらしい。
3Mbit/sなので
12bit 250kSPS=3Mbit/
12bit 500kSPS=6Mbit/
12bit だと250kSPSから500kSPS
AD7472=12bit 1.5Msps もいけるか?
サイクル的には160Mhzで160Mspsの処理は難しいが
10〜20分の1まで処理できるはず。
10Mspsまで対応するはず。2MSPSx8チャンネルとかでなければCPUは大丈夫と
(だいたいのADには対応)
問題はかなりのトラフィックが出るので、それを内部バッファで溜め込んで処理するか
外部に飛ばすかだが、いずれもコストがかかる(高速の装置はここに金かけてるのだろう)
処理するにも、外に保存するにも最低1〜2秒分は貯められるメモリがないと厳しい
SDカード書き込みするにもランダムアクセスより一気にまとめたほうがいいと
PIC24HJだと12bit 500kSPSで普通にできるが、esp32でも代替できるかやってみる >>525
何故 PSRAM 付きの WROVER で設計しないのか?8MB ついて、むしろ安いというのに。
PSRAM は、Flash とよく似た 使い方をする。Quad SPI でアクセスし、MAX 133 MHz で動作する。
Write では、コマンド 8 clock , 24 bit adreess 6 clock に続いて 1 バイト あたり 2 clock で書き込める。
>>526
これも まだSPI 前提だろ。 I2S の standard PCM モード使えば、たぶんいけるんだよ。
I2Sは 定期的に取り込んで FIFO に送り込む。これを DMA でメモリに書いて、DMA で PSRAM に書き込むというのが、普通の使い方だが・・・
面倒だったら ループで FIFO から読み込んで PSRAM に Write するというやり方もできる。
これだけで、正確なタイミングでの読み込みが出来るというのに。 Chip is ESP32D0WDQ6 (revision (unknown 0xa))
これってRev.2? 太陽電池で動かしている人はいますか?
これからやろうと思っているのですが。 >>525
tPP -- Page Programming Time 0.6ms 〜 2.4ms って書いてあるだろ。256B ページだから 最良で 416 KB/sec しか出ないぞ。 >>529
太陽光は不安定すぎるので、パネル→充電回路→バッテリー→マイコンという風にならざるを得ない UnityとESP32をUDPで通信してる人いますか? >>532
継ぎ接ぎだらけの園児ニアなソース書いてるけどやってるよ
何を知りたい? >>533
Unity-ESP32間の通信速度ってどれくらい出ますか? >>534
速度は測った事無いなぁごめん
参考にならないと思うけど
150バイトのデータをunityのMaincameraに貼り付けたスクリプトのupdate()の度(30fps固定)に送受信してて、処理が遅れたことは無い 8266のBSPはamazon freerotsなのに32の方はGPLの古いバージョンなのはなぜですか? >>537
普通のArduinoと同じ、attachInterruptを使えば良いんじゃない? ああ、失礼。割り込みでってところに脊髄反射してしまった。
きっとESP32内臓のパルスカウンタの使い方か。こっちは使ったことないや。 ESP32 パルスカウンタ で検索しただけでqiitaの解説記事二つも出てきたけどまずググろうな reset ピンが必要なものと接続するには、esp32のどこにつなげばいいのだろう… >>540
もちろん2つとも調べてますが割り込みに関してはesp-IDFでの記述しかされていなくてArduino coreでのやり方が書かれてませんでした
同じコードでも動くのでしょうか Arduino IDEで開発できるブツは全部初心者スレが必要な気がしている 結局ライブラリまで行く羽目になる。
初心者にある意味優しいとは言える。 Arduino-ESP32 1.0.0自称安定版に入ってるSDKは古すぎる
それより新しいSDKが入ってる開発版は、ArduinoIDE用クラスライブラリ側がSDK更新に追随してない部分がある
初心者向けになるのは5年後くらいじゃないかね IDFだってサンプル色々あるしArduino coreにこだわる必要はないと思うけどね
サンプルのフォルダコピーして元ソースと同じ所にファイル置いておけば
勝手にまとめてビルドされるし arduino ってmicropython 使えないからなあ〜
espに分がある。 Arduino
移植性に分がある。
甘えが仇になる事もあるけどね ところで、ESPの高コスパはファーウェイに通じるところがあるよね バックドアあけて企業のLANに繋がってるESP32に入ったとして、そこから何ができるかって考えると単体に仕込む意味がなさそう ArduinoじゃなくてESP32の間違いでしたすみません そう言われれば、ESP32でアセンブラ使えるん? インラインでもファイルベースでも、アセンブラ例って見たことない。 ■ このスレッドは過去ログ倉庫に格納されています