BLEを使おうとしたら嵌ったerror: too many asp_ble_gattc_open(esp_gatt_if_t, uint8_t*, bool)’

ESP32の開発環境をArduinoに構築してとりあえず、LEDテープが動作したりするのは確認できたので、bleを使うために最新のライブラリを取り込んでみたのだが、表題のエラーがでる。ソースコードを確認していくと新しいライブラリで新たなincludeディレクトリとしてapiというものが出来ていた。まだBLEが最新版に統合されていない状況で個別にかぶせる形で展開したためにエラーとなる関数のヘッダーが新旧と同時に存在して探索パスの順序から古いものが参照されていたというオチだった。

apiに存在しているもので、上のディレクトリにあったものは削除することで解決した。

私の場合は、D:\User2\Documents\Arduino\hardware\espressif\esp32\tools\sdk\include\bluedroid

ここの下に新しいBLEライブラリはapiというヘッダが作られていた。

Arduino 環境 1.8.5
ESP32 最新版
BLE  0.4.16

Arduinoプラットホーム活用の形?

先日作成した、ショットタイマーの操作アプリの依頼を受けて地元学生に開発アルバイトとして展開している。高専学生のバイトとしては、手頃で勉強にもなるということで、見込みは開発時間は10時間凡そ2日で出来ると踏んで依頼元には見積をしてゴーサインが来たのだった。監修のオーバーヘッドと里の利用費用も加算している。とはいえ破格な汎用に使える今どきの携帯アプリはweb apiで作るとマルチプラットフォームに対応が済むらしい。

1日目は、仕様と開発環境のすりあわせを調査がてらしてもらった。ランチ交え始めたのだったが検討を進めてもらうと実は生憎と作ってあったショットタイマーに付けていたBT2.1世代のモジュールに対応するのは難しいらしくBLEに移行する必要があるらしい。旬のIoT環境で様々な物に対応していくのはそうした事なのだろう。Androidに限れば出来るらしいのだが。

依頼元に確認メッセージを入れて開発に使用したArduinoUNO+BT2.0からの移行提案をプランをいくつか示して問い合わせを入れた。ほどなく回答が届き対応機種を減らしたくないという大本の要望に基づいてBLEへの移行となった。

既に開発段階で採用しかけたものが最近流行りのESP32だったのでこれもしくは他のモジュールにするかは納期と完成度次第ということでアプリ開発アルバイトを進めるために、先ずはベースの環境をIoT Expressに戻して当時課題だったメインデバイスのテープLEDの駆動とピン割り付けなどの変更をした。

テープLED自体は、割り込み制御でイケる感じだった。途中で投げていた環境だったが回路図と皆さんのネット情報には解離があり、少し嵌まったが問題なく解決した。実装としてはもう少し互換性を保つ方法もあるのではないかと思うがいたしかたない。

Arduino Leonardoの再生処置

組み込みの里を始めたころに導入しあったArduino Leonardoだったがラッチアップでも起こしたかのようなふくらみがチップ表面にあってたぶん何かノイズで壊したような経緯があったのだろう。先日Arduino UNO r3についていたATMEGA16AUの故障問題があって張替に挑戦したのだがQFNのリードレスパッケージでは挑戦しても報われなかった。

Arduino Leonardoでは周辺チップの取り込みがなされていてUSBも話せる豪華なチップが乗っている。幸いにもQFPのリードが周囲に出ているタイプなのでチップを張り替えることにした。取り外しにもちいるのは、低温で溶けるタイプの鉛フリー半田LEOなどを使って周辺リードを全て半田で満たしてしまうというやり方だ。ただし、今回のケースではチップ固定するための接着剤が付いていたようで加熱して糊が柔らかくなるのに時間が必要だった。

外した後はフラックスリムーバーで綺麗にしてから交換チップを仮止めするのだが、なかなか位置決めが難しい。4方向のリード位置がOKとなったら1か所のみはんだ付けして固定してから再度確認して良ければ、全体に一気にはんだ付けをして、吸い取り電線で余分な半田を取り去るやり方で進める。

拡大鏡を使って半田付け箇所を確認していき問題がなさそうなので、Fuse設定などを書きこみファームも更新しましたが、最終的にUSB側を挿入してもWindowsが認識しないので、今度はテスターでチップのピンと対応する周辺やランドとの接触を確認して導通試験を試みましたが問題は見つからず。

