Სარჩევი:

რეალურ დროში მოვლენების შეტყობინებები NodeMCU (Arduino), Google Firebase და Laravel გამოყენებით: 4 ნაბიჯი (სურათებით)
რეალურ დროში მოვლენების შეტყობინებები NodeMCU (Arduino), Google Firebase და Laravel გამოყენებით: 4 ნაბიჯი (სურათებით)

ვიდეო: რეალურ დროში მოვლენების შეტყობინებები NodeMCU (Arduino), Google Firebase და Laravel გამოყენებით: 4 ნაბიჯი (სურათებით)

ვიდეო: რეალურ დროში მოვლენების შეტყობინებები NodeMCU (Arduino), Google Firebase და Laravel გამოყენებით: 4 ნაბიჯი (სურათებით)
ვიდეო: ეკჰარტ ტოლე - "აწმყოს ძალა" - აუდიო წიგნი - Audible Read Along 2024, ნოემბერი
Anonim
Image
Image
რეალურ დროში მოვლენების შეტყობინებები NodeMCU (Arduino), Google Firebase და Laravel გამოყენებით
რეალურ დროში მოვლენების შეტყობინებები NodeMCU (Arduino), Google Firebase და Laravel გამოყენებით

ოდესმე გსურდათ გაცნობოთ, როდესაც თქვენს ვებგვერდზე განხორციელდება ქმედება, მაგრამ ელ.ფოსტა არ არის შესაფერისი? გსურთ გაიგოთ ხმა ან ზარი ყოველ ჯერზე გაყიდვისას? ან საჭიროა თქვენი დაუყოვნებელი ყურადღება სახლში გადაუდებელი დახმარების გამო?

ამ მოწყობილობას შეუძლია რეალურ დროში გაგაფრთხილოთ ყველაფრის შესახებ, რაც მოგწონთ.

ნაბიჯი 1: ჩართეთ წრე

ჩართეთ წრე
ჩართეთ წრე
ჩართეთ წრე
ჩართეთ წრე

მოწყობილობა, რომელიც მე ავაშენე, შედგება NodeMCU დაფისგან, რომელზეც გამაფრთხილებელია, რომ გამაფრთხილოს ვებგვერდზე განხორციელებული გაყიდვების შესახებ. მიკროკონტროლი დაპროგრამებულია Arduino პროგრამული უზრუნველყოფის გამოყენებით და გამომწვევი ნაწილი შეიძლება იყოს ნებისმიერი ვებ, iOS ან Android პროგრამა. მე შევქმენი ორი მარტივი ვებ პროგრამა, ერთი ლარაველში და მეორე უბრალო HTML და JavaScript მაგალითისთვის.

ვინაიდან NodeMCU დაფას შეუძლია უსაფრთხოდ იმუშაოს ქინძისთავებზე დაახლოებით 12 mA დენამდე, ზუზერი უკავშირდება NPN ტრანზისტორს. მე გამოვიყენე 2N2222, რადგან ბევრი მათგანი მყავს გარშემო, მაგრამ დარწმუნებული ვარ, რომ პრინციპი იგივე იქნება ნებისმიერ სხვა NPN ტრანზისტორთან.

მიკროსქემის დასაკავშირებლად, დააკავშირეთ ტრანზისტორის კოლექტორი Vin pin- ზე დაფაზე. ზუზერი მუშაობს 5 ვ -ზე და რადგან ჩვენ ვამუშავებთ მოწყობილობას USB- დან, ეს პინი გვაძლევს ძაბვას 3.3V რეგულატორის წინ დაფაზე.

შემდეგ დააკავშირეთ ზუზერის პოზიტიური მხარე ტრანზისტორის ემიტერზე, ხოლო ზუმერის უარყოფითი ბინტი დაფის რომელიმე დაფაზე. მე გამოვიყენე პინ 2, მაგრამ თქვენ ასევე შეგიძლიათ დააკავშიროთ იგი 9, 25 ან 29 ქინძისთავებთან.

ტრანზისტორის ბაზა უკავშირდება pin D2- ს, რომელიც შეესაბამება GPIO 4 -ს Arduino პროგრამულ უზრუნველყოფაზე. ამ დაყენებით, ტრანზისტორი ეფექტურად იფუნქციონირებს, როგორც გადამრთველი, რომელიც ჩართავს ზუმერს თითოეულ მოვლენაზე. ზუზერის ნაცვლად თქვენ შეგიძლიათ დააკავშიროთ რელე ერთნაირად, რათა შეძლოთ ნებისმიერი ელექტრო მოწყობილობის მართვა, როგორიცაა ნათურები, მანქანები ან სირენა, თუ აკეთებთ სიგნალიზაციის მოწყობილობას.

ნაბიჯი 2: მოამზადეთ ვებ პროგრამები

