電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

Bluetooth+USB無線接続のコンパクトなキーボード・マウス

実験用PCやRaspberry PiやMiSTer FPGA等を使用する際に汎用キーボード・マウスとしてロジクールのMK245を使用してました。
もう5年以上使用して飽きてきたのと、常時使用するものではないのでもっとコンパクトなものが欲しいと思い探してたところ良いものが見つかり購入してみました。

今回購入したものは、 Omikamo Bluetooth キーボード 折りたたみ マウスセット 日本語配列 です。

キーボード配列やキーのサイズは、ノートPCにありがちな標準的なものです。コンパクトキーボードにありがちな変則的な入力はありません。
テンキーが付いてるのもレトロPCのエミュレータを使用するときに便利です。

折りたたむとこんな感じです。

キーボードは2.4G(USB無線)とBluetooth3個ペアリングでき、独立したキーで切り替えができます。

マウスも特に特徴は無い標準的なものです。動きが悪いとかボタンの反応が悪いとかは無く快適です。

マウスは2.4G(USB無線)とBluetooth2個ペアリングでき、裏側にあるボタンで切り替えができます。
2.4G(USB無線)のトングルはキーボード・マウス両方の受信を兼ねていて1個です。マウスに収納できます。

まだ1か月ほどしか使用していないので耐久性はわかりませんが、2.4G(USB無線)とBluetoothも特に切れたり反応が悪くなることも無く快適です。
よく使う機器はBluetoothでペアリングして、2.4G(USB無線)は汎用的に使えるのでより便利になりました。
よりコンパクトになったので、収納場所にも困らなくなりました。

現代のポケコン uConsole PicoCalc 手に入れました

Raspberry Pi Pico用のBASICインタプリタ PicoMite で遊ぶ (RP2040-GEEK使用)』でも少し触れた uConsole PicoCalcを入手しました。
www.clockworkpi.com
3月に注文し、届くまで約3か月かかりました。

PicoCalcは Raspberry pi Pico を使用したBasic (PicoMite)が動作します。
Geoff's Projects - BASIC Interpreter for the Raspberry Pi Pico

uConsoleは他の商品も同じですが、キットになってます。



Raspberry pi Pico が付属してましたが、Raspberry pi Pico 2 W を使用することにします。

Pico 2 W 用のファームウェアは公式Githubページにあります。
PicoCalc/Bin/PicoMite at master · clockworkpi/PicoCalc · GitHub
完成するとこんな感じです。

緑色の文字がいい感じです。

BASICが目的で購入したのでそのままの環境で使用しますが、他にはuLisp、MP3プレーヤー、NESエミュレータ、Fuzin(小型のUNIX風OS)のファームウェアが用意されてます。
仕様も公開されて、Raspberry pi PicoのUSBポートもケースを付けたまま接続できるので、自分で何か開発しても良いと思います。

起動してすぐにBASICの画面が表示され、打ち込んでそのまま実行できるので、ポケコン感覚で遊んでます。

Raspberry Pi Pico 2 W

Raspberry Pi Pico 2 W

  • 共立電子産業株式会社 KYOHRITSU ELECTRONIC INDUSTRY CO.,LTD.
Amazon

Raspberry Pi Pico用のBASICインタプリタ PicoMite で遊ぶ (RP2040-GEEK使用)

RP2040-GEEKを面白そうと思って購入したものの、特に使い道がなく眠っていたので、BASIC環境にしてみました。

今回使用したのは、PicoMite です。
BASIC for the Raspberry Pi Pico & Pico 2

PicoMiteは Raspberry Pi Pico 用のBASICインタプリタでFull BASICに準拠してます。若干の差異はあるものの、VIsual Basic とほぼ同じ文法で書くことができます。

ファームウェアのダウンロード
https://geoffg.net/Downloads/picomite/PicoMite_Firmware.zip
Zipファイル内のフォルダ"firmware"の中にある "PicoMiteRP2040V6.00.01.uf2" を書き込みます。(V以下のバージョン番号はダウンロードした時期で変わると思います。)

Raspberry Pi Picoへのファームウェアの書き込み方法は、bootボタンを押しながらUSBをPCへ指すとUSBドライブと認識されるので、そこへ "PicoMiteRP2040V6.00.01.uf2" をコピーしてください。

PicoMiteのマニュアル
https://geoffg.net/Downloads/picomite/PicoMite_User_Manual.pdf

BASICインタプリタはシリアル通信で行います。
PCと接続するとUSB仮想シリアルポートが認識されるので、以下の設定で接続してください。

ポート 接続する環境によって変わります。
通信速度 38400 bps
データビット 8bit
パリティビット none
ストップビット 1bit
フロー制御 none

TeraTermでの設定例

BASICのプログラム作成はターミナル内でスクリーンエディタが表示されるようになってます。
エスケープシーケンスを使用して再現されてるため、端末のエミュレーションを"VT100"に設定してください。
TeraTermでの設定例

BASICインタプリタにアクセス出来たら、以下のコマンドを入力して設定してください。

OPTION SYSTEM SPI GP10,GP11,GP28
OPTION HEARTBEAT OFF
OPTION PICO OFF
OPTION LCDPANEL ST7789_135, LANDSCAPE,GP8,GP12,GP9,GP25
OPTION SDCARD GP23, GP18, GP19, GP20
OPTION AUDIO GP2,GP3', ON PWM CHANNEL 1

"option list" でオプションの確認ができます。

プログラムは専用のスクリーンエディタで書いていきます。
"edit"で起動できます。

プログラムの実行は "run" でできます。

プログラムリストを表示したい場合はスクリーンエディタを開くのでもよいですが、"list"でも表示されます。

プログラムの保存は"save (ファイル名)"、ロードは"load (ファイル名)"です。
テキストファイルで保存されるので、PC上でテキストエディタ等で書いてSDカードに保存してロードでも大丈夫です。

グラフィック命令はRP2040-GEEKの場合は本体の画面に表示されます。

CLS 0
Box 40,10,160,120,,RGB(white),RGB(white)
Circle 120,70,40,,,RGB(red),RGB(red)

SDカードは32GBまで、FAT16かFAT32でフォーマットしたものが使用できます。
ドライブは"A:"が内蔵FLASHで、"B;"がSDカードになります。
試しに以下のようなプログラムでSDカードにテキストファイルを作成してみました。

Open "B:test.txt" For output As #1
Print #1, "test text file."
Close #1

テキストファイルが書き込まれました。

PicoMiteは直接I/Oピンにアクセスできる機能も用意されてます。
デジタル入出力、アナログ入力、PWM出力がサポートされてます。
また、他にも赤外線通信やフルカラーLED制御等直接制御できる機能もサポートされてます。

上記のソースコードを見ればわかる通り、Pythonよりも好きない行数で色々試せるので、便利だと思いました。
PicoMiteが動作するuConsoleが発売したPicoCalcも注文しました。

実行速度は遅いですが、速度を要求しないようなものはmicropythonより手軽なので、これからは積極的に使ってみようと思います。

Raspberry Pi Pico 2 W

Raspberry Pi Pico 2 W

  • 共立電子産業株式会社 KYOHRITSU ELECTRONIC INDUSTRY CO.,LTD.
Amazon

Raspberry Pi AI HAT+ のセットアップメモ

Hailo 8 AIアクセラレーターを搭載したRaspberry Pi 5用のAI HAT+を入手しました。

Piromoniで購入しましたが、国内のショップではスイッチサイエンスで購入できます。
今回は推論性能が26TOPSのHailo-8を搭載したものを購入しましたが、13TOPSのHailo-8Lを搭載した下位バージョンもあります。

Hailo 8は学習済みのモデルを処理するアクセラレータです。学習作業を高速化することはできません。
学習済みのモデルはHailoのオリジナルフォーマットのHEFファイルを使用しますが、Dataflow Compilerを使用して汎用のonnx形式のファイルを変換できるようです。(詳しくはまだ調べてません)

セットアップ手順

公式ドキュメント
AI Kit and AI HAT+ software - Raspberry Pi Documentation

セットアップ時の手順のメモを書きます。
今回は既に使用していたRaspberry Pi 5 8GBにCamera Module 3を装着したものを使用してので、OSやカメラのセットアップは省略します。
自分用のメモが主な目的なので詳細は省きますが参考にしてください。

パッケージを最新化して再起動
sudo apt update && sudo apt full-upgrade
sudo reboot
実行しているファームウェアの確認
sudo rpi-eeprom-update

2023 年 12 月 6 日より前の日付が表示されている場合はraspi-configで設定を行う

sudo raspi-config

Advanced Options>Bootloader VersionでLatestを選択

ファームウェアを最新バージョンに更新して再起動
sudo rpi-eeprom-update -a
sudo reboot
PCIe Gen 3.0の有効化

