Skocz do zawartości

Zbieranie danych z modułu Bluetooth HC-05


Matthias7

Pomocna odpowiedź

Dzień dobry. Tworzę projekt na Arduino Uno wraz z podłączonymi sensorami: 

  • Temperature Sensor - Waterproof (DS18B20)

  • DFRobot Gravity - czujnik/miernik pH analogowy

Celem projektu jest zbieranie danych z otoczenia na temat wartości pH oraz Temperatury. Dodatkowo projekt wzbogaciłem o moduł Bluetooth HC-05.

Chciałbym, by dane zbierane przez sensory były przesyłane na aplikację "Serial Bluetooth Terminal" i na bieżąco wyświetlane (urządzenia parują się bez problemu; Smartphone + HC-05). Jak powinienem zmodyfikować mój kod, by to działało. Dodatkowo mogę powiedzieć, że dane wyświetlają się prawidłowo w "Serial Monitor" Arduino IDE. 

Byłbym bardzo wdzięczny za wszystkie wskazówki.

#include <OneWire.h>
#include <DallasTemperature.h>
#include <SoftwareSerial.h>            //Bluetooth
SoftwareSerial BluetoothSerial(0, 1);           // RX | TX
#define BT_SERIAL_TX 1
#define BT_SERIAL_RX 0

#define SensorPin 1                    //pH meter Analog output to Arduino Analog Input 1

#define ONE_WIRE_BUS 2                 // Data wire is plugged into digital pin 2 on the Arduino
OneWire oneWire(ONE_WIRE_BUS);         // Setup a oneWire instance to communicate with any OneWire device
DallasTemperature sensors(&oneWire);   // Pass oneWire reference to DallasTemperature library

unsigned long int avgValue;            //Store the average value of the sensor feedback
float b;
int buf[10],temp;

void setup()
{
  BluetoothSerial.begin(9600);         //BT baud rate
  delay(1000);
  
  //Temperature Sensor
  sensors.begin();                      // Start up the library
  Serial.begin(9600);
  
  //pH Sensor
  pinMode(13,OUTPUT);  
  Serial.begin(9600);  

}
void loop()
{
  {// Send the command to get temperatures
  sensors.requestTemperatures(); 

  //print the temperature in Celsius
  Serial.print("T: ");
  Serial.print(sensors.getTempCByIndex(0));
  Serial.println(" C ");

  //print Temp. in BT
  BluetoothSerial.print("T: ");
  BluetoothSerial.print(sensors.getTempCByIndex(0));
  BluetoothSerial.println(" C ");
  
  }
  //pH loop
  
  for(int i=0;i<10;i++)                //Get 10 sample value from the sensor for smooth the value
  { 
    buf[i]=analogRead(SensorPin);
    delay(10);
  }
  for(int i=0;i<9;i++)                //sort the analog from small to large
  {
    for(int j=i+1;j<10;j++)
    {
      if(buf[i]>buf[j])
      {
        temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }
    }
  }
  avgValue=0;
  for(int i=2;i<8;i++)                      //take the average value of 6 center sample
    avgValue+=buf[i];
  float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
  phValue=3.5*phValue;                      //convert the millivolt into pH value 
  Serial.print("pH:");  
  Serial.print(phValue,2);
  Serial.println(" ");
  digitalWrite(13, HIGH);       
  delay(500);
  digitalWrite(13, LOW); 
  //delay(500); //od temp.

  BluetoothSerial.print("pH:");
  BluetoothSerial.print(phValue,2);
  BluetoothSerial.println(" ");
}

 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.