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が不明になったので解決策を記す。

f:id:jijiken0417:20210411220859p:plain

M5Atomは画面が無いので、シリアル接続し出力を見ながら、LEDの色でモード判定しないといけない。

M5AtomをUIFlowで書き込んだあとにWiFiでUIFlowに接続するモードに戻す方法 - Qiita

f:id:jijiken0417:20210411220754p:plain

シリアル作業画面

 

手順は恐らく下記となる。

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モジュールのエラー解決をずっと探しており、色々確認して内臓モジュールを確認してみると順序が違う事に気づいた。いつから変わったのかは不明。

f:id:jijiken0417:20210411230242p:plain

M5StickCでMicroPythonを使う(公式ファームウェア編) – 楽しくやろう。

所感

 ずっとはまってました。

 接続検証は次の記事に記載します。

jijiken0417.hatenablog.com

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目)は不明。 

f:id:jijiken0417:20210411164558p:plain

 

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 ubinascii

wifiCfg.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(に割り当てられたズームアウト)が実行されているのが気になる。

f:id:jijiken0417:20210412003702g:plain

 

所感

 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のインストール

GitHub - GameControllerizer/node-red-contrib-game_controllerizer: Node-RED nodes for GameControllerizer

のインストール方法をメモする。

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パッケージをインストール

(参考:実行画面)

f:id:jijiken0417:20210411134241p:plain


node-redを実行し、http://127.0.0.0:1880/へアクセスする。

(参考:実行画面)

f:id:jijiken0417:20210411134551p:plain


右上のメニュー「三」より「パレットの管理」を選択。

「ノードを追加」の検索部にnode-red-contrib-game_controllerizerを入力し、インストール。

更に、node-red-node-serialport、node-red-node-base64 を同様にインストール。

 


 

正常にインストールできれば、下記のようにノードが全て表示された画面となる。

(上手くいかなければ何らかのノードが点線で囲まれる。

f:id:jijiken0417:20210411153428p:plain 

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か。

 

無線機器の信号処理方法

興味あるボード達の信号処理方法が気になったためまとめる。

f:id:jijiken0417:20210320214716p:plain

所感

 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メッシュネットは相性がいいと思います。