見出し画像

nanoPi NEO で、BLE Gateway Server を設置する #IoT

■ 概要

raspBerry Pi 2版の BLE Server 環境を、 nano Pi NEO 512M に移植してみました。
Ubuntu core にインストールしてます。
BLE子機も、前回と同じRN4020基板でセンサ値を送信できました。

■ Linux version
pi@NanoPi-NEO:~/work/bluepy/ble_gateway_sv$ uname -a
Linux NanoPi-NEO 4.11.2 #266 SMP Thu Jun 29 17:46:10 CST 2017 armv7l armv7l armv7l GNU/Linux

■ bluepy インストール方法は、前回と同じです、
bluez はインストール済みでした。

bluez (* インストール済みでした。 )
sudo apt-get install bluez

bluepy
$ sudo apt-get install python-pip libglib2.0-dev
$ sudo pip install bluepy

requests (*インストール済みでした。 )
sudo pip install requests

■  python service の起動も前回と同じ systemctl
を使いました。
参考 : http://knaka0209.blogspot.jp/2017/07/raspi-6-BLE.html

■ code ,python server は前回のrasPi版と同じです。
最新のble_gateway_sv2、 public addressに対応しています。
https://github.com/kuc-arc-f/ble_gateway_sv2

関連 blog:
http://knaka0209.blogspot.jp/2017/08/nanoPi-4.html

http://knaka0209.blogspot.jp/2017/09/nanoPi-8.html

*)旧版 server、randam addressも対応できますが、最大送信桁数は短めです
https://github.com/kuc-arc-f/ble_gateway_sv

=== update:2018/01/13 ====
■ OS 再インストール時の BLE処理エラー対応 (2018-01 版)
*)新規インストールもほぼ同様

昨年から半年程度、連続稼動していた。BLE gateway機能ですが
原因は不明で停止した為、復旧作業を行いました。

OSインストール、前回と同様のURLからコピー、zip解凍し:
imgファイルを取り出し。*) 下記のファイル名
nanopi-neo_FriendlyCore-Xenial_4.11.2_20171122.img

version:
pi@NanoPi-NEO:~$ uname -a
Linux NanoPi-NEO 4.11.2 #38 SMP Tue Nov 21 16:45:21 CST 2017 armv7l armv7l armv7l GNU/Linux

bluepyのインストール:
今回は、gitからinstall
https://github.com/IanHarvey/bluepy

$ sudo apt-get install git build-essential libglib2.0-dev
$ git clone https://github.com/IanHarvey/bluepy.git
$ cd bluepy
$ python setup.py build
$ sudo python setup.py install

centralでscan機能のチェック:
scanのサンプルを実行
bluepy のエラーが発生し、scan出来ませんでした。。

bluepy.btle.BTLEException: Failed to execute mgmt cmd 'scanend'

lsusb を確認しましたが。問題なく認識してそうです。:
> lsusb
Bus 008 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

いろいろ調べたのですが、下記を参考にしました。感謝です:

Raspberry Pi で Bluetooth を使ってみた。(2)
https://qiita.com/tchisaka/items/80d4dcbfe83bb88acf02

sudo apt-get update
sudo apt-get install libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libical-dev libreadline-dev libudev-dev libusb-dev make
sudo apt-get install bluez

hciconfig を実行し、 hci0 を up変えると、正常に動作しました。
>sudo hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:1B:DC:06:BD:89 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING
RX bytes:543588 acl:0 sco:0 events:21808 errors:0
TX bytes:52112 acl:0 sco:0 commands:6995 errors:0
修正前は、UP RUNNING の部分が、
downと表示されていたので、
下記の upを設定、実行できました。
>sudo hciconfig hci0 up

結局は、初期時はドライバ設定は無効みたいで、
修正が必要みたいですね。

その他、systemctlのログの設定:
気になったので、
今回はログの容量を制限追加しました。
関連するjournalctl コマンド
ログ確認
journalctl --disk-usage
ログ表示
journalctl -e

conf の修正:
/etc/systemd/journald.conf
SystemMaxUse=3M

systemctl 再起動、又はOS再起動:
systemctl restart systemd-journald

この設定でしばらくすると、5M程消費していました。
それ以上増えないようです。
pi@NanoPi-NEO:~$ sudo journalctl --disk-usage
Archived and active journals take up 5.0M on disk.

systemd(journald)のログ容量を制限する
https://qiita.com/sharow/items/c56e81e4c2a658c3c921

journalctl 最低限覚えておくコマンド
https://qiita.com/aosho235/items/9fbff75e9cccf351345c

■ まとめ


nanoPi は安価で、rasPi 2と比較して、 1/3程度の価格で
低価格な サーバー機として安定して使える気がしますが
rasPi に比べて、さほど知名度は無い気もします。


この記事が気に入ったらサポートをしてみませんか?