მოამზადეთ ვებ პროგრამები
მოამზადეთ ვებ პროგრამები
მოამზადეთ ვებ პროგრამები
მოამზადეთ ვებ პროგრამები
მოამზადეთ ვებ პროგრამები
მოამზადეთ ვებ პროგრამები

მოწყობილობის გამომწვევი და რეალურ დროში ნაწილისთვის ჩვენ გამოვიყენებთ Google- ის Firebase Realtime მონაცემთა ბაზას. ეს არის მშვენიერი NoSQL ღრუბლოვანი მონაცემთა ბაზა, რომელიც შექმნილია Google– ის მიერ და უზრუნველყოფს რეალურ დროში მონაცემთა სინქრონიზაციას მის მიერ გამოყენებულ თითოეულ პლატფორმას შორის.

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

Laravel პროგრამა იყენებს "firebase-php" პაკეტს კრეატიდან და ის ქვემოთ არის დაკავშირებული. დააინსტალირეთ პაკეტი "კომპოზიტორი მოითხოვს kreait/firebase-php" გაშვებით. ინსტალაციის დასრულების შემდეგ, ჩვენ უნდა შევქმნათ კონტროლერი, სადაც მოქმედება მოხდება. მე მეთოდს დავარქვი „განახლება“და დავაკავშირე ის მარშრუტებში POST მოქმედებაზე.

Firebase ინსტანციის მოსაპოვებლად გჭირდებათ json ფაილი, რომელიც უნდა ჩამოტვირთოთ თქვენი Firebase კონსოლიდან. განათავსეთ ეს ფაილი თქვენი Laravel პროექტის ძირში და დაასახელეთ firebase.json. Firebase ინსტანციის მოძიებისას, ჩვენ უნდა მივაწოდოთ გზა ამ ფაილს withCredentials მეთოდით.

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

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

გარდა ამისა, იმის ნაცვლად, რომ წარვადგინოთ ფორმა, როგორც Laravel– ის მაგალითში, ჩვენ ახლა გვაქვს JavaScript ფუნქცია, რომელიც იძახება ღილაკზე დაჭერით, განაახლებს რიცხვს და წერს განახლებულ მნიშვნელობას მონაცემთა ბაზაში.

ნაბიჯი 3: პროგრამირება NodeMCU ფორუმში

პროგრამირება NodeMCU Board
პროგრამირება NodeMCU Board
პროგრამირება NodeMCU Board
პროგრამირება NodeMCU Board
პროგრამირება NodeMCU Board
პროგრამირება NodeMCU Board

NodeMCU- ის დასაპროგრამებლად, მე გამოვიყენე Arduino პროგრამული უზრუნველყოფა და მას შემდეგ, რაც მასზე დაფა დავაინსტალირე, დარწმუნებული ვარ, რომ ავირჩიე შესაბამისი ვერსია და პორტი, რათა შევძლო პროგრამული უზრუნველყოფის ატვირთვა. ჩემი არის 1.0 ვერსია, ასე რომ გააგრძელეთ თქვენი დაფის გაგრძელებამდე.

Arduino კოდის პირველი ნაწილი ადგენს ყველა აუცილებელ განსაზღვრებას, რომლის შესწორებაც დაგჭირდებათ თქვენს მოწყობილობაზე. პირველი ასეთი პარამეტრი არის ssid WiFi და მისი პაროლი, შემდეგ ჩვენ უნდა დავაყენოთ firebase url და firebase db საიდუმლო. სამწუხაროდ, ეს არ არის მონაცემთა ბაზასთან დაკავშირების რეკომენდებული გზა, მაგრამ ჯერჯერობით ეს არის ბიბლიოთეკის ერთადერთი მხარდაჭერა. თქვენ შეგიძლიათ იპოვოთ ეს საიდუმლო პროექტის პარამეტრების, მომსახურების ანგარიშების მენიუში firebase კონსოლში.

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

დაყენების ფუნქცია განსაზღვრავს ჩაშენებულ led pin და D2 ქინძისთავებს, როგორც შედეგებს, დაიწყეთ სერიული კომუნიკაცია იმის გასაგებად, თუ რა ხდება და უკავშირდება მითითებულ WiFi ქსელს. კავშირის დამყარებისთანავე ის იწყებს კომუნიკაციას Firebase– თან და იღებს ბოლო მნიშვნელობას, რისთვისაც ჩვენ შევატყობინეთ. შემდეგ ის იწყებს ცვლილებების მოსმენას მითითებულ გზაზე.

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

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

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

ნაბიჯი 4: ისიამოვნეთ თქვენი მოწყობილობით

ისიამოვნეთ თქვენი მოწყობილობით!
ისიამოვნეთ თქვენი მოწყობილობით!

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

Საწყისი კოდი

სქემატური

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

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

თუ მოგეწონათ პროექტი, გთხოვთ გამოიწეროთ ჩემი YouTube არხი:

გასინჯე კოდი

გირჩევთ: