Arduino BLE의 가장 큰 장점은 호환성과 유연한 코드 작성일것 같다. BLE코드에 MAX31856과 같은 온도 센서를 추가 하려면 라이브러리를 이용해서 간단히 온도 값을 가져오고 BLE로 전송할 수 있다.
우선 가장 간단하게 STM32WB의 칩내부 온도 센서의 온도 값을 BLE그래프로 출력 하는 프로그램을 작성해 보자.
#include "Arduino.h"
#include "STM32WB.h"
#include "BLE.h"
BLEUart SerialBLE(BLE_UART_PROTOCOL_NORDIC);
void setup()
{
Serial.begin(115200);
while (!Serial) { }
BLE.begin();
BLE.setLocalName("STM32WB");
BLE.setAdvertisedServiceUuid(SerialBLE.uuid());
BLE.addService(SerialBLE);
BLE.advertise();
delay(1000);
}
void loop()
{
float temp;
if (!BLE.advertising() && !BLE.connected()) {
BLE.advertise();
}
temp = STM32WB.readTemperature();
SerialBLE.println(temp);
delay(200);
}
이번에는 MAX31856 써모 커플 센서의 온도 값을 읽어 올 수 있도록 코드를 수정 해 보자
#include "Arduino.h"
#include "STM32WB.h"
#include "BLE.h"
#include <Adafruit_MAX31856.h>
BLEUart SerialBLE(BLE_UART_PROTOCOL_NORDIC);
Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(4);
void setup()
{
Serial.begin(115200);
while (!Serial) { }
if (!maxthermo.begin())
{
Serial.println("Could not initialize thermocouple.");
while (1) delay(10);
}
maxthermo.setThermocoupleType(MAX31856_TCTYPE_K);
maxthermo.setConversionMode(MAX31856_CONTINUOUS);
BLE.begin();
BLE.setLocalName("STM32WB");
BLE.setAdvertisedServiceUuid(SerialBLE.uuid());
BLE.addService(SerialBLE);
BLE.advertise();
delay(1000);
}
void loop()
{
float temp;
if (!BLE.advertising() && !BLE.connected()) {
BLE.advertise();
}
//temp = STM32WB.readTemperature();
temp = maxthermo.readThermocoupleTemperature();
Serial.println(temp);
SerialBLE.print(temp);
SerialBLE.println();
delay(1000);
}
반응형