忘れそうな内容をメモしています

忘れっぽいのでメモ帳がわりに色々書いてます

HS210Proでマイクロドローンに入門してみた

先日、HS210Proという小型ドローンをヨドバシカメラで購入しました。

このHS210Pro、機体にカメラが付いており映像を2.4GHz帯の電波(総務省の以下ページによると免許不要の2.4GHz帯小電力データ通信システムという分類になるらしい)を用いてスマホに伝送しています。値段もそこそこ手頃で、面白そうだったので思い切って買いました。

www.tele.soumu.go.jp

機体の裏側には技適マークのシールが貼ってあり、番号*1で調べてみると「相互承認(MRA)による工事設計認証」という形で技術適合証明を取得しているようです。

f:id:shintarof:20210215075840j:plain
機体の裏側

家の中で飛ばしてみましたが、なかなかむずかしいです。

さて、中身も気になったのでカバーを開けてみました。 この基板の下にもう一枚入っていましたが、モータの配線周りを切らないと外せそうになかったので今回はここまでにしました。

f:id:shintarof:20210214230519j:plain
PAN159CYというチップが入っていた

一番大きいチップに刻印されている「PAN159CY」でググってみると以下のページに詳しい情報がありました。 どうやらXN297という無線ICとNuvoton社のMini58 Cortex M0で構成されているようです。 www.rcgroups.com

このPAN159CY上のカスタムファームウェア(但しHS210ProではなくEachine E58という機体)のプロジェクトもあるようで、Eachine E58のハード構成が載っていました。恐らくHS210Proも同じような構成になっているような気がします。
(本当は分解して調べたいけど飛ばせなくなると困るので後日分解します)

Motor drivers - NP9926A dual mosfet x 2
Gyro - I2C Addr 0x69 - seems to be an MPU-6050
Pressure sensor - I2C Addr 0x77 possibly bmp280
Crystal - 16MHz This seems to only be used for the RF transciever

github.com

また、PAN159CYに関する各種ドキュメント・ツール等は以下にありました。 http://bbs.panchip.com/forum.php?mod=viewthread&tid=35&extra=page%3D1bbs.panchip.com

一通り飛ばして満足したら、PAN159CYというチップでいろいろ遊んでみようかと思います。

電子工作関係の中国語メモ

情報収集のため、中国語の技術系ブログなどをgoogle翻訳やDeepL翻訳で読むことがあるのですが、 勉強のために気になった単語の意味をメモすることにしました。

google翻訳、DeepL翻訳の結果をそのまま載せています。

今後随時追加予定です。

電子工作関係

中国語 日本語
开源 オープンソース
博客 ブログ
串口 シリアルポート
麦克 マイク
麦克风阵列 マイクロフォンアレイ
麦克风阵列驱动 マイクロフォンアレイドライバ(驱动がドライバという意味?)
硬件 ハードウェア
固件 ファームウェア
源码 ソースコード

その他

中国語 日本語
神经网络模型 ニューラルネットワークモデル
转换 変換
手把手教你使用 ハンズオン
论坛 フォーラム
棒棒哒! すごい

grafanaのcsvプラグインを使ってみた

久しぶりのブログ投稿です。最近データの可視化にgrafanaをよく使っているのですが、 csvデータを可視化するプラグインを見つけたので試してみました。

github.com

環境はDebian10.7です。

1.grafanaの環境構築

以下のコマンド一発でcsvプラグイン込のgrafanaをdockerで立ち上げます。

#docker run -d  -p 3000:3000 --name=grafana  -e "GF_INSTALL_PLUGINS=marcusolsson-csv-datasource" -v /home/user/docker:/home  grafana/grafana:7.3.7-ubuntu

http://localhost:3000にアクセスしてログイン画面が表示され、歯車マークのpuginsにcsvが表示されていれば成功です。 f:id:shintarof:20210124013957p:plain ちなみに、立ち上げたコンテナにログインする際は、以下のように-uを0に指定しないとrootになれないようです。

#docker exec -it -u 0 grafana /bin/bash

stackoverflow.com

2.Data Saurcesの設定

