Let's note CF-MX3でUbuntu20の輝度調整
初めは下記参考にしたが、全て駄目。
4 Ways to Fix the Laptop Brightness Problem In Ubuntu
最後に下記を行うとできた!
素晴らしいスクリプト! 神!
Adventures with Linux: Installing Ubuntu on a Panasonic Toughbook CF-31 - Bob Johnson's Computer Stuff, Inc.
但し、chmod 755 /usr/local/bin/redirect-brightness.sh が追加で必要。
M5Atom MatrixでGameControllerizerの環境構築
1. UIFLOWの書き込みと接続
M5Burnerでv1.7.3を書き画面から書き込んだ後、API Keyが不明になったので解決策を記す。
M5Atomは画面が無いので、シリアル接続し出力を見ながら、LEDの色でモード判定しないといけない。
M5AtomをUIFlowで書き込んだあとにWiFiでUIFlowに接続するモードに戻す方法 - Qiita
手順は恐らく下記となる。
1.青色モードにして、シリアル接続してAPIKEYを確認する
2.黄色モードにして、M5AtomのWiFi-APに接続しWiFi ID/PWを入力する
3.緑色モードにして、UIFlowにAPIKEYを入力して接続する
(色々やったので何か不要かもかもしれません)
2. UIFLOWの書き込みと接続
GcOpsM5のUIFlowのmicroPythonコードの実行。
一部訂正する必要がある。UIFlowはv1.7.4を利用した。
誤 from microWebSrv import MicroWebSrv
正 from MicroWebSrv.microWebSrv import MicroWebSrv
備考
M5AtomをAppモード(黄色モード)にしてシリアル接続するとmicroPythonをコンソールから実行できる。
MicroWebSrvモジュールのエラー解決をずっと探しており、色々確認して内臓モジュールを確認してみると順序が違う事に気づいた。いつから変わったのかは不明。
M5StickCでMicroPythonを使う(公式ファームウェア編) – 楽しくやろう。
所感
ずっとはまってました。
接続検証は次の記事に記載します。
M5StickCでGameControllerizer
M5Atomと基本的に同じ。但し画面があるため、デバッグし易いためM5StickCで行う。
1. Direct Accessモードで確認
Direct Accessモードを利用し書きコマンドでゲームパッドボタン①②に対応する事を確認した。
cmd = bytearray(b'\xc1\x10\x00\x03') # GCの制御コマンド
GcOpsM5/example_direct.py at master · GameControllerizer/GcOpsM5 · GitHub
言語仕様はこちらにあるが、制御コマンドはどう理解すればよいのだろうか?
GitHub - GameControllerizer/DSL4GC: Domain Specific Language for Game Control
(b'\xc1\x10\x8f\x05')に変更して解析してみた。
1Byte目 xc1: 不明。変更してもゲームパッド入力できる。
2Byte目 x10: キー押下時間を示している模様。これでおおよそ100~200ms程度。
3Byte目 x8f : 右側(LSB~4bit目)がゲームパッドの⑤~⑧、左側(MSB~5bit目)が⑨~⑬を示しているようだ。
4Byte目 x05: 右側(LSB~4bit目)がゲームパッドの①~④を示している。左側(MSB~5bit目)は不明。
2. Network Accessモードで確認
系とプロトコルは下記。http GETで制御する。
系: Node RED -----> M5StickC(UiFLOW) -----> GC -----> PCGAME
プロトコル: http GET UART USBHID
M5StickC(UiFLOW)のmicroPythonコードは下記。
MicroWebSrcのパス、UARTのPin番号に注意すればOK.
from m5stack import *
from m5ui import *
from uiflow import *
from MicroWebSrv.microWebSrv import MicroWebSrv
import wifiCfg
import ubinasciiwifiCfg.autoConnect(lcdShow = False)
uart = machine.UART(1, tx=33, rx=32)
uart.init(115200, bits=8, parity=None, stop=1)def handlerCmd(httpClient, httpResponse) :
cmd_base64 = httpClient.GetRequestQueryParams().get("cmd")
if cmd_base64 is not None:
cmd = ubinascii.a2b_base64(cmd_base64)
uart.write(cmd)
httpResponse.WriteResponseOk(
headers = None,
contentType = "text/json",
contentCharset = "UTF-8",
content = "OK")
wait(1)
else:
httpResponse.WriteResponseBadRequest()
wait(1)
routeHandlers = [("/", "GET", handlerCmd)]
srv = MicroWebSrv(routeHandlers=routeHandlers)
srv.WebSocketThreaded = False
srv.Start(threaded=False)
一応動いた。btn0を押すと、btn5(に割り当てられたズームアウト)が実行されているのが気になる。
所感
1. http GETする際にM5StickCのIPアドレスを調べないといけないが、ルーターに接続して総当たりで調べた。何か良い方法はないのか・・・?
2. btn0押すとbtn5が反応するのは何故か・・・?
3. USB HID機能付きArduino microでも同様の事ができるが、比較した利点は次の通り。
- Grove Connectorが標準装備であるため、M5やObnizと接続し外部センサとの連携が容易
- RaspiやJetsonのピンヘッダ互換のためハンダ接続すればLinuxから容易に制御できる。Arduino microだとLinuxと接続する場合、USB-UARTまたはUSB Host Shield経由でUSB接続する必要がある。
- ESP32 BLE Combo はKeyboardとMouseを同時利用できる。GCがGamepadとKeyboardやMouseと同時できるなら利点は大きい。
4. Raspi Zeroでも動くため、USB Dance Dance Revolution Matを接続して制御してみたい。
5. Jetson Xavierの画像認識も組み合わせて...。
node-red-contrib-game_controllerizerのインストール
のインストール方法をメモする。
0. 初めに
node-red-contrib-game_controllerizerのインストール方法は二つあるが、今回はNode-RED Manage Paletteを使う。(install via npmはSerial関連のパッケージインストールに失敗したため)
1. Windwos 10の場合
追記:(注) Ptyhon3をインスト―ルが必要かもしれません。その場合環境変数を設定し、Pathも通して下さい。
node js最新版を https://nodejs.dev/ よりインストール。
コマンドプロンプトを開き、
node //nodejsのターミナルを立ち上げる
sudo npm install -g --unsafe-perm node-red //node-redパッケージをインストール
(参考:実行画面)
node-redを実行し、http://127.0.0.0:1880/へアクセスする。
(参考:実行画面)
右上のメニュー「三」より「パレットの管理」を選択。
「ノードを追加」の検索部にnode-red-contrib-game_controllerizerを入力し、インストール。
更に、node-red-node-serialport、node-red-node-base64 を同様にインストール。
正常にインストールできれば、下記のようにノードが全て表示された画面となる。
(上手くいかなければ何らかのノードが点線で囲まれる。
2. Ubuntu20 の場合
sudo apt instlal nodejs
sudo apt install npm
sudo npm install -g --unsafe-perm node-red
node-red // none rootユーザで実行する。rootユーザの場合、node-red-contrib-game_controllerizerパレットの追加に失敗する
以降、node-redを実行し、windows10と同様にパレットをインストールする。
備考
install via npmが上手くいけば教えてください。
信号処理は組み込みLinuxかRTOSか。
無線機器の信号処理方法
興味あるボード達の信号処理方法が気になったためまとめる。
所感
Androidや家電も組み込みLinuxが入っている。信号処理方法は様々だ。
因みにESP32はSSHライブラリがあるのでSSHも使える。
LibSSH-ESP32 - Arduino Reference
ns同期したSDR/LoRa受信機のTDoAによる信号源位置推定
ns同期したSDR/LoRa受信機のTDoAによる信号源位置推定
できそうな方法を二つ書いておく。
1.SDRによる任意信号の位置推定
ns同期可能なXTRXを利用するとタイムスタンプ付きIQ信号を出力可能なため、相互相関により対象信号の時間差を出し、更に受信機の位置を利用しTDoAをすれば良い。RTL-SDR並みの価格でns同期可能なSDRが出ると市場が広がりやすいが、そもそも信号源位置推定の市場はニッチなため数万円のXTRXでできれば問題ないか?
2.LoRa受信機によるLoRa信号の位置推定
LoRa-TDoAはヨーロッパで実運用されている情報を記事で稀に見るが、ns同期できるLoRa受信機は何を使っているのか調査が必要。更に、複合したデータにタイムスタンプが付いているのか調査。相互相関無しにTDoAできるならば、IQデータ送信が不要になるためだ。
所感
TTNの動向も気になる。見守りLoRaが普及するには、ns同期LoRa受信機が必要だが、市民が設置するとは考えにくい。行政や地域コミュニティが主導しなければ広がらないだろう。
しかしGPS付小型LoRaデバイスやLoRa付Androidが登場すると話は一変する。見守りだけでなくP2Pメッシュ型のLoRaインフラが誕生する。
技適認証LoRaモジュール等
LoRaインフラは流行ると思われるため、技適認証済みのLoRaモジュールを探してみた。
LoRaモジュール
インタープラン、穂高電子、EASEL、上田日本無線。日新テクニカ等がLoRaモジュールを工事設計認証で取得している。価格は2000円~か。
920MHz無線モジュール IM920 – 無線ソリューション| [インタープラン interplan]
技適証明・工事設計認証申請代行サービス – 穂高電子株式会社
920MHz帯LoRa/FSKモジュール(超低消費電力) ES920LR2 | 株式会社EASEL
920MHz帯LoRa™無線モジュール | 無線通信 | UJRC上田日本無線
LoRaシリアル遠距離通信モジュール(P2P) - (株)日新テクニカARM,Cortex,Android,Linux,uClinux,FPGA,DSP (技適不明)
LoRa Watch
腕時計型でLoRaデバイスもあった。
LW-360HR ウェアラブルLoRaトラッカー | 株式会社GISupply
中華LoRa
現時点では、中華製品だとTTGO-T-Beam一択かと思われる。
ESP32搭載のため、各種機能を追加できる。
GitHub - LilyGO/TTGO-T-Beam
所感
特にP2Pメッシュネットは相性がいいと思います。