Ультразвуковой беспроводной индикатор уровня воды - на солнечной энергии

Попробуйте наш инструмент устранения неполадок





Ультразвуковой контроллер уровня воды - это устройство, которое может определять уровень воды в резервуаре без физического контакта и отправлять данные на удаленный светодиодный индикатор в беспроводном режиме GSM.

В этом посте мы собираемся создать ультразвуковой беспроводной индикатор уровня воды на солнечной энергии с использованием Arduino, в котором Arduinos будет передавать и принимать на беспроводной частоте 2,4 ГГц. Мы будем определять уровень воды в резервуаре с помощью ультразвука вместо традиционного электродного метода.



Обзор

Индикатор уровня воды просто необходим, если у вас есть дом или даже если вы живете в арендованном доме. А индикатор уровня воды показывает одну важную информацию для вашего дома, которая не менее важна, чем показания вашего счетчика электроэнергии, а именно: сколько воды осталось? Чтобы мы могли отслеживать потребление воды, и нам не нужно было подниматься наверх, чтобы получить доступ к резервуару для воды, чтобы проверить, сколько воды осталось, и чтобы больше не было внезапной остановки воды из крана.

Мы живем в 2018 году (на момент написания этой статьи) или позже, мы можем мгновенно связаться с любой точкой мира, мы запустили электрический гоночный автомобиль в космос, мы запустили спутники и марсоходы на Марс, мы даже смогли высадить человека. существа на Луне, до сих пор нет подходящего коммерческого продукта для определения того, сколько воды осталось в наших резервуарах для воды?



Мы можем найти индикаторы уровня воды, сделанные учениками 5-х классов для научной ярмарки в школе. Как такие простые проекты не вошли в нашу повседневную жизнь? Ответ: индикаторы уровня воды в резервуаре - это не простые проекты, которые пятиклассник может сделать для нашего дома. Есть много практические соображения прежде чем мы создадим его.

• Никто не хочет просверливать отверстие в корпусе резервуара для воды для электродов, по которым впоследствии может протечь вода.
• Никто не хочет прокладывать провод 230/120 В переменного тока рядом с резервуаром для воды.
• Никто не хочет менять батареи каждый месяц.
• Никто не хочет прокладывать дополнительные длинные провода, висящие в комнате для индикации уровня воды, поскольку это не планируется заранее при строительстве дома.
• Никто не хочет использовать воду, которая смешана с металлической коррозией электрода.
• Никто не хочет снимать установку индикатора уровня воды во время чистки бака (внутри).

Некоторые из упомянутых выше причин могут показаться глупыми, но вы найдете менее удовлетворительными коммерчески доступные продукты с этими недостатками. Вот почему проникновение этих продуктов в средние домохозяйства очень мало *.
* На индийском рынке.

После рассмотрения этих ключевых моментов мы разработали практический индикатор уровня воды, который должен устранить упомянутые минусы.

Наш дизайн:

• Он использует ультразвуковой датчик для измерения уровня воды, поэтому проблема коррозии отсутствует.
• Беспроводная индикация уровня воды в реальном времени на частоте 2,4 ГГц.
• Хорошая мощность беспроводного сигнала, достаточная для двухэтажных зданий.
• Питание от солнечной энергии больше не требуется от сети переменного тока или замены батареи.
• Сигнал тревоги полного / переполнения бака при заполнении бака.

Давайте исследуем детали схемы:

Передатчик:

В схема беспроводного передатчика который находится на резервуаре, будет отправлять данные об уровне воды каждые 5 секунд 24/7. Передатчик состоит из Arduino nano, ультразвукового датчика HC-SR04 и модуля nRF24L01, который соединит передатчик и приемник по беспроводной сети на частоте 2,4 ГГц.

Солнечная панель от 9 В до 12 В с токовым выходом 300 мА будет питать цепь передатчика. Печатная плата управления батареей будет заряжать литий-ионную батарею, так что мы можем контролировать уровень воды, даже когда нет солнечного света.

Давайте посмотрим, как разместить ультразвуковой датчик в резервуаре для воды:

Обратите внимание, что вы должны проявить творческий подход, чтобы построить схему и защитить ее от дождя и прямых солнечных лучей.

Вырежьте небольшое отверстие над крышкой резервуара для размещения ультразвукового датчика и заклейте его каким-нибудь клеем, который найдете.

размещение ультразвукового датчика в резервуаре для воды

Теперь измерьте полную высоту резервуара от дна до крышки, запишите ее в метрах. Теперь измерьте высоту емкости резервуара для воды, как показано на изображении выше, и запишите ее в метрах.
Вам нужно ввести эти два значения в код.

Принципиальная схема передатчика:

разъемы ультразвукового передатчика для контроля уровня воды

ПРИМЕЧАНИЕ: nRF24L01 использует 3,3 В, поскольку Vcc не подключается к выходу 5 В Arduino.

Питание передатчика:

конструкция источника питания ультразвукового регулятора уровня воды

Убедитесь, что выходная мощность вашей солнечной панели (вольт x ток) превышает 3 Вт. В солнечная панель должно быть от 9 до 12 В.

Рекомендуется панель на 12 В и 300 мА, которую легко найти на рынке. Аккумулятор должен быть около 3,7 В на 1000 мАч.

Литий-ионный зарядный модуль 5V 18650:

На следующем изображении показан стандартный 18650 схема зарядного устройства

Вход может быть USB (не используется) или внешним 5V от LM7805 IC. Убедитесь, что вы получили правильный модуль, как показано выше, он должен иметь TP4056 защита, которая имеет отключение низкого заряда батареи и защиту от короткого замыкания.