はてと確認に利用したUSBケーブルを使って携帯とPCを接続しても無反応で携帯のみ充電が開始されました。そう、確認に用いたケーブルの間違いでした。疲れましたが、これを機に充電ケーブルにはマークを付けることにしました。

ローカライズされた中華Arduinoの世界

先日、ArduinoUNOベースで急遽製作納品することになった案件があり当初はAitendoからESP32ベースのIOTExpressを利用する予定だったのだが、ワイヤレス対応の問題から逆にBTユニットとUNOという組み合わせで対応したのだった。偶々、知人から寄贈いただいていた訪問客対応用のUNOがあったのでこれを流用して対応したのだったが、二個新たに購入することにした。

本来は、正規ルートで購入すべきなのだが怖いもの見たさでAliexpress経由で純正互換と見えるもの(CH340Gなどを利用していない)を購入手配してみた。

届いたものは、こちらです。

堂々とホログラムまで入れて中国製造の印刷も入ってます。価格は1500円弱

スイッチサイエンスさんから購入した正規品は、同社のベースに固定してありますが、来たものは個別に進化を遂げていて単体でプラスチックのベースが付いていました。実装した部品のリードなどが当たることもなくなり優しい設計となっていますね。

中国でモノづくりが爆発している中で潮流として活用されているものがArduinoのプラットホームでもあるのでしょう。箱にはwww.arduino.org.cnというサイトが記されていますが本家とは離れて唯我独尊といったたたずまいです。もう何が何だか・・・

二枚購入したのですが、1枚には16Uのファームが正しく書き込まれていなかったようで認識しなかったので、AVRISPとATMEL Studioを用いてファームの更新を行いました。双方とも使えるようになりました。

 

 

ハードディスク復旧交換用の道具

ハードディスクの交換目的でエラーセクタのスキップ機能付きのダビングお立ち台を導入してあった。ダビングの条件は、コピー先のサイズが送り元よりも大きいことだった。サイズ違いの部分は別のパーティションとして作られるようだ。

今回の修理依頼で対象となったマシンはVAIO PCG-71311Nということで、500GBのマシンらしいことがわかり、あらかじめ交換用のHDDを手配していたのだが、どこかで間違えてサイズが320GBの品物を手配してしまったようだった。手もとにあったのは自宅マシンのRAID1用の予備1TB HDDだったが、故障や他の心配から前職で使ってきた512GBのSSDを活用することにした。

1TBのHDD自体も不良が生じているだろうHDDからのデータ救済措置用にダビングして利用する一次領域に用いるといったことで活用した。物理的な時間はかなりかかるのも実情なのだが更新処理が簡単化されるので便利な道具といえるだろうし定常的な予備HDDスタンドとして活用することもできるので、活用していきたい。

パソコンを自分で修理したいという方には測定器同様に活用していただけるようにしておこうと思います。

パソコンの修理

ノートパソコンが壊れて困っている知り合いの方から修理を依頼された。8年間使われたというVAIOのノートパソコンなのだが、立ち上がらなくなったという事だった。パソコンを使っていろいろとコンサルティング事業をされている方なのだが、機械には疎いらしくどうも復旧するにしても搭載してあったオフィスソフトのライセンス情報も持っていないとのことだった。

Windows7で4GBのメモリーと500GBのHDDでCorei5という構成は、まだまだ使えそうな状況だがさすがに8年間もHDDが動いているということのほうが無理がありそうだ。ハードディスクに不良セクターが生じて立ち上がらないということなのだが、怖いのはインストールされているソフトウェアの情報もプロダクトキーもない状態でHDD交換しても何も引き継げないということになってしまう。

OSはWindows10にアップグレードされていたということで、どうもリカバリー領域についても怪しいといことになる。まあ、いまどきのWindows10のサポート状況から考えても8年前のデバイスのドライバーがなくなっていることも想定されたのだが、クリーンインストールで行くことにした。

内蔵のHDDに残されている情報は出来るだけ吸い出す方針でリカバリーソフトのEaseUS Data recoveryに頑張ってもらうことにした。内蔵のSATA500GBを取り出して、エラーセクタースキップをしながらコピーで1TBの予備のHDDに移転した。手配したHDDが手違いで320GBだったのでダビング機能が使えないからでもあった。ただしこれは、データを転写する目的の一時処置として内蔵には中古SSD512GBを渡すことにした。

