Crescentスマートフォン専用ページを表示Crescentあると毎日がハッピーになるちょっと未来なデバイスやモノづくりのノウハウを発信、提案します。Toolを紹介しました。Toolを実装してみました。対応するADコンバータはMicrochip社製のMCP3208、MCP3204に対応しています。ADコンバータの動作確認や接続確認等に便利です。接続後、Start/Stopボタンを押すと各チャンネルを順番に200msec毎に変換して電圧値が更新されます。APIに対応したブラウザはEdgeもしくはChromeのみ対応となっており、24年9月時点ではFirefoxやSafariは対応していません。APIを用いることで専用のソフトウェアなしでブラウザ単体で様々なツールを実装できるのは非常に魅力的だと思いました。APIを用いた応用的な機能を開発して順次公開したいと思います。Writerを開発しましたので、紹介したいと思います。/SLG47004にプログラムを書き込む方法として、下記の方法があります。Hubからデバッグや書込が可能な1.のSLG4DVKGSDが王道ですが、流通量が少ないようで、在庫なしのタイミングが多々あるのが難点です。その次に多いのは2.のArduinoからの書込ですが、コード上にプログラムを埋め込んでいるため、プログラムを変更する度にArduino側も書き換えが必要なため、手間が非常にかかります。確定したプログラムを大量に書込する場合は2.や3.が便利ですが、試行錯誤しながら使用する場合で、1.を使用しない場合は非常に不便でした。Writerを開発しました。APIを活用して、ブラウザから直接、COMポートを介してI2CデバイスのGreenPAKを制御しています。そのため、スクリプトはすべてブラウザ内で完結しているため、クラウド等を介さずに書込や読込等の操作をすることが可能です。使用方法は下記の手順で行います。�@事前に上図のようにUSBシリアルI2C変換基板V2のRST端子とIO0をケーブルでジャンパさせます。�AUSBシリアルI2C変換基板V2とGreenPAKをI2Cで接続してPC等のUSBポートにUSBシリアルI2C変換基板V2を接続します。Address)をPing機能で確認します。多くのデバイスの初期状態は0x01(0x08)です。�CNVM消去を行います。Writerに読み込ませて、NVM書込を実行します。�EGreenPAKの電源を一旦切ってから再度、投入すると書き込んだプログラムが実行されます。�@でRST端子とIO0をジャンパさせる理由はSLG46824/SLG46826でNVM消去時にACKを返さないというエラッタがあるためです。エラッタによってI2Cに準拠しない挙動をします。そのため、消去時にI2C通信エラーが毎回発生して以降のI2C通信ができません。対策としてページ消去ごとにUSBシリアルI2C変換基板V2内のSC18IM704をリセットさせて、I2C通信エラーを強制的にクリアさせています。SLG47004ではこのようなエラッタはないため、ジャンパは不要ですが、SLG46824/SLG46826に合わせてジャンパさせてあっても問題ありません。GreenPAKの設定メモリの書き込みや削除は1ページ16byte単位となっており、1ページ毎に書き換える必要があります。USBシリアルI2C変換基板V1ではSC18IM700を搭載しており、バッファサイズが16byteです。コマンドやアドレスを含めると20byte以上になり、バッファサイズ16byteを超えるため、書込ができません(分割して書込できない)。そのため、バッファサイズが256byteに拡張されたSC18IM704を搭載するUSBシリアルI2C変換基板V2のみ対応しています。現在販売[スイッチサイエンス、Elecrow]しているUSBシリアルI2C変換基板はすべてSC18IM704を搭載したV2です。MTPタイプのデバイスはSLG46824/SLG46826/SLG47004の他に先日発表されたSLG46827もありますが、まだ入手できていないため、使用可能か現時点では不明です。個人的にはSLG46824/SLG46826よりも、エラッタがなく、アナログ機能が強化されたSLG47004が好みです。SLG47004を活用したデバイスを今後、紹介したいと思います。購入前から分かっていたことですが、『丸型引掛シーリング』『ローゼット型取付器具』に取り付ける場合、付属のシーリングカバーは対応していません。そのため、付属のシーリングカバーを外して使用する必要があります。分かって取り付けたものの、実際に取り付けるとカバーがなく、せっかくのデザインの良さが半減しているようで気になります。市販品のカバー等も調べてみましたが、微妙にサイズが合わず、形状も微妙だったため、結局、自ら設計してみました。『丸型引掛シーリング』『ローゼット型取付器具』に対応するため、直径を一回り大きくしています。純正のカバー同様に2つのパーツの接合部分はちょうど、照明のパイプ部分と重なる設計です。留め具の突起があるため、片方のみ中央部分に切り欠きがあります。切り欠きがあるパーツと切り欠きがないパーツを組み合わせて使用します。今回はJLPCBの3Dプリントサービスを利用して出力しました。1個1500円程度でペアで使用するため、1台当たり3000円でした。Nylonで2台分オーダーしました。送料含めて6000円強でした。実際に取り付けてみるとシーリング取り付け位置の差で若干、天井との隙間が黒と白で違いましたが、格段に見栄えが良くなりました。STLデータはこちらで共有しています。JLPCBでもファイルをシェアしています。非公式かつ材質や安全性等の評価をしていないため、データの使用・出力したカバーの使用は自己責任でお願いいたします。|2024年08月17日TkEasyGUIへの移行Pythonで簡易的なアプリを作成する際に便利なライブラリとしてPySimpleGUIがあります。商用ユースでは先日から有償化され、個人ユースであってもライセンス登録が必要です。ライブラリ自体の使い勝手という点で難があるため、PySimpleGUIと互換性があるTkEasyGUIに移行してみました。互換性があるといっても完全互換ではないため、今までのコードそのままでは動かない場合が多々あります。今回は自作アプリをTkEasyGUIに移行した際に互換性がなく、コード修正が必要になった箇所について紹介します。自作アプリ内で気づいた範囲のため、その他にも互換性がない箇所があると思いますが、今回分かった範囲で紹介したいと思います。当然ながらライブラリを変更します。sg�@テーマテーマ名が異なるため、'DarkGreen6'等のテーマは使用できません。Message")�BrefreshRefreshからrefreshに修正が必要ですwindow.Refresh()➡window.refresh()�CvalueテキストボックスのvalueはTkEasyGUIでは定義されていません。下記のように第一引数に変更する必要があります。text_color='#00F000')➡window["-msg-"].('OK',text_color='#00F000')�Dvisible見ないようにするvisible機能はTkEasyGUIでは定義されていません。項目自体を削除するか、消したのと同じような処理に修正する必要があります。visible=false➡ないので削除する互換性がないのは仕方ないことですが、ライブラリだけ移行するだけでは下記のように非常に分かりにくいエラーが発生するのみで原因を調べるのに苦労しました。上記のような修正をすることでTkEasyGUIに移行して同等の機能を確認することができました。strこの他にも互換性がない部分について分かれば紹介してみたいと思います。|2024年07月20日pico-sdkディレクトリ変更時のポイント今回はRP2040でpico-sdkディレクトリを変更した際に忘れやすいポイントを覚書として紹介したいと思います。Generatorで生成したプロジェクトの場合はbuildディレクトリに移動してmakeするだけです。"???/pico-sdk")を更新してもディレクトリが反映されず、古いディレクトリを参照してしまったり、pico-sdkのバージョン違いのエラーが発生してビルドに失敗する場合があります。PICO_SDK_PATH=???/pico-sdkのように追加しても失敗する場合があります。..を実行し、ビルド環境を再構築する必要があります。..のビルド環境の再構築が必要です。普段は再構築し直す必要がないため、忘れがちです。久しぶりだとそれに気づかず、ビルドが通らない原因の調査に時間を要してしまいました。Writer(09/14)シーリングカバー(08/17)TkEasyGUIへの移行(07/20)pico-sdkディレクトリ変更時のポイントCrescentあると毎日がハッピーになるちょっと未来なデバイスやモノづくりのノウハウを発信、提案します。モーションコントロール、ロボット製作、ロボット制御、組込機器等の研究、開発を専門として行っております。販売プロダクト一覧はこちらで紹介しています。下記でもご紹介しておりますProjectionBall公式WebFacebookPageGitHubProjectionBallの質問や購入相談は下記にお願いいたします。2.0Seesaaブログ。