정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

BLE advertisementDATA 수신 관련 문의
이태희 | 2019-04-12
 

1. 프로젝트 사용한 보드 종류

 RFduino

 

2. 사용한 개발 프로그램명

아두이노 IDE, Python (2, 3)

 

3. 사용한 센서 모델명

GAS 감지 센서 (RFduino 호환)

 

4. 연결한 회로 설명 (또는 이미지)

 전용 쉴드라서 맞춰 끼워넣기만 했습니다. (GAS센서는 정상 작동합니다.)

 

5. 소스코드 (주석 필수)

 

 

#include <RFduinoBLE.h>

#define Group_ID  10
int pin_GAS = 2;
char Device_Name[] = "GAS--"; char Sensor_data[] = "G----";
uint16_t ADC_DATA = 0, ADC_DATA_pre = 0; uint32_t time_check = 0;
void setup() {  // put your setup code here, to run once:  
  Serial.begin(9600);  
  pinMode(pin_GAS, INPUT);  
  Device_Name[3] = Group_ID/10 + '0';  
  Device_Name[4] = Group_ID + '0';  
  RFduinoBLE.deviceName = Device_Name;  
  RFduinoBLE.advertisementData = Sensor_data;
  RFduinoBLE.begin();
}

void loop(){
  if(time_check < millis()){
    time_check = millis() + 1000;
    ADC_DATA = analogRead(pin_GAS);
    }

    if(ADC_DATA_pre != ADC_DATA)  {    
      ADC_DATA_pre = ADC_DATA;    
      Sensor_data[1] = ADC_DATA / 1000 + '0';    
      Sensor_data[2] = (ADC_DATA / 100) % 10 + '0';    
      Sensor_data[3] = (ADC_DATA / 10) % 10 + '0';    
      Sensor_data[4] = ADC_DATA % 10 + '0';
      Serial.print("GAS ADC data : ");    
      Serial.println(ADC_DATA);    
      RFduinoBLE.end();    
      RFduinoBLE.advertisementData = Sensor_data;    
      RFduinoBLE.begin();  
      } 
}

 

from bluepy.btle import Scanner, DefaultDelegate

class ScanDelegate(DefaultDelegate):
    def __init__(self):
        DefaultDelegate.__init__(self)

    def handleDiscovery(self, dev, isNewDev, isNewData):
        if isNewDev:
            print "Discovered device", dev.addr
        elif isNewData:
            print "Received new data from", dev.addr

scanner = Scanner().withDelegate(ScanDelegate())
devices = scanner.scan(10.0)

for dev in devices:
    print "Device %s (%s), RSSI=%d dB" % (dev.addr, dev.addrType, dev.rssi)
    for (adtype, desc, value) in dev.getScanData():
        print "  %s = %s" % (desc, value)

 

6. 문제점 및 에러 내용

 

RFduino 에서 센서값을 (advertisementData) 라즈베리파이로 전송하는데 

이 값을 수신하지 못하고 있습니다.

사용해야하는 메소드나 함수가 있는 건지

아니면 따로 처리를 해주어야하는 건지 잘 모르겠습니다.

 

+페어링은 스마트폰과 할 계획이구요, 라즈베리파이이는 Advertise packet을 수신하여

센서값을 받을 계획입니다.

이전글   |    BLE와 아두이노 2019-04-12
다음글   |    아두이노 코드 2019-04-13