だめだArduino UNO Q(技適特例申請済み)、というかApp Labが酷すぎる(怒
UNO Qは、MCU(Qualcomm Dragonwing™ QRB2210)+MCU(ST STM32U585 Arm Cortex-M33)なハイブリッドSBCです。常々自作基板では採用していた構成です(マイコンで精密時間処理&データ計測、ラズパイでバッファ処理など)。期待の新生でしたので、さっそくポチりました。
が…Arduino App Lab(標準の開発環境)経由では、全く使い物になりません💢(あくまでもTry3日目の感想です)
-
Python,Arduino単独で実行できず
- App Labでpythonコード、Arduinoコード、それぞれ単独で実行できません。これでどう開発するのかな。動いているソース実行するだけなら良いのでしょうけど…遅い。
- 開発作業はトライ&エラーの繰り返し。それができないのにリリースするって…大丈夫かいな。
- コード補間機能なし、定義検索からのヘッダー開くとかまるでなし。こりゃ無理ゲ。
-
Arduinoライブラリ追加できんのこれ?
- Arduinoのソースの位置は判明(/home/arduino/ArduinoApps/[PROJ]/sketch)
- ライブラリはどこにあるのか?がわからない…彷徨いそう。
-
Pythonライブラリ追加できんのこれ?
- これじゃ仮想環境切り分けできないってことですか?マイコンじゃないのだから、プロジェクト毎に切るとか対応してください…
- デフォルトでどのモジュールが使えるのか不明。pip listみたいなことできないのかな…
-
謎にOS再起動から実行するので激遅、タヒねる。
- なんでPytho+Arduinoのプログラムを実行するのにOS再起動なの?待ち時間でコーヒー淹れれます。
- 実行エラーがでても勝手に止まって、エラーログ、エラー表示もなし。え?何で止まったの?が正直めんどい。
結論
結局Cursorからssh remote接続してpython開発、USB接続してのIDE2でArduino開発に落ち着きました。Samba2、sshとかインストールして使えるのはやっぱり良いです。SBCモードでも試してみましたが、動画とか見ずにWeb検索程度であればまぁ普通に動きます。xrdp入れたかったけど、ぐっとこらえました。Wifi AP化は必須かもしれませんね。AP化だけしておけば、基点としてどこでも開発可能になると思います(問題はインターネット接続できなくなることかな。USB Wifiドングルでしのぐ予定)。
ただまだ発展途上(途上ですらない)なので、まだもう少しはpendingな製品だと思いました。別にMPC+マイコンって、LattePandaシリーズでもあったし、自作基板でもやってる(Raspiの上にESP32)から、現状は、「う~ん…(ハード75点(マイナスのほとんどは無駄なLEDアレイ)、ソフト40点」でした。2月納品のシステムに載せる予定だったので、正直今迷っています。
何のためのLab?😵💫
追加情報(ぼちぼちと書いてくよ)
- VINから電源供給した場合、USBに電源が供給されずUSBドングルなどが動きません
- 単独起動する場合(USBからの給電でなく)、VINは諦めて5Vから電源供給しましょう
- 古いファームの場合、USBホストモードにバグがありますので最新ファームにCLIで焼き直してください
- 最新ファームにしてなお、起動後Deviceモードになるときがあります
- そんなときは、コマンドごにょごにょしてHostモードを強制してください
sudo sh -c 'echo host > /sys/kernel/debug/usb/4e00000.usb/mode'
- もしUNO Qにドライバが存在しない場合(私の場合はRTL8192 wifiドングル)、別なDebianOS(私の場合はWSL2)上でクロスコンパイルすれば必要なkoファイルとかを作成できます(バージョンはぴったり合わせてね)わからなかったらコメントください
- USBからの給電テストしていたら、3台中1台電源供給できなくなりましたのでお気をつけを
- 電源回路的に、保護されていないところがありそうです
- 結局、1ms以下の制御を行う場合、Monitorの同期速度が1msで動いているらしく、使い物になりませんでした(嘘情報かも
- 結局以下コマンドで/ttyHS1を開放し、純粋なシリアル通信でPython <--> Arduino間の通信を実装しました(ならUNO Qでなくても…
sudo /usr/bin/systemctl stop arduino-router
- STM32U585のシングルコアは致命的です。深い、超リアルタイム性の高い処理が必要な場合は致命傷になり得ます
- ABカウンタは超優秀です、モーターからのABエンコーダ信号をレベル変換するだけで、プログラム的にカウント処理をほとんど書かずにABインクリメントエンコーダが成立しました。これは素晴らしい
- ピン選定、選択には注意しましょう。ESP32的な感覚(マルチプレクスIOだから後で調整しよ)で割り振ると、泣きが入ります。ピン毎の機能制限がESP32と比較して強めです(融通がきかな…
- まだピン毎の機能割り振りが途上のようで、ピン割見に行く度pinの機能が追加されていました。こまめにupdateは追いかける必要がありそうです
クセツヨなものの、何とか動き出しました。まだ発展途上なので追記していきます
