RaspberryPi Zero WとDAC基板をアルミケースに入れる 前編

注意: この記事に倣ってRaspberryPi Zero Wを改造すると技適が無効になるので日本国内で普通に使うことはできなくなります。電波暗箱か電波暗室の中で使うか改造を諦めて下さい。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 1
今回購入したアルミのエンクロージャ。隣は大きさ比較用の単3電池。
NanoPi NEO2用のエンクロージャを探していたときにRaspberry Pi ZERO W(以下RPi0W)とDACを納めてちょうどぴったりそうなサイズのものを見つけたのでカートに入れた。すっかり忘れてたけどアルミケースはRPi0WだとWi-Fiの電波が妨害されて通信できなくなるからダメだよねと思い直してカートから消した筈だったのに残ってて他の品物と一緒に注文確定させてしまった。
お値段はUS$1.63 (送料無料)と非常にお安い。フリスクケースを作るためにフリスク買うよりこっちのが安い。
買ってしまったものは仕方ないので無理してRPi0Wのケースとして使用することに。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 2
以前に作ったフリスクケースに入ったままのRPi0Wの基板を上から見たところ。この画像は加工無し。こういうパターンなのよということで次。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 3
下部の楕円で囲ったところが内蔵のWi-Fiアンテナ。そこから右にニョロ〜ンと伸びてるのが通り道のライン。1つ前の画像と見比べてね。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 4
前の2つの画像とは上下が逆の状態。画像がボケてるのは家のカメラ機材ではこれがマクロ側の限界だから。
RPi0Wの基板を眺めると金色の大きなランドがあってそこが何か空いてるなというのがわかるけど、内蔵アンテナに続くラインの途中のコンデンサを配置し直してランド側に繋げると内蔵アンテナが切り離されてランド側にアンテナの信号が行く。切り替え場所は先ほどのニョロ〜ンの途中にある白いやつ(チップアンテナ?)のすぐ横あたり。
上の写真では大きさ比較用に縫い針(細針)を写しているけど、付け替えるジャンパーチップ抵抗の大きさが細針の穴よりも小さいので普通の工作と比べると難易度はかなり高め。大きく写ってる針を載せてる白いやつと同サイズのコンデンサや抵抗でもハンダ付けするのはイヤだなと思うくらいので。
少なくとも3〜5倍程度のルーペ、マイナスドライバの先みたいな形状の細いコテ先、精密ピンセット(の良いやつ)、フラックスくらいは用意しないといろいろツラい。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 5
つまりこうなる。
ジャンパーチップ抵抗の(この画像では上側)を右の小さな四角いランドにハンダ付けする。下側は位置はそのままだけど、向きを45度変えるということは結局下側も一度剥がして再度ハンダ付けする。ジャンパーチップ抵抗なら熱で壊れるというのは意識しなくて良いかと思う。なお、このページで「ジャンパーチップ抵抗」だと書いてるのは見た目と結果でそう判断しただけで間違ってる可能性もあるので信用しない方が良いかも。実はジャンパーチップ抵抗を壊してしまったので計測できなかった。
ジャンパーチップ抵抗を再度貼付ける際は基板側の元のハンダをきれいに取ってフラックスを塗る。(フラックスなんか要らないよという精密作業に自信をお持ちの方はどうぞ無しでやって下さい)
詳しくは・綺麗な写真で確認するには先人のページで。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 6
設置するアンテナ端子はRPi0Wに用意されているランドのサイズからするとU.FLコネクタ(IPX)が適当なので、どこのご家庭でも使われずに余っているであろうU.FLコネクタ(上の画像のフリスクケースを横断しているリボンに10個あるやつ)とIPXSMAの変換ケーブル(上の画像の上部に見えてる2本の黒いケーブル)とSMAのWi-Fiアンテナ(上の画像の下部に2つ見えてるやつ)あたりを出しておく。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 7
ピンセットは正直良いものを持っていない。先細ではあるけど精密ピンセットではない。一緒に写っている手前側(先が上側)はダイソーのピンセットの断面。部品を挟んで固定するには良いけど細かい部品をつまむというのは無理。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 8
ここから4枚はルーペ越しの写真。
ピンセットの先が十分に細くないので部品を挟むと視界が遮られるし自在に摘めない。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 9
先細のコテ先(鉛筆型)を持っていたのでそれを使ったんだけどこて先が温まらずジャンパチップ抵抗を留めてるハンダが溶けなかった。
でも、ピンセットでつまんだら少し動いた(気がした)のでクイッとやったらジャンパチップが砕けてしまった。大失敗。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 10
仕方がないのでハンダ吸い取り線の先をほぐして繊維2〜3本をこよりにしてからハンダを吸わせて1mm以下にカット。これをジャンパチップの代わりにした。両端をランドの上に置いてこて先を上から押し付ければ付くので。ただし、最後にしないとアンテナ端子をハンダ付けする際の熱で「こより」ごとアンテナ端子側に吸い取られてしまう。
あと、このコテ先ではアンテナ端子のランドの予備ハンダもできなかったので全く役に立たないと判断。先端がマイナスドライバみたいなタイプにしたら嘘みたいに凄い作業しやすくなった。先が細いと「点」では暖められないので「線」で温めるのが良さげ。
エルピーダのメモリチップの上にあるのはU.FLコネクタの裏面。
写真の左右の黒いのはガムテープ。作業中に基板が動かないように固定するのに使う。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 11
乾きかけのフラックスがライトに照らされてメチャメチャ汚く見えるけど一応これで完成。