歯車マーク→Data Sourcesを選択→CSVを選択→Localを選択→csvのパスを選択してSave&Testするだけです。 f:id:shintarof:20210124014904p:plain csvデータは日経ウェブサイトから日経平均株価の日次データをダウンロードを使用しましたが、csvデータの末尾にテキストが入っていたので削除し、文字コードがshiftJISだったので$nkf -w input.csv > output.csvでutf8に変換しました。

3.Dash bordsの設定

+マーク→Dash Bordを選択→Add New Panelを選択して、以下画像のようにデータの名前とデータタイプを指定しました。

f:id:shintarof:20210124013041p:plain
グラフ表示できました

4.感想

これまでcsvデータを可視化するためだけにコードを書いたり、LibreOffice等でグラフ書いてたりしてましたが、このプラグインを使えば簡単にgrafanaで扱えるので便利です。
オリジナルのプラグイン作成に最近興味があるので、まずはこのプラグインの中身を解読してみようと思います。

BareMetalで遊ぶRaspberry Pi

連休中に「BareMetalで遊ぶRaspberry Pi」を購入して初代ラズパイ( RaspberryPi 1 Model B )でLチカとハローワールドをやってみました。 ラズパイ上でプログラムが動く仕組みや、ハードウェア制御の仕組みが詳しく解説してありとても勉強になります。
tatsu-zine.com

基本、書籍に沿って進めれば動作しますが、環境構築とSDカードに仕込むbootcode.binとstart.elfでちょっとハマりました。
ちなみに開発環境はDebian10.4の使いました。

Crosstool-NGのビルドについて

Crosstool-NGは書籍にある1.19.0を試してみましたが、./configureで色々とエラーが出たので最新版を以下手順で入れました。

$wget https://github.com/jcmvbkbc/crosstool-NG/archive/crosstool-ng-1.24.0.tar.gz
$tar -zxvf crosstool-ng-1.24.0.tar.gz 
$cd crosstool-NG-crosstool-ng-1.24.0/
$./bootstrap 
$./configure --prefix=/home/user/cross
$make
$make install

SDカードに仕込むbootcode.binとstart.elfについて

ビルドしたイメージを空のSDカードに置く際に一緒に、config.txt、bootcode.bin、start.elfも一緒に置く必要がありますが、 config.txtは自分で作れば良いものの、bootcode.binとstart.elfをどこから持ってくるかで悩みました。調べたところgithubの以下ページから最新版のbootcode.binとstart.elfが合ったのでそれを持ってきて配置してLチカはうまく動きました。
(実は最初、このbootcode.binとstart.elfを別の初代ラズパイで動いているvolumioのSDカードのものを移植して動かしていましたが、 おそらくバージョンが合わなかったのか、エラーでLEDが点滅し、それをLチカのプログラムが正しく動いていると勘違いしていました) github.com

最新版のbootcode.binとstart.elfでLチカは動きましたが、第5章のUARTでラズパイからの送信データが0xFFになる現象が起こりました。 色々原因を調査して試したところ、おそらくbootcode.binとstart.eldのバージョンが新しかったようで、 以下の古いバージョンにすると正しく送信できるようになりました。 github.com

k210(maix bit)でnommu linuxを動かしてみた

k210でnommu linuxが動くと聞いたので以下のbuildroot forkを動かしてみました。 github.com そのままmake kendryte_k210_defconfig&&makeするとIncorrect selection of kernel headers: expected 5.9.x, got 5.8.xとのエラーが出ました。

Kernel→Kernel versionを5.8に、Toolchain→Custom Kernel header serielを5.8にすると成功します。 ビルドに成功すると、output/images/loader.binが生成されるのでこれをmaix bitに書き込めばnommu linuxが動きます。

このnommu linuxのイメージについて少し見てみると./output/target/bin以下のバイナリの形式がELFではなく、FLAT形式になっていました。 調べたところnommu linuxの場合容量の節約のためにFLAT形式が使用されるようです。

$ file output/target/bin/busybox 
output/target/bin/busybox: BFLT executable - version 4 ram gotpic

ELF形式、FLAT形式はmake menuconfigの画面上では設定できず、arch/Config.inを編集することで変更できるようです。 具体的には213行目のselect BR2_ARCH_HAS_MMU_MANDATORYをselect BR2_ARCH_HAS_MMU_OPTIONALにするとFLAT形式になります。