「/boot/firmware/config.txt」へ以下の行を追加

dtparam=pciex1_gen=3

再起動

sudo reboot
AIアクセラレータに必要なドライバやソフトウェアをインストールして再起動
sudo apt install hailo-all
sudo reboot
インストールの確認
hailortcli fw-control identify

Firmware VersionやBoard Nameが表示されればOK
Serial Number、Part Number、Product Nameが<N/A>になっているが大丈夫そう。

カメラモジュールが認識されているか確認
rpicam-hello -t 10s

カメラの画像が10秒表示されていればOK

デモで動作確認

ファイルを取得

cd
git clone --depth 1 https://github.com/raspberrypi/rpicam-apps.git ~/rpicam-apps

公式ドキュメント通りだと動作しなかったため、--post-process-fileに別の場所にあるjsonファイルを指定しました。

rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov6_inference.json --lores-width 640 --lores-height 640

色々試してみる

Hailoが用意しているサンプルを試します。

ファイルを取得
cd
git clone https://github.com/hailo-ai/hailo-rpi5-examples.git
必要なファイルをインストール
cd hailo-rpi5-examples
sudo apt install meson
./install.sh
サンプルはvenv環境で実行するため、仮想環境を起動
source setup_env.sh
物体検出のサンプル
python basic_pipelines/detection.py --input resources/detection0.mp4 -f


30fpsの動画に対して、30fpsで表示されているので、ほぼリアルタイムで処理されてます。
CPU負荷は25%程度でした。

セグメンテーションのサンプル
python basic_pipelines/instance_segmentation.py --input resources/detection0.mp4 -f


こちらも30fpsの動画に対して、30fpsで表示されているので、ほぼリアルタイムで処理されてます。
CPU負荷は35%程度でした。

骨格検出のサンプル
python basic_pipelines/pose_estimation.py --input resources/detection0.mp4 -f


こちらも30fpsの動画に対して、30fpsで表示されているので、ほぼリアルタイムで処理されてます。
CPU負荷は30%程度でした。

仮想環境を終了
deactivate

最後に

26TOPSの処理速度はRyzen 7 8845HSの16TOPSを超えてしまいます。
価格とRaspberry Pi 5で使用できることを考えると、手軽に遊べる環境が欲しい人にはお勧めできると思います。


Raspberry Pi Pico 2 (RP2350搭載)を入手しました

Raspberry Pi Pico 2が発売したので、購入してみました。

購入はPIROMONIでRaspberry Pi Pico 2と一緒に小型のTiny2350も購入しました。

ArduinoでのC/C++環境ではボードマネージャでRP2350で検索してもまだ見つからないのでPythonで動かしてみましたが、今までのコードもそのまま実行できました。
まだ速度が必要なものは試してないので、そんなに違いは判りません。

MicroPythonのファームウェアの入手先はこちらです。
https://micropython.org/download/RPI_PICO2/

簡単にRaspberry Pi Pico 2の仕様です。

外形寸法 21 mm × 51 mm
CPU デュアルArm Cortex-M33 or デュアルRISC-V Hazard3プロセッサ@150 MHz
メモリ 520 KBオンチップSRAM、4 MBオンボードQSPIフラッシュ
インターフェース 26 x 多目的GPIOピン(ADCとして使える4ピン含む)、USB Micro-B、デバッグピン(SWD)
ペリフェラル 2 × UART
2 × SPIコントローラ
2 × I2Cコントローラ
16 × PWMチャンネル
1 × USB 1.1コントローラ&PHY(ホスト/デバイス両対応)
12 × PIOステートマシン
入力 1.8~5.5 V DC
動作温度 -20℃~+85℃

コアはArmとRISC-Vの2個ありますが、同時に使用できないようで実行するバイナリによって切り替えるようです。
Armコアが Cortex-M33 になったことによってFPUが搭載されました。これで自作音源も作りやすくなりました。DSPも搭載されているので、使いこなせれば色々できそうです。
これだけ性能が上がっても消費電力も低くなったようです。

同時使用できないRISC-Vのコアも搭載した目的がよくわかりませんが、将来的にオープンソースでライセンス料のいらないRISC-Vに移行していくのではないかと個人的に予想しています。

ハンドヘルドPCコレクション(ポケコン他)

