Передача данных между Arduino с использованием HM-10 BLE
Я работаю над проектом, в котором у меня есть Arduino, записывающий уровни влажности и температуры в комнате (с помощью датчика DHT11), и второй Arduino, который получает эти данные через Bluetooth.
Я использую модули HM-10 BLE.
Пока сборщик данных может передавать данные через BLE, а приемник может получать данные BLE с моего телефона, но я не могу понять, как соединить два модуля, чтобы приемник мог получать данные от сборщика данных.
Все решения, которые я нашел в Интернете, включают использование набора инструкций AT, тогда как я использую библиотеку SoftwareSerial.h.
Код для моего сборщика данных выглядит следующим образом:
//Include the DHT (humidity and temperature sensor) library, and the serial library
#include <dht.h>
#include <SoftwareSerial.h>
//Define the constants for the input (DHT11) and output pins
#define RXpin 7
#define TXpin 8
#define DHT11_PIN 9
//Initialise a Serial channel as softSerial
SoftwareSerial softSerial(RXpin, TXpin);
//Initialise DHT object
dht DHT;
//Set initial measurement to be temperature (not humidity)
bool humidity = false;
void setup() {
//Start the serial function
Serial.begin(9600);
//Start the softSerial channel
softSerial.begin(9600);
}//void setup()
void loop() {
//Reset the reading variable
float(reading);
//Take in the values recorded by the DHT11
int chk = DHT.read11(DHT11_PIN);
//Store the necessary measurement in the reading variable
if (!humidity) {
reading = DHT.temperature;
} else {
reading = DHT.humidity;
}
//Output the reading on the softSerial channel
softSerial.print(reading);
//The DHT11 can only take one measurement per second, so waiting two seconds ensures there will be no null readings
delay(2000);
//Swap current measurement
humidity = !humidity;
}//void loop()
Будем весьма благодарны за любые идеи относительно того, как я могу связать его с другим модулем hm10, чтобы они могли обмениваться информацией без необходимости перезаписывать все в набор инструкций AT.
1 ответ
Вам необходимо изучить AT-команды для настройки HM-10 в режиме master или slave, все это можно сделать с помощью библиотеки SoftSerial, получить таблицу данных HM-10 для AT-команд и проверить эти сайты на предмет помощи.
http://www.instructables.com/id/How-to-Use-Bluetooth-40-HM10/
https://www.hackster.io/achindra/bluetooth-le-using-cc-41a-hm-10-clone-d8708e
Смотрите пример кода ниже:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(4, 5);
void setup() {
Serial.begin(9600);
BTSerial.begin(9600);
BTSerial.write("AT+DEFAULT\r\n");
BTSerial.write("AT+RESET\r\n");
BTSerial.write("AT+NAME=Controller\r\n");
BTSerial.write("AT+ROLE1\r\n");
BTSerial.write("AT+TYPE1"); //Simple pairing
}
void loop()
{
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
}