Raspberry Pi Zero Wの無線アンテナを外部化して金属ケースに入れる 12
設置したアンテナ端子にIPXSMAの変換ケーブルを接続し、外付けWi-Fiアンテナにつないだ。

小さな電波暗箱しか持っていなくて、箱に入れると操作することも中を見ることもできないので電波の出方を確認できていないが、一応使えている。

後編に続く

関連記事:

NanoPi NEO2のシステム監視 RPi-Monitorとnetdata

Raspberry PiにしろNanoPi NEOにしろおもちゃなので常時稼働させるのはちょっと心配。ときどき稼働状況を見たいということがある筈。
あまり大がかりなのではなく簡単にシステムの稼働状況を見るツールとしてRPi-MonitorとnetdataをNanoPi NEO2に入れてみた。

RPi-Monitor

NanoPi NEO2とarmbianの組み合わせでは以前にも書いたがRPi-Monitor (rpimonitor)が簡単に使えるようになっている。RPi-Monitorインストール用コマンドがarmbianmonitorに用意されているので実行するだけ。

RPi-Monitorインストール

# armbianmonitor -r
中略
[ ok ] Restarting rpimonitor (via systemctl): rpimonitor.service.
Processing triggers for libc-bin (2.24-11+deb9u1) ...

Now you're able to enjoy RPi-Monitor at http://:8888
#

そんなに大したものではなさそう(失礼)なのにいろいろ展開されるので個人的にはrpimonitorは好きじゃない。
インストール後に自動的にサービス起動まで行うのでブラウザで開くだけの筈なんだけど、ネットワーク系のモニタ設定がワザと無効になっているので設定ファイルを変更する。

設定変更

/etc/rpimonitor/template/network.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[code lang="plain"]
dynamic.10.name=net_received
dynamic.10.source=/sys/class/net/eth0/statistics/rx_bytes
dynamic.10.regexp=(.*)
dynamic.10.postprocess=$1*-1
dynamic.10.rrd=DERIVE
dynamic.10.max=0

dynamic.11.name=net_send
dynamic.11.source=/sys/class/net/eth0/statistics/tx_bytes
dynamic.11.regexp=(.*)
dynamic.11.postprocess=
dynamic.11.rrd=DERIVE
dynamic.11.min=0

web.status.1.content.8.name=eth0
web.status.1.content.8.icon=network.png
#web.status.1.content.8.line.1="To activate network monitoring, edit and customize <font color='#AA0000'><b>network.conf</b></font>"
#web.status.1.content.8.line.2="Help is available in man pages:"
#web.status.1.content.8.line.3="<font color='#AA0000'><b>man rpimonitord</b></font> or <font color='#AA0000'><b>man rpimonitord.conf</b></font>"
web.status.1.content.8.line.1="Ethernet Sent: <b>"+KMG(data.net_send)+"<i class='icon-arrow-up'></i></b> Received: <b>"+KMG(Math.abs(data.net_received)) + "<i class='icon-arrow-down'></i></b>"

