Мне нужно чтобы одна ардуино могла определять что в радиусе допустим 10 метров от нее находится другая ардуино. То есть если в радиусе 10 метров присутствует другая ардуино то на первой ардуине загорается лампочка, если другое устройство находится дальше то лампочка гаснет. Оба устройства перемещаются.
Думал что то передавать по радиоканалу который может работать только метров на 10, не дальше. Но какое устройство конкретно использовать?
вот в этом месте главная засада. Определять расстояние по дальности радиосвязи - очень ненадежный метод.
Там где на открытом месте будет, скажем, 20м дальности, в деревянном доме - 10м, а в тяжелом бетонном бункере - всего 3м. А хуже всего то, что назавтра показания могут быть совершенно иными.
а готовые платы, название которых сразу не вспомню, ценой 2500-5000 не вариант использовать ?
#include <BLEDevice.h>
#include "esp_bt.h" // Важно: подключить заголовочный файл
void setup() {
Serial.begin(115200);
// Инициализируем BLE (обязательно до настройки мощности)
BLEDevice::init("Мое устройство");
// Устанавливаем минимальную мощность (-12 дБм)
// Это должно ограничить дальность до 1-5 метров [citation:6][citation:10]
esp_ble_tx_power_set(ESP_BLE_PWR_TYPE_DEFAULT, ESP_PWR_LVL_N12);
// Если 1-5 метров слишком мало, можно попробовать -9 дБм или -6 дБм [citation:10]
// esp_ble_tx_power_set(ESP_BLE_PWR_TYPE_DEFAULT, ESP_PWR_LVL_N9);
// esp_ble_tx_power_set(ESP_BLE_PWR_TYPE_DEFAULT, ESP_PWR_LVL_N6);
Serial.println("BLE запущен с минимальной мощностью!");
}
void loop() {
// Здесь будет ваш код
}
модули не подскажу, можете с блютуз поиграться…. на esp32 если поможет, поделитесь пж результатами