今はSSDもだいぶ安くなったが、このSSDは当時800$くらいしたように思う。Windows10をクリーンインストールしてマシンとしてはサラッピンになった。もとのディスクはやはりバッドセクターが生じていたようでダビング機械がその旨を表示した形でスキップダビングを翌日には終了していた。ダビングしたHDDのリカバリー領域には元々は工場出荷に戻すデータが登録されていたはずだが、この領域にもバッドセクターが生じていたか、あるいは持ち込まれた方が、「初期化を試みたのですが、途中で失敗していたようです」と少し耳を疑いもしたのだが、そうしたトライをしてしまうのだろうと思いあきらめた。持ち込む前にもう少し説明をするべきだったかもしれない。

アプリとしてのOffice2010もプリインストールされていたらしいのだが、あいにくとメディアもプロダクトキーもないということであきらめてLibre Officeをインストールして対処した。ドネーションのお願いはしておいた。EaseUSで復活出来そうなデータは1TBのHDDを別マシンに接続して解析させて救済した。救済データをWindows10のインストレーションの済んだSSDに転写して再度搭載した。

Windows10のインストール後、ファンの動作音が大きくて冷却がうまくいっていない印象だったのでマシンの放熱系統を外して放熱グリスの更新をした。キムワイプと無水アルコールでクリーンにしてから、放熱グリスを塗布して締め上げた。

冷却ファンの排気ルートは掃除機で埃を吸い取ったが、実際にはひどく詰まっていたわけでもなかった。おそらく、グリスの密着度愛などが課題だったかもしれない。

更新後、マシンを稼働させたところ中古のSSDではあったがスムースな動きをみせて、ファンの音も大きくなることはなかった。廃熱の量は明確にあるので冷却がスムーズになったようだ。携帯と同様にチップの冷却が肝要なのは変わらずなのだ。

 

Core i5のマシンなので、まだしばらくは活躍できそうな印象だった。

サイド点灯型のNEOPIXEL でも注意

電子工作で使うWS2812Bなどが連結されているテープLEDケーブル(NEOPIXEL)にサイド点灯型のものがありましたので、秋葉のピカリ館で買ってきました。1mで60球の仕様なのでそのまま時計の秒針に使えそうな感じですね。

 

試験点灯しようとしたら、コネクタ配列が違っていましたので慌てて工具でピンを入れ替えました。写真は片側だけ入れ替えました。

 

現在は、オスの側も入れ替えてあります。NEOPIXELにはSMシリーズのコネクタが搭載してありますが、ピン配列は毎回確認しないといけないのかもしれません。白がグランド、緑が制御信号、赤が5Vラインということに違いはないのですが・・・注意しましょう。

 

コネクタピン入れ替えの道具

コネクターのピンが統一されずに設定されているケースがあります。WS2812Bが連結している。NeopixelというテープLEDケーブルでもありました。そんな時に活躍する工具です。

モノタロウさんで購入しました。
その名も端子リリースツールセットで幅がいろいろ揃っていて5本セットです。この工具でピン単位で圧入している爪で止まっているタイプのもの(SMコネクターなど)に対応できます。

https://www.monotaro.com/p/0227/8702/?displayId=5

 

夏休み電子工作教室イベントの紹介(木更津市真船)

組み込みの里にも、訪問されてブログラミング教室から更に電子工作に領域を広げていこうされているキットキッズ(CIT Kids)さんですが、夏休みに電子工作の体験教室を開催されます。教材費用はかかりますが、パソコンをお持ちいただいた場合には参加費は無料になるという太っ腹です。Arduino UNO正規品を教材にされてタイマー回路をブレッドボードで作り、ブログラミングと工作の両面で行う体験教室とのことです。講師の方は、母校木更津高専の情報工学科の学生さんが担当されるそうです。予約制とのことですから、詳細はパンフレットをみてください。二時間半のコースだそうです。挑戦の先行きはわからなけれどもね。

7/25 17:45から
7/28    09:30から
8/18 09:30から
8/23 17:45から

パンフレットはこちらから