BeagleBone Black에 BLE 어댑터를 삽입하여 SensorTag에서 센서 데이터 가져오기

BeagleBone Black의 SD 카드에 있는 Ubuntu14.04.1을 사용합니다. BLE 대응의 USB 어댑터를 꽂아 SensorTag로부터 센서 데이터를 취득해 봅니다. 간단한 Node.js 프로그램은 마지막 설치 한 Eclipse Orion에서 개발합니다.

우분투 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

프로그램 만들기



먼저 프로젝트의 폴더를 만듭니다.
  • File > Folder > sensor-tag

  • 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
    

    좋은 웹페이지 즐겨찾기