Выходной сигнал должен быть подан на вход XL6009, который будет повышать до более высокого напряжения, используя небольшую отвертку, выход XL6009 должен быть настроен на 9 В для Arduino.

Изображение повышающего преобразователя постоянного тока XL6009:

На этом заканчивается оборудование передатчика.

Код для передатчика:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
const byte address[6] = '00001'
const int trigger = 3
const int echo = 2
const char text_0[] = 'STOP'
const char text_1[] = 'FULL'
const char text_2[] = '3/4'
const char text_3[] = 'HALF'
const char text_4[] = 'LOW'
float full = 0
float three_fourth = 0
float half = 0
float quarter = 0
long Time
float distanceCM = 0
float distanceM = 0
float resultCM = 0
float resultM = 0
float actual_distance = 0
float compensation_distance = 0
// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //
void setup()
{
Serial.begin(9600)
pinMode(trigger, OUTPUT)
pinMode(echo, INPUT)
digitalWrite(trigger, LOW)
radio.begin()
radio.openWritingPipe(address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
full = water_hold_capacity
three_fourth = water_hold_capacity * 0.75
half = water_hold_capacity * 0.50
quarter = water_hold_capacity * 0.25
}
void loop()
{
delay(5000)
digitalWrite(trigger, HIGH)
delayMicroseconds(10)
digitalWrite(trigger, LOW)
Time = pulseIn(echo, HIGH)
distanceCM = Time * 0.034
resultCM = distanceCM / 2
resultM = resultCM / 100
Serial.print('Normal Distance: ')
Serial.print(resultM)
Serial.println(' M')
compensation_distance = full_height - water_hold_capacity
actual_distance = resultM - compensation_distance
actual_distance = water_hold_capacity - actual_distance
if (actual_distance <0)
{
Serial.print('Water Level:')
Serial.println(' 0.00 M (UP)')
}
else
{
Serial.print('Water Level: ')
Serial.print(actual_distance)
Serial.println(' M (UP)')
}
Serial.println('============================')
if (actual_distance >= full)
{
radio.write(&text_0, sizeof(text_0))
}
if (actual_distance > three_fourth && actual_distance <= full)
{
radio.write(&text_1, sizeof(text_1))
}
if (actual_distance > half && actual_distance <= three_fourth)
{
radio.write(&text_2, sizeof(text_2))
}
if (actual_distance > quarter && actual_distance <= half)
{
radio.write(&text_3, sizeof(text_3))
}
if (actual_distance <= quarter)
{
radio.write(&text_4, sizeof(text_4))
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

Измените следующие значения в коде, который вы измерили:

// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //

На этом завершается передатчик.

Получатель:

Схема контроллера ультразвукового приемника уровня воды

Ресивер может показывать 5 уровней. Аварийный сигнал, когда бак достиг абсолютного максимума удерживающей способности воды при наполнении бака. От 100 до 75% - все четыре светодиода будут гореть, от 75 до 50% - три светодиода, от 50 до 25% - два светодиода, 25% и менее - один светодиод.
Приемник может питаться от батареи 9В или от зарядное устройство для смартфона к USB кабель mini-B.

Код для получателя:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
int i = 0
const byte address[6] = '00001'
const int buzzer = 6
const int LED_full = 5
const int LED_three_fourth = 4
const int LED_half = 3
const int LED_quarter = 2
char text[32] = ''
void setup()
{
pinMode(buzzer, OUTPUT)
pinMode(LED_full, OUTPUT)
pinMode(LED_three_fourth, OUTPUT)
pinMode(LED_half, OUTPUT)
pinMode(LED_quarter, OUTPUT)
digitalWrite(buzzer, HIGH)
delay(300)
digitalWrite(buzzer, LOW)
digitalWrite(LED_full, HIGH)
delay(300)
digitalWrite(LED_three_fourth, HIGH)
delay(300)
digitalWrite(LED_half, HIGH)
delay(300)
digitalWrite(LED_quarter, HIGH)
delay(300)
digitalWrite(LED_full, LOW)
delay(300)
digitalWrite(LED_three_fourth, LOW)
delay(300)
digitalWrite(LED_half, LOW)
delay(300)
digitalWrite(LED_quarter, LOW)
Serial.begin(9600)
radio.begin()
radio.openReadingPipe(0, address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
}
void loop()
{
if (radio.available())
{
radio.read(&text, sizeof(text))
Serial.println(text)
if (text[0] == 'S' && text[1] == 'T' && text[2] == 'O' && text[3] == 'P')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
for (i = 0 i <50 i++)
{
digitalWrite(buzzer, HIGH)
delay(50)
digitalWrite(buzzer, LOW)
delay(50)
}
}
if (text[0] == 'F' && text[1] == 'U' && text[2] == 'L' && text[3] == 'L')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == '3' && text[1] == '/' && text[2] == '4')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'H' && text [1] == 'A' && text[2] == 'L' && text[3] == 'F')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'L' && text[1] == 'O' && text[2] == 'W')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, LOW)
digitalWrite(LED_quarter, HIGH)
}
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

На этом приемник завершается.

ПРИМЕЧАНИЕ: если светодиоды не горят, это означает, что приемник не может получить сигнал от передатчика. Вы должны подождать 5 секунд, чтобы получить сигнал от передатчика после включения цепи приемника.

Авторские прототипы:

Передатчик:

прототип ультразвукового передатчика

Приемник:

прототип ультразвукового приемника

Если у вас есть какие-либо вопросы относительно этой схемы ультразвукового беспроводного контроллера уровня воды на солнечных батареях, пожалуйста, не стесняйтесь выражать их в комментариях, вы можете рассчитывать на быстрый ответ.




Предыдущая статья: Как сделать простые схемы повышающего преобразователя Далее: Как разработать обратный преобразователь - подробное руководство