Სარჩევი:

უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრე: 5 ნაბიჯი
უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრე: 5 ნაბიჯი

ვიდეო: უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრე: 5 ნაბიჯი

ვიდეო: უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრე: 5 ნაბიჯი
ვიდეო: CS50 2015 - Week 8, continued 2024, ნოემბერი
Anonim
უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრის
უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრის
უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრის
უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრის
უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრის
უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრის
უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრის
უკაბელო კარის სენსორი - ულტრა დაბალი სიმძლავრის

კიდევ ერთი კარის სენსორი !! ამ სენსორის შექმნის მოტივაცია იყო ის, რომ ბევრს, რაც ვნახე ინტერნეტში, ჰქონდა ერთი შეზღუდვა. სენსორის ზოგიერთი მიზანი ჩემთვის არის:

1. სენსორი უნდა იყოს ძალიან სწრაფი - სასურველია 5 წამზე ნაკლები

2. სენსორი უნდა ამოიწუროს 3.7V Li-ion ბატარეით, რადგან მე ათეულობით მათგანი დევს გარშემო

3. სენსორი უნდა მუშაობდეს მრავალი თვის განმავლობაში ბატარეის ერთი დატენვით. მან უნდა მოიხმაროს <10uA ძილის რეჟიმში

4. სენსორს უნდა შეეძლოს გაღვიძება კრიტიკული მონაცემების გადაცემისათვის, როგორიცაა ბატარეის მდგომარეობა, მაშინაც კი, როდესაც კარი დიდი ხანია არ მუშაობს.

5. სენსორმა უნდა გადასცეს მონაცემები MQTT თემაზე, როგორც კარის გაღებისას, ასევე კარის დახურვისას

6. სენსორმა უნდა მოიხმაროს იგივე ენერგია კარის მდგომარეობის მიუხედავად

სენსორის მუშაობა:

სენსორს აქვს 2 ძირითადი კონტროლერი. პირველი არის პატარა მიკრო კონტროლერი ATiny 13A. მეორე არის ESP, რომელიც ჩვეულებრივ ძილის რეჟიმშია და იღვიძებს მხოლოდ მაშინ, როდესაც ATiny საშუალებას აძლევს მას. მთელი წრე ასევე შეიძლება გაკეთდეს მხოლოდ ESP– ის მიერ ძილის რეჟიმში გამოყენებისას, მაგრამ მისი მოხმარება გაცილებით მეტია ვიდრე საჭიროა ბატარეა თვეების განმავლობაში, ასე რომ ATTiny მოვა სამაშველოში. ის ემსახურება მხოლოდ გაღვიძებას ყოველ N წამში, ეძებს კარის მოვლენას ან ჯანმრთელობის შემოწმების მოვლენას, თუ არის, ის ინახავს ESP– ის CH_PD პინს მაღალზე და აგზავნის ღონისძიების ტიპის შესაბამის სიგნალს ESP– ში რა მისი როლი აქ მთავრდება.

ESP შემდეგ იღებს, კითხულობს სიგნალის ტიპს, უკავშირდება WiFi/MQTT- ს, აქვეყნებს საჭირო შეტყობინებებს ბატარეის დონის ჩათვლით და შემდეგ გამორთულია EN PIN- ის დაბალ დონეზე დაბრუნებით.

ამ ჩიპების ამ გზით გამოყენებისას მე ვისარგებლებ ATtiny– ს დაბალი ძილის დენით და ESP– ს ნულოვანი უმოქმედო დენით, როდესაც ჩიპი გამორთულია CH_PD პინის საშუალებით.

მარაგები

წინასწარი მოთხოვნა:

- ATTiny & ESP 01 პროგრამირების ცოდნა

- PCB- ზე შედუღების კომპონენტების ცოდნა

ESP-01 (ან ნებისმიერი ESP)

ATTiny 13A - AVR

LDO 7333 -A - დაბალი ვარდნის ძაბვის რეგულატორი

რეზისტორები - 1K, 10K, 3K3

კონდენსატორები: 100uF, 0.1 uF

ღილაკზე გადამრთველი, მიკრო ჩართვა/გამორთვა - (ორივე სურვილისამებრ)

დიოდი - IN4148 (ან ნებისმიერი ექვივალენტი)

Li-ion ბატარეა

რიდის გადამრთველი

საქმე ამ ყველაფრის განსახლებაში

Solder, PCB და ა

ნაბიჯი 1: სქემა და წყაროს კოდი

სქემა და კოდის კოდი
სქემა და კოდის კოდი

სქემები ნაჩვენებია დიაგრამაში.

მე ჩავრთე P Channel MOSFET საპირისპირო პოლარობის დაცვის მიზნით. თუ ეს არ გჭირდებათ, შეგიძლიათ გამოტოვოთ. ნებისმიერი P არხის MOSFET დაბალი Rds ჩართული გააკეთებს.

ამჟამად ESP– ს არ აქვს OTA– ს შესაძლებლობა, მაგრამ ეს არის მომავალი გაუმჯობესებისთვის.

