質問編集履歴

3

誤字修正

2021/07/27 23:38

投稿

menshan
menshan

スコア54

test CHANGED
File without changes
test CHANGED
@@ -268,7 +268,7 @@
268
268
 
269
269
  7/28 追記
270
270
 
271
- 引き続き後試行錯誤してボードバージョン 2.0.0-rc1 (リリース予定版)だとサンプルそのままで作する事を確認しました。
271
+ 引き続き後試行錯誤してボードバージョン 2.0.0-rc1 (リリース予定版)だとサンプルそのままで作する事を確認しました。
272
272
 
273
273
  「Devices found:」も正しく件数が出ています。
274
274
 

2

バージョン変更により解決

2021/07/27 23:38

投稿

menshan
menshan

スコア54

test CHANGED
File without changes
test CHANGED
@@ -263,3 +263,59 @@
263
263
  ずっと「Devices found: 0」なのが良く分かりませんがとりあえずだんまり現象は解決できました。
264
264
 
265
265
  皆様、色々情報ありがとうございます。
266
+
267
+
268
+
269
+ 7/28 追記
270
+
271
+ 引き続き後試行錯誤してボードバージョン 2.0.0-rc1 (リリース予定版)だとサンプルそのままで操作する事を確認しました。
272
+
273
+ 「Devices found:」も正しく件数が出ています。
274
+
275
+ ```
276
+
277
+ Devices found: 57
278
+
279
+ Scan done!
280
+
281
+ Advertised Device: Name: , Address: 0a:cd:d5:59:e0:ff, manufacturer data: 06000109200215843bdef33e24d0c4ef10afea45400eb0eff51827d36d
282
+
283
+ Advertised Device: Name: , Address: 7a:b0:91:0b:2d:b7, manufacturer data: 06000109200297ac09f696e93ebb30ad30e3a9a67ef8cc0791999b251c
284
+
285
+ ```
286
+
287
+ また中国の開発元のサイト
288
+
289
+ https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
290
+
291
+ を環境設定の追加のボードマネージャのURLに指定してダウンロードした 1.0.7 というバージョンでも動作する事を確認しました。
292
+
293
+
294
+
295
+ 1.0.7 の方が安定している感じです。
296
+
297
+
298
+
299
+ 開発元版だとボードマネージャの選択項目名が変わり以下の様になっています。
300
+
301
+ ```ここに言語を入力
302
+
303
+ GitHub版
304
+
305
+ ESP32 Arduino
306
+
307
+ M5Stack-Core-ESP32
308
+
309
+ esp32 by Espressif System バージョン 2.0.0-rc1
310
+
311
+ 開発元版
312
+
313
+ M5Stack Arduino
314
+
315
+ M5Stack-Core-ESP32
316
+
317
+ M5Stack by MSStack official バージョン1.0.7
318
+
319
+
320
+
321
+ ```

1

Serial.printf の処理が重い

2021/07/27 23:32

投稿

menshan
menshan

スコア54

test CHANGED
File without changes
test CHANGED
@@ -101,3 +101,165 @@
101
101
 
102
102
 
103
103
  ```
104
+
105
+
106
+
107
+ 7/21 追記
108
+
109
+ その後いろいろ試してみて解決に至りました。
110
+
111
+ 結論としては周辺にBLE機器多すぎて Serial.printf の処理が重くて処理が間に合わずハングアップしていたのが原因でした。
112
+
113
+
114
+
115
+ 最初の状態でシリアルモニタは以下の様になります。
116
+
117
+ ```
118
+
119
+ ets Jun 8 2016 00:22:57
120
+
121
+
122
+
123
+ rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
124
+
125
+ configsip: 0, SPIWP:0xee
126
+
127
+ clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
128
+
129
+ mode:DIO, clock div:1
130
+
131
+ load:0x3fff0018,len:4
132
+
133
+ load:0x3fff001c,len:1216
134
+
135
+ ho 0 tail 12 room 4
136
+
137
+ load:0x40078000,len:10944
138
+
139
+ load:0x40080400,len:6388
140
+
141
+ entry 0x400806b4
142
+
143
+ Scanning...
144
+
145
+ Advertised Device: Name: , Address: 66:21:91:22:61:e5, manufacturer data: 060001092002ee2ebc0b680520079feaebf2a70a9621ef20155c55bcd6
146
+
147
+ Advertised Device: Name: , Address: 62:00:64:ce:af:4f, manufacturer data: 060001092002e000b6c55cf0e375d3c466f632382ef30c084e52ff9812
148
+
149
+ ・・・
150
+
151
+ これが500件ほど続きその後だんまり
152
+
153
+
154
+
155
+ ```
156
+
157
+ コールバック関数の Serial.printf をコメントにして実行
158
+
159
+ ```
160
+
161
+ class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
162
+
163
+ void onResult(BLEAdvertisedDevice advertisedDevice) {
164
+
165
+ //Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
166
+
167
+ }
168
+
169
+ };
170
+
171
+ ```
172
+
173
+ すると
174
+
175
+ ```
176
+
177
+ Scanning...
178
+
179
+ Devices found: 0
180
+
181
+ Scan done!
182
+
183
+ Devices found: 0
184
+
185
+ Scan done!
186
+
187
+ Devices found: 0
188
+
189
+ Scan done!
190
+
191
+ Devices found: 0
192
+
193
+ Scan done!
194
+
195
+ ・・・
196
+
197
+ ```
198
+
199
+ これは!
200
+
201
+ ということで以下の様に変更すると
202
+
203
+ ```
204
+
205
+ std::map<std::string,int> addr_list;
206
+
207
+
208
+
209
+ class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
210
+
211
+ void onResult(BLEAdvertisedDevice advertisedDevice) {
212
+
213
+ //Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
214
+
215
+ addr_list[advertisedDevice.toString()]++;
216
+
217
+ }
218
+
219
+ };
220
+
221
+
222
+
223
+ void loop() {
224
+
225
+ ・・・
226
+
227
+
228
+
229
+ Serial.printf("addr_list counts: %d\n", (int)addr_list.size());
230
+
231
+ for(std::map<std::string,int>::iterator i=addr_list.begin(); i!=addr_list.end(); i++){
232
+
233
+ Serial.printf("%s %d\n", i->first.c_str(), i->second);
234
+
235
+ }
236
+
237
+ ・・・
238
+
239
+ ```
240
+
241
+ 5秒間隔で定期的にメッセージが表示されました。
242
+
243
+ ```
244
+
245
+ Devices found: 0
246
+
247
+ Scan done!
248
+
249
+ addr_list counts: 52
250
+
251
+ Name: , Address: 07:eb:bb:7b:fe:7a, manufacturer data: 060001092002dcdbf26eefcae892515b0091e34f109ea2d762d9f5d88a 5
252
+
253
+ Name: , Address: 0a:4a:ac:28:cf:e7, serviceUUID: 0000fd6f-0000-1000-8000-00805f9b34fb 1
254
+
255
+ Name: , Address: 10:55:c2:e3:a0:6d, serviceUUID: 0000fd6f-0000-1000-8000-00805f9b34fb 3
256
+
257
+ Name: , Address: 16:6f:7a:44:e7:da, serviceUUID: 0000fd6f-0000-1000-8000-00805f9b34fb 3
258
+
259
+ ・・・
260
+
261
+ ```
262
+
263
+ ずっと「Devices found: 0」なのが良く分かりませんがとりあえずだんまり現象は解決できました。
264
+
265
+ 皆様、色々情報ありがとうございます。