מחוון מפלס מים אלחוטי קולי - מופעל באמצעות שמש

נסה את הכלי שלנו לביטול בעיות





בקר מפלס מים קולי הוא מכשיר שיכול לזהות מפלסי מים במיכל ללא מגע פיזי ולשלוח את הנתונים למחוון LED רחוק במצב GSM אלחוטי.

בפוסט זה אנו הולכים לבנות מחוון מפלס מים אלחוטי מבוסס שמש על-קולי באמצעות ארדואינו בו הארדואינו ישדרו ויקבלו בתדר אלחוטי 2.4 GHz. אנו נגלה את מפלס המים במיכל באמצעות אולטרה סאונד במקום שיטת אלקטרודות מסורתית.



סקירה כללית

מחוון מפלס מים הוא גאדג'ט חובה, אם אתה הבעלים של בית או אפילו גר בבית שכור. א מחוון מפלס מים מציג נתונים חשובים לבית שלך שחשובים לא פחות מהקריאה של מד האנרגיה שלך, כלומר כמה מים נותרו? כדי שנוכל לעקוב אחר צריכת המים ולא נצטרך לטפס למעלה כדי לגשת למיכל המים כדי לבדוק כמה מים נותרו ולא עוד עצירה פתאומית של מים מהברז.

אנו חיים בשנת 2018 (בזמן כתיבת מאמר זה) או מאוחר יותר, אנו יכולים לתקשר לכל מקום בעולם באופן מיידי, השקנו מכונית מירוץ חשמלית לחלל, שיגרנו לוויינים ומשוטטים למאדים, אפילו הצלחנו לנחות אנושיים ישויות על הירח, עדיין אין מוצר מסחרי ראוי לאיתור כמה מים נותרו במיכלי המים שלנו?



אנו יכולים למצוא מדדי מפלס מיוצרים על ידי תלמידי כיתות ה 'ליריד מדעים בבית הספר. איך פרויקטים כה פשוטים לא נכנסו לחיי היומיום שלנו? התשובה היא כי מדדי מפלס מיכלי מים אינם פרויקטים פשוטים שילד בכיתה ה 'יכול להכין עבורנו בבית. יש הרבה שיקולים מעשיים לפני שאנחנו מעצבים אחד כזה.

• איש אינו רוצה לקדוח חור על גוף מיכל המים לאלקטרודות שעלולות לדלוף מים בהמשך.
• אף אחד לא רוצה להפעיל חוט 230/120 VAC ליד מיכל המים.
• אף אחד לא רוצה להחליף סוללות מדי חודש.
• אף אחד לא רוצה להפעיל חוטים ארוכים נוספים התלויים בחדר לצורך אינדיקציה למפלס מים מכיוון שהוא אינו מתוכנן מראש בזמן בניית הבית.
• אף אחד לא רוצה להשתמש במים שמעורבים קורוזיה מתכתית של האלקטרודה.
• אף אחד לא רוצה להסיר את הגדרת מחוון מפלס המים בזמן ניקוי המיכל (מבפנים).

חלק מהסיבות שהוזכרו לעיל עשויות להראות מטופשות, אך תמצאו פחות מספקות עם מוצרים זמינים מסחרית עם חסרונות אלה. זו הסיבה שחדירת מוצרים אלה פחותה ממשקי הבית הממוצעים *.
* בשוק ההודי.

לאחר בחינת נקודות המפתח הללו, תכננו מחוון מפלס מים מעשי שאמור להסיר את החסרונות שהוזכרו.

העיצוב שלנו:

• הוא משתמש בחיישן קולי כדי למדוד את מפלס המים כך שאין שום בעיה בקורוזיה.
• אינדיקציה אלחוטית של מפלס המים בזמן אמת ב -2.4 GHz.
• חוזק אות אלחוטי אלחוטי, מספיק לבניינים בני 2 קומות.
• לא מופעל חשמל לרשת החשמל או החלפת סוללה.
• אזעקת מיכל מלא / הצפה בזמן מילוי המיכל.

בואו נבדוק את פרטי המעגל:

מַשׁדֵר:

ה מעגל משדר אלחוטי אשר מונח על המיכל ישלח נתוני מפלס מים כל 5 שניות 24/7. המשדר מורכב מ- Arduino ננו, חיישן קולי HC-SR04, מודול nRF24L01 שיחבר את המשדר והמקלט באופן אלחוטי ב -2.4 GHz.

פאנל סולארי של 9 וולט עד 12 וולט בהספק זרם של 300mA יניע את מעגל המשדר. מעגל לניהול סוללות יטען את סוללת הליון-יון, כך שנוכל לפקח על מפלס המים גם ללא אור שמש.

הבה נבחן כיצד למקם את החיישן הקולי במיכל המים:

שים לב שעליך להשתמש ביצירתיות שלך כדי לתלול את המעגל ולהגן מפני גשם ואור שמש ישיר.

גזרו חור קטן מעל מכסה הטנק להצבת החיישן האולטראסוני ואטמו אותו עם סוג של דבק שתוכלו למצוא.

הצבת חיישן קולי במיכל מים

עכשיו מודדים את מלוא הגובה של המיכל מתחתית למכסה, רושמים אותו במטרים. עכשיו מדוד את גובה קיבולת החזקת המים של המיכל כפי שמוצג בתמונה לעיל וכתוב למטה במטרים.
עליך להזין את שני הערכים הללו בקוד.

תרשים סכמטי של המשדר:

חיבורי משדר קולי לבקרת מפלס המים

הערה: nRF24L01 משתמש ב -3.3 וולט שכן Vcc אינו מתחבר לפלט 5V של ארדואינו.

ספק כוח למשדר:

עיצוב אספקת חשמל בבקר מפלס מים

וודא שעוצמת המוצא של הפאנל הסולארי שלך כלומר פלט (וולט x זרם) גדול מ -3 וואט. ה פנל סולארי צריך להיות 9V עד 12V.

מומלץ פאנל 12V ו- 300mA אותו תוכלו למצוא בקלות בשוק. הסוללה צריכה להיות סביב 3.7V 1000 מיליאמפר / שעה.

מודול טעינה ליתיום יון 5V 18650:

התמונה הבאה מציגה תקן מעגל מטען 18650

הקלט יכול להיות USB (לא בשימוש) או 5V חיצוני מ- LM7805 IC. ודא שקיבלת את המודול הנכון כפי שמוצג לעיל TP4056 הגנה, שיש בה ניתוק סוללה נמוך והגנה קצרה.

את הפלט של זה יש להזין לכניסת XL6009 שתתחזק למתח גבוה יותר, באמצעות פלט מברג קטן של XL6009 צריך להיות מותאם ל 9 V עבור Arduino.

איור של ממיר דחיפה ל- XL6009 DC ל- DC:

זה מסכם את חומרת המשדר.

קוד משדר:

// ----------- 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% ופחות נורית אחת זוהרת.
המקלט יכול להיות מופעל מסוללת 9V או מ- מטען לסמארטפון ל- USB כבל מיני 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 שניות כדי לקבל את האות מהמשדר לאחר הפעלת מעגל המקלט.

אבי טיפוס של המחבר:

מַשׁדֵר:

אב טיפוס של משדר קולי

מַקְלֵט:

אב טיפוס של מקלט קולי

אם יש לך שאלות הנוגעות למעגל בקר בקר מים אלחוטי אלחוטי המופעל על ידי שמש, אל תהסס להביע את ההערה, אתה יכול לצפות לקבל תשובה מהירה




קודם: כיצד ליצור מעגלי ממיר Boost פשוטים הבא: כיצד לעצב ממיר Flyback - הדרכה מקיפה