web.statistics.1.content.2.name=eth0
web.statistics.1.content.2.graph.1=net_send
web.statistics.1.content.2.graph.2=net_received
web.statistics.1.content.2.graph_options.yaxis={ tickFormatter: function (v) { if (Math.abs(v) > 1048576) return (Math.round(v*10/1024/1024)/10) + " MiB/s" ; if (Math.abs(v) > 1024) return (Math.round(v*10/1024)/10) + " KiB/s" ; else return v + " B/s" }, }
web.statistics.1.content.2.ds_graph_options.net_send.label=Upload bandwidth (bytes)
web.statistics.1.content.2.ds_graph_options.net_send.lines={ fill: true }
web.statistics.1.content.2.ds_graph_options.net_send.color="#FF7777"
web.statistics.1.content.2.ds_graph_options.net_received.label=Download bandwidth (bytes)
web.statistics.1.content.2.ds_graph_options.net_received.lines={ fill: true }
web.statistics.1.content.2.7ds_graph_options.net_received.color="#77FF77"

基本的には設定ファイルのヘッダ部以外でコメント行を非コメントに、非コメント行をコメントに入れ替え、 web.status.1.content.数字.name=network を web.status.1.content.数字.name=eth0にすれば良い筈。

rpimonitorを再起動

# service rpimonitor restart

RPi-Monitorを見る

ウェブブラウザでrpimonitorを開く。
http://192.168.6.16:8888

上の例では192.168.6.16はNanoPi NEO2のIPアドレスとする。

rpimonitor 1
ステータス画面。わかりやすいけどこんなに広い表示エリアを使って表示する程のことじゃない。一番下のネットワークの状態は送受信速度ではなく送受信した通信量。

rpimonitor 2
Statistics画面。下側の小さなグラフで表示した範囲をマウスで選択すると上側の大きなグラフにその範囲が表示されるというのは良い機能かも。
上の画像ではCPUの温度を表示させている。右寄りで温度が下がって6度台になっているのはNanoPi NEO2のヒートシンクに風を当てたから。風を当てる前も15度前後という低い温度だが、これは室温が4度という寒い部屋だから。

netdata

netdataは以前にFreeBSD用に書いたけど、これもNanoPi NEO2とarmbianの組み合わせで動く(パッケージが用意されている)。

netdataインストール

# apt-get update
# apt-cache search netdata  ←netdataを検索
netdata - real-time charts for system monitoring       ←該当3つが表示されるが、これを入れたい
netdata-data - real-time charts for system monitoring (Data)
netdata-dbgsym - Debug symbols for netdata
# apt-get install netdata   ←netdataインストール
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  fonts-font-awesome libjs-bootstrap libyaml-0-2 netdata-data python-yaml
Recommended packages:
  nodejs
The following NEW packages will be installed:
  fonts-font-awesome libjs-bootstrap libyaml-0-2 netdata netdata-data python-yaml
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,091 kB of archives.
After this operation, 7,808 kB of additional disk space will be used.
Do you want to continue? [Y/n] y              ←確認を求められたらyを押す
後略

設定ファイルの変更

/etc/netdata/netdata.conf
1
2
3
4
5
6
7
[global]
    run as user = netdata
    web files owner = root
    web files group = root
    # Netdata is not designed to be exposed to potentially hostile
    # networks.See https://github.com/firehol/netdata/issues/164
    bind socket to IP = *

bind socket to IP が初期値は127.0.0.1になっていて外部から閲覧できないので * にでも変えておく。他は特に変更不要かと。

netdataを起動する

# service netdata start

netdataを見る

ウェブブラウザでnetdataを開く。
http://192.168.6.16:19999

上の例では192.168.6.16はNanoPi NEO2のIPアドレスとする。

netdata 1
netdataはリアルタイム性がウリなのでグラフやメーターがガンガン動く、だけじゃなくてグラフの表示範囲を弄り倒せる。そのせいで特にモバイル環境で表示すると例えばスクロールさせようとしてうっかりグラフに触れるとグラフ操作になったりというウザさもある。

netdata 2
ブラウザ画面の縮小表示。初期設定状態では表示項目が多すぎる。似たようなのが繰り返し表示されるので自分が見たいのがどれか混乱する。

RPi-Monitor、netdata共に稼働させてるホストで情報収集してそのホストで表示させるタイプなので別の監視用ホストに情報を集約させるようにはできていない。(ただし、カスタムDashboardを作ってその中に別のホストの「情報を表示すること」は可能。)
でも、難しさが皆無なので手軽に入れられるし、どちらもWebUIなので見るのも簡単なのよね。

関連記事:
Up