GNU Radio Conpanion ブロックとその役割
初めて3日目くらいなので、忘れないうちにブロックの機能について書いておく。
新しいブロックについて学習したら随時追加
Multiply Const
入力データの大きさ(≒振幅)をn倍する
この例だと0.1倍。
Rational Resampler
入力のサンプル数を増減させてから出力する。
SampleRate_out = SampleRate_in * Interpolation / Decimation
前段と後段でサンプルレートが違うときに使う。
Pattern Interleaver
説明難しいが、左にある複数の入力を、配列で指定した順番に切り替えて使う、プログラマブルSP3Tスイッチみたいな感じ。
時間あったら追記
下記ロシア語サイトが非常にわかりやすい。(google翻訳にかけよう)
Блок Patterned Interleaver - GnuRadio и все все все
Repeat
入力サンプルをInterpolarion回くりかえして出す
Throttle
主に出力デバイスがないとき、サンプルの処理速度を設定したサンプルレートに制限する。
フローがサンプルレートの無いブロックで完結してしまう場合、PCの限界まで計算を行ってハングアップするので、それを防ぐ役割をもつ。
もしくは明示的にサンプルレートを指定したい場合に用いる。
HackRFOneとGNURadio(Companion)をWindowsで使ってみる
最近、仕事でSDR(software defined radio=ソフトウェア無線)を使う機会がありそうなので、備忘録とタイピング練習を兼ねて書く練習をする。
これらを使うとなにができるか
・2.4GHz帯とか、電波の様子を見ることができる
・AMFMラジオを受信してPCで聞ける
・・なんだったらAMFMトランスミッタもできる
・ASK、PSKなどのデジタル通信の送受信を色々試せる
・BTとか電波通信のスニッファができるかもしれない
GNURadioのバイナリをインストールする
GNURadio公式のWikiには既に書かれているが、Win向けにビルド済みのバイナリが配布されている。
ここから、自分の環境にあったインストーラをダウンロードしてくる。
よくわからなければ下記のようにAnyCPUと書かれているものの最新版でよい。
この時点で64bit版のバイナリしかないので、未だに32bitOSを使っているひとは今すぐ64bit版を買ってこよう
インストール時、特に聞かれることはない。
パスを通す
GNURadioのインストール時に、対応しているSDRボードのツール群もインストールされている。(BladeRFやHackRFのものももちろんある)
しかし、そのままではパスが通っていないので自分でパスを通す必要がある。
私の場合、Dドライブにいれたので
D:\Program Files\GNURadio-3.7\bin
配下に色々なバイナリ群が置いてあったのでここへパスを通す。
パスの通しかたは
Windows で環境変数 PATH をいじる方法のまとめ - Qiita
がわかりやすい。
※SDRボード側の用意しているツール群をインストール(ないしビルド)する必要はあるか?
このへんで、ほかの記事を並行して見ている人は「このあとはHackRF由来のツールもインストールするんだろ?」と思う人もいると思うが、
少なくともHackRFを利用する上でその必要はない。
HackRFのgithubレポジトリの説明を見ると、自分で一からビルドしなければいけない風に書いてあるが、ビルド済みのものをGNURadioが用意してくれている。CMakeやらcygwinを使ってビルドする必要はない
(それに気づかずずいぶんと時間を消費してしまった・・・)
BladeRFについては、ボードのUSB側ファームウェアの更新などをインストール時にしてくれるのでnuandから用意されているインストーラーは使うと楽。
それにfpga側ファームウェアのロードなどもしなければいけなので、一度nuand提供のgetting startedを読んだほうが良い。
HackRFOneを繋いでドライバ入れる
インストールしてパスを通したら、HackRFOneをPCに繋ぐ。
ドライバのインストールが必要なので、先ほど通したパスの中にある
zadig.exeでドライバのインストールを行う。
なければ本家がここにあるので、ダウンロードしてくる。
起動してもリストボックスに何のデバイスもなければ、Options->List All Devices
を選択する
HackRFOneを選択して、既にドライバーがあれば(左側の表示)そのままで良いし、何もなければInstall Driverを押下。
ドライバはWinUSB含めて3種類ほどあったが、WinUSBで良い。
動作確認
ここまできたら、コマンドプロンプトを開き、以下のコマンドを入力
hackrf_info
こんな感じでFound HackRFと共にバージョンやシリアル番号が取得できれば準備完了
GNURadio上で動かしてみる
GNURadio Companionを起動する
しばらくすると、こんな感じの画面が現れる。
ここにフロー図を書くことで簡単に信号処理を行うことができる。
GNURadioの操作方法については、このチュートリアルが大変わかりやすい。
英語はGoogle翻訳に突っ込めばほぼ理解できる。
このなかの
Core concepts of GNU Radio applications
は、自分でフロー図を書くときに必要になるのであとで目を通そう。
とりあえずFMを受信してみる
HackRFのチュートリアルから、FMラジオの受信を行う。
Getting Started with HackRF and GNU Radio · mossmann/hackrf Wiki · GitHub
チュートリアルのページにある”You can find the GNU Radio Companion source file here”となっているリンクから、fm_radio_rc.grcというxmlをダウンロードする。
これはフロー図のデータなので、GNURadioConpanionで読み込むことができる。
実行すると、設定した周波数の音声を聞くことができる。(要アンテナ)
歯が痛い
タイピングの練習をしたいので適当なことを書きます。
銀歯がとれました。
そういえば、最近の虫歯治療では銀歯ではなく白色の樹脂を充填することもありますよね。(そんなに虫歯になってるのか)
あれ使えたら便利そうなので調べてみました。
この記事の内容は以下の3行。
・名前はコンポジットレジン
・医療系メーカーのほかに、3Mとかも作ってる
・楽天で買える
白い詰め物
「虫歯 白 詰め物」とかでググってみると、どうやら白い樹脂はレジンの一らしい。CR(コンポジットレジン)なんて呼ばれている。
レジンといえば、フィギュアの複製制作とか光造形3Dプリンタとかに使うイメージですが、これ元々医療関係で使われているもの持ってきたらしいですね。
直ぐ硬化するみたいだし、硬化前も程よい硬さっぽいので使えそうならつかってみたいですね。
どこが作っている
歯科用の会社が作ってるみたい
https://www.tokuyama-dental.co.jp/products/product2.html
我らが3Mも色々作っているようだ。ほんまなんでもつくってるな
買えるのか
楽天市場ってなんでも買えるんだな。
でも2gで3600円とか相当お高い。さすが医療用品・・・
自作キーボードを傾斜させたかった
大絶賛稼働中のHELIXぴこさんでありますが、完成当初から傾斜させたいなーとおもっていました。
そういえば大抵のキーボードって、裏側に爪がついてて開けると傾斜するじゃないですか。
今書いてて、傾斜つけるつけないを選べるようにするのも有りだなと思いました。
しかし今回作ったのは固定型です。
後にその傾斜部分に電池を入れておきたいとおもっているので何となく電池の寸法を意識しながら作りました。
3Dぷりんとなう....
できた。
HELIX Pico、傾斜が欲しかったのでスペーサーを作った。いいかんじ pic.twitter.com/7fFnGBHWaw
— れいてんし (@raytency) April 5, 2019
nRF24L01のふぁーすといんぷれ
nRF24L01使ってみました。
こいつは何かというと、簡単に無線通信が出来る便利系ICです。
国内だとXbeeとかTWI-Lightとかでしょうか。
あれらにくらべてとても安いところが特徴です。
ただ、流通している格安モジュールは技適を通ってないので、実際日本国内で使うのは電波法違反っぽい・・・
隣人を混乱させるような電力出しているわけではないので何も言われないとはおもいますが、組み込んで販売等する場合は技適の取得が必要になるでしょう。
基本的に、下記に書かれているとおりなのですがnRF24を扱うライブラリはいくつかありました。下記の記事でつかわれているのは一番機能がリッチそうなやつ
https://ehbtj.com/electronics/nrf24l01/
なのですが今回はより簡単そうなNRFLiteというライブラリを使用しました。
データシートをろくすっぽ読まずにICが利用できてとても便利ですね。先人たちに感謝ですが、自分の身にならなくて不安です・・・
配線
ライブラリのはなしをしてしましましたが、まずは配線です。
VCCは3.3Vを与えましょう。5Vはアウトです。
ただ、入力ポートは5Vトレラントなので、5V動作のArduinoでもレベル変換回路は不要です。ポートに直接繋いでOK。
GNDはGNDに落としましょう。
MOSI/MISO/SCKはそのままハードウェアSPIのポートにつなぎます。Arduinoで変わるので自分で調べてください。
CS・CSNは適当なデジタルピンに繋ぎます。
IRQは実験では未接続でOKです。
※これは割り込み用のピンなので、本番では使用し、データ来るまでマイコンスリープさせるなど、待機電力を削減するようにしないと・・
これらを2台用意します。
ソフト
Arduinoの開発環境を開いたらCtrl+Shift+Iでライブラリ管理を呼び出し、NRFLiteを検索します。
ロードできたらサンプルスケッチが追加されているので、
ファイル→スケッチ例→NRFLite→Basic_RX(2台目はBasic_TX)
からサンプルを読み込んで書き込みましょう。
シリアルから読めた的なログが出てきたら成功です。
おわり
今回は結線してサンプルを流し込んで終わりですが、実際手元で動くことを確認できました。
これは自作キーボードの無線化にも使えるし、ほかにも無線化したいものがあるのでそれに組み込んでいこうと思います。
ただ、技適通ってないのが痛いですね。だから安いんですけど。。
なんか無線ものを販売したいとなった場合は、モジュールは各自調達してもらうかXbeeなど技適通ったものを使う必要がありそう。
自作キーボード買った
自作キーボード。HELIX Picoを買いました
最近(と言ってもそこそこ昔)、Twitterやらで人気の自作キーボード。
メインの入力デバイスはこだわろうと思っているので一個ほしいなーとは思っていましたが、ついに買ってしまった。
買ったのは、HELIXPicoという、4行でOrthogonal(直行=普通のキーボードと違って、列が互い違いになっていない配列のもの)なキーボードです。
普通のキーボードはファンクションキーを含めてだいたい6行くらいあるので、4行といったら相当少ないです。
それをどうカバーするかといったら、シフトキーみたいなキーの役割を変えるスイッチが2個くらい増えて、色々兼任させることでやりくりしようという話のようです。
制作
制作にあたり、はんだ付けが必要になっています。
一個表面実装のパーツ(スピーカー)がありますが、その他はDIP部品なので半田付けは容易です。量は多いですが・・・
特筆するべき注意事項としては、pro microのUSBコネクターと、スピーカーの空きランドがショートすると動かないので、間に絶縁するなにかを貼るとよいです。
私はカプトンテープを貼りました。
インストール
制作後、インストールにあたりドライバ等は不要ですが、付属のキー配列表は英字配列なのでWindowsの設定を102キーボードに変更する必要があります。
使ってみて
背伸びをして無刻印のキーキャップ(キーにQとかWとか書いていないやつ)を買ったのですが、書いてたほうがわかりやすかったなと思います・・・
あと、直交配列は違和感がすごい。特に右手。
B、T、Hあたりのキーは、左右の指が出張することが多いので分離されると慣れるのに時間がかかる
まぁいい機会なので、ブラインドタッチを頑張ろうと思います。
今後
このキーボードは、ファームウェアを書き換えればいかようにもキー配列をいじれるところがいい点なので、ファームウェアのビルド環境を整えたいと思います。
見た感じAVRDUDEをつかう感じなので、Macでやったほうが楽かな?
※WindowsのAVR開発環境はWinAVRが更新止まってから触ってない・・・
その後、
・親指機能を強化して左手キーボード化
・いちいちビルド面倒くさいのでEEPROMに記録して、専用ツールで更新できるようにする
・無線化
とかしたいですね。