マジョカアイリス ハック はじめます

マジョカアイリス ハック はじめます

今更ながら、マジョカアイリスハックをやってみようと思い、2台購入。

f:id:azuzuzu:20210207213612p:plain
マジョカアイリス

最初にマジョカアイリスがハックできることを知った時は、既にものが高騰し始めていたためスルーしたのだけど、今なら送料込みで1000円以下でAmazonで買えるようなので、思わずポチっとしてしました。

魔法×戦士 マジマジョピュアーズ! マジョカアイリス

魔法×戦士 マジマジョピュアーズ! マジョカアイリス

  • 発売日: 2018/10/27
  • メディア: おもちゃ&ホビー

ちなみに定価は1万円ほどするんですね。

www.takaratomy.co.jp

中の基板の名称から察するに、アメリカのおもちゃメーカであるCepia LLCが作成したWizard/Fairy-wandの部品を持ってきたのではないかとのこと。

やりたいこと

既に多くの方が、twitterやブログ、Githubなどでその成果をあげられています。

ESP32やSTM32、Raspberry piから使った報告があがっているので、これはROS2で使えるようにしたら、メッセージやステータス表示デバイスとして使えるんじゃないかと思い、ハックはじめました。ちなみに、最近でたところのRaspberry Pi Picoで動かしてる人も。

ROS/ROS2のサンプルでよくある、taker/listenerのlistnerとして動作し、送られてきた文字を列をディスプレイに表示して電光掲示場のように表示してあげるイメージです。ついでに状態や表示パラメータをサービスで取得・設定できるようにするとかして、実際に使えるものにできればと思っています。

まずは分解

外箱の刻印をみてロットを確認。

f:id:azuzuzu:20210207213957p:plain
ロット番号

スティックの筐体はできれば再利用できるように、きれいに分解できないかなと思いつつ作業をすすめましたが、結果としては超音波カッターで裁断する必要があったのは2か所のみで、他はねじを外せばよいだけでした。

f:id:azuzuzu:20210207214904p:plain
基板や液晶基板

f:id:azuzuzu:20210207214354p:plain
筐体

おもわず、

「きれいな側してるだろ。ウソみたいだろ。分解されてるんだぜ。それで。」

とか思っちゃいましたよ。

超音波カッターで裁断したのは、スティックの液晶基板が格納されている部分。二か所が半田ごてとかでプラスチックを溶かしてくっつけてる感じだったので、ここを超音波カッターでほじほじしました。

f:id:azuzuzu:20210207220105p:plain
裁断箇所

これで、液晶基板をカニの身のように、するっと取り出せました。

液晶基板との接続

液晶基板とはフレキシブルフラットケーブル (FFC) の22pinで接続することになるのですが、ここでまずは1山。

FFC 0.5mmピッチ22pinの変換基盤を探すとビンゴなのは、aitendoさんのになるかと思います。

www.aitendo.com

ただ、これ、コネクタと基板のハンダ付けをしないといけないのですが、うまくやらないとノイズがのる等でつまずく場合がある模様。

ここは安全にいきたいので、他のものがないかと調べたところ、

  1. ピン数の多い、秋月の40pin変換基盤をつかって一部のコネクタだけつかう方法
  2. 22pinのうち、21と22は使用されてないのでそこを削って20pinのものを使う方法

で対応されてる例をみつけました。最初は40pinの秋月のものを使おうと思いましたが、

akizukidenshi.com

ちょっと多すぎる感があったので、Amazonで調べたところ24pinのものがあったので、それを使ってみることにしました。

数が多い場合は、差す位置とショートに気を付けないといけないですね。

ということで、今日はここまで。

Raspberry pi + Ubuntu18.04でGPIO 2020年11月版

Raspberry piUbuntu Server 18.04入れて、WiringPiを使ってGPIOを操作しようとしたのだけど、少しはまったのでメモっておく。

基本は、以下のQiitaの記事を参考に作業。

qiita.com

Qiitaにあるように、パッチをあててビルドしないといけない模様。

