Flutter에서 Arduino와 BLE 통신을 하기 위해서는 flutter_blue 패키지를 사용할 수 있습니다. 이 패키지는 Flutter 애플리케이션에서 BLE 디바이스를 검색하고 연결하며, 데이터를 읽고 쓰는 것을 가능하게 합니다.

아래는 Flutter와 Arduino 간 BLE 통신을 설정하는 단계입니다.

  1. Arduino BLE 라이브러리 설치하기 Arduino에서 BLE 통신을 하기 위해서는 먼저 BLEPeripheral 라이브러리를 설치해야 합니다. 이 라이브러리는 Arduino와 BLE 디바이스간의 연결을 관리하는 데 사용됩니다.

  2. 아두이노 코드 작성하기 아두이노에는 BLEPeripheral 라이브러리를 사용하여 BLE 서비스를 설정할 수 있습니다. BLE 서비스는 앱과 아두이노 간 데이터를 전송하는 데 사용됩니다. 예를 들어, 온도계를 만든다면, BLE 서비스는 온도 값 데이터를 전송하는 데 사용됩니다.

  3. Flutter 앱 코드 작성하기 flutter_blue 패키지를 사용하여 Flutter 앱에서 BLE 디바이스를 검색하고 연결할 수 있습니다. flutter_blue 패키지를 설치한 후, FlutterBlue 클래스를 사용하여 BLE 디바이스를 검색하고 연결합니다.

    아래는 Flutter에서 BLE 디바이스를 검색하고 연결하는 코드 예시입니다.

    dartCopy code
    import 'package:flutter_blue/flutter_blue.dart';
    
    // BLE 디바이스 검색
    FlutterBlue flutterBlue = FlutterBlue.instance;
    
    Stream<List<ScanResult>> scanResults;
    
    void startScan() {
      scanResults = flutterBlue.scan();
    }
    
    void stopScan() {
      flutterBlue.stopScan();
    }
    
    // BLE 디바이스 연결
    BluetoothDevice device;
    
    Future<void> connectToDevice(String deviceId) async {
      device = await flutterBlue.connect(deviceId);
    }
    
    void disconnectFromDevice() {
      device.disconnect();
    }
    
    
  4. 데이터 전송하기 Flutter 앱과 아두이노 간 데이터를 전송하려면, flutter_blue 패키지에서 제공하는 BluetoothCharacteristic 클래스를 사용합니다. 이 클래스는 BLE 서비스와 특성(characteristic)을 사용하여 데이터를 읽고 쓸 수 있습니다.

    아래는 Flutter에서 BLE 서비스를 검색하고, 그 서비스의 특성 중 하나에 데이터를 쓰는 코드 예시입니다.

    dartCopy code
    // BLE 서비스 검색
    List<BluetoothService> services = await device.discoverServices();
    
    // 서비스에서 특성 찾기
    BluetoothService service = services.firstWhere((s) => s.uuid == serviceUuid);
    
    BluetoothCharacteristic characteristic = service.characteristics.firstWhere((c) => c.uuid == characteristicUuid);
    
    // 데이터 쓰기
    await characteristic.write(dataBytes);