წყაროს კოდი smart-door-sensor

ნაბიჯი 2: წრის მუშაობა

ATTiny სამუშაო ნაკადი

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

ნორმალური ვარიანტი იქნება გადამრთველზე გამაგრების რეზისტორის მიმაგრება და მისი მდგომარეობის მონიტორინგის გაგრძელება. ამას აქვს მუდმივი დენის უარყოფითი მხარე, რომელსაც მოიხმარს გამწევი რეზისტორი. ამის თავიდან აცილების გზა არის ის, რომ მე ორი პინი გამოვიყენე გადართვის მონიტორინგისთვის და არა ერთი. მე აქ გამოვიყენე PB3 და PB4. PB3 განისაზღვრება როგორც შეყვანა და PB4 როგორც გამომავალი შიდა INPUT_PULLUP PB3– ზე. ჩვეულებრივ PB4 ტარდება მაღალი, როდესაც ATtiny არის ძილის რეჟიმში. ეს უზრუნველყოფს არ არის მიმდინარე ნაკადის მეშვეობით შეყვანის გაიყვანოს up resistor მიუხედავად პოზიცია reed შეცვლა. ანუ თუ გადამრთველი დაკეტილია, ორივე PB3 და PB4 მაღალია და, შესაბამისად, მათ შორის დენი არ მიედინება. თუ გადამრთველი ღიაა, მაშინ მათ შორის გზა არ არის და დენი ნულის ტოლია. როდესაც ATtiny იღვიძებს ის წერს LOW- ს PB4- ზე და შემდეგ ამოწმებს PB3- ის მდგომარეობას. თუ PB3 არის მაღალი მაშინ ლერწმის გადამრთველი ღიაა სხვაგან ის დახურულია. შემდეგ ის წერს უკან PB4- ზე.

ATtiny & ESP შორის კავშირი ხდება ორი PIN PB1 / PB2 კავშირის საშუალებით, რომლებიც დაკავშირებულია ESP– ის Tx / RX– თან. მე განვსაზღვრე სიგნალი, როგორც

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (ჯანმრთელობის შემოწმება)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_CLOSED

1 1 ====== გამოუყენებელი

ESP– ს სიგნალის გაგზავნის გარდა, ის ასევე აგზავნის HIGH Pulse– ს PB0– ზე, რომელიც დაკავშირებულია ESP CH_PD პინთან. ეს იღვიძებს ESP. პირველი რაც ESP აკეთებს მას GPIO0 HIGH- ს, რომელიც დაკავშირებულია CH_PD- თან, უზრუნველყოფს მის ძალაუფლებას მაშინაც კი, თუ ATTiny წაართმევს PB0 HIGH- ს. კონტროლი ახლა ESP– სთან არის, რათა დადგინდეს როდის სურს გამორთვა.

შემდეგ ის უერთდება WiFi- ს, MQTT- ს, აქვეყნებს შეტყობინებას და თავს იკლებს GPIO0- ზე LOW ჩაწერით.

ESP 01 სამუშაო ნაკადი:

ESP ნაკადი პირდაპირ წინ მიდის. ის იღვიძებს და კითხულობს Tx/Rx ქინძისთავების მნიშვნელობებს, რათა დადგინდეს რა ტიპის შეტყობინება უნდა გამოქვეყნდეს. აკავშირებს WiFi- სა და MQTT- ს, აქვეყნებს შეტყობინებას და თავისთავად იკლებს.

გამორთვამდე ის კვლავ ამოწმებს შეყვანის ქინძისთავების მნიშვნელობებს, რომ შეიცვალოს ისინი ბოლო წაკითხვის შემდეგ. ეს არის ზრუნვა კარის სწრაფ გახსნაზე და დახურვაზე. თუ ეს შემოწმება არ გაქვთ, ზოგიერთ შემთხვევაში შეიძლება გამოტოვოთ კარის დახურვა, თუ ის დახურულია გახსნიდან 5-6 წამში. კარის გახსნისა და დახურვის პრაქტიკული სცენარი დაახლოებით 2 წამის განმავლობაში კარგად არის ასახული while მარყუჟით, რომელიც აქვეყნებს შეტყობინებებს მანამ, სანამ კარის ამჟამინდელი მდგომარეობა წინაგან განსხვავდება. ერთადერთი სცენარი, რომელიც შეიძლება გამოტოვდეს ყველა ღია/დახურული მოვლენის ჩაწერა არის, როდესაც კარი არაერთხელ იხსნება/იკეტება 4-5 წმ ფანჯარაში, რაც ძალზედ ნაკლებად სავარაუდო შემთხვევაა - ალბათ არის შემთხვევა, როდესაც რომელიმე ბავშვი თამაშობს კარებით.

ნაბიჯი 3: ჯანმრთელობის შემოწმება

