Loading...
OUR BLOG

Kawal LED dan Sensor melalui Bluetooth dengan ESP32S

Hi BDx-ian!

 

Dalam tutorial kali ini kita akan belajar macam mana nak kawal LED dan Sensor melalui Bluetooth dengan ESP32. 

 

Fungsi sensor yang digunakan iaitu DHT11 di sini akan dapat mengesan suhu dan kelembapan udara di sekeliling. Dengan adanya sambungan ke telefon pintar melalui bluetooth, pengguna dapat menggunakan komponen button pada Kodular untuk mengawal LED dan output akan dipaparkan pada skrin telefon Android anda. 

 

Peralatan yang diperlukan:

 

Litar:

 

DHT11 Sensor

 

LED 1

 

LED 2

 

LED 3

 

Code:

 

Setelah selesai memasang komponen seperti gambar rajah di atas, anda boleh upload code yang disediakan seperti berikut ke dalam Arduino IDE anda.

 

 

#include "BluetoothSerial.h"

#include "DHT.h"


#define DHTPIN 23      

#define DHTTYPE DHT11 

#define LED_PIN_RED 13    

#define LED_PIN_YELLOW 14    

#define LED_PIN_GREEN 15


DHT dht(DHTPIN, DHTTYPE);

BluetoothSerial SerialBT;


String device_name = "ESP32-BT";

unsigned long lastDHTReadTime = 0;

const long dhtReadInterval = 2000; // 2 seconds


#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)

#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it

#endif


void setup() {

  Serial.begin(115200);

  SerialBT.begin(device_name.c_str()); 

  Serial.printf("The device with name \"%s\" is started.\nNow you can pair it with Bluetooth!\n", device_name.c_str());

  

  dht.begin();

  pinMode(LED_PIN_RED, OUTPUT);

  pinMode(LED_PIN_YELLOW, OUTPUT);

  pinMode(LED_PIN_GREEN, OUTPUT);

}


void loop() {

  char Incoming_value;

  

  // Non-blocking DHT reading

  unsigned long currentMillis = millis();

  if(currentMillis - lastDHTReadTime >= dhtReadInterval) {

    float h = dht.readHumidity();

    float t = dht.readTemperature();


    if (!isnan(h) && !isnan(t)) {

      SerialBT.print("Temperature: ");

      SerialBT.print(t);

      SerialBT.println(" *C");

      SerialBT.print("Humidity: ");

      SerialBT.print(h);

      SerialBT.println(" %");

    } else {

      SerialBT.println("Failed to read from DHT sensor!");

    }


    lastDHTReadTime = currentMillis;

  }


  // Check for Bluetooth data

if (SerialBT.available()) {

    Incoming_value = SerialBT.read();


    //Print the received value

    Serial.print("Received: ");

    Serial.print(Incoming_value);


    // Filter newline and carriage return characters

    if (Incoming_value == '\n' || Incoming_value == '\r') {

        // just skip the rest and start over

    } else {

     switch(Incoming_value) {

      case '1':

        digitalWrite(LED_PIN_RED, HIGH);

        Serial.println("RED LED IS TURNED ON");

        break;

      case '2':

        digitalWrite(LED_PIN_YELLOW, HIGH);

        Serial.println("YELLOW LED IS TURNED ON");

        break;

      case '3':

        digitalWrite(LED_PIN_GREEN, HIGH);

        Serial.println("GREEN LED IS TURNED ON");

        break;

      case '4':

        digitalWrite(LED_PIN_RED, LOW);

        Serial.println("RED LED IS TURNED OFF");

        break;

      case '5':

        digitalWrite(LED_PIN_YELLOW, LOW);

        Serial.println("YELLOW LED IS TURNED OFF");

        break;

      case '6':

        digitalWrite(LED_PIN_GREEN, LOW);

        Serial.println("GREEN LED IS TURNED OFF");

        break;

      case '0':

        digitalWrite(LED_PIN_RED, LOW);

        digitalWrite(LED_PIN_YELLOW, LOW);

        digitalWrite(LED_PIN_GREEN, LOW);

        Serial.println("ALL LEDs ARE TURNED OFF");

        break;

      default:

        Serial.println("Received unrecognized command.");

        break;

     }

   } 

 }

}

 

Anda boleh mengakses coding di atas dari Github : https://github.com/bdxtronix-tutorial/esp32-kodular-bluetooth-led

 

Menggunakan Kodular sebagai medium pengantara untuk membuat aplikasi, ini adalah contoh untuk paparan dan code block yang perlu diatur terlebih dahulu.

 

Berikut merupakan code block untuk Kodular.

Seteleh selesai, sambungkan Kodular kepada telefon pintar anda menggunakan “Connect to companion”.

Output

 

Setelah menyambung dengan aplikasi Kodular Companion, ini adalah paparan yang dapat diperoleh. Anda dapat melihat nilai suhu pada bahagian sensor value dan terdapat 7 butang yg boleh ditekan untuk menghidupkan dan mematikan LED. Di bawah terdapat juga bahagian untuk menghubungkan dan mematikan sambungan kepada bluetooth yg tersedia di ESP32.

Ini pula merupakan output serial monitor untuk kita memantau keadaan LED semasa beroperasi atau setelah dimatikan supaya kita dapat mengenalpasti samada bluetooth tersebut menghantar data atau tidak.

 

Ini merupakan keadaan apabila 1 lampu LED yang dinyalakan iaitu LED kuning sahaja.

 

 

Ini pula merupakan keadaan apabila 2 lampu LED yang dinyalakan iaitu LED kuning dan LED hijau.

 

Jika anda suka dengan perkongsian tutorial dalam blog kami ni, jangan lupa untuk follow Facebook dan Instagram kami, kat situ ada bermacam info dan update terkini yang akan kami kongsikan kepada anda. Itu sahaja untuk tutorial kami. Stay update dan selamat mencuba!

 

Unsure Whether You Need Our Help?

Have you got an awesome new idea or project that you want to talk about? We're here to talk you through it. Flick us an email or give us a call to get started.