Υπερηχητικός ασύρματος δείκτης στάθμης νερού - Solar Powered

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Ένας υπερηχητικός ελεγκτής στάθμης νερού είναι μια συσκευή που μπορεί να ανιχνεύσει τα επίπεδα νερού σε μια δεξαμενή χωρίς φυσική επαφή και να στείλει τα δεδομένα σε μια απομακρυσμένη ένδειξη LED σε μια ασύρματη λειτουργία GSM.

Σε αυτήν την ανάρτηση πρόκειται να κατασκευάσουμε μια ένδειξη στάθμης νερού ασύρματης ισχύος με υπερήχους χρησιμοποιώντας το Arduino στον οποίο το Arduinos θα μεταδίδει και θα λαμβάνει ασύρματη συχνότητα 2,4 GHz. Θα ανιχνεύσουμε τη στάθμη του νερού στη δεξαμενή χρησιμοποιώντας υπερήχους αντί της παραδοσιακής μεθόδου ηλεκτροδίου.



ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

Ο δείκτης στάθμης νερού είναι ένα gadget που πρέπει να έχετε, εάν έχετε σπίτι ή ακόμα και ζείτε σε νοικιασμένο σπίτι. ΕΝΑ δείκτης στάθμης νερού δείχνει ένα σημαντικό στοιχείο για το σπίτι σας, το οποίο είναι εξίσου σημαντικό με την ανάγνωση του μετρητή ενέργειας, δηλαδή πόση ποσότητα νερού έχει απομείνει; Για να μπορούμε να παρακολουθούμε την κατανάλωση νερού και δεν χρειάζεται να ανεβαίνουμε στον επάνω όροφο για να αποκτήσουμε πρόσβαση στη δεξαμενή νερού για να ελέγξουμε πόση ποσότητα νερού έμεινε και όχι ξαφνική διακοπή νερού από τη βρύση.

Ζούμε το 2018 (κατά τη στιγμή της σύνταξης αυτού του άρθρου) ή αργότερα, μπορούμε να επικοινωνήσουμε άμεσα με οπουδήποτε στον κόσμο, ξεκινήσαμε ένα ηλεκτρικό αγωνιστικό αυτοκίνητο στο διάστημα, ξεκινήσαμε δορυφόρους και περιηγητές στο mars, ακόμη και μπορούμε να προσγειώσουμε τον άνθρωπο όντα στο φεγγάρι, ακόμα δεν υπάρχει κατάλληλο εμπορικό προϊόν για την ανίχνευση του ποσού νερού που απομένει στις δεξαμενές νερού μας;



Μπορούμε να βρούμε δείκτες στάθμης νερού από μαθητές της 5ης τάξης για επιστημονική έκθεση στο σχολείο. Πώς δεν έκαναν τόσο απλά έργα στην καθημερινή μας ζωή; Η απάντηση είναι ότι οι δείκτες στάθμης δεξαμενής νερού δεν είναι απλά έργα που μπορεί να δημιουργήσει ένας 5ος μαθητής για το σπίτι μας. Υπάρχουν πολλά πρακτικές εκτιμήσεις πριν σχεδιάσουμε ένα.

• Κανείς δεν θέλει να τρυπήσει μια τρύπα στο σώμα της δεξαμενής νερού για ηλεκτρόδια που ενδέχεται να διαρρεύσουν νερό αργότερα.
• Κανείς δεν θέλει να τρέξει καλώδιο 230/120 VAC κοντά σε δεξαμενή νερού.
• Κανείς δεν θέλει να αντικαθιστά τις μπαταρίες κάθε μήνα.
• Κανείς δεν θέλει να τρέξει επιπλέον μακριά καλώδια που κρέμονται σε ένα δωμάτιο για ένδειξη στάθμης νερού, καθώς δεν είναι προσχεδιασμένο κατά την κατασκευή του σπιτιού.
• Κανείς δεν θέλει να χρησιμοποιήσει το νερό που αναμιγνύεται με μεταλλική διάβρωση του ηλεκτροδίου.
• Κανείς δεν θέλει να αφαιρέσει τη ρύθμιση ένδειξης στάθμης νερού κατά τον καθαρισμό της δεξαμενής (μέσα).

Μερικοί από τους λόγους που αναφέρονται παραπάνω μπορεί να φαίνονται ανόητοι, αλλά, θα βρείτε λιγότερο ικανοποιητικά με εμπορικά διαθέσιμα προϊόντα με αυτά τα μειονεκτήματα. Γι 'αυτό η διείσδυση αυτών των προϊόντων είναι πολύ λιγότερο μεταξύ των μέσων νοικοκυριών *.
* Στην ινδική αγορά.

Αφού εξετάσαμε αυτά τα βασικά σημεία, σχεδιάσαμε έναν πρακτικό δείκτη στάθμης νερού που θα πρέπει να αφαιρέσει τα μειονεκτήματα που αναφέρονται.

Το σχέδιό μας:

• Χρησιμοποιεί αισθητήρα υπερήχων για τη μέτρηση της στάθμης του νερού, ώστε να μην υπάρχει πρόβλημα διάβρωσης.
• Ασύρματη ένδειξη στάθμης νερού σε πραγματικό χρόνο στα 2,4 GHz.
• Καλή ισχύς ασύρματου σήματος, αρκετά για διώροφα κτίρια.
• Ηλιακή τροφοδοσία δεν τροφοδοτεί πλέον εναλλασσόμενο ρεύμα ή αντικαθιστά την μπαταρία.
• Συναγερμός πλήρους / υπερχείλισης δεξαμενής ενώ γεμίζετε το ρεζερβουάρ.

Ας διερευνήσουμε τις λεπτομέρειες του κυκλώματος:

Πομπός:

ο ασύρματο κύκλωμα πομπού που τοποθετείται στη δεξαμενή θα στέλνει δεδομένα στάθμης νερού κάθε 5 δευτερόλεπτα 24/7. Ο πομπός αποτελείται από Arduino nano, υπερηχητικό αισθητήρα HC-SR04, nRF24L01 module που θα συνδέσει τον πομπό και το δέκτη ασύρματα στα 2,4 GHz.

Ένας ηλιακός πίνακας από 9 V έως 12 V με ισχύ ρεύματος 300mA θα τροφοδοτήσει το κύκλωμα του πομπού. Μια πλακέτα διαχείρισης μπαταρίας θα φορτίσει την μπαταρία ιόντων λιθίου, έτσι ώστε να μπορούμε να παρακολουθούμε τη στάθμη του νερού ακόμη και όταν δεν υπάρχει ηλιακό φως.

Ας εξερευνήσουμε πώς να τοποθετήσουμε τον αισθητήρα υπερήχων στη δεξαμενή νερού:

Λάβετε υπόψη ότι πρέπει να χρησιμοποιήσετε τη δημιουργικότητά σας για να χτυπήσετε το κύκλωμα και να προστατέψετε από τη βροχή και το άμεσο ηλιακό φως.

Κόψτε μια μικρή τρύπα πάνω από το καπάκι της δεξαμενής για τοποθέτηση του αισθητήρα υπερήχων και σφραγίστε τον με κάποιο είδος κόλλας που μπορείτε να βρείτε.

τοποθέτηση αισθητήρα υπερήχων σε δεξαμενή νερού

Τώρα μετρήστε το πλήρες ύψος της δεξαμενής από κάτω προς το καπάκι, γράψτε το σε μέτρα. Τώρα μετρήστε το ύψος της δεξαμενής συγκράτησης νερού όπως φαίνεται στην παραπάνω εικόνα και γράψτε κάτω σε μέτρα.
Πρέπει να εισαγάγετε αυτές τις δύο τιμές στον κώδικα.

Σχηματικό διάγραμμα του πομπού:

συνδέσεις πομπού υπερήχων για τον έλεγχο στάθμης νερού

ΣΗΜΕΙΩΣΗ: Το nRF24L01 χρησιμοποιεί 3.3V καθώς το Vcc δεν συνδέεται με έξοδο 5V του Arduino.

Τροφοδοσία για πομπό:

σχεδιασμός τροφοδοσίας υπερήχων στάθμης νερού

Βεβαιωθείτε ότι η ισχύς εξόδου του ηλιακού σας πάνελ, δηλαδή η έξοδος (volt x current) είναι μεγαλύτερη από 3 watt. ο ηλιακά πάνελ πρέπει να είναι 9V έως 12V.

Συνιστάται πάνελ 12V και 300mA το οποίο μπορείτε να βρείτε εύκολα στην αγορά. Η μπαταρία πρέπει να είναι περίπου 3,7V 1000 mAh.

Μονάδα φόρτισης ιόντων λιθίου 5V 18650:

Η παρακάτω εικόνα δείχνει ένα πρότυπο Κύκλωμα φορτιστή 18650

Η είσοδος μπορεί να είναι USB (δεν χρησιμοποιείται) ή εξωτερική 5V από LM7805 IC. Βεβαιωθείτε ότι έχετε τη σωστή ενότητα όπως φαίνεται παραπάνω, θα πρέπει να έχει TP4056 προστασία, η οποία έχει προστασία αποκοπής μπαταρίας και βραχυκύκλωμα.

Η έξοδος αυτού πρέπει να τροφοδοτηθεί με είσοδο XL6009, η οποία θα αυξηθεί σε υψηλότερη τάση, χρησιμοποιώντας μια μικρή έξοδο κατσαβιδιού XL6009 θα πρέπει να ρυθμιστεί σε 9V για το 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% - Και οι τέσσερις λυχνίες LED ανάβουν, 75 έως 50% τρεις λυχνίες LED ανάβουν, 50 έως 25% δύο λυχνίες LED ανάβουν, 25% και λιγότερες λυχνίες LED ανάβουν.
Ο δέκτης μπορεί να τροφοδοτείται από μπαταρία 9V ή από φορτιστής smartphone σε 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 ----------- //

Αυτό ολοκληρώνει τον δέκτη.

ΣΗΜΕΙΩΣΗ: εάν δεν ανάβουν LED, αυτό σημαίνει ότι ο δέκτης δεν μπορεί να λάβει σήμα από πομπό. Θα πρέπει να περιμένετε 5 δευτερόλεπτα για να λάβετε το σήμα από τον πομπό αφού ενεργοποιήσετε το κύκλωμα του δέκτη.

Πρωτότυπα συγγραφέα:

Πομπός:

πρωτότυπο πομπού υπερήχων

Δέκτης:

πρωτότυπο δέκτη υπερήχων

Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με αυτό το κύκλωμα ελεγκτή στάθμης νερού υπερήχων με ηλιακή ενέργεια, μη διστάσετε να εκφράσετε το σχόλιο, μπορείτε να περιμένετε να λάβετε μια γρήγορη απάντηση.




Προηγούμενο: Πώς να φτιάξετε απλά κυκλώματα μετατροπέα ενίσχυσης Επόμενο: Πώς να σχεδιάσετε έναν μετατροπέα Flyback - Πλήρης οδηγός