Სარჩევი:

ბატარეაზე მომუშავე წყლის კოლექტორის დონის სენსორი: 7 ნაბიჯი (სურათებით)
ბატარეაზე მომუშავე წყლის კოლექტორის დონის სენსორი: 7 ნაბიჯი (სურათებით)

ვიდეო: ბატარეაზე მომუშავე წყლის კოლექტორის დონის სენსორი: 7 ნაბიჯი (სურათებით)

ვიდეო: ბატარეაზე მომუშავე წყლის კოლექტორის დონის სენსორი: 7 ნაბიჯი (სურათებით)
ვიდეო: მზის ენერგიაზე მომუშავე წყალგამაცხელებელი 2024, ივლისი
Anonim
ბატარეაზე მომუშავე წყლის კოლექტორის დონის სენსორი
ბატარეაზე მომუშავე წყლის კოლექტორის დონის სენსორი
ბატარეაზე მომუშავე წყლის კოლექტორის დონის სენსორი
ბატარეაზე მომუშავე წყლის კოლექტორის დონის სენსორი

ჩვენს სახლს აქვს წყლის ავზი, რომელიც იკვებება სახურავზე წვიმისგან და გამოიყენება ტუალეტისთვის, სარეცხი მანქანისთვის და ბაღში მცენარეების მორწყვისთვის. ბოლო სამი წლის განმავლობაში ზაფხული ძალიან მშრალი იყო, ამიტომ ჩვენ ვაკვირდებოდით წყლის დონეს ავზში. აქამდე ჩვენ ვიყენებდით ხის ჯოხს, რომელიც ავზში ჩავდეთ და დონე აღვნიშნეთ. მაგრამ რა თქმა უნდა შესაძლებელი უნდა იყოს ამის გაუმჯობესება!

ეს არის ის, სადაც ეს პროექტი იწყება. იდეა არის ტანკის ზედა ნაწილში დაურთოს ულტრაბგერითი მანძილის სენსორი. ეს სენსორი მუშაობს როგორც სონარი, რომელიც ასხივებს ხმის ტალღებს, რომლებიც შემდეგ აისახება წყლის ზედაპირზე. ტალღების დაბრუნებისა და ხმის სიჩქარის დროდან, თქვენ შეგიძლიათ გამოთვალოთ მანძილი წყლის ზედაპირამდე და დაადგინოთ რამდენად სავსეა ავზი.

ვინაიდან მე არ მაქვს მაგისტრალური კავშირი ავზთან ახლოს, აუცილებელია, რომ სრული მოწყობილობა იმუშაოს ბატარეებზე. ეს ნიშნავს, რომ მე უნდა ვიცოდე ყველა ნაწილის ენერგიის მოხმარება. მონაცემების დასაბრუნებლად გადავწყვიტე გამოვიყენო ESP8266 მიკროჩიპის ჩაშენებული Wifi. მიუხედავად იმისა, რომ Wifi საკმაოდ ენერგიულია, მას აქვს უპირატესობა სხვა ტიპის რადიოკავშირის მიმართ: შეგიძლიათ პირდაპირ დაუკავშიროთ თქვენი სახლის უკაბელო როუტერს სხვა მოწყობილობის შექმნის გარეშე, რომელიც ემსახურება სარელეოდ.

ენერგიის დაზოგვის მიზნით მე ESP8266– ს ვდებ ღრმა ძილში უმეტეს დროს და ვიღებ გაზომვას ყოველ საათში. წყლის დონის დასადგენად, ეს საკმარისზე მეტს ნიშნავს. მონაცემები გაიგზავნება ThingSpeak– ში და შემდეგ წაიკითხება სმარტფონზე აპლიკაციის საშუალებით.

კიდევ ერთი დეტალი! ხმის სიჩქარე, რომელიც აუცილებელია მანძილის გაზომვისთვის, დამოკიდებულია ტემპერატურაზე და ნაკლებად ტენიანობაზე. სეზონზე ზუსტი გარე გაზომვისთვის ჩვენ ჩავაგდებთ BME280 სენსორს, რომელიც ზომავს ტემპერატურას, ტენიანობას და წნევას. როგორც ბონუსი, ეს არის ჩვენი წყლის დონის სენსორი ასევე მინი ამინდის სადგური.

