BeagleBone Black에 BLE 어댑터를 삽입하여 SensorTag에서 센서 데이터 가져오기
우분투 14.04.1
우분투 릴리스를 확인합니다.
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
커널 정보입니다.
$ uname -a
Linux arm 3.14.31-ti-r49 #1 SMP PREEMPT Sat Jan 31 14:17:42 UTC 2015 armv7l armv7l armv7l GNU/Linux
SensorTag
SensorTag 에는 온도 센서나 습도 센터 등 여러 센서가 탑재되어 있습니다. 코인 배터리를 설치하고 키트를 조립하기만 하면 됩니다.
Bluetooth LE 대응 USB 어댑터
SensorTag는 BeagleBone Black에 꽂은 BluetoothLE USB 어댑터의 BT-Micro4과 통신합니다. lsusb 명령으로 인식되는지 확인합니다.
$ lsusb -v
Bus 001 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 224 Wireless
bDeviceSubClass 1 Radio Frequency
bDeviceProtocol 1 Bluetooth
bMaxPacketSize0 64
idVendor 0x0a12 Cambridge Silicon Radio, Ltd
idProduct 0x0001 Bluetooth Dongle (HCI mode)
bcdDevice 88.91
iManufacturer 0
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
Node.js의 sensortag 모듈
Node.js의 SensorTag 용 모듈은 sensortag을 사용합니다. 소개 종속 패키지를 설치합니다.
$ sudo apt-get update
$ sudo apt-get install bluez libbluetooth-dev
sensortag를 설치하면 noble도 함께 들어갑니다.
$ npm install sensortag
noble install: platform is "linux'
noble install: running node-gyp ...
make: Entering directory `/home/ubuntu/node_modules/sensortag/node_modules/noble/build'
CC(target) Release/obj.target/hci-ble/src/hci-ble.o
LINK(target) Release/hci-ble
LINK(target) Release/hci-ble: Finished
CC(target) Release/obj.target/l2cap-ble/src/l2cap-ble.o
LINK(target) Release/l2cap-ble
LINK(target) Release/l2cap-ble: Finished
make: Leaving directory `/home/ubuntu/node_modules/sensortag/node_modules/noble/build'
noble install: done
[email protected] node_modules/sensortag
└── [email protected] ([email protected])
hciconfig 명령을 사용하여 장치가 인식되는지 확인합니다.
$ hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:1B:DC:06:1C:CF ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN
RX bytes:1158 acl:0 sco:0 events:63 errors:0
TX bytes:1050 acl:0 sco:0 commands:63 errors:0
sensortag와 함께 제공되는 테스트 스크립트
sensortag 모듈과 함께 제공되는 테스트 스크립트를 사용합니다. SensorTag의 전원을 켠 후 sudo에서 실행합니다.
$ cd ~/node_modules/sensortag
$ sudo node test.js
connect
discoverServicesAndCharacteristics
readDeviceName
device name = TI BLE Sensor Tag
readSystemId
system id = b4:99:4c:0:0:34:34:c0
readSerialNumber
serial number = N.A.
readFirmwareRevision
firmware revision = 1.4 (Jul 12 2013)
readHardwareRevision
hardware revision = N.A.
readSoftwareRevision
software revision = N.A.
readManufacturerName
manufacturer name = Texas Instruments
enableIrTemperature
readIrTemperature
object temperature = 20.6 °C
ambient temperature = 24.3 °C
disableAccelerometer
enableAccelerometer
readAccelerometer
x = 0.2 G
y = -1.2 G
z = 0.8 G
disableAccelerometer
enableHumidity
readHumidity
temperature = 24.6 °C
humidity = 42.1 %
disableHumidity
enableMagnetometer
readMagnetometer
x = -57.5 μT
y = 102.9 μT
z = -4.3 μT
disableMagnetometer
enableBarometricPressure
readBarometricPressure
pressure = -93 mBar
disableBarometricPressure
enableGyroscope
readGyroscope
x = -250 °/s
y = 139 °/s
z = -21.9 °/s
disableGyroscope
readSimpleRead
Orion으로 간단한 샘플 만들기
Orion 의 WebIDE를 시작하여 간단한 샘플을 만듭니다. iot-beaglebone 를 참고로 합니다.
먼저 기본 nano에서 vim으로 편집기를 변경합니다.
$ sudo apt-get install vim
$ sudo update-alternatives --set editor /usr/bin/vim.basic
npm 경로를 통과
Orion에서 npm을 실행할 수 있도록 경로를 통과합니다. npm의 위치를 확인합니다.
$ which npm
/usr/bin/npm
$ sudo find / -type f -name "npm-cli.js"
/usr/share/npm/bin/npm-cli.js
$ which npm
/usr/bin/npm
$ ls -al /usr/bin/npm
lrwxrwxrwx 1 root root 27 Oct 22 2013 /usr/bin/npm -> ../share/npm/bin/npm-cli.js
orion.conf의 npm_path에 npm의 위치를 지정합니다.
~/node_modules/orion/orion.conf
## Path to npm-cli.js on your computer
#npm_path=/path/to/npm-cli.js
npm_path=/usr/bin/npm
Orion을 다시 시작합니다.
$ pm2 restart orion
[PM2] restartProcessId process id 0
┌──────────┬────┬──────┬──────┬────────┬───────────┬────────┬────────────┬──────────┐
│ App name │ id │ mode │ PID │ status │ restarted │ uptime │ memory │ watching │
├──────────┼────┼──────┼──────┼────────┼───────────┼────────┼────────────┼──────────┤
│ orion │ 0 │ fork │ 1379 │ online │ 1 │ 0s │ 4.316 MB │ disabled │
└──────────┴────┴──────┴──────┴────────┴───────────┴────────┴────────────┴──────────┘
Use `pm2 info <id|name>` to get more details about an app
프로그램 만들기
먼저 프로젝트의 폴더를 만듭니다.
package.json에 필요한 모듈을 정의합니다.
package.json
{
"name": "sensortag-test",
"version": "0.0.1",
"private": true,
"dependencies": {
"async": "*.*.*",
"sensortag": "*.*.*"
},
"scripts": {"start": "node app.js"}
}
메인 프로그램입니다.
app.js
/*eslint-env node */
var SensorTag = require('sensortag');
var async = require('async');
SensorTag.discover(function(sensorTag) {
sensorTag.on('disconnect', function() {
console.log('Tag Disconnected');
process.exit(0);
});
async.series([
function(callback) {
console.log('SensorTag connected');
sensorTag.connect(callback);
},
function(callback) {
console.log('disconnect');
sensorTag.disconnect(callback);
}
]);
});
테스트를 위해 간단한 프로젝트를 만들었습니다.
Shell 화면으로 이동하여 package.json에서 모듈을 설치합니다.
$ npm install
...
noble install: done
[email protected] node_modules/async
[email protected] node_modules/sensortag
└── [email protected] ([email protected])
파일에 기능 할당
setcap 명령을 사용하여 적절한 권한을 설정하여 sudo를 사용하지 않고 프로그램을 실행할 수 있습니다.
$ sudo apt-get install libcap2-bin
$ cd /home/ubuntu/node_modules/orion/.workspace/sensortag-test
$ find -path '*noble*Release/hci-ble' -exec sudo setcap cap_net_raw+eip '{}' \;
Shell 화면으로 이동하여 SensorTag의 전원을 켠 다음 프로그램을 실행합니다.
$ npm start
> [email protected] start /home/ubuntu/node_modules/orion/.workspace/sensor-tag
> node app.js
SensorTag connected
disconnect
Tag Disconnected
Reference
이 문제에 관하여(BeagleBone Black에 BLE 어댑터를 삽입하여 SensorTag에서 센서 데이터 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masato/items/fa945cb7b2709592ec11텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)