Raspberry Pi Zero WHのセットアップ(GUI無し、Wi-Fiあり)

bms

BMS(BatteryManagementSystem)とシリアル(UART)通信を行い、Webサーバで公開するサーバをセットアップします。今回はRaspberryPi のセットアップから、シリアル通信が成功するまでを紹介します。

用意するもの

Raspberry Pi 本体Raspberry Pi Zero WH
省エネのWebサーバを立てたかったので選択。どうせHAT側のはんだ作業は必要だったのでWでも良かったんですが売ってなかったのでWHを選択。
microSDカードリーダライタmicroSDカードの読み書きに使用します。
microSDカード予備で買ってあった16GBを使用します。GUI無しなのでもっと少ない容量でも問題ありません。
USB電源Zero WHは最大でも1.2Aしか流れないようなので今どきのスマホ用充電ケーブルなら大丈夫そうです。今回は3 modelBで使っていた2.5Aのものを使用しています。
パソコンダウンロード & SSH接続用です。今回はWindows10で行っています。
Wi-FiルータRaspberry Piと外との通信はWi-Fiで行いますので、Wi-FiルータのSSIDとパスワードをメモっておきます。
UART接続先今回はBMSを監視します。
UARTケーブル接続ケーブルは今回は自作します。
UARTケーブル接続用HAT接続ケーブルをRaspberry Piに接続する部分になります。着脱を考慮してコネクタを付けます。

必要ファイルのダウンロード

OS(raspbian)イメージ

302 Found

標準的なOSであるraspbianをダウンロードします。今回は対話的な操作はせずサーバとして利用するので、左下の「Raspberry Pi OS (32-bit) LITE」を選択してダウンロードします。

SDカードフォーマッター

SDメモリカードフォーマッター | SD Association
SD/SDHC/SDXC用SDメモリカードフォーマッター v.5.0.1は、SDAが発行したSD File System Specificationに準拠して、SD/SDHC/SDXCメモリカードをフォーマットします。

買ったばかりのSDカードはフォーマットされていることもありますが、不要なトラブルを避けるため公式ツールでSDカードをフォーマットをしておくのが無難です。フォーマッターをダウンロードします。

OSイメージ Flashツール

ダウンロードしたOSをSDカードに書き込むためのツールをダウンロードします。

balenaEtcher - Flash OS images to SD cards & USB drives
A cross-platform tool to flash OS images onto SD cards and USB drives safely and easily. Free and open source for makers...

OSイメージ書き込み

これでセットアップに必要なファイルはそろったのでセットアップを始めます。

SDカードフォーマット

まずは先ほどダウンロードしたSDカードフォーマッターを起動してSDカードをフォーマットします。

OSイメージ書き込み

SDカードのフォーマットが終わったら次は、ダウンロードしたOSイメージをSDカードに書き込みます。
先ほどダウンロードしたEtcherを起動します。画面左の「Flash from File」をクリックしてダウンロードしたOSファイルを指定します。
画面真ん中のSDドライブが正しいことを確認し、「Flash!」をクリックします。

OSイメージの書き込みが終わるとSDカードのドライブ(今回はLドライブ)がいったん見えなくなっているので、SDカードを指しなおします。

接続用ファイルの配置

これでOSは起動しますが、今回はキーボード、ディスプレイを繋がずにセットアップをしますのでパソコン(Windows10)とSSH接続できるようにしておく必要があります。
2つファイルを準備します。

SSH接続用ファイル

SDカードドライブ(今回はLドライブ)のルートに ”ssh”という中身のないファイルを置きます。
これでsshが許可されます。

Wi-Fi設定用ファイル

外と繋ぐための無線LANの設定をします。SDカードドライブのルートに”wpa_supplicant.conf”というファイルを作成します。中身は以下のようになります。メモっておいたSSID名とパスワードを書き込みます。
(xxxxxxxxxx:SSID名、yyyyyyyyyy:接続用パスワード)

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="xxxxxxxxxx"
    psk="yyyyyyyyyy"
}

2つのファイルが準備できるとSDカードのルートフォルダは以下のようになっているはずです。

これでSDカードの準備も整いました。
SDカードをパソコンから外し、Raspberry Piにさして起動します。
Raspberry Piに電源ボタンはないので、USB充電ケーブルをさすと起動します。