最近色々と整理してた際に今後のガジェット系に資金にするためにポケコン関連はいくつか手放してしまいました。
現在はコレクションと言うほど多くはありませんが、保有しているハンドヘルドPCを紹介したいと思います。

uConsole Kit RPI-CM4 Lite

blog-e.uosoft.net
購入してから一番お気に入りの機種です。
OSがRaspberry Pi OSなので使用できるソフトも多いです。
画面サイズが小さいのでLinuxデスクトップとしては使い辛いし、普通にRaspberry Pi OSとして使うのはつまらないので、主にPICO-8やMSX,PC98,X68000のエミュレータを入れて全画面にしてコンソールベースでポケコン感覚で遊んでます。

Pocket386

blog-e.uosoft.net
386SXのCPUを搭載した2024年に発売されたPC-AT互換機です。
初期状態でWindows95(英語版)がインストールされてますが、PC-DOS2000を入れてDOSのみで使用してます。
CPUや音源以外は現在のパーツで作られているため、MS-DOS保存環境としては今まで使用してたLibrettoやHP Compaq nx9030よりも扱いやすいです。
また、FDDやCDROM等はそのままでは接続できませんが、ストレージがコンパクトフラッシュなので、ファイルのコピーはカードリーダーで直接Windows等からコピーできるため手軽です。

SHARP PC-G850VS

blog-e.uosoft.net
SHARP最後のポケコンです。
Z80搭載でアセンブラも使えます。
今までいくつかポケコンを使用してきましたが、ポケコンとしても最後の製品で比較的新しいため、液晶の劣化さえ気を付ければ長く遊べる機種だと思います。
今でも使用してる人が多く、ネットでも自作ソフトや色々な情報が手に入りやすいです。

CASIO Z-1GR

x86系の80188でアセンブラも使える機種です。
液晶のコントラストが低くて見ずらいのが難点です。
Z-1GRは学校教材用ですが、一般販売用のFX-890Pは高コントラストの液晶が使われてるので、液晶は無事のFX-890Pのジャンク品を手に入れて交換したところ、見やすくなりました。

Raspberry Pi で X68000 (Raispberry Pi OS Bullseye以降)

Raspberry Pi 5 やuConsole Kit RPI-CM4 LiteでX68000のエミュレータをインストールする場合に、過去に書いた方法だと64bitのOSではmakeできなかったので、新しく調べた方法を書きます。
今回の方法は64bit/32bit両方のBullseye以降のデスクトップ環境で動作します。
コンソール環境で実行したい場合は、『Raspberry pi 400で遊ぶ X68000編』を参考にしてください。(要: Raspberry Pi OS Buster


前準備

gitをインストールします

sudo apt update
sudo apt install git

SDL2をインストールします

sudo apt install libsdl2-dev

圧縮ファイルの展開のため、unzipとlhasaと7zをインストールします。

sudo apt install unzip lhasa p7zip-full

px68kの構築

px68kはユーザのホーム以下のpx68kディレクトリ(~/px68k)へインストールすることを想定して進めます

cd
git clone https://github.com/TurtleBazooka/px68k.git
cd px68k
make

BIOSファイル配置

実行にはiplrom.datとcgrom.datが必要。
色々なサイトを参考にX68000 LIBRARYとXM6 Pro-68kから拝借

cd
mkdir ~/.keropi
wget http://www.retropc.net/x68000/software/sharp/x68bios/X68BIOSE.LZH
lhasa x X68BIOSE.LZH iplrom.dat
mv iplrom.dat ~/.keropi/iplrom.dat
chmod 644 ~/.keropi/iplrom.dat
wget https://mijet.eludevisibility.org/XM6%20Pro-68k/XM6%20Pro-68k%20DLL%20Package.7z
7z x "XM6 Pro-68k DLL Package.7z" CGROM.DAT
mv CGROM.DAT ~/.keropi/cgrom.dat
chmod 644 ~/.keropi/cgrom.dat

動作確認

X68000 LIBRARYからHuman68kのディスクイメージを取得して起動してみます。
起動はディレクトリ~/px68kに作られたpx68k.sdl2を実行します

cd
wget http://www.retropc.net/x68000/software/sharp/human302/HUMN302I.LZH
lhasa x HUMN302I.LZH human302.xdf
chmod 644 human302.xdf
px68k/px68k.sdl2 human302.xdf

[F11]で全画面、ウィンドウ表示を切り替えられます。
[F12]でメニューを開いてディスクの入れ替えや、リセット、終了を行うことができます。