Android telefonla birden çok cihazı kontrol etmek
Android telefonla birden çok cihazı kontrol etmek

Android telefonla birden çok cihazı kontrol etmek

Günümüzde, Bluetooth kontrollü cihazların sayısı çokça arttı. Hem çeşit olarak hem sayı olarak Android tabanlı kontrol uygulamaları her yerde görmek mümkün. Evlerimizden işyerlerimize, eğlence mekanlarından sokaklara kadar her yerde hayatımızı kolaylaştıran Android uygulamalar görüyoruz.

Biz de bu uygulamamızda bazı elektronik elemanların ve cihazların nasıl kontrol edileceğine ilişkin bir uygulama yapmak istedik.

Uygulamamızda iki adet farklı renkte led diyot, bir buzzer, bir DC motor bir de röleye bağlanmış 220 voltluk bir lamba var. Bu bileşenler mikrodenetleyicimize bağlı. Ayrıca, gelen komutları alması için bir de Bluetooth modülü bağladık. Daha önceki uygulamalarımızda kullandığımız HC-05 bluetooth modülünü tekrar kullandık.

Android telefona ise Flutter-Dart dili ile yazdığımız uygulamayı yükledik. Android uygulamamızda temelde iki adet önemli fonksiyon var. Birisi Connect fonksiyonu, diğeri ise sendData fonksiyonu. MAC adresini edindiğimiz için connect fonksiyonu içerisine bu MAC adresini yazdık.

 

sendData fonksiyonu ise string tipte değer alan bir fonksiyon. Kodlar içerisinde örneğin sendData(‘ledon’) yazdığımızda, bu fonksiyonun bulunduğu butona basıldığında bluetooth adaptörü, karşı taraftaki bağlı haldeki bluetooth modülüne bu datayı gönderir. Diğer butonlardaki olaylar da benzer şekilde gerçekleşir.

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

import 'dart:async';
//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

  @override
  void initState() {
    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());
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: const Text("MULTI CONTROL 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);                },),
                SizedBox(height: 30.0,),

             Row(
                 children:[
               ElevatedButton(onPressed:(){sendData("redon");}, child: Text('RedOn')),
               ElevatedButton(onPressed:(){sendData("redoff");}, child: Text('RedOFF')),

             ]),

                const SizedBox(height: 30.0,),

                Row(
                    children:[
                  ElevatedButton(onPressed:() {sendData("greenon");}, child: Text('GreenOn')),
                  ElevatedButton(onPressed:() {sendData("greenoff");}, child: Text('GreenOff')),
                ]),

                const SizedBox(height: 30.0,),

                Row(
                    children:[
                  ElevatedButton(onPressed: () {sendData("buzon");}, child: Text('BuzzerOn')),
                  ElevatedButton(onPressed: () {sendData("buzoff");}, child: Text('BuzzerOff')),
                ]),

                const SizedBox(height: 30.0,),

                Row(
                    children:[
                  ElevatedButton(onPressed: (){sendData("moton");}, child: Text('MotorOn')),
                  ElevatedButton(onPressed: (){sendData("motoff");}, child: Text('MotorOff')),
                ]),

                const SizedBox(height: 30.0,),


                Row(
                    children:[
                  ElevatedButton(onPressed: (){sendData("lampon");}, child: Text('LampOn'),),
                  ElevatedButton(onPressed:(){sendData("lampoff");}, child: Text('LampOff'),),
                ]),
              ],
            ),
          ),

        )

    );
  }

  Future connect(String address) async {
    try {
      connection = await BluetoothConnection.toAddress(address);
      sendData('111');
      //durum="Connected to the device";
      connection.input!.listen((Uint8List data) {
        //Data entry point
        // durum=ascii.decode(data);
      });



    } catch (exception) {
      // durum="Cannot connect, exception occured";
    }
  }

// --------------**************data gonder
//Future send(Uint8List data) async {
//connection.output.add(data);
//await connection.output.allSent;
}
//------------*********** data gonder end



Mikrodenetleyici kodları aşağıda:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX
String rec_data="5";

void setup() {
  pinMode(7, OUTPUT);  // RED led
   pinMode(6, OUTPUT);  // green led
    pinMode(5, OUTPUT);  // Buzzer
     pinMode(3, OUTPUT);   // --------------> motor
       pinMode(2, OUTPUT);  // 220 volt lamp 
   
   
  Serial.begin(9600);
  mySerial.begin(9600);   // BlueTooth Data baud,set the data rate for the SoftwareSerial port
}

void loop() { // run over and over
 
  if (mySerial.available()) {
    
     rec_data=mySerial.readString();
          
           if(rec_data=="redon"){digitalWrite(7,HIGH);}  // RED LED ON
           if(rec_data=="redoff"){digitalWrite(7,LOW);}    // RED LED OFF
           if(rec_data=="greenon"){digitalWrite(6,HIGH);}   // GREEN LED ON
           if(rec_data=="greenoff"){digitalWrite(6,LOW);}   // GREEN LED OFF

           if(rec_data=="buzon"){tone(5,260);}   //BUZZER ON
           if(rec_data=="buzoff"){ noTone(5);}    // BUZZER OFF

           if(rec_data=="moton"){analogWrite(3, 100);}  // MOTOR ON
           if(rec_data=="motoff"){analogWrite(3, 10);}    // MOTOR OFF    
           
           if(rec_data=="lampon"){digitalWrite(2,HIGH);}   // 220 volt lamp relay on
           if(rec_data=="lampoff"){digitalWrite(2,LOW);}   // 220 volt lamp relay off

     delay(500);
       
   Serial.println(rec_data);
    
  }
  
}

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX
String rec_data="5";

void setup() {
  pinMode(7, OUTPUT);  // RED led
   pinMode(6, OUTPUT);  // green led
    pinMode(5, OUTPUT);  // Buzzer
     pinMode(3, OUTPUT);   // --------------> motor
       pinMode(2, OUTPUT);  // 220 volt lamp 
   
   
  Serial.begin(9600);
  mySerial.begin(9600);   // BlueTooth Data baud,set the data rate for the SoftwareSerial port
}

void loop() { // run over and over
 
  if (mySerial.available()) {
    
     rec_data=mySerial.readString();
          
           if(rec_data=="redon"){digitalWrite(7,HIGH);}  // RED LED ON
           if(rec_data=="redoff"){digitalWrite(7,LOW);}    // RED LED OFF
           if(rec_data=="greenon"){digitalWrite(6,HIGH);}   // GREEN LED ON
           if(rec_data=="greenoff"){digitalWrite(6,LOW);}   // GREEN LED OFF

           if(rec_data=="buzon"){tone(5,260);}   //BUZZER ON
           if(rec_data=="buzoff"){ noTone(5);}    // BUZZER OFF

           if(rec_data=="moton"){analogWrite(3, 100);}  // MOTOR ON
           if(rec_data=="motoff"){analogWrite(3, 10);}    // MOTOR OFF    
           
           if(rec_data=="lampon"){digitalWrite(2,HIGH);}   // 220 volt lamp relay on
           if(rec_data=="lampoff"){digitalWrite(2,LOW);}   // 220 volt lamp relay off

     delay(500);
       
   Serial.println(rec_data);
    
  }
  
}