Open9

Arduino UNO Q 4GBで遊ぶ

SAS新聞SAS新聞

まず起動してssh

Arduino App Labを使う上でWebKit2GTKが必須との情報を見たのでそちらもインストール。
まず、Type-Cで接続して、セットアップ完了。このときwifiも設定。
Arduiono App Labの左下にターミナルで開く的なボタンがあるが、gnome-terminalを要求されたので導入。
変更はのちほどやる予定。

sudo pacman -S webkit2gtk gnome-terminal
SAS新聞SAS新聞

一度デスクトップを見てみたかったのでリモート接続に挑戦。

Remmina + XRDPでできるらしい。
Arduino UNO Qにsshしてsudo apt install xrdp
写したいPCはArchなのでsudo pacman -S remmina freerdp
XRDPは常時起動したいわけじゃないので一時的にsudo systemctl start xrdpでつけた。

画面が小さいのでサイドバーの「動的な解像度の更新」をオンにしよう

普通にブラウザを触れた。日本語フォントがないので豆腐化するが今後GUIさわる予定はないので無問題

SAS新聞SAS新聞

VINから電力供給

今後、Arduino UNO QにLipoから電力供給しなければならないのでVINに電源を接続。
秋月の使用可変安定化電源キットがあったので、8Vに合わせて使ってみた。
https://akizukidenshi.com/catalog/g/g115508/
正常に動作した。が、どうやら勝手に他UNOと同じ7〜12Vだと思っていたが7〜24Vだったらしい。
何も問題はないんだが、かならず仕様を確認しよう...絶対に落とし穴がある。

あとこのキット、どうやら最大出力が1.5Aらしいので危ない。というか高負荷時に落ちそう。

https://github.com/geerlingguy/sbc-reviews/issues/83

一応かなり少電力なので耐えるが、余裕を持った電源を用意する。

追記

ベンチマーク等はしてないのだが、初期状態での待機電力はほんとに少ない

SAS新聞SAS新聞

XREAL Air 2 Proでみたい

結論から言うと失敗。ARグラスにうつりませんでした。
おそらく電力不足かと思いますが、Arduino UNO QのType-CポートはPD出力対応らしいので、原因は不明。
もちろんDisplayPort Alt Mode対応なので、試しに家のモニターにつなぐと普通に使えた。

https://docs.arduino.cc/resources/datasheets/ABX00162-datasheet.pdf

  • USB 3.1 with Role-Switching Capabilities
  • DisplayPort Alt-Mode via the ANX7625 DSI-to-DP bridge (U3001) (SuperSpeed differential pairs
    on the Type-C are routed for DP Alt Mode)
  • Video output (SBC mode): Supports Full HD (1920 × 1080p) displays; optimal resolution is 1280
    × 720p
  • USB Power Delivery negotiation requests a 5 V / 3 A contract only (no higher-voltage profiles)
  • VBUS load-switch/back-drive protection (Q2801)

相性の問題なのか?原因か解決策がわかれば教えていただきたい。

SAS新聞SAS新聞

Arduino App LabのExamplesとやら


いくつもExamplesが用意されているので、もっともシンプルそうなBlink LEDを動かしてみる。
Bridge.call("set_led_state", led_state)でpythonからstateを送信し、cpp側ではBridge.provide("set_led_state", set_led_state)で受信を待機するといった動きをしてるっぽい。

led_state = False

def loop():
    global led_state
    time.sleep(1)
    led_state = not led_state
    Bridge.call("set_led_state", led_state)
void setup() {
    pinMode(LED_BUILTIN, OUTPUT);

    Bridge.begin();
    Bridge.provide("set_led_state", set_led_state);
}
void set_led_state(bool state) {
    // LOW state means LED is ON
    digitalWrite(LED_BUILTIN, state ? LOW : HIGH);
}

コードはこういう感じ。なるほど面白い。booleanをset_led_stateという名前で送って、受診時にBridge.provideで設定した関数を呼び出せるのか。
MPUとMCUの通信テストだけど、うまく動いて一安心。当たり前だけどね。

初回の実行時はすごく遅くて焦ったが、二回目以降は30秒ぐらいで実行される。
まあ、うん。といった感じ。使わないかも。

このあとPlatformIOとVSCodeで完結するシステムにしよう。あとopencodeでかけるようにしちゃお。

SAS新聞SAS新聞

みんな大好きPlatformIOを使いたかったが、非対応らしい。これは悲しい
とりあえずopencodeにツール類作らせてます
次は本体をアクセスポイントにしてみるよ