ただ、現在、WireingPi-Pythonをcloneすると、wiringPiが2.60になっており、上記のパッチが2.50をターゲットにしているので、うまく当たらない。

github.com

ので、Qittaが書かれたあたりのcommitを取ってきて、wiringpi 2.50でパッチをあてたコードに入れ替えてビルドすることでうまく動作してくれました。

手順的には、

$ git clone https://github.com/WiringPi/WiringPi-Python
$ cd WiringPi-Python
$ git checkout 3315e8ec750ee8535b3f4ab31c7007b5863b7e97

で、wiringpi 2.50でパッチをあてたコードをWiringPi-PythonのWiringPi配下に丸ごとコピーして、

$ sudo python3 setup.py install

でビルド&インストール。ただし、ログとみたところ、site-packageのwiringPiのバージョン名は2.46としてインストールされてる。動いたのでいいかなぁ。

ギガビット USB Ethernetアダプタを購入

MAC Book AirにいれたUbuntuから有線で接続する必要が急に発生したので、手持ちのUSB Ethernetアダプタを探したところ見つからず・・・。

ということで急遽購入することに。Amazonでみたところ、最近はギガビットイーサネットGbE)対応のものもあるようで、見た目で以下のものを購入。

Amazonの商品説明欄にはLinux互換(!?)と書かれてたので問題なく動くでしょう。

本日到着。

f:id:azuzuzu:20201101212632p:plain
外観

f:id:azuzuzu:20201101212516p:plain
箱の裏側

Ubuntu 18.04のインストールされてるMac Book Airに差して、

$ lsusb
Bus 002 Device 005: ID 0bda:8153 Realtek Semiconductor Corp.

0bda:8153で検索してみると、

RTL8153 Gigabit Ethernet Adapter

linux-hardware.org

とのこと。

今のところ問題なく動いてます。

以上

NanoPi NEO2でROS2

はじめに

NanoPi NEO2でROS2が動くとのことなので、やってみる。

元ネタはこちら

qiita.com

NanoPi NEO2は、512MB版だが秋月で購入可能。

akizukidenshi.com

NAS用ケースとか

akizukidenshi.com

ヒートシンクもあります。

akizukidenshi.com

Linuxのインストール

dashingを使いたいので、Ubuntuの18.04、Bionicのイメージが必要。NanoPiはArmbianを採用しているもよう。

www.armbian.com

既に上記ページはFocal(Ubuntuだと20.04)になっているので、ページの最後にあるArchived Versionsのリンク先に移動。

f:id:azuzuzu:20201026010117p:plain
現時点(2020/10/26)時点のアーカイブ

"Armbian_20.02.1_Nanopineo2_bionic_current_5.4.20.7z"をダウンロードしてSDに書き込んで使用。

ROS2のインストール

これは普通に、ROS2の公式の手順でインストール。

index.ros.org

"ros-dashing-ros-base"まで問題なくインストール完了。

動作確認

元ネタのブログと同様、デモのtalker-listenerを使って動作を確認。

以上

Raspberry pi Zero WにWio Terminalを繋いでディスプレイ表示する

はじめに

Seeedから発売されている、Wio TerminalRaspberry pi(以下、ラズパイ)のディスプレイになるとのことで、今回試してみました。

f:id:azuzuzu:20201025232044p:plain
Wio TerminalとラズパイZero

ラズパイとWio TerminalはUSBで接続します。

Seeedの公式Wikiの以下の記事

Raspberry Pi用HMIディスプレイを作る - Seeedウィキ(日本語版)

に方法はかかれてますので、基本はここの内容に従って作業をすればよいです。

ただこのサイト、

  • ChromeでもFirefoxでも少し表示がおかしい
  • 自動翻訳をつかったのか一部日本語がおかしい

と見にくいのに注意。例えば、「sudoサービスlightdmの再起動」は「sudo service lightdm restart」というコマンドを翻訳してしまったと思われます。

Raspberry Pi Zero Wで動くか(手順的な面と性能的な面)がわからなかったので、実際にやってみました。