მე ასევე მჭირდებოდა ESP– დან ჯანმრთელობის შემოწმების შეტყობინების გაგზავნა, სადაც ის აგზავნის ESP– ს ბატარეის დონეს, ასევე იმის უზრუნველსაყოფად, რომ სენსორი კარგად მუშაობს ხელით შემოწმების გარეშე. ამისათვის ATTiny აგზავნის WAKE_UP სიგნალს ყოველ 12 საათში. მისი კონფიგურაცია შესაძლებელია ცვლადი WAKEUP_COUNT- ის მეშვეობით ATtiny კოდში. ეს ძალიან სასარგებლოა კარების ან ფანჯრებისთვის, რომლებიც იშვიათად იხსნება და ასე რომ თქვენ შეიძლება არ იცოდეთ, თუ რამე სჭირს სენსორთან ან მის ბატარეასთან.

თუ თქვენ არ გჭირდებათ ჯანმრთელობის შემოწმების ფუნქციონირება, მაშინ ATTiny– ის გამოყენების მთელი კონცეფცია არ არის საჭირო. ამ შემთხვევაში თქვენ შეგიძლიათ ნახოთ ადამიანების მიერ შექმნილი სხვა დიზაინები, სადაც ESP– ის მიწოდება იკვებება MOSFET– ით და ასე რომ თქვენ შეგიძლიათ მიაღწიოთ ნულოვან დენს, როდესაც კარი არ მუშაობს. არსებობს სხვა საკითხებიც, როგორიც არის მიმდინარე გათამაშება იგივე იყოს კარების ღია და დახურულ პოზიციებში - ამისთვის მე სადღაც ვნახე დიზაინი, რომელიც ჩვეულებრივ 2 მდგომარეობის ნაცვლად იყენებდა 3 მდგომარეობის ლერწმის გადამრთველს.

ნაბიჯი 4: სიმძლავრის გაზომვები და ბატარეის ხანგრძლივობა

მე გავზომე მიკროსქემის მიმდინარე მოხმარება და მას u 30uA სჭირდება ძილის დროს და გარშემო. ATTiny– ის მონაცემთა ცხრილის მიხედვით, ის უნდა იყოს დაახლოებით 1-4 uA მთელი წრისთვის, LDO– ს წყნარი დენის ჩათვლით, მაგრამ შემდეგ ჩემი გაზომვები აჩვენებს 30 – ს. MOSFET და LDO მოიხმარს უმნიშვნელო დენს.

ასე რომ, 800 mAH ბატარეა უნდა გაგრძელდეს დიდი ხნის განმავლობაში. მე არ მაქვს ზუსტი სტატისტიკა, მაგრამ მე ვიყენებ მას ჩემს 2 კარზე ერთ წელზე მეტია და თითოეული 18650 უჯრედი დაახლოებით 800 mAH მათში დარჩა დაახლოებით 5-6 თვის განმავლობაში ჩემს მთავარ კარზე, რომელიც იხსნება და იხურება მინიმუმ 30 -ჯერ დღეში. ის სახურავის კარზე, რომელიც კვირაში მხოლოდ რამდენჯერმე იხსნება, ის გრძელდება 7-8 თვე.

ნაბიჯი 5: მომავალი გაუმჯობესება

1. ESP არ აღიარებს MQTT შეტყობინების მიწოდებას. პროგრამის გაუმჯობესება შესაძლებელია იმ თემის ხელმოწერით, სადაც ის აქვეყნებს შეტყობინებას მიწოდების დასადასტურებლად, ან Async MQTT ბიბლიოთეკა შეიძლება გამოყენებულ იქნას QoS 1 შეტყობინებით.

2. OTA განახლება: ESP კოდი შეიძლება შეიცვალოს MQTT თემის წასაკითხად განახლებისთვის და ასე რომ შევიდეს OTA რეჟიმში ფაილის მისაღებად.

3. ESP01 შეიძლება შეიცვალოს ESP-12– ით, რათა მიიღოთ მეტი შეყვანის PIN- კოდი და, შესაბამისად, მას შეუძლია მიამაგროს მეტი სენსორი. ამ შემთხვევაში კომუნიკაცია 2 ბიტიანი მეთოდით შეუძლებელია. ამის შემდეგ შეიძლება გაუმჯობესდეს ATtiny & ESP შორის I2C კომუნიკაციის განსახორციელებლად. ეს არის ცოტა რთული, მაგრამ სამუშაო. მე მას ვმუშაობ სხვა კომპლექტში, სადაც ATTiny აგზავნის მბრუნავი კოდირების მნიშვნელობებს ESP- ზე I2C ხაზზე.

4. მიმდინარე წრე მონიტორინგს უწევს ESP– ის შიდა Vcc– ს, თუ ჩვენ ვიყენებთ ESP12– ს, მაშინ ეს შეიძლება შეიცვალოს, რათა წაიკითხოთ ბატარეის რეალური დონე ADC pin– ის საშუალებით.

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

6. და სია გრძელდება…

7. უკანა ბატარეის დაცვა - შესრულებულია (მოწყობილობის რეალური სურათები ძველია და არ ასახავს MOSFET- ს)

გირჩევთ: