Android Telefonla DC Volt Ölçmek - Voltmetre
Android Telefonla DC Volt Ölçmek - Voltmetre
Android Telefonla DC Volt Ölçmek - Voltmetre

Android Telefonla DC Volt Ölçmek - Voltmetre

Bu uygulamada volt bilgisini ölçüp bluetooth modül aracılığıyla Android telefona-tablete göndermeyi inceleyeceğiz.

Devre şemasında görülen R1 ve R2 dirençleri ölçülmek istenen gerilimi böler. R2 üzerinde daha düşük bir gerilim oluşur. R2 direncine paralel bağlı zener diyot ise aşırı gerilim koruması sağlar. Örneğin, ölçme girişine 100 volt uygulanırsa R2 üzerindeki gerilim 20 voltu geçer. Bu durumda, zener diyot olmasa bu gerilim mikrodenetleyici sisteme zarar verir. 20 voltluk gerilim, 5.1 voltluk zener ve koruma direnç yardımıyla 5 Volt seviyesinde tutulur.

Uygulama ile ilgili video Youtube kanalımızda:

 

 

Projede olan Flutter-Dart kodları aşağıda:

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 = "0 Volt";

 

  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("----VOLTMETER 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("VOLTMeter: ",style: TextStyle(fontSize: 55.0),),

                Text(recData,style: TextStyle(fontSize: 60.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;

// }

 

}

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

 

 

Projede kullanılan mikrodenetleyici kodları aşağıda:

#include <SoftwareSerial.h>

 

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

 

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

String volt_string="0 Volt";

 

void setup() { 

 // hc-05 bluetooth module volt meter-----------------------------

 

  // Open serial communications and wait for port to open:

  Serial.begin(9600);

  mySerial.begin(9600);

 }

 

void loop() {

    float volt_in = analogRead(A0);// Vin INPUT

    float  deg=(volt_in/1023)*60; // for max. 55 volt

     

     volt_string=String(deg);

     volt_string= volt_string+" Volt";

     volt_string.toCharArray(Buf, 50);

     mySerial.write(Buf);

     delay(200);

 

}