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);
}
}