Android cihazla sıcaklık ve nem algılama sistemi yapıyoruz
Android cihazla sıcaklık ve nem algılama sistemi yapıyoruz
Android cihazla sıcaklık ve nem algılama sistemi yapıyoruz

Android cihazla sıcaklık ve nem algılama sistemi yapıyoruz

DHT-11 Sıcaklık ve nem algılama modülü ile bir uygulama yapacağız. Mikrodenetleyici sistemine bağlı DHT-11 modülü ve bir adet de HC-05 bluetooth modülü ile bu sistemi yapacağız. Ayrıca, Flutter-Dart programlama dilini kullanarak bir Android uygulama yapacağız.

Mikrodenetleyici sistemde DHT-11 modülünden gelen datayı dijital pin 2’den okuyoruz. Ve bu sayısal değeri string tipine çeviriyoruz. Bu yeni string tipindeki datayı da dizi-char tipinde bir değere dönüştürüyoruz. Bu değer de myserial.write komutuyla Bluetooth modülüne gönderiliyor.

Andorid uygulama tarafında ise gelen bu char tipinde değeri receiveData fonksiyonu ile alıyoruz. Bu fonksiyon, timer fonksiyonu içinde yer alıyor.

Belirli zaman aralıklarında bu değer okunur ve text nesnesine yazılır.

 Youtube’daki kanalımızda uygulamanın ayrıntılarını izleyebilirsiniz:

 

Flutter-Dart kodları aşağıda verildi:

import 'dart:async';

import 'dart:convert';

//import 'dart:convert';

 

import 'package:flutter/foundation.dart';

import 'package:flutter/material.dart';

import 'package:flutter_bluetooth_serial/flutter_bluetooth_serial.dart';

 

void main() => runApp(const MyApp());

 

class MyApp extends StatefulWidget {

  const MyApp({super.key});

 

  @override

  // ignore: library_private_types_in_public_api

  _MyAppState createState() => _MyAppState();

}

 

class _MyAppState extends State<MyApp> {

  List<BluetoothDevice> _devices = [];

  late BluetoothConnection connection;

  String adr = "00:21:07:00:50:69"; // my bluetooth device MAC Adres

  String recData = "....";

 

  late Timer _timer;

  String _timeString = "";

 

  @override

  void initState() {

    // _startTimer();  automatic

    super.initState();

    _loadDevices();

  }

 

 

  Future<void> _loadDevices() async {

    List<BluetoothDevice> devices = await FlutterBluetoothSerial.instance

        .getBondedDevices();

 

    setState(() {

      _devices = devices;

    });

  }

 

 

  //----------------------------

  Future<void> sendData(String data) async {

    data = data.trim();

    try {

      List<int> list = data.codeUnits;

      Uint8List bytes = Uint8List.fromList(list);

      connection.output.add(bytes);

      await connection.output.allSent;

      if (kDebugMode) {

        // print('Data sent successfully');

      }

    } catch (e) {

      //print(e.toString());

    }

  }

 

  // data RECEIVED --------------

 

  Future<void> receiveData() async {

    connection.input!.listen((Uint8List data) {

      //Data entry point

      setState(() {

        recData=ascii.decode(data);

        //var n1 = int.parse('-42');

      });

    });

  }

  //--------------------------------------

 

// TIMER START-----------

  void _startTimer() {

    _timer = Timer.periodic(Duration(milliseconds: 500), (timer) {

      receiveData();

 

    });

  }

 

  // TIMER STOP--------------------------------------

  Future<void> _stopTimer() async {

    setState(() {

    });

    _timer.cancel();

  }

 

//---------------------------------------------

  @override

  void dispose() {

    _timer.cancel();

    super.dispose();

  }

 

 

  @override

  Widget build(BuildContext context) {

    return MaterialApp(

        home: Scaffold(

          appBar: AppBar(

            title: const Text("----Temperature and Humidity Meter with BlueTooth-----"),

          ),

          body: Center(

            child: Column(

              mainAxisAlignment: MainAxisAlignment.center,

              children: [

                const Text("MAC Adress: 00:21:07:00:50:69"),

 

                ElevatedButton(child: Text("Connect"), onPressed: () {

                  connect(adr);

                },),

 

                const SizedBox(height: 30.0,),

 

                const Text("Temperature-Humidity: ",style: TextStyle(fontSize: 55.0),),

                Text(recData,style: TextStyle(fontSize: 40.0),),

 

                const SizedBox(height: 10.0,),

                // Text(_timeString),

                const SizedBox(height: 10.0,),

 

                ElevatedButton(child: Text("Stop timer"), onPressed: () {

                  _stopTimer();

                },),

                const SizedBox(height: 10.0,),

 

                ElevatedButton(child: Text("Start timer"), onPressed: () {

                  _startTimer();

                },),

 

              ],

            ),

          ),

 

        )

 

    );

  }

 

  Future connect(String address) async {

    try {

      connection = await BluetoothConnection.toAddress(address);

      // sendData('111');

      //durum="Connected to the device";

 

    } catch (exception) {

      // durum="Cannot connect, exception occured";

    }

  }

 

  @override

  void debugFillProperties(DiagnosticPropertiesBuilder properties) {

    super.debugFillProperties(properties);

  }

 

// --------------**************data gonder

//Future send(Uint8List data) async {

//connection.output.add(data);

// await connection.output.allSent;

// }

a}

//------------*********** data g

 

Mikrodenetleyici kodları aşağıda:

 

#include <SoftwareSerial.h>

#include <dht11.h>

 

SoftwareSerial mySerial(10, 11); // RX, TX

#define DHT11PIN 2 // 

 

char Buf[100]; //  to bluetooth device<------

String values_string="--";

 

dht11 DHT11;

 

void setup()

{

  Serial.begin(9600); //

  mySerial.begin(9600);

}

 

void loop()

{

 

               int chk = DHT11.read(DHT11PIN);

      float humd=(float)DHT11.humidity;

  float temp=(float)DHT11.temperature;

  int fahr=DHT11.fahrenheit();

  int kelv=DHT11.kelvin();

     

  values_string="Humd:%"+String(humd)+"  Temp:" + String(temp)+"C  Fahr:" + String(fahr)+"F  Kelv:"+ String(kelv)+"K";

    

     values_string.toCharArray(Buf, 100);

     mySerial.write(Buf);

     Serial.println(values_string);

  delay(1000);

 

}