Контролируем устройства через Bluetooth с помощью Arduino

Бывает такое, что мы ложимся спать, но забываем выключить свет, а просыпаться уже не хочется, - холодно или потому, что мы очень устали или потому, что в коридоре есть монстры 🙂 Этот проект поможет избежать этот дискомфорт и сделает жизнь немного более простой и удобной. Мы можем  помимо того, что включать или выключать свет - контролировать мощность света.

Контролируем устройства через Bluetooth с помощью Arduino

Шаг 1: Код Arduino

Мы будем использовать модуль Bluetooth HC-06, для этого мы установим связь программой для нашего Arduino Mega. Мы объявим необходимые параметры совместимости с приложением «Ardudroid»,

Приложение содержит 13 параметров, через которые мы можем управлять различными нагрузками с использованием реле, если оно использует 120 Вольт переменного тока или обычные лампы 12 В. Будем использовать схему с транзистором в этом проекте для управления лампами.

#define CARACTER_INICIO_CMD '*'
#define CARACTER_FINAL_CMD '#'
#define CARACTER_DIV_CMD '|'
#define ESCRITURA_DIGITAL_CMD 10
#define ESCRITURA_ANALOGA_CMD 11
#define TEXTO_CMD 12
#define LECTURA_ARDUDROID_CMD 13
#define MAX_COMMAND 20
#define MIN_COMMAND 10
#define LONGITUD_ENTRADA_STRING 40
#define ESCRITURA_ANALOGICA_MAX 255
#define PIN_ALTO 3
#define PIN_BAJO 2
int Valordigital;
int Kaioken = 14;
int ledPin = 52;
int speakerPin = 16;
String inText;


void setup() {
  Serial.begin(9600);
  Serial.println("6to Electronica B");
  Serial.flush();
  pinMode(14, OUTPUT);
  pinMode(15, INPUT);
  pinMode(16, OUTPUT);
}

void loop()
{
  march();
  Serial.flush();
  int ard_command = 0;
  int pin_num = 0;
  int pin_value = 0;
  Valordigital = analogRead(A1);


  //Sensor de luz
  if (Valordigital >= 953) // Si hay luz, apago la luz :v
  {
    digitalWrite(Kaioken, HIGH); // Apagamos la luz
  }
  else if (Valordigital < 953) // Si no hay luz, enciendo la luz :v
  {
    digitalWrite(Kaioken, LOW); // Encendemos el LED
  }




  char get_char = ' ';

  if (Serial.available() < 1) return;
  get_char = Serial.read();
  if (get_char != CARACTER_INICIO_CMD) return;
  ard_command = Serial.parseInt(); // Lee comando
  pin_num = Serial.parseInt(); // leer el pin
  pin_value = Serial.parseInt();  // leer el valor



  // 1)COMANDOS
  if (ard_command == TEXTO_CMD) {
    inText = "";
    while (Serial.available())  {
      char c = Serial.read();
      delay(5);
      if (c == CARACTER_FINAL_CMD) {
        break;
      }
      else {
        if (c !=  CARACTER_DIV_CMD) {
          inText += c;
          delay(5);
        }
      }
    }
  }

  // 2) OBTENER DATOS
  if (ard_command == ESCRITURA_DIGITAL_CMD) {
    if (pin_value == PIN_BAJO) pin_value = LOW;
    else if (pin_value == PIN_ALTO) pin_value = HIGH;
    else return;
    set_digitalwrite( pin_num,  pin_value);
    return;
  }

  // 3) Escritura analogica
  if (ard_command == ESCRITURA_ANALOGA_CMD) {
    analogWrite(  pin_num, pin_value );
    return;
  }

  // 4) Enviar datos (Temperatura :V)
  if (ard_command == LECTURA_ARDUDROID_CMD) {
    return;
  }
}

// Escritura Digital
void set_digitalwrite(int pin_num, int pin_value)
{
  switch (pin_num) {
    case 13:
      pinMode(13, OUTPUT);
      digitalWrite(13, pin_value);
      break;
    case 12:
      pinMode(12, OUTPUT);
      digitalWrite(12, pin_value);
      break;
    case 11:
      pinMode(11, OUTPUT);
      digitalWrite(11, pin_value);
      break;
    case 10:
      pinMode(10, OUTPUT);
      digitalWrite(10, pin_value);
      break;
    case 9:
      pinMode(9, OUTPUT);
      digitalWrite(9, pin_value);
      break;
    case 8:
      pinMode(8, OUTPUT);
      digitalWrite(8, pin_value);
      break;
    case 7:
      pinMode(7, OUTPUT);
      digitalWrite(7, pin_value);
      break;
    case 6:
      pinMode(6, OUTPUT);
      digitalWrite(6, pin_value);
      break;
    case 5:
      pinMode(5, OUTPUT);
      digitalWrite(5, pin_value);
      break;
    case 4:
      pinMode(4, OUTPUT);
      digitalWrite(4, pin_value);
      break;
    case 3:
      pinMode(3, OUTPUT);
      digitalWrite(3, pin_value);
      break;
    case 2:
      pinMode(2, OUTPUT);
      Serial.println(analogRead(A0) * 0.48);
      Serial.println("° Celsius");
      break;
  }
}

void march()//LAMAS A MI :v
{
  while (analogRead(A2) <= 15) {
digitalWrite(16,HIGH);
  }
  return;
}

Вы можете скачать файл .ino ниже

Скачать bluetooth-control.ino

Шаг 2: Подключение схемы

Как подключить наш Arduino к нашему модулю Bluetooth вы можете увидеть на изображении ниже. После этого перед загрузкой программы отключите порты TX и RX, после загрузки, подключите их так - RX к Arduino TX и после TX к Arduino RX.

Шаг 2: Подключение схемы

 

Шаг 3: Приложение Ardudroid

Шаг 3: Приложение Ardudroid

После подключения всех соединений откройте приложение Ardudroid и подключите устройство. Скачать и установить приложение вы можете в Google Play по ссылке - https://play.google.com/store/apps/details?id=com.techbitar.android.Andruino&hl=ru.

Шаг 4: Первый тест

Используя простой светодиод и резистор вам самим нужно протестировать функции приложения.

Шаг 5: Зарядка

Теперь, когда мы проверили правильность работы приложения и устройства мы перейдем к подключению и управлению нашей лампочки. Следуя по примеру в изображения, мы подключим нагрузку в виде лампочки через реле к Arduino, чтобы управлять ей. Сделаем через выводы от 2 до 13.

Шаг 5: Зарядка

Шаг 6: Дополнительная информация

Приложение может контролировать мощность, используя МОС, если у нас 120 В переменного тока, или транзистор, если нагрузка использует постоянный ток.

Если требуется управлять мощностью устройства, сигнал будет подключен к контактам 3, 5, 6, 9, 10 или 11.

Текущая программа, которую мы загрузили, имеет дополнение и показывает температуру используя lm35. Сигнал поступает на порт A0 и, если вы хотите прочитать, вы должны нажать на контакт 2, чтобы записать текущую температуру в приложение.

Шаг 7: Заключение

Шаг 7: Заключение

Будем надеяться, что у вас всё получилось и ваш проект работает. В ближайшее время смотрите еще больше уроков на нашем сайте.

Всего вам доброго и новых вам изобретений.

Ардуино+