HM-10: Автономный беспроводной датчик освещённости со встроенным АЦП

Этот проект демонстрирует создание беспроводного датчика освещённости с использованием двух модулей HM-10 Bluetooth. Удалённый датчик подключает фоторезистор (LDR) к выводу PIOB периферийного HM-10. Центральный HM-10 связывается с удалённым модулем по Bluetooth для считывания значений освещённости.

HM-10 удалённый датчик освещённости на макетной плате

Настройка HM-10

Два модуля были настроены на автоматическое подключение с помощью команды AT+IMME1, а периферийный модуль находится в MODE1.

Схема подключения

Ведущий/центральный HM-10 подключается к микроконтроллеру Arduino. Периферийный/ведомый HM-10 подключается следующим образом:

  • LDR (фоторезистор) подключён к PIOB

  • +5V на VCC

  • +3.3V подаётся на цепь LDR

  • Питание от адаптера на макетной плате (или от батареи)

Схема подключения удалённого датчика освещённости HM-10

Скетч Arduino

Реализация проста. Скетч отправляет команду AT+ADCB? для запроса показания напряжения с вывода PIOB удалённого HM-10.

//  Sketch: HM-10_Example_04A_RemoteLightSensor
//
//  Master HM-10
//  Pins
//  BT VCC to Arduino 5V out.
//  BT GND to GND
//  Arduino D8 (ASS RX) - BT TX no need voltage divider
//  Arduino D9 (ASS TX) - BT RX through a voltage divider
//
//  Remote HM-10
//  HM-10 vcc to +5V
//  HM-10 GND to GND
//  HM-10 PIOB to LDR/CDS

#include <AltSoftSerial.h>
AltSoftSerial BTSerial;

char c=' ';
char reply[30];
int pos = 0;

void setup()
{
    Serial.begin(9600);
    Serial.print("Sketch:   ");   Serial.println(__FILE__);
    Serial.print("Uploaded: ");   Serial.println(__DATE__);
    Serial.println(" ");

    Serial.println("The HM-10s should be set for auto connect");
    Serial.println("The remote HM-10 should be set for MODE1");

    BTSerial.begin(9600);
    Serial.println("BTserial started at 9600");
    Serial.println(" ");
}

void loop()
{
    BTSerial.print("AT+ADCB?");
    delay(500);

    pos = 0;
    while ( BTSerial.available() )
    {
        c = BTSerial.read();
        reply[pos] = c;
        pos++;
    }
    reply[pos] = '\0';
    Serial.print("Reply = "); Serial.println(reply);

    delay (3000);
}

Результат и применение

Монитор последовательного порта отображает показания АЦП с удалённого датчика. Пользователи могут расширить эту базовую реализацию дополнительной функциональностью, например, активацией предупреждающих светодиодов при изменении условий освещённости.

Показания монитора последовательного порта с удалённого датчика освещённости

Примечание

Оригинальная статья: HM-10 Stand-Alone Remote Light Sensor (Martyn Currey)