結論としては、それなりに動きました。

f:id:azuzuzu:20201025232226p:plain
Wio Terminalでのディスプレイ表示

見ての通り、解像度は320 x 240なのでやれることは限られてます。WiFiやBluetoohの切り替えとかにはつかるかもしれません。配置するウェジットを工夫すればちょっとしたことができかも?

f:id:azuzuzu:20201025232354p:plain
WiFi選択画面

設定でUSBの数だけWio Terminalを繋げるそうなので、Wikiではラズパイ(Zeroではない)の4つのUSBポートに4台つなげる例が書かれてます。が、あまり実用的には思えないですね。

本命は、WikiにもあるPyQtGraph等をつかって直接GUI表示する方法ですね。これは次に試してみようとおもっています。

さて、以降では、今回動作させるまでの手順+αをまとめます。Raspberry Pi Zero Wということで、セットアップ等は非常に時間がかかるので、VTuberの雑談配信やアニメをみながら作業するのがよいかと思います。(個人的嗜好)

今期アニメだと「戦翼のシグルドリーヴァ」が結構好き。

環境

以下に、今回使用した環境をまとめておきます。

項目 内容
H/W Raspberry pi Zero W
OS image Raspberry Pi OS (32-bit) with desktop and recommended software. Version: August 2020, 2020-08-20
SD容量 16GB
その他デバイス Wio terminal
USBケーブル Wio terminal付属のもの

大まかな手順

Wio Terminalの準備

Wio Terminalに、ディスプレイ表示用のファームウェアを書き込む必要があります。

ソースはgithubに公開されてるので、自分でもってきてArduino IDEで作成することができる一方、

github.com

Wikiからダウンロードできるuf2ファイルを使って、対応ファームを入れ替えることもできます。

Raspberry Pi用HMIディスプレイを作る - Seeedウィキ(日本語版)

PCにWio Terminalを繋いで、Wio Terminalのディスプレイに向かって左側面にある電源スイッチを、ONの位置から下に素早く2回引き下げます。すると、PC側にドライブとして認識されます。

そこにuf2ファイルをコピーすると、再起動してファイルを読み込んで起動します。mbedライクですね。

用意されてるuf2ファイルは2種類あって、Wio Terminalの画面右下にある青いスイッチでマウスを操作できるもの(USBDisplayAndMouseControl)と、マウスを使わないかわりリフレッシュレートが高いもの(NullFunctional)。今回はUSBDisplayAndMouseControlを使ってみました。

ラズパイ側の準備

まずはカーネルカーネルヘッダを更新。

$ sudo apt install raspberrypi-kernel-headers raspberrypi-kernel

その後、githubからドライバのソースを取得。作業はユーザのホームディレクトリ配下で行いました。

$ git clone https://github.com/Seeed-Studio/seeed-linux-usbdisp

その後、ビルドしてインストール、再起動。

$ cd ~/seeed-linux-usbdisp/drivers/linux-drive
$ make
$ sudo make install
$ sudo reboot

設定ファイルを、Xサーバの設定ディレクトリにコピー。

sudo cp ~/seeed-linux-usbdisp/drivers/linux-driver/xserver_conf/10-disp.conf /usr/share/X11/xorg.conf.d/

ウィンドウマネージャ(lightdm)を再起動。

$ sudo service lightdm restart

WikiではここでWio TerminalをUSBポートに接続とありますが、Raspberry pi Zだと繋いだとたん電力不足でリブートしていまいますので、ラズパイ起動時に接続しておくのが良いです。

以上になります。

その他メモ

HDMIへディスプレイ出力を戻したい

Wio terminalにディスプレイ表示を切り替えると、HDMIへには出力されなくなります。

HDMIに戻すには、

1) 設定ファイル名を変更して無効にし、

$ mv /usr/share/X11/xorg.conf.d/10-disp.conf /usr/share/X11/xorg.conf.d/10-disp.conf.disable

2) ディスプレイマネージャ(lightdm)を再起動します。

$ sudo service lightdm restart

切り替えに少し時間がかかります。