Სარჩევი:
- ნაბიჯი 1: წადი საყიდლებზე
- ნაბიჯი 2: დაყენება და ფონი
- ნაბიჯი 3: Arduino - ESP12 ნაწილი
- ნაბიჯი 4: ტესტირება ESP როგორც ქსელის დროის პროტოკოლის (NTP) კლიენტი
- ნაბიჯი 5: DHT22 სენსორის ტესტირება
- ნაბიჯი 6: გააერთიანეთ…
- ნაბიჯი 7: საგნების სერვერის მხარე
ვიდეო: სახლის ქსელის ტემპერატურის სენსორი: 7 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
რა უნდა იცოდეთ ამ პროექტის შესაქმნელად:
თქვენ უნდა იცოდეთ:- ელექტრონიკის ზოგიერთი უნარი (შედუღება)
- Linux
- Arduino IDE
(თქვენ დაგჭირდებათ IDE– ში დამატებითი დაფების განახლება:
- ESP დაფის განახლება/დაპროგრამება Arduino IDE– ს საშუალებით.
(არსებობს რამდენიმე კარგი გაკვეთილი ინტერნეტში)
ეს შეიძლება გაკეთდეს Arduino Uno– ს გამოყენებით ან FTDI– ით (usb სერიული ადაპტერით).
მე გამოვიყენე ჩემი Uno, რადგან მე არ მქონდა სერიული პორტი ჩემს კომპიუტერზე და არც მქონდა FTDI
ნაბიჯი 1: წადი საყიდლებზე
რა დაგჭირდებათ რომ ეს მოხდეს?
ციფრული ტემპერატურისა და ტენიანობის სენსორისთვის:
- ან პურის დაფა, ან ალტერნატივა, როგორიცაა pcb პროტოტიპი, შედუღება, გასაყიდი რკინა…
- რაღაც მავთული
- ორი მხტუნავი
- 10k Ohm რეზისტორი
- ESP12F (შესაძლოა სხვა მოდელებმაც იმუშაონ …)
- DHT22 (ცოტა უფრო ძვირი ვიდრე DHT11, მაგრამ უფრო ზუსტი)
- 3 AA დატენვის ბატარეა და ბატარეის დამჭერი
- პატარა პლასტიკური ყუთი თქვენი პროექტის ჩასადებად
- მოგვიანებით ეტაპზე ვგეგმავ დამატებას HT7333 ორი 10uF კონდენსატორებით ბატარეის პაკეტსა და ESP- ს შორის
შემომავალი ძაბვის (VCC) სტაბილიზაციისათვის რეკომენდებულ 3.3V– მდე, არამედ ESP– ის დაძაბულობისგან დასაცავად.
ქსელის ნაწილისთვის:
- თქვენი სახლის WiFi ქსელი
სერვერის ნაწილისთვის:
- Linux– ზე დაფუძნებული ნებისმიერი სისტემა (ყოველთვის ჩართულია!)
მე გამოვიყენე Raspberry Pi (რომელსაც ასევე ვიყენებ როგორც სერვერი ჩემი გარე IP კამერებისათვის.)
- gcc შემდგენელი თქვენი სერვერის კოდის შესადგენად
- rrdtool პაკეტი მონაცემების შესანახად და გრაფიკების შესაქმნელად
- apache (ან სხვა ვებ სერვერი)
თქვენი საყვარელი კომპიუტერი ან ლეპტოპი Arduino IDE მასზე.
ნაბიჯი 2: დაყენება და ფონი
WiFi- ის ამ ვერსიაში, რომელიც დაკავშირებულია - რომ აღარაფერი ვთქვათ IOT - ტემპერატურისა და ტენიანობის სენსორზე, გამოვიყენე ESP12F, DHT22 და 3 AA ბატარეის დამჭერი დატენვის ბატარეებით.
ყოველ 20 წუთში ESP იღებს გაზომვას DHT22– დან და აგზავნის მას სერვერზე (Raspberry Pi) UDP– ით ჩემი სახლის WiFi ქსელში. გაზომვების გაგზავნის შემდეგ, ESP მიდის ღრმა ძილში. ეს ნიშნავს, რომ მოდულის მხოლოდ რეალურ დროში რჩება ძალა, რის შედეგადაც წარმოუდგენლად დაზოგავს ენერგიას. დაახლოებით 5 წამის განმავლობაში, მოდული მოითხოვს დაახლოებით 100mA- ს, შემდეგ 20 წუთის განმავლობაში ღრმა ძილს მხოლოდ 150uA.
მე არ მსურს გამოვიყენო ინტერნეტით დაფუძნებული სერვისი, რადგან მე მაქვს ჩემი Raspberry Pi, რომელიც ყოველთვის ჩართულია და ამ გზით მე მქონდა სიამოვნება სერვერის ნაწილის დაწერაც.
სერვერზე (Raspberry– ის გაშვებული Raspberry Pi) მე დავწერე მარტივი UDP მსმენელი (სერვერი), რომელიც ინახავს ღირებულებებს უბრალო RRD– ში. (მრგვალი რობინის მონაცემთა ბაზა ტობიას ოტიკერის RRDtool– ის გამოყენებით.)
RRDtool– ის უპირატესობა ის არის, რომ თქვენ შექმნით თქვენს მონაცემთა ბაზას ერთხელ და ზომა იგივე რჩება. სხვაგვარად, თქვენ არ გჭირდებათ მონაცემთა ბაზის სერვერი (როგორიცაა mySQLd), რომელიც მუშაობს ფონზე. RRDtool გაძლევთ ინსტრუმენტებს მონაცემთა ბაზის შესაქმნელად და გრაფიკების შესაქმნელად.
ჩემი სერვერი პერიოდულად ქმნის გრაფიკებს და აჩვენებს ყველაფერს ძალიან მარტივ http გვერდზე. შემიძლია კონსულტაციები გავუწიო მარტივ ბრაუზერს Apache2 ვებ სერვერთან Raspberry Pi– სთან დაკავშირებით!
დაბოლოს, მე არ მქონდა FTDI (USB to Serial), ამიტომ გამოვიყენე ჩემი Arduino UNO. თქვენ უნდა დააკავშიროთ TX და RX და GND ESP და UNO. (ვიცი, თქვენმა ინსტინქტმა შეიძლება გითხრათ, რომ გადაკვეთოთ RX და TX … ესეც სცადე, არ მუშაობს.)
მე არ გავაკეთე დონის კონვერტაცია (UNO: მაღალი = 5V, მაგრამ ESP ძირითადად 3.3V მოწყობილობაა … ბაზარზე არის რამდენიმე ლამაზი FTDI, სადაც შეგიძლიათ აირჩიოთ თქვენი მაღალი დონე 5 ან 3.3V.
ჩემი წრე იკვებება 3 AA დატენვის ბატარეით - ასე რომ ფაქტობრივად 3 X 1.2V. შემდგომ ფაზაში ვაპირებ HT7333- ის დაყენებას ბატარეის პაკეტსა და მიკროსქემს შორის უსაფრთხოების მიზნით; ახლად დამუხტულ ბატარეებს შეიძლება ჰქონდეთ 1.2 ვ -ზე მეტი და ESP უნდა იკვებებოდეს მინ. 3V და მაქს. 3.6V ასევე, თუ მე გადავწყვეტ - სისუსტის მომენტში - ჩავსვი ტუტე ბატარეები (3 X 1.5V = 4.5V) ჩემი ESP არ იქნება შემწვარი!
მე ასევე განვიხილე 10 სმ x 10 სმ მზის პანელის გამოყენება, მაგრამ ეს არ ღირდა ამდენი პრობლემისთვის. საათში 3 გაზომვის გაკეთებით (ძირითადად 3x 5 წამი @ 100mA max. და დანარჩენი დრო @ 100uA), ვიმედოვნებ, რომ დავამუხტებ ჩემს წრეს 1 წლით იმავე დატენვის ბატარეებზე.
ნაბიჯი 3: Arduino - ESP12 ნაწილი
მე გავაკეთე ეს პროექტი სხვადასხვა ნაბიჯებით.
არსებობს რამოდენიმე ბმული, რომელიც დაგეხმარებათ ESP12 (aka. ESP8266) იმპორტირებაში Arduino IDE- ში. (მე უნდა გამოვიყენო ვერსია 2.3.0 უახლესი ვერსიის ნაცვლად, იმ ხარვეზის გამო, რომელიც შესაძლოა ამასობაში მოგვარებულიყო …)
დავიწყე ESP– ის მიერთებით, ჩემი Arduino UNO– ს საშუალებით (მხოლოდ როგორც ხიდი ჩემს კომპიუტერს შორის USB– დან სერიულამდე) ESP– ის სერიულ ინტერფეისზე. არსებობს ცალკეული ინსტრუქცია, რომელიც ხსნის ამას.
ჩემს დასრულებულ პროექტში დავტოვე მავთულები სერიალთან დასაკავშირებლად იმ შემთხვევაში, თუ ოდესმე დამჭირდება პრობლემის მოგვარება. RX
შემდეგ თქვენ უნდა დააკავშიროთ თქვენი ESP12 შემდეგნაირად:
ESP ქინძისთავები…
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
თავდაპირველად ვცდილობდი ენერგოეფექტურობის გაძლიერებას 3.3V– დან UNO– ზე, მაგრამ მე სწრაფად გადავედი ელექტროენერგიის მიწოდებით ESP– ით, მაგრამ თქვენ ასევე შეგიძლიათ გამოიყენოთ თქვენი ბატარეის პაკეტი.
GPIO0 ეს jumper– ით დავუკავშირე GND– ს, რათა შესაძლებელი გამხდარიყო (= პროგრამირება) ESP.
პირველი ტესტი: დატოვეთ ჯუმპერი ღია და დაიწყეთ სერიული მონიტორი Arduino IDE– ში (115200 baud!).
ენერგიის ციკლი ESP, თქვენ უნდა ნახოთ ნაგვის სიმბოლოები და შემდეგ შეტყობინება, როგორიცაა:
Ai-Thinker Technology Co. Ltd. მზად არის
ამ რეჟიმში, ESP ოდნავ მოძველებული მოდემის მსგავსია. თქვენ უნდა გამოიყენოთ AT ბრძანებები.
სცადეთ შემდეგი ბრძანებები:
AT+RST
და შემდეგი ორი ბრძანება
AT+CWMODE = 3
კარგი
AT+CWLAP
ეს უნდა მოგაწოდოთ ყველა WiFi ქსელის სია ამ მხარეში.
თუ ეს მუშაობს, თქვენ მზად ხართ შემდეგი ნაბიჯისათვის.
ნაბიჯი 4: ტესტირება ESP როგორც ქსელის დროის პროტოკოლის (NTP) კლიენტი
Arduino IDE– ში, ფაილი, მაგალითები, ESP8266WiFi, ჩატვირთეთ NTPClient.
უმნიშვნელო შესწორებებია საჭირო იმისათვის, რომ ის იმუშაოს; თქვენ უნდა შეიყვანოთ თქვენი SSID და თქვენი WiFi ქსელის პაროლი.
ახლა მოათავსეთ მხტუნავი, დააკლეთ GPIO0 GND– ს.
ჩართეთ ESP ციკლი და ატვირთეთ ესკიზი ESP– ში.
შედგენის შემდეგ, ESP– ზე ატვირთვა უნდა დაიწყოს. ESP– ის ლურჯი LED სწრაფად აციმციმდება კოდის გადმოტვირთვისას.
მე შევამჩნიე, რომ ცოტათი უნდა ვითამაშო IDE– ს გადატვირთვით და ESP– ს გადატვირთვით, სანამ ატვირთვა იმუშავებდა.
სანამ დაიწყებთ ესკიზის შედგენას/ატვირთვას, დარწმუნდით, რომ დახურეთ სერიული კონსოლი (= სერიული მონიტორი), რადგან ეს ხელს შეუშლის თქვენ ატვირთვას.
მას შემდეგ რაც ატვირთვა წარმატებულია, შეგიძლიათ ხელახლა გახსნათ სერიული მონიტორი, რომ ნახოთ ESP ეფექტურად იღებს დროს ინტერნეტიდან.
მშვენიერია, თქვენ დაპროგრამებული გაქვთ თქვენი ESP, დაუკავშირდით თქვენს WiFi- ს და მიიღეთ დრო ინტერნეტიდან.
შემდეგი ნაბიჯი ჩვენ შევამოწმოთ DHT22.
ნაბიჯი 5: DHT22 სენსორის ტესტირება
ახლა დამატებითი გაყვანილობაა საჭირო.
DHT ქინძისთავები … შეაერთეთ სენსორის პინი 1 (მარცხნივ) VCC (3.3V)
დაკავშირება pin 2 ESP GPIO5 (DHTPIN ესკიზში)
შეაერთეთ სენსორის პინი 4 (მარჯვნივ) GROUND- თან
შეაერთეთ 10K რეზისტორი პინიდან 2 (მონაცემები) სენსორის პინ 1 (სიმძლავრე).
NTP ტესტის მსგავსად, იპოვეთ DHTtester ესკიზი და შეცვალეთ იგი შემდეგი გზით:
#განსაზღვრეთ DHTPIN 5 // ჩვენ შევარჩიეთ GPIO5 სენსორთან დასაკავშირებლად#განსაზღვრეთ DHTTYPE DHT22 // რადგან ჩვენ ვიყენებთ DHT22 მაგრამ ეს კოდი/ბიბლიოთეკა ასევე შეეფერება DHT11
ისევ დახურეთ სერიული მონიტორი, ჩართეთ ESP ციკლი და შეადგინეთ და აანთეთ ESP.
თუ ყველაფერი კარგად არის, თქვენ უნდა ნახოთ გაზომვები სერიულ მონიტორზე.
სენსორთან ერთად შეგიძლიათ ცოტათი ითამაშოთ. თუ მას სუნთქავთ, დაინახავთ, რომ ტენიანობა იზრდება.
თუ თქვენ გაქვთ (არა LED) სამაგიდო ნათურა, შეგიძლიათ აანთოთ სენსორი, რომ ოდნავ გაათბოთ.
დიდი! სენსორის ორი დიდი ნაწილი მუშაობს.
შემდეგ ეტაპზე მე გავაკეთებ კომენტარს საბოლოო კოდზე.
ნაბიჯი 6: გააერთიანეთ…
ისევ დამატებითი გაყვანილობა… ეს არის იმისთვის, რომ შესაძლებელი გახდეს ღრმა ძილი.
გახსოვდეთ, DeepSleep არის წარმოუდგენელი ფუნქცია IoT მოწყობილობებისთვის.
თუმცა, თუ თქვენი სენსორი მყარად არის დაკავშირებული DeepSleep– ისთვის, შეიძლება რთული იყოს ESP– ის გადაპროგრამება, ასე რომ ჩვენ ვაპირებთ სხვა ჯუმბერ კავშირს შორის
GPIO16-RST.
დიახ, ეს უნდა იყოს GPIO16, რადგან ეს არის GPIO, რომელიც აღჭურვილია მოწყობილობის გაღვიძებისთვის, როდესაც DeepSleep– ის შემდეგ რეალური დროის საათი გამორთულია!
ტესტირებისას შეგიძლიათ გადაწყვიტოთ 15 წამიანი ღრმა ძილი.
როდესაც შეცდომების გამოსწორებას ვახერხებდი, ჯუმბერს გადავაყენებ GPIO0– ზე, რათა შემეძლოს ჩემი პროგრამის გაშუქება.
გადმოტვირთვის დასრულების შემდეგ, ჯუმბერს გადავაყენებ GPIO16- ზე, რომ DeepSleep- მა იმუშაოს.
ESP– ის კოდს ეწოდება TnHclient.c
თქვენ უნდა შეცვალოთ თქვენი SSID, პაროლი და თქვენი სერვერის IP მისამართი.
არსებობს კოდის დამატებითი ხაზები, რომელთა გამოყენებაც შეგიძლიათ თქვენი პრობლემის გამოსასწორებლად ან შესამოწმებლად.
ნაბიჯი 7: საგნების სერვერის მხარე
გავრცელებული გაუგებრობაა, რომ UDP არასანდოა და TCP არის…
ეს ისეთივე სულელურია, როგორც ჩაქუჩი უფრო მოსახერხებელია ვიდრე ხრახნიანი. ისინი უბრალოდ განსხვავებული ძალიან სასარგებლო ინსტრუმენტებია და ორივეს თავისი გამოყენება აქვს.
სხვათა შორის, UDP– ის გარეშე ინტერნეტი არ იმუშავებს … DNS დაფუძნებულია UDP– ზე.
ასე რომ, მე ავირჩიე UDP, რადგან ის არის ძალიან მსუბუქი, მარტივი და სწრაფი.
მე ვფიქრობ, რომ ჩემი WiFi არის ძალიან საიმედო, ამიტომ კლიენტი გამოგიგზავნით მაქსიმუმ 3 UDP პაკეტს, თუ აღიარებს "კარგი!" არ არის მიღებული.
TnHserver– ის C კოდი არის TnHServer.c ფაილში.
კოდში არის რამდენიმე კომენტარი, რომელიც ხსნის მას.
ჩვენ დაგვჭირდება სერვერზე დამატებითი ინსტრუმენტები: rrdtool, apache და შესაძლოა tcpdump.
Raspbian– ზე rrdtool– ის დასაყენებლად შეგიძლიათ უბრალოდ დააინსტალიროთ პაკეტი ასე: apt-get install rrdtool
თუ გჭირდებათ ქსელის ტრაფიკის გამართვა, tcpdump გამოგადგებათ apt-get install tcpdump
მე მჭირდება ვებ სერვერი, რომ შევძლო ბრაუზერის გამოყენება გრაფიკებთან კონსულტაციისთვის: apt-get install apache2
მე გამოვიყენე ეს ინსტრუმენტი: https://rrdwizard.appspot.com/index.php მრგვალი რობინის მონაცემთა ბაზის შექმნის ბრძანების მისაღებად. თქვენ უნდა გაუშვათ ეს მხოლოდ ერთხელ (თუ პირველად სწორად გააკეთეთ).
rrdtool შექმნა TnHdatabase.rrd-დაწყება ახლა -10s
-გადადგი ნაბიჯი '1200'
'DS: ტემპერატურა: GAUGE: 1200: -20.5: 45.5'
'DS: ტენიანობა: GAUGE: 1200: 0: 100.0'
'RRA: საშუალო: 0.5: 1: 720'
'RRA: საშუალო: 0.5: 3: 960'
'RRA: საშუალო: 0.5: 18: 1600'
დაბოლოს, მე ვიყენებ crontab ჩანაწერს, რათა გადატვირთო ჩემი TnHserver ყოველდღე შუაღამისას. მე ვაწარმოებ TnHserver– ს, როგორც ჩვეულებრივ მომხმარებელს (ანუ არა root), როგორც უსაფრთხოების ზომები.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
თქვენ შეგიძლიათ შეამოწმოთ, რომ TnHserver მუშაობს
$ ps -elf | grep TnHserver
და თქვენ შეგიძლიათ დაადასტუროთ, რომ ის უსმენს პაკეტებს 7777 პორტში, ამით
$ netstat -ანუ
აქტიური ინტერნეტ კავშირები (სერვერები და დამკვიდრებული)
Proto Recv-Q Send-Q ადგილობრივი მისამართი უცხოური მისამართი სახელმწიფო
udp 0 0 0.0.0.0:7777 0.0.0.0:*
საბოლოოდ CreateTnH_Graphs.sh.txt არის მაგალითი სკრიპტი გრაფიკების შესაქმნელად. (მე ვქმნი სკრიპტებს როგორც root, თქვენ შეიძლება არ გინდოდეს ამის გაკეთება.)
ძალიან მარტივი ვებგვერდის გამოყენებით თქვენ შეგიძლიათ ნახოთ გრაფიკები თქვენი სახლის ქსელის ნებისმიერი ბრაუზერიდან.
გირჩევთ:
სახლის ავტომატიზაცია NodeMCU Touch Sensor LDR ტემპერატურის კონტროლის სარელეო: 16 ნაბიჯი
სახლის ავტომატიზაცია NodeMCU Touch Sensor LDR ტემპერატურის კონტროლის რელეით: ჩემს წარსულ NodeMCU პროექტებში, მე ვაკონტროლებდი ორ საყოფაცხოვრებო ტექნიკას ბლინკის აპლიკაციიდან. მე მივიღე ბევრი კომენტარი და შეტყობინება პროექტის განახლებისათვის ხელით კონტროლით და დამატებითი ფუნქციების დამატებით. ასე რომ, მე შევიმუშავე ეს ჭკვიანი სახლის გაფართოების ყუთი. ამ IoT
ტემპერატურის კითხვა LM35 ტემპერატურის სენსორის გამოყენებით Arduino Uno– ით: 4 ნაბიჯი
ტემპერატურის კითხვა LM35 ტემპერატურის სენსორის გამოყენებით Arduino Uno– ით: გამარჯობა ბიჭებო ამ ინსტრუქციებში ჩვენ ვისწავლით თუ როგორ გამოიყენოთ LM35 არდუინოსთან ერთად. Lm35 არის ტემპერატურის სენსორი, რომელსაც შეუძლია წაიკითხოს ტემპერატურის მნიშვნელობები -55 ° C– დან 150 ° C– მდე. ეს არის 3 ტერმინალური მოწყობილობა, რომელიც უზრუნველყოფს ტემპერატურის პროპორციულ ანალოგიურ ძაბვას. მაღალი
ESP32 NTP ტემპერატურის ზონდის მომზადების თერმომეტრი Steinhart-Hart კორექციით და ტემპერატურის სიგნალიზაციით .: 7 ნაბიჯი (სურათებით)
ESP32 NTP ტემპერატურის ზონდის მომზადების თერმომეტრი Steinhart-Hart კორექციით და ტემპერატურის სიგნალიზაციით: ჯერ კიდევ მოგზაურობთ " მომავალი პროექტის ", ", " ESP32 NTP ტემპერატურის ზონდის მომზადების თერმომეტრის Steinhart-Hart კორექციით და ტემპერატურის სიგნალიზაციით " არის ინსტრუქცია, რომელიც გვიჩვენებს, თუ როგორ დავამატო NTP ტემპერატურის ზონდი, პიეზო ბ
გაუმართავი ტემპერატურის სენსორის ქსელის კონტროლერი: 8 ნაბიჯი
გაუმართავი ტემპერატურის სენსორის ქსელის კონტროლერი: ეს ინსტრუქცია გიჩვენებთ თუ როგორ გადააკეთოთ Arduino Uno დაფა ერთ დანიშნულების კონტროლერად DS18B20 ტემპერატურის სენსორების ნაკრებისთვის, რომელსაც შეუძლია გაუმართავი სენსორების ავტომატიზირებული იზოლაცია. კონტროლერს შეუძლია მართოს 8 სენსორი Arduino– ით უნო. (ა
IoT ქსელის კონტროლერი. ნაწილი 9: IoT, სახლის ავტომატიზაცია: 10 ნაბიჯი (სურათებით)
IoT ქსელის კონტროლერი. ნაწილი 9: IoT, სახლის ავტომატიზაცია: პასუხისმგებლობის უარყოფა წაიკითხეთ ეს პირველად ეს ინსტრუქციულად არის აღწერილი პროექტი, რომელიც იყენებს მაგისტრალურ ენერგიას (ამ შემთხვევაში, UK 240VAC RMS), მიუხედავად იმისა, რომ ყველა ზრუნვა იქნა მიღებული უსაფრთხო პრაქტიკის და კარგი დიზაინის პრინციპების გამოსაყენებლად, ყოველთვის არის პოტენციურად სასიკვდილო რისკი არჩევა