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을 수신하여
센서값을 받을 계획입니다.
|