Raspberry Piの設定

最初に設定しておきべき設定をいくつかします。(一般に公開するサーバではないので最低限です)

ssh接続

USB電源を繋いで画像左上のLED点滅が落ち着くのを見計らってPCからssh接続します。
PCのコマンドプロンプト(cmd)を起動し、”ssh pi@raspberrypi.local”と打ち込みます。
パスワードを聞いてくるので ”raspberry” (デフォルトパスワード)と入力します。
ログインに成功するとpiユーザのプロンプトに変わりますので、”sudo raspi-config”と入力して設定画面を開きます。

以下の項目を設定します。

1.Change User Passwordpiユーザのパスワードをデフォルト(raspberry)から変更しておく
2.Network Options
 N1.Hostname
hostname(いわゆるコンピュータ名)をデフォルト(raspberry)から変更しておく
4.Localisation Options
 I1.Change Locale
リストの中から、”ja_JP.UTF-8″を選択(Spaceキー)し、Default localに指定する
4.Localisation Options
 I2.Change Timezone
“asia” → “tokyo”
4.Localisation Options
 I4.Change Wi-Fi Country
“JP Japan”
5.Interfacing Options
 P6.Serial
シリアル通信はデフォルトでは許可されていないので使えるようにします。2つの質問に答えます。
“~login shell~”:<no>
“~serial port hardware~”:<yes>
8.Updateこのツール(rasp-config)のアップデートを実施しておきます

ツールを終了し、”sudo reboot”で再起動します。

もう一度ssd接続

先ほど同様ssh接続を行います。
host名とユーザーパスワードを変更したので “ssh pi@xxxxxx.local” (xxxxxxは新たなhost名)と入力し、パスワードも新しいものを入力します。

serial port確認

“ls /dev/serial*” と入力して、”/dev/serial0″が返ってきていればOKです。

UART接続

ここからはUART接続機器(BMS)と接続する物理的な準備に入っていきます。

HAT準備

Raspberry Pi Zero用のプロトタイプ基板にピンソケット、XHソケットを半田付けしていきます。
UART接続に必要なのは、GND、TX、RXなので、GPIOの6、8、10を使用します。
サンハヤトのものはPINアサインも刻印されていて使いやすかったです。

HAT表
HAT裏

ケーブル準備

HAT側は3ピンXH、BMS側は4ピンXHなので、接続ケーブルを作成します。

UARTケーブル

組み立て・・・の前に温度確認

HATで覆ってしまうと基板の状態に見えにくくなるので通常状態の温度を確認

温度分布

至近距離での撮影なので通常のレンズと赤外線用レンズの差で重ね合わせがずれていますが、40℃前後でした。(室温30℃)

組み立て

組み立てというほどではないですが、Raspberry Pi 本体、HAT、ケーブル、BMSを接続します。

BMSと接続

画面上の銅板が付いてるのがBMSです。とりあえずRaspberry Piは BMSの放熱板の上に置いています。BMSの下にバッテリ(リン酸鉄リチウムイオンバッテリ)があり、画面下の青いのはDC-ACインバータです。

SoftWare インストール

nodejs、npm インストール

Raspberry Pi へ sshで接続し以下のコマンドを実行します。
sudo apt-get update
sudo apt-get install -y nodejs npm
(2行目のインストールは数分かかります)
インストールが終了すると “node -v”、”npm –version”でそれぞれのバージョンが確認できます。

pi@bmschecker:~ $ node -v
v10.21.0
pi@bmschecker:~ $ npm –version
5.8.0

接続確認アプリインストール

Node.js上で動く簡単なプログラムを使って動作を確認します。
“serialport” で /dev/serial0 をオープンして データを取得して、”express”で作ったWebAPIでLAN上に公開する感じです。
ただ、肝心の”serialport”がすんなり入らず、 “–unsafe-perm”をつけないとインストールできませんでした。

BMS監視ソフトは別の機会に紹介します。

接続確認

実行すると、BMSからバッテリの電圧値、残り容量、各セルの電圧、温度 などが取得できていることがわかります。
1秒に1回 BMSと通信し、結果をファイル出力し、WebAPIをたたかれれば答えるだけのプログラムですが、CPU使用率は20%ほどなので実用に耐えそうです。

スマホから取得値の確認

コメント

タイトルとURLをコピーしました