Go Down

Topic: Problema con comunicazione tramite bluetooth con modulo HC-05 (Read 182 times) previous topic - next topic

Ale_99

Salve a tutti, sto creando una piccola "stazione meteo bluetooth" con i seguenti componenti:
-Arduino Uno;
-Modulo bluetooth hc-05;
-Sensore DHT22;
-Sensore pioggia.
A collegamenti fatti, mi sono aiutato con uno sketch trovato online. Sia i collegamenti sia lo sketch sono corretti; ho scaricato l'app per Android "Bluetooth Terminal" e ho effettuato il collegamento.
All'utilizzo però, inviando la lettera "t", invece di avere in risposta il valore della temperatura, sul mio dispositivo è uscito scritto "La temperatura è: temp °Cnan."

Vi lascio qui il sito da cui ho preso lo sketch: http://grapesteam.altervista.org/stazione-meteo-cellulare/?doing_wp_cron=1526478031.0668389797210693359375


Vi lascio qui lo sketch utilizzato:
Code: [Select]

#include <Adafruit_Sensor.h>
#include <DHT.h> //libreria per utilizzare le ffunzioni e i comandi riguardanti il sensore DHT22
#include <SoftwareSerial.h> //libreria che permette la comunicazione
SoftwareSerial BT(11, 12); //Pin utilizzati per ricevere e inviare dati BT

//Constants
#define DHTPIN 7     // what pin we're connected to
#define DHTTYPE DHT22   // DHT 22  (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino
#define WATER_PIN A0

void setup()
{
  BT.begin(9600);
  BT.println("Arduino Pronto");
  BT.println("\nt. Temperatura");
  BT.println("\nh. Umidità");
  BT.println("\np. Pioggia");
  BT.println("Inserisci l'opzione: ");
  Serial.begin(9600);
}

float temp = 0, hum = 0;
char c;


void loop()
{
  delay(500);
    //Read data and store it to variables hum and temp
    hum= dht.readHumidity();
    temp= dht.readTemperature();

  if (BT.available()) {
    c = (BT.read());

    if (c == 't')
    {
      BT.println("La temperatura è(°C): ");
      BT.println(temp);
    }

    if (c == 'h')
    {
      BT.println("L'umidità: ");
      BT.println(hum);
      BT.println("%/t");
     
    }

    if(c=='p')
    {
       int a=analogRead(WATER_PIN);
      if(a<=800)
        BT.println("PIOVE");

      else
        BT.println("NON PIOVE");
    }

  }
  delay(2000);

}



Spero qualcuno possa aiutarmi. Grazie in anticipo.

gpb01

Buongiorno,
prima di tutto, essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo
Search is Your friend ... or I am Your enemy !

torn24

Ciao, hai guardato gli esempi della libreria che stai usando, intendo gli esempi della libreria specifica, quella che stai usando effettivamente.

Perché ho cercato la libreria, ne ho trovate due e tutte due hanno un modo diverso per leggere temperatura e umidità.

miky_police

Quote
if (c == 't')
    {
      BT.print("La temperatura è(°C): ");
      BT.println(temp);
    }
secondo me è la prima prova che devi fare.

EDIT: scusa, ho letto male la richiesta.
Il vero stupido è colui che fa e rifa la stessa cosa aspettandosi risultati diversi. A.E.

Go Up