ნაწილები:

  • 1x ESP8266 ESP-12F.
  • 1x ESP-12F ადაპტერის ფირფიტა.
  • 1x FT232RL FTDI: USB სერიული ადაპტერი.
  • 1x HC-SR04-P: ულტრაბგერითი მანძილის გაზომვის მოდული. გაითვალისწინეთ, რომ P მნიშვნელოვანია, რადგან ეს არის ვერსია, რომელსაც აქვს მინიმალური მინიმალური ძაბვა 3V.
  • 1x BME280 3.3V ვერსია: ტემპერატურის, წნევის და ტენიანობის სენსორი.
  • 1x IRL2203N: n-channel MOSFET ტრანზისტორი.
  • 1x MCP1700-3302E 3.3V ვერსია: ძაბვის რეგულატორი.
  • 3x დატენვის AA ბატარეა, მაგ. 2600 mAh
  • 1x ბატარეის დამჭერი 3 ბატარეაზე.
  • 1x დაფა.
  • რეზისტორები: 1x 470K, 1x 100K, 4x 10K.
  • კონდენსატორები: 2x კერამიკული 1uF.
  • 3x გადამრთველი გადამრთველი.
  • U- ფორმის პურის დაფის მავთულები.
  • ჯუმბერის მავთულები.
  • პლასტიკური წვნიანის კონტეინერი 1 ლ.
  • კონტეინერის სამაგრის ბეჭედი.

მე კოდი ხელმისაწვდომი გავხადე GitHub– ზე.

ნაბიჯი 1: ულტრაბგერითი დისტანციის სენსორის გაცნობა

ულტრაბგერითი დისტანციის სენსორის გაცნობა
ულტრაბგერითი დისტანციის სენსორის გაცნობა
ულტრაბგერითი დისტანციის სენსორის გაცნობა
ულტრაბგერითი დისტანციის სენსორის გაცნობა

ჩვენ გავზომოთ მანძილი წყლის ზედაპირზე ულტრაბგერითი სენსორით, HC-SR04-P. ღამურას მსგავსად, ეს სენსორი იყენებს სონარს: ის აგზავნის ხმის იმპულსს ადამიანის ყურისთვის ძალიან მაღალი სიხშირით, შესაბამისად ულტრაბგერითი და ელოდება სანამ ის მოხვდება ობიექტზე, აისახება და ბრუნდება. მანძილი შეიძლება გამოითვალოს ექოს მიღებისა და ხმის სიჩქარის მიხედვით.

კონკრეტულად, თუ Trig ბალიშს გაიყვანენ სულ მცირე 10 μs– ით, სენსორი აგზავნის 8 იმპულსის ამოფრქვევას 40 ჰც სიხშირით. შემდეგ პასუხი მიიღება ექოს პინზე პულსის სახით, ხანგრძლივობით უტოლდება ულტრაბგერითი პულსის გაგზავნასა და მიღებას შორის. შემდეგ უნდა გავყოთ 2-ზე, ვინაიდან ულტრაბგერითი პულსი წინ და უკან მიდის და ჩვენ გვჭირდება ცალმხრივი მოგზაურობის დრო და გავამრავლოთ ხმის სიჩქარეზე, რომელიც არის დაახლოებით 340 მ/წმ.

მაგრამ დაელოდე ერთი წუთით! ფაქტობრივად, ბგერის სიჩქარე დამოკიდებულია ტემპერატურაზე და ნაკლებად ტენიანობაზე. მე ვიკრიჭები თუ ეს შესაბამისია? გაანგარიშების ინსტრუმენტის გამოყენებით აღმოვაჩინეთ, რომ ზამთარში (ტემპერატურა -5 ° C) ჩვენ გვქონდა 328.5 მ/წმ, ხოლო ზაფხულში (25 ° C ტემპერატურაზე) 347.1 მ/წმ. დავუშვათ, ჩვენ ვპოულობთ ცალმხრივ მოგზაურობის დროს 3 ms. ზამთარში ეს ნიშნავს 98.55 სმ -ს, ხოლო ზაფხულში 104.13 სმ. ეს საკმაოდ განსხვავებაა! ასე რომ საკმარისი სიზუსტის მისაღებად სეზონებზე და დღე და ღამეც კი ჩვენ უნდა დავამატოთ თერმომეტრი ჩვენს კონფიგურაციას. მე გადავწყვიტე შემეტანა BME280, რომელიც ზომავს ტემპერატურას, ტენიანობას და წნევას. კოდში ვიყენებ ფუნქციას speedOfSound ფორმულა, რომელიც ითვლის ხმის სიჩქარეს სამივე პარამეტრის მიხედვით, თუმცა ტემპერატურა მართლაც ყველაზე მნიშვნელოვანი ფაქტორია. ტენიანობას ჯერ კიდევ აქვს მცირე ეფექტი, მაგრამ ზეწოლის ზემოქმედება უმნიშვნელოა. ჩვენ შეგვიძლია გამოვიყენოთ უფრო მარტივი ფორმულა მხოლოდ იმ ტემპერატურის გათვალისწინებით, რომელიც მე განვახორციელე speedOfSoundSimple– ში.

HC-SR04– ზე არის კიდევ ერთი მნიშვნელოვანი წერტილი. არსებობს ორი ვერსია: სტანდარტული ვერსია მუშაობს 5V– ზე, ხოლო HC-SR04-P– ს შეუძლია ძაბვის დიაპაზონში 3V– დან 5V– მდე. ვინაიდან 3 დატენვის AA ბატარეა უზრუნველყოფს 3x1.25V = 3.75V- ს, მნიშვნელოვანია P- ვერსიის მიღება. ზოგიერთმა გამყიდველმა შეიძლება არასწორი გაგზავნოს. ასე რომ, თუ ყიდულობთ, გადახედეთ სურათებს. ორივე ვერსია განსხვავებულია როგორც უკან, ასევე წინ, როგორც ეს განმარტებულია ამ გვერდზე. P- ვერსიის უკანა ნაწილში სამივე ჩიპი ჰორიზონტალურია, ხოლო სტანდარტულ ვერსიაში ერთი ვერტიკალურია. წინა სტანდარტულ ვერსიას აქვს დამატებითი ვერცხლის კომპონენტი.

ელექტრონულ წრეში ჩვენ გამოვიყენებთ ტრანზისტორს, როგორც გადამრთველს, რათა გამორთოთ ულტრაბგერითი სენსორი, როდესაც ჩვენი კონფიგურაცია ღრმა ძილში გადადის ბატარეის დაზოგვის მიზნით. წინააღმდეგ შემთხვევაში, ის მაინც მოიხმარს დაახლოებით 2 mA. BME280 მეორეს მხრივ მხოლოდ 5 μ– ს მოიხმარს, როდესაც არააქტიურია, ამიტომ არ არის აუცილებელი მისი გამორთვა ტრანზისტორთან ერთად.

ნაბიჯი 2: ESP8266 საბჭოს არჩევანი

ESP8266 დაფის არჩევანი
ESP8266 დაფის არჩევანი

სენსორის ბატარეაზე რაც შეიძლება დიდხანს მუშაობისთვის ჩვენ უნდა დავზოგოთ ენერგიის მოხმარება. მიუხედავად იმისა, რომ ESP8266 Wifi უზრუნველყოფს ძალიან მოსახერხებელ გზას ჩვენი სენსორის ღრუბელთან დასაკავშირებლად, ის ასევე საკმაოდ ენერგიულია. ექსპლუატაციაში ESP8266 მოიხმარს დაახლოებით 80mA. ასე რომ, 2600 mAh ბატარეებით ჩვენ შევძლებთ ჩვენი მოწყობილობის მუშაობას მაქსიმუმ 32 საათის განმავლობაში, სანამ ისინი ცარიელი იქნება. პრაქტიკაში, ეს იქნება ნაკლები, ვინაიდან ჩვენ ვერ შევძლებთ გამოვიყენოთ სრული 2600 mAh სიმძლავრე სანამ ძაბვა დაეცემა ძალიან დაბალ დონეზე.

საბედნიეროდ ESP8266– ს აქვს ღრმა ძილის რეჟიმი, რომელშიც თითქმის ყველაფერი გამორთულია. ასე რომ, გეგმაა, რომ ESP8266 ყველაზე ხშირად დაიძინოს და გაიღვიძოს ისე ხშირად, რომ მოხდეს გაზომვები და მონაცემების გაგზავნა Wifi– ზე ThingSpeak– ში. ამ გვერდის თანახმად, ღრმა ძილის მაქსიმალური ხანგრძლივობა იყო დაახლოებით 71 წუთი, მაგრამ ESP8266 Arduino core 2.4.1 მას შემდეგ ის გაიზარდა დაახლოებით 3.5 საათამდე. ჩემს კოდში დავსახლდი ერთი საათის განმავლობაში.

მე პირველად ვცადე მოსახერხებელი NodeMCU განვითარების დაფა, მაგრამ უხერხული, ღრმა ძილში ის მაინც მოიხმარდა დაახლოებით 9 mA, რაც გვაძლევს მაქსიმუმ 12 დღის სუფთა ღრმა ძილს გაღვიძების ინტერვალების გათვალისწინების გარეშეც კი. მნიშვნელოვანი დამნაშავეა AMS1117 ძაბვის მარეგულირებელი, რომელიც იყენებს ენერგიას მაშინაც კი, თუ თქვენ ცდილობთ მის გვერდის ავლით ბატარეის უშუალოდ 3.3V პინთან შეერთებით. ეს გვერდი განმარტავს, თუ როგორ უნდა ამოიღოთ ძაბვის რეგულატორი და USB UART. თუმცა, მე არასოდეს მოვახერხე ამის გაკეთება ჩემი დაფის განადგურების გარეშე. უფრო მეტიც, USB UART– ის ამოღების შემდეგ თქვენ აღარ შეგიძლიათ დაუკავშირდეთ ESP8266– ს, რომ გაარკვიოთ რა მოხდა.

როგორც ჩანს, ESP8266 განვითარების დაფების უმეტესობა იყენებს უსარგებლო AMS1117 ძაბვის რეგულატორს. ერთი გამონაკლისი არის WEMOS D1 მინი (სურათი მარცხნივ), რომელსაც გააჩნია უფრო ეკონომიური ME6211. მართლაც, აღმოვაჩინე, რომ WEMOS D1 მინი ღრმა ძილში იყენებს დაახლოებით 150 μA- ს, რაც მას უფრო ჰგავს. უმეტესობა ალბათ USB UART- ის დამსახურებაა. ამ დაფით თქვენ თვითონ უნდა შეაერთოთ სათაურები ქინძისთავებისთვის.

თუმცა, ჩვენ ბევრად უკეთ შეგვიძლია გავაკეთოთ შიშველი ძვლების დაფა, როგორიცაა ESP-12F (სურათი მარჯვნივ), რომელსაც არ აქვს USB UART ან ძაბვის რეგულატორი. 3.3V პინით კვებისას აღმოვაჩინე ღრმა ძილის მოხმარება მხოლოდ 22 μA!

მაგრამ იმისათვის, რომ ESP-12F იმუშაოს, მოემზადეთ შედუღებისთვის და ცოტა მეტი პრობლემის დასაპროგრამებლად! გარდა ამისა, თუ ბატარეები პირდაპირ არ აწვდიან სწორ ძაბვას, რომელიც არის 3V და 3.6V შორის, ჩვენ უნდა უზრუნველვყოთ საკუთარი ძაბვის რეგულატორი. პრაქტიკაში, ძნელია იპოვოთ ბატარეის სისტემა, რომელიც უზრუნველყოფს ძაბვას ამ დიაპაზონში მისი სრული განმუხტვის ციკლის განმავლობაში. გახსოვდეთ, ჩვენ ასევე გვჭირდება HC-SR04-P სენსორის ჩართვა, რომელსაც თეორიულად შეუძლია იმოქმედოს 3V– მდე დაბალი ძაბვით, მაგრამ უფრო ზუსტად მუშაობს თუ ძაბვა უფრო მაღალია. უფრო მეტიც, ჩემს დიაგრამაში HC-SR04-P ჩართულია ტრანზისტორით, რაც იწვევს მცირე დამატებითი ძაბვის ვარდნას. ჩვენ გამოვიყენებთ MCP1700-3302E ძაბვის რეგულატორს. მაქსიმალური შეყვანის ძაბვა არის 6V, ასე რომ ჩვენ ვკვებავთ მას 4 -მდე AA ბატარეით. გადავწყვიტე გამოვიყენო 3 AA ბატარეა.

ნაბიჯი 3: შექმენით ThingSpeak არხი

ჩვენ გამოვიყენებთ ThingSpeak, IoT ღრუბლოვანი სერვისი, ჩვენი მონაცემების შესანახად. გადადით https://thingspeak.com/ და შექმენით ანგარიში. სისტემაში შესვლისთანავე დააჭირეთ ღილაკს ახალი არხი არხის შესაქმნელად. არხის პარამეტრებში შეავსეთ სახელი და აღწერა, როგორც გსურთ. შემდეგ ჩვენ ვასახელებთ არხის ველებს და ვააქტიურებთ მათ მარჯვენა ღილაკით მონიშნულ ყუთებზე დაჭერით. თუ თქვენ იყენებთ ჩემს კოდს უცვლელად, ველები შემდეგია:

  • ველი 1: წყლის დონე (სმ)
  • ველი 2: ბატარეის დონე (V)
  • ველი 3: ტემპერატურა (° C)
  • ველი 4: ტენიანობა (%)
  • ველი 5: წნევა (პა)

მომავალი მითითებისთვის ჩაწერეთ არხის ID, Read API გასაღები და ჩაწერეთ API გასაღები, რომლებიც შეგიძლიათ იხილოთ მენიუს API კლავიშებში.

თქვენ შეგიძლიათ წაიკითხოთ ThingSpeak მონაცემები თქვენს სმარტფონზე პროგრამის გამოყენებით. ჩემს Android ტელეფონში ვიყენებ IoT ThingSpeak მონიტორის ვიჯეტს. თქვენ უნდა დააკონფიგურიროთ არხის ID და Read API გასაღები.

ნაბიჯი 4: როგორ დავგეგმოთ ESP-12F

როგორ დავგეგმოთ ESP-12F
როგორ დავგეგმოთ ESP-12F
როგორ დავგეგმოთ ESP-12F
როგორ დავგეგმოთ ESP-12F

ჩვენ გვჭირდება შიშველი დაფა ბატარეის დაზოგვის მიზნით, მაგრამ მინუსი ის არის, რომ პროგრამირება უფრო რთულია, ვიდრე განვითარების დაფა ჩაშენებული USB UART– ით.

ჩვენ გამოვიყენებთ Arduino IDE- ს. არსებობს სხვა ინსტრუქციები, რომლებიც განმარტავენ როგორ გამოვიყენოთ, ასე რომ აქ მოკლედ ვიტყვი. ESP8266– ის მზადყოფნის ნაბიჯებია:

  • ჩამოტვირთეთ Arduino IDE.
  • დააინსტალირეთ მხარდაჭერა ESP8266 დაფისთვის. მენიუში ფაილი - პარამეტრები - პარამეტრები დაამატეთ URL https://arduino.esp8266.com/stable/package_esp8266com_index.json დამატებით დაფის მენეჯერის მისამართებს. შემდეგი მენიუში ინსტრუმენტები - დაფა - დაფების მენეჯერი დააინსტალირეთ esp8266 esp8266 საზოგადოების მიერ.
  • შეარჩიეთ დაფაზე: ზოგადი ESP8266 მოდული.

ESP-12F– ის დასამუშავებლად გამოვიყენე ადაპტერის ფირფიტა, რომელიც ჩვეულებრივ ხელმისაწვდომია ონლაინ მაღაზიებში. ჩიპი მივაწებე თეფშს და შემდეგ მივაწებე სათაურები ფირფიტაზე. მხოლოდ მაშინ აღმოვაჩინე, რომ ადაპტერის ფირფიტა ძალიან ფართოა სტანდარტული პურის დაფისთვის! გვერდით არ ტოვებს უფასო ქინძისთავებს თქვენი კავშირების დასამყარებლად.

გამოსავალი, რომლისთვისაც მივედი, არის U- ფორმის მავთულის გამოყენება და მათი დაკავშირება, როგორც სურათზე მარჯვნივ, სანამ ESP8266- ს ადაპტერის ფირფიტასთან ერთად დავადებთ დაფაზე. ასე რომ, GND და VCC დაკავშირებულია პურის დაფის რელსებთან და დარჩენილი ქინძისთავები ხელმისაწვდომია პურის დაფის ქვემოთ. მინუსი ის არის, რომ თქვენი მარცვლეული იქნება სავსე მავთულხლართების დასრულების შემდეგ. კიდევ ერთი გამოსავალი არის ორი დაფის ერთმანეთთან მოთავსება, როგორც ეს მოცემულია ამ ვიდეოში.

შემდეგი, ESP-12F თქვენი კომპიუტერის USB პორტის დასაპროგრამებლად გვჭირდება USB სერიული ადაპტერი. მე გამოვიყენე FT232RL FTDI პროგრამისტი. პროგრამისტს აქვს მხტუნავი აირჩიოს 3.3V ან 5V. ESP8266– ისთვის ის 3.3 ვ -მდე უნდა იყოს დაყვანილი. ნუ დაგავიწყდებათ, რადგან 5V– მა შეიძლება გაანადგუროს თქვენი ჩიპი! დრაივერების ინსტალაცია უნდა იყოს ავტომატური, მაგრამ თუ პროგრამირება არ მუშაობს შეგიძლიათ სცადოთ ხელით დააინსტალიროთ ისინი ამ გვერდიდან.

ESP8266– ს აქვს პროგრამირების რეჟიმი, რომ ატვირთოს ახალი ფირმა ფლეშზე და ფლეშ რეჟიმი გაუშვას ახლანდელი პროგრამული უზრუნველყოფა ფლეშ მეხსიერებიდან. ამ რეჟიმებს შორის ასარჩევად ზოგიერთმა ქინძისთავმა უნდა მიიღოს გარკვეული მნიშვნელობა ჩატვირთვის დროს:

  • პროგრამირება: GPIO0: დაბალი, CH-PD: მაღალი, GPIO2: მაღალი, GPIO15: დაბალი
  • Flash: GPIO0: მაღალი, CH-PD: მაღალი, GPIO2: მაღალი, GPIO15: დაბალი

ადაპტერის ფირფიტა უკვე ზრუნავს CH-PD- ის აწევაზე და GPIO15- ის ჩამოშლაზე 10K რეზისტენტებით.

ასე რომ, ჩვენს ელექტრონულ წრეში ჩვენ ჯერ კიდევ გვჭირდება GPIO2- ის ამოღება. ჩვენ ასევე ვაძლევთ გადამრთველს ESP8266 პროგრამირების ან ფლეშ რეჟიმში ჩასასმელად და გადატვირთვის გადამრთველს, რაც ხდება RST მიწასთან შეერთებით. ასევე დარწმუნდით, რომ დააკავშირებთ FT232RL– ის TX პინს ESP8266– ის RXD პინთან და პირიქით.

პროგრამირების თანმიმდევრობა ასეთია:

  • დააყენეთ GPIO2 დაბალი პროგრამირების გადამრთველის დახურვით.
  • გადატვირთეთ ESP8266 გადაკეტვის გადაკეტვით და შემდეგ გახსნით. ESP8266 ახლა იტვირთება პროგრამირების რეჟიმში.
  • დააყენეთ GPIO2 მაღალ დონეზე პროგრამირების გადამრთველის გახსნით.
  • ატვირთეთ ახალი firmware Arduino IDE– დან.
  • გადატვირთეთ ESP8266 კვლავ გადატვირთვის გადამრთველის დახურვით და გახსნით. ESP8266 არის ჩატვირთული ფლეშ რეჟიმში და მუშაობს ახალ პროგრამულ უზრუნველყოფაზე.

ახლა თქვენ შეგიძლიათ შეამოწმოთ მუშაობს თუ არა პროგრამირება ცნობილი Blink ესკიზის ატვირთვით.

თუ ეს ყველაფერი მუშაობს მინიმუმ GND, VCC, GPIO2, RST, TXD და RXD ქინძისთავები სწორად არის შეკრული და დაკავშირებული. Როგორი შვება! სანამ გავაგრძელებდი გირჩევდი ასევე შეამოწმო სხვა ქინძისთავები შენი მულტიმეტრით. მე თვითონ მქონდა პრობლემა ერთ -ერთ ქინძისთავთან. თქვენ შეგიძლიათ გამოიყენოთ ესკიზი, რომელიც ყველა ქინძისთავს ამატებს სათითაოდ 5 წამის განმავლობაში, ხოლო შემდეგ ESP8266- ს ღრმა ძილში აყენებს 20 წამის განმავლობაში. იმისათვის, რომ ESP8266 გაიღვიძოს ღრმა ძილის შემდეგ, თქვენ უნდა დაუკავშიროთ RST GPIO16- ს, რაც იძლევა გაღვიძების სიგნალს.

ნაბიჯი 5: ესკიზის ატვირთვა

მე გავხადე კოდი GitHub– ზე, ეს მხოლოდ ერთი ფაილია: Level-Sensor-Deepsleep.ino. უბრალოდ გადმოწერეთ და გახსენით Arduino IDE– ში. ან შეგიძლიათ აირჩიოთ ფაილი - ახალი და უბრალოდ დააკოპირეთ/ჩასვით კოდი.

არსებობს გარკვეული ინფორმაცია, რომელიც უნდა შეავსოთ ფაილის დასაწყისში: სახელი და პაროლი WLAN გამოსაყენებლად, სტატიკური IP დეტალები და არხის ID და ჩაწერეთ API გასაღები ThingSpeak არხისთვის.

ამ ბლოგის რჩევის შემდეგ, DHCP– ის ნაცვლად, სადაც როუტერი დინამიურად ანიჭებს IP– ს, ჩვენ ვიყენებთ სტატიკურ IP– ს, სადაც ჩვენ თვითონ ვაყენებთ ESP8266– ის IP მისამართს. ეს აღმოჩნდება ბევრად უფრო სწრაფად, ამიტომ ჩვენ ვზოგავთ აქტიურ დროს და ამით ბატარეის ენერგიას. ასე რომ, ჩვენ უნდა მივაწოდოთ ხელმისაწვდომი სტატიკური IP მისამართი, ასევე როუტერის IP (კარიბჭე), ქვექსელის ნიღაბი და DNS სერვერი. თუ არ ხართ დარწმუნებული რა უნდა შეავსოთ, წაიკითხეთ სტატიკური IP– ის დაყენების შესახებ თქვენი როუტერის სახელმძღვანელოში. Windows კომპიუტერზე, რომელიც დაკავშირებულია როუტერთან Wifi– ით, ჩართეთ გარსი (Windows button-r, cmd) და შეიყვანეთ ipconfig /all. თქვენ ნახავთ უმეტეს ინფორმაციას, რაც გჭირდებათ Wi-Fi განყოფილებაში.

კოდის შესწავლისას ხედავთ, რომ სხვა Arduino კოდისგან განსხვავებით უმეტესობა მოქმედება ხდება კონფიგურაციის ფუნქციაში, მარყუჟის ფუნქციის ნაცვლად. ეს იმიტომ ხდება, რომ ESP8266 ღრმა ძილს იღებს დაყენების ფუნქციის დასრულების შემდეგ (თუ OTA რეჟიმში არ დავიწყეთ). გაღვიძების შემდეგ, ეს არის როგორც ახალი გადატვირთვა და ის კვლავ მუშაობს.

აქ მოცემულია კოდის მნიშვნელოვანი მახასიათებლები:

  • გაღვიძების შემდეგ კოდი აყენებს switchPin (ნაგულისხმევი GPIO15) მაღალს. ეს ჩართავს ტრანზისტორს, რომელიც თავის მხრივ ჩართავს HC-SR04-P სენსორს. ღრმა ძილის წინ ის დააბრუნებს ქინძისთავს დაბალ დონეს, გამორთავს ტრანზისტორს და HC-SR04-P- ს და დარწმუნებულია, რომ არ მოიხმარს ბატარეის უფრო ძვირფას ენერგიას.
  • თუ რეჟიმი PIN (ნაგულისხმევი GPIO14) დაბალია, კოდი გადადის გაზომვის რეჟიმის ნაცვლად OTA რეჟიმში. OTA– ით (ჰაერის განახლება) ჩვენ შეგვიძლია განვაახლოთ firmware Wifi– ზე სერიული პორტის ნაცვლად. ჩვენს შემთხვევაში, ეს საკმაოდ მოსახერხებელია, რადგან ჩვენ აღარ გვჭირდება სერიის USB ადაპტერთან დაკავშირება შემდგომი განახლებებისთვის. უბრალოდ დააყენეთ GPIO14 დაბალზე (ელექტრონული ჩართვის OTA გადამრთველით), გადატვირთეთ ESP8266 (გადატვირთვის გადამრთველით) და ის ხელმისაწვდომი გახდება Arduino IDE– ში ატვირთვისთვის.
  • ანალოგური PIN (A0), ჩვენ ვზომავთ ბატარეის ძაბვას. ეს საშუალებას გვაძლევს გამორთოთ ჩვენი მოწყობილობა, ანუ მუდმივი ღრმა ძილი, თუ ძაბვა ძალიან დაბალია, minVoltage– ზე დაბლა, რათა დავიცვათ ბატარეები ზედმეტი დატვირთვისგან. ანალოგური გაზომვა არ არის ძალიან ზუსტი, ჩვენ ვაკეთებთ numMeasuresBattery (ნაგულისხმევი 10) ზომებს და ვიღებთ საშუალოს სიზუსტის გასაუმჯობესებლად.
  • HC-SR04-P სენსორის მანძილის გაზომვა ხდება ფუნქციის მანძილზე გაზომვა. სიზუსტის გასაუმჯობესებლად გაზომვა მეორდება numMeasuresDistance (ნაგულისხმევი 3) ჯერ.
  • არსებობს ფუნქცია გამოთვალოთ speedOfSound ტემპერატურა, ტენიანობა და წნევის გაზომვა BME280 სენსორით. BME280– ის ნაგულისხმევი მისამართი არის 0x76, მაგრამ თუ ის არ მუშაობს, შეიძლება დაგჭირდეთ მისი შეცვლა 0x77– ზე: bool bme280Started = bme280.begin (0x77);
  • ჩვენ გამოვიყენებთ BME280 იძულებით რეჟიმში, რაც იმას ნიშნავს, რომ იგი იღებს ერთ გაზომვას და ძილს უბრუნდება ენერგიის დაზოგვის მიზნით.
  • თუ თქვენ დააყენებთ სიმძლავრეს (ლ), სრულ მანძილს (სმ) და ფართობს (მ 2), კოდი ითვლის წყლის ავზის დარჩენილ მოცულობას მანძილის გაზომვიდან: დარჩენილი ორმაგი მოცულობა = მოცულობა+10.0*(სრული მანძილი-მანძილი)*ფართობი; და ატვირთეთ ეს ThingSpeak– ში. თუ შეინარჩუნებთ ნაგულისხმევ მნიშვნელობებს, ის ატვირთავს წყლის ზედაპირზე მანძილს სმ -ში.

ნაბიჯი 6: ელექტრონული წრის შექმნა

ელექტრონული სქემის მშენებლობა
ელექტრონული სქემის მშენებლობა

ზემოთ არის ელექტრონული სქემის დიაგრამა. ის საკმაოდ დიდია ერთი პურის დაფისთვის, განსაკუთრებით დიდი ზომის ადაპტერის ფირფიტით და U- ფორმის მავთულხლართებით. რაღაც მომენტში მე ნამდვილად მსურდა გამომეყენებინა ალტერნატივა ორი პურის დაფის დასაკავშირებლად, მაგრამ საბოლოოდ მე შევძელი.

აქ მოცემულია მიკროსქემის მნიშვნელოვანი მახასიათებლები:

  • არსებობს ორი ძაბვა, რომლებიც თამაშობენ როლს: აკუმულატორის შეყვანის ძაბვა (დაახლოებით 3.75V) და 3.3V, რომელიც კვებავს ESP8266 და BME280. 3.3V მე დავდე მარცხენა სარკინიგზო მაგისტრალზე და 3.75V მარჯვენა რელსზე. ძაბვის მარეგულირებელი გარდაქმნის 3.75 ვ 3.3 ვ. ინსტრუქციის თანახმად, მონაცემთა ცხრილში, მე დავამატე 1 μF კონდენსატორი ძაბვის რეგულატორის შესასვლელსა და გამოსავალში, რათა გაიზარდოს სტაბილურობა.
  • ESP8266– ის GPIO15 უკავშირდება ტრანზისტორის კარიბჭეს. ეს საშუალებას აძლევს ESP8266- ს ჩართოს ტრანზისტორი და ამით ულტრაბგერითი სენსორი აქტიური იყოს და გამორთოს ღრმა ძილის დროს.
  • GPIO14 დაკავშირებულია გადამრთველთან, OTA გადამრთველთან. გადამრთველის დახურვა იძლევა სიგნალს ESP8266– ზე, რომლის დაწყება გვინდა შემდეგ OTA რეჟიმში, ანუ მას შემდეგ რაც ჩვენ დავაჭერთ (დახურავთ და ვხსნით) RESET გადამრთველს და ვატვირთავთ ახალ ესკიზს ჰაერში.
  • RST და GPIO2 ქინძისთავები დაკავშირებულია როგორც პროგრამირების დიაგრამაში. RST პინი ახლა ასევე დაკავშირებულია GPIO16– თან, რათა ESP8266 გამოფხიზლდეს ღრმა ძილიდან.
  • ულტრაბგერითი სენსორის ქინძისთავები უკავშირდება GPIO12 და GPIO13, ხოლო BME280- ის SCL და SDA ქინძისთავები GPIO5 და GPIO4.
  • დაბოლოს, ანალოგური პინი ADC არის ძაბვის გამყოფის საშუალებით, რომელიც დაკავშირებულია შეყვანის ძაბვასთან. ეს საშუალებას გაძლევთ გაზომოთ შეყვანის ძაბვა ბატარეების დატენვის შესამოწმებლად. ADC pin– ს შეუძლია გაზომოთ ძაბვები 0V– დან 1V– მდე. ძაბვის გამყოფისთვის ჩვენ შევარჩიეთ 100K და 470K რეზისტორები. ეს ნიშნავს, რომ ADC პინზე ძაბვა მოცემულია: V_ADC = 100K/(100K+470K) V_in. V_ADC = 1V მიღებისას ეს ნიშნავს, რომ ჩვენ შეგვიძლია გავზომოთ შეყვანის ძაბვები V_in = 570/100 V_ADC = 5.7V. რაც შეეხება ენერგომოხმარებას, ასევე არსებობს დენის გადინება ძაბვის გამყოფის მეშვეობით. V_in = 3.75V ბატარეებიდან ჩვენ ვპოულობთ I_leak = 3.75V/570K = 6.6 μA.

მაშინაც კი, როდესაც წრე მუშაობს ბატარეებიდან, შესაძლებელია USB- ის დაკავშირება სერიულ ადაპტერთან. უბრალოდ დარწმუნდით, რომ გამორთეთ ადაპტერის VCC და დააკავშირეთ GND, RX და TX როგორც პროგრამირების დიაგრამაში. ეს შესაძლებელს ხდის Arduino IDE– ში სერიული მონიტორის გახსნას გამართული შეტყობინებების წასაკითხად და დარწმუნდით, რომ ყველაფერი მუშაობს ისე, როგორც მოსალოდნელი იყო.

სრული მიკროსქემისთვის გავზომე მიმდინარე მოხმარება 50 μA ღრმა ძილში ბატარეებიდან მუშაობისას. ეს მოიცავს ESP8266, BME280, ულტრაბგერითი სენსორი (გამორთულია ტრანზისტორით) და ძაბვის გამყოფის გაჟონვა და შესაძლოა სხვა გაჟონვები. ასე რომ, ეს არც ისე ცუდია!

აღმოვაჩინე, რომ მთლიანი აქტიური დრო დაახლოებით 7 წამია, აქედან 4.25 წამი Wifi– ს დასაკავშირებლად და 1.25 წამი მონაცემების ThingSpeak– ში გასაგზავნად. ასე რომ, აქტიური დენით 80mA მე ვიპოვე 160 μAh საათში აქტიური დროისათვის. ღრმა ძილის მდგომარეობისათვის საათში 50 μAh დამატება გვაქვს ჯამში 210 μAh საათში. ეს ნიშნავს, რომ 2600 mAh ბატარეა თეორიულად ძლებს 12400 საათს = 515 დღეს. ეს არის აბსოლუტური მაქსიმუმი, თუ ჩვენ შეგვიძლია გამოვიყენოთ ბატარეების სრული სიმძლავრე (რაც ასე არ არის) და არ არსებობს გაჟონვა, რომელიც მე ვერ ვიპოვე ჩემს ახლანდელ გაზომვებში. ასე რომ, მე ჯერ არ მინახავს, ნამდვილად გამოდის თუ არა ეს.

ნაბიჯი 7: სენსორის დასრულება

სენსორის დასრულება
სენსორის დასრულება
სენსორის დასრულება
სენსორის დასრულება
სენსორის დასრულება
სენსორის დასრულება

სენსორი ჩავდე პლასტმასის 1 ლიტრიან კონტეინერში, რომელიც ადრე წვნიანს შეიცავდა. ბოლოში გავაკეთე ორი ხვრელი, რათა მოერგო HC-SR04-P სენსორის "თვალებს". ხვრელების გარდა კონტეინერი უნდა იყოს წყალგაუმტარი. შემდეგ იგი მიმაგრებულია წყლის ავზის კედელზე წრიული რგოლით, რომელიც ჩვეულებრივ გამოიყენება წვიმის წყლის გადინების მილისთვის.

გაერთეთ პროექტით!

გირჩევთ: