Receive data from an arduino sensor for Android app (Android Studio)

1

Good evening! I need a help with the application that I am developing, I will make the bluetooth connection of my Arduino with the android application and everything is ok, I can connect and disconnect but I do not know how to receive data from my temperature sensor. Can anybody help me ? I just need this step to finish my CBT.

Below is my code in JAVA:

public class pg_minhafabrica extends AppCompatActivity {

Button btn_conectar;
Button btn_motor;
Button btn_recirculacao;
Button btn_mostratemp;
TextView view_temp;


private static final int SOLICITA_ATIVACAO = 1;
private static final int SOLICITA_CONEXAO = 2;
private static final int MESSAGE_READ = 3;

ConnectedThread connectedThread;

Handler mHandler;
StringBuilder dadosBluetooth = new StringBuilder();

BluetoothAdapter meuBLuetoothAdapter = null;
BluetoothDevice meuDevice = null;
BluetoothSocket meuSocket = null;

boolean conexao = false;

private static String MAC = null;

UUID MEU_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pg_minhafabrica);

    btn_conectar = (Button) findViewById(R.id.btn_conectar);
    btn_motor = (Button) findViewById(R.id.btn_motor);
    btn_recirculacao = (Button) findViewById(R.id.btn_recirculacao);
    btn_mostratemp = (Button)findViewById(R.id.btn_mostratemp);
    view_temp = (TextView) findViewById(R.id.view_temp);

    meuBLuetoothAdapter = BluetoothAdapter.getDefaultAdapter();

    if (meuBLuetoothAdapter == null) {
        Toast.makeText(getApplicationContext(), "Seu aparelho não possui bluetooth", Toast.LENGTH_LONG).show();
    } else if (!meuBLuetoothAdapter.isEnabled()) {
        Intent ativaBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(ativaBluetooth, SOLICITA_ATIVACAO);
    }

    btn_conectar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (conexao){
                //desconectar
                try{
                    meuSocket.close();
                    conexao = false;
                    btn_conectar.setText("Conectar");
                    Toast.makeText(getApplicationContext(), "Bluetooth desconectado", Toast.LENGTH_LONG).show();
                }catch (IOException erro){
                    Toast.makeText(getApplicationContext(), "Ocorreu um erro:", Toast.LENGTH_LONG).show();
                }
            }else {
                //conectar
                Intent abreLista = new Intent(pg_minhafabrica.this, lista_dispositivos.class);
                startActivityForResult(abreLista, SOLICITA_CONEXAO);
            }
        }
    });

    btn_motor.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (conexao) {
               connectedThread.enviar("rele1");
            }else {
                Toast.makeText(getApplicationContext(), "Bluetooth não esta conectado", Toast.LENGTH_LONG).show();
            }
        }
    });

    btn_recirculacao.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (conexao) {
                connectedThread.enviar("rele2");
            }else {
                Toast.makeText(getApplicationContext(), "Bluetooth não esta conectado", Toast.LENGTH_LONG).show();
            }
        }
    });


    mHandler = new Handler(){

        @Override
        public void handleMessage(Message msg) {

            if (msg.what == MESSAGE_READ) {

                String recebidos = (String) msg.obj;

                dadosBluetooth.append(recebidos);

                int fimInformacao = dadosBluetooth.indexOf("}");

                if (fimInformacao > 0) {

                    String dadoscompletos = dadosBluetooth.substring(0, fimInformacao);

                    int tamInformacao = dadoscompletos.length();

                    if (dadosBluetooth.charAt(0) == '{') {

                        //{rele1rele2}

                        String dadosFinais = dadosBluetooth.substring(1, tamInformacao);

                        Log.d("Recebidos", dadosFinais);

                        if (dadosFinais.contains("rele1-on")) {
                            btn_motor.setText("MOTOR LIGADO");
                            Log.d("LIGADO", dadosFinais);
                        } else if (dadosFinais.contains("rele1-off")) {
                            btn_motor.setText("MOTOR DESLIGADO");
                            Log.d("DESLIGADO", dadosFinais);
                        }

                        if (dadosFinais.contains("rele2-on")) {
                            btn_recirculacao.setText("BOMBA LIGADA");
                        } else if (dadosFinais.contains("rele-off")) {
                            btn_recirculacao.setText("BOMBA DESLIGADA");
                        }


                    }

                    dadosBluetooth.delete(0, dadosBluetooth.length());
                }
            }
        }

    };

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {

        case SOLICITA_ATIVACAO:
            if (resultCode == Activity.RESULT_OK) {
                Toast.makeText(getApplicationContext(), "Bluetooth ativado", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getApplicationContext(), "Bluetooth não ativado", Toast.LENGTH_LONG).show();
                finish();
            }
            break;

        case SOLICITA_CONEXAO:
            if (resultCode == Activity.RESULT_OK){
                MAC = data.getExtras().getString(lista_dispositivos.ENDERECO_MAC);

                meuDevice = meuBLuetoothAdapter.getRemoteDevice(MAC);

                try {
                     meuSocket = meuDevice.createRfcommSocketToServiceRecord(MEU_UUID);

                     meuSocket.connect();

                     conexao = true;

                     connectedThread = new ConnectedThread(meuSocket);
                     connectedThread.start();

                     btn_conectar.setText("Desconectar");

                }catch (IOException erro) {

                    conexao = false;

                    Toast.makeText(getApplicationContext(), "Ocorreu um erro:", Toast.LENGTH_LONG).show();
                }
            }else {
                Toast.makeText(getApplicationContext(), "Falha ao obter o MAC", Toast.LENGTH_LONG).show();
            }
    }
}

private class ConnectedThread extends Thread {

    private final InputStream mmInStream;
    private final OutputStream mmOutStream;

    public ConnectedThread(BluetoothSocket socket) {

        InputStream tmpIn = null;
        OutputStream tmpOut = null;

        // Get the input and output streams, using temp objects because
        // member streams are final
        try {
            tmpIn = socket.getInputStream();
            tmpOut = socket.getOutputStream();
        } catch (IOException e) { }

        mmInStream = tmpIn;
        mmOutStream = tmpOut;
    }

    public void run() {
        byte[] buffer = new byte[1024];  // buffer store for the stream
        int bytes; // bytes returned from read()

        // Keep listening to the InputStream until an exception occurs

        while (true) {
            try {
                // Read from the InputStream
                bytes = mmInStream.read(buffer);

                String dadosBt = new String(buffer, 0, bytes);

                // Send the obtained bytes to the UI activity
                mHandler.obtainMessage(MESSAGE_READ, bytes, -1, dadosBt).sendToTarget();

            } catch (IOException e) {
                break;
            }
        }
    }

    public void enviar(String dadosenviar) {
        byte[] msgBuffer = dadosenviar.getBytes();
        try {
            mmOutStream.write(msgBuffer);
        } catch (IOException e) { }
    }

}

}

MY ARDUINO CODE:

#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>

SoftwareSerial bluetooth(10, 11);

OneWire pino(3);
DallasTemperature barramento(&pino);
DeviceAddress sensor;

#define rele1 5
#define rele2 6

String comando;

void setup() {
  Serial.begin(9600);
  barramento.begin();
  bluetooth.begin(9600);
  barramento.getAddress(sensor, 0);

  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);
}

 void loop() {

  barramento.requestTemperatures(); 
  float temperatura = barramento.getTempC(sensor);
  bluetooth.print(temperatura);
  delay(500);

  comando = "";

  if(bluetooth.available()) {
    while(bluetooth.available()){
      char caracter = bluetooth.read();

      comando += caracter;
      delay(10);

    }
    //Serial.print("Comando: ");
    //Serial.println(comando);

    if(comando.indexOf("rele1") >=0) {
      digitalWrite(rele1, !digitalRead(rele1));
      bluetooth.println("Vai liga/Desliga rele1");
    }
    if(digitalRead(rele1)){
      bluetooth.println("rele-on");
    } else{
      bluetooth.println("rele-off");
    }

    if(comando.indexOf("rele2") >=0) {
      digitalWrite(rele2, !digitalRead(rele2));
      bluetooth.println("Vai liga/Desliga rele2");
    }

    bluetooth.println("{");

    if(digitalRead(rele2)){
      bluetooth.println("rele-on");
    } else{
      bluetooth.println("rele-off");
    }

    bluetooth.println("}");
  }
}
    
asked by anonymous 16.10.2018 / 04:17

0 answers