Სარჩევი:

ESP32 Smart Home Hub: 11 ნაბიჯი
ESP32 Smart Home Hub: 11 ნაბიჯი

ვიდეო: ESP32 Smart Home Hub: 11 ნაბიჯი

ვიდეო: ESP32 Smart Home Hub: 11 ნაბიჯი
ვიდეო: ESP32 HomeKit Tutorial | HomeSpan 2024, ივნისი
Anonim
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub

სისტემის შექმნას, რომელსაც შეუძლია დიდი რაოდენობის სენსორული მონაცემების დამუშავება, მრავალჯერადი გამოსავალი და ინტერნეტთან ან ადგილობრივ ქსელთან დაკავშირება მოითხოვს დიდ დროს და დიდ ძალისხმევას. ძალიან ხშირად, ადამიანებს, რომელთაც სურთ საკუთარი ჭკვიანი სახლის ქსელების შექმნა, იბრძვიან იმის გამო, რომ შეძლონ იპოვონ და შეიკრიბონ პერსონალური კომპონენტები უფრო დიდ სისტემაში. ამიტომაც მინდოდა შემექმნა მოდულური და ფუნქციებით მდიდარი პლატფორმა, რომელიც გაადვილებდა IoT– სთან დაკავშირებული სენსორებისა და შედეგების აგებას.

მადლობა DFRobot და PCBGOGO.com ამ პროექტის სპონსორობისთვის!

უფრო სიღრმისეული ინფორმაციისთვის ეწვიეთ Github– ის რეპოს:

მარაგები

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • DHT22 სენსორი

    www.dfrobot.com/product-1102.html

  • APDS9960 სინათლისა და ჟესტების სენსორი

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD მოდული

    www.dfrobot.com/product-590.html

  • ანალოგური RGB LED ზოლები

    www.dfrobot.com/product-1829.html

  • DRV8825 სტეპერიანი დრაივერები
  • SD ბარათის მკითხველი
  • NEMA17 სტეპერი მოტორსი

ნაბიჯი 1: მახასიათებლები

მახასიათებლები
მახასიათებლები
მახასიათებლები
მახასიათებლები
მახასიათებლები
მახასიათებლები

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

I2C ავტობუსი ასევე გატეხილია ისეთი კომპონენტებისთვის, როგორიცაა APDS9960 ან LCD. ტემპერატურის წასაკითხად არის გატეხილი ქინძისთავები DHT22 სენსორთან დასაკავშირებლად, ასევე ფოტორეზისტორი გარემოს განათების დონის წასაკითხად.

დაფაზე არის ანალოგური სინათლის ზოლის მხარდაჭერა, რომელსაც აქვს სამი MOSFET, LED განათების მართვის მიზნით.

ნაბიჯი 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

მე დავიწყე PCB დიზაინის პროცესი, პირველად შევქმენი სქემატური არწივი. ვინაიდან მე ვერ ვიპოვე ESP32 FireBeetle ბიბლიოთეკა, ამის ნაცვლად მხოლოდ ორი პინი 1x18 პინის სათაური გამოვიყენე. შემდეგ, მე შევქმენი ენერგიის მართვის წრე, რომელსაც შეეძლო 12 ვ -ის მიღება DC ლულის ჯეკის საშუალებით და გადააკეთებინა 5 ვ -ზე სენსორების და ESP32- ის გაძლიერებისათვის.

სქემის დასრულების შემდეგ, მე გადავედი PCB– ის დიზაინზე.

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

მიუხედავად იმისა, რომ Oshpark აწარმოებს შესანიშნავი ხარისხის PCB– ებს, მათი ფასები საკმაოდ მაღალია. საბედნიეროდ, PCBGOGO.com ასევე ქმნის დიდ PCB– ებს ხელმისაწვდომ ფასად. მე შევძელი ათი PCB- ის ყიდვა მხოლოდ 5 დოლარად, ვიდრე გადავიხადე 52 დოლარი მხოლოდ სამი დაფისთვის Oshpark.com– დან.

ნაბიჯი 3: შეკრება

შეკრება
შეკრება
შეკრება
შეკრება
შეკრება
შეკრება

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

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

ნაბიჯი 4: პროგრამირების მიმოხილვა

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

ნაბიჯი 5: შეყვანა

შეყვანა
შეყვანა
შეყვანა
შეყვანა
შეყვანა
შეყვანა

შეყვანის დამუშავების მიზნით, მე შევქმენი კლასი სახელწოდებით "Hub_Inputs", რომელიც საშუალებას აძლევს სახლის კერას დაუკავშირდეს APDS9960– ს, ღილაკებისა და capacitive touch ინტერფეისების შექმნასა და მართვასთან ერთად. იგი შეიცავს შემდეგ ფუნქციებს:

შექმენით ღილაკი

მიიღეთ თუ ღილაკი დაჭერილია

მიიღეთ ღილაკების დაჭერის რაოდენობა

მიიღეთ უახლესი ჟესტი

მიიღეთ მოცულობის შეხების მნიშვნელობა

ღილაკები ინახება სტრუქტურის სახით, სამი ატრიბუტით: is_pressed, numberPresses და pin. თითოეული ღილაკი, შექმნისას, ერთვის წყვეტს. როდესაც ეს შეფერხება გააქტიურდება, შეწყვეტის სერვისის რუტინას (ISR) გადაეცემა ამ ღილაკის მაჩვენებელი (მითითებულია როგორც მეხსიერების მისამართი ღილაკის მასივში) და ზრდის ღილაკების დაჭერის რაოდენობას, is_pressed ლოგიკური მნიშვნელობის განახლებასთან ერთად.

შეხების ტევადობის მნიშვნელობები გაცილებით მარტივია. მათი ამოღება ხდება touchRead () ფუნქციაზე სენსორული პინის გადაცემით.

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

ნაბიჯი 6: შედეგები

გამომავალი
გამომავალი
გამომავალი
გამომავალი
გამომავალი
გამომავალი

ჭკვიანი სახლის კერა აღჭურვილია ინფორმაციის გამომუშავების და განათების შეცვლის რამდენიმე გზით. არის ქინძისთავები, რომლებიც არღვევს I2C ავტობუსს, რაც მომხმარებლებს აძლევს საშუალებას დაუკავშირონ LCD. ჯერჯერობით, LCD– ის მხოლოდ ერთი ზომაა მხარდაჭერილი: 20 x 4. ფუნქციის „hub.display_message ()“გამოყენებით მომხმარებლებს შეუძლიათ აჩვენონ შეტყობინებები LCD– ზე სიმებიანი ობიექტის გავლით.

ასევე არის pin სათაური, რომელიც დაკავშირებულია ანალოგური LED- ების სიმებს. ფუნქციის გამოძახება „hub.set_led_strip (r, g, b)“, ადგენს ზოლის ფერს.

ორი სტეპერიანი ძრავა მართულია წყვილი DRV8825 დრაივერის დაფის გამოყენებით. მე გადავწყვიტე გამოვიყენო BasicStepper ბიბლიოთეკა საავტომობილო კონტროლის გასაკონტროლებლად. როდესაც დაფა იტვირთება, იქმნება ორი სტეპერიანი ობიექტი და ორივე ძრავა ჩართულია. თითოეული ძრავის დასაყენებლად გამოიყენება "hub.step_motor (motor_id, ნაბიჯები)" ფუნქცია, სადაც ძრავის ID არის 0 ან 1.

ნაბიჯი 7: ჟურნალი

ხე
ხე
ხე
ხე
ხე
ხე

იმის გამო, რომ დაფას აქვს რამდენიმე სენსორი, მინდოდა ადგილობრივად შეგროვებული და შესული მონაცემების უნარი.

აღრიცხვის დასაწყებად, ახალი ფაილი იქმნება "hub.create_log (ფაილის სახელი, სათაური)", სადაც სათაური გამოიყენება CSV ფაილის რიგის შესაქმნელად, რომელიც აღნიშნავს სვეტებს. პირველი სვეტი ყოველთვის არის დროის ნიშნული წლის თვის დღის საათში: მინ: წმ ფორმატში. დროის მისაღებად, hub.log_to_file () ფუნქცია იღებს დროს ძირითადი_functions.get_time () ფუნქციით. Tm დროის სტრუქტურა შემდეგ გადაეცემა მითითების სახით, ფუნქციასთან ერთად, მონაცემებთან და ფაილის სახელთან ერთად.

ნაბიჯი 8: ბუზერი

ბუზერი
ბუზერი

რა კარგია IoT დაფა, თუ არ შეგიძლია მუსიკის დაკვრა? ამიტომაც ჩავრთე ბუზერი ბგერების დაკვრის ფუნქციით. დარეკვა "hub.play_sounds (მელოდია, ხანგრძლივობა, სიგრძე)" იწყებს სიმღერის დაკვრას, მელოდია არის ნოტების სიხშირეების მასივი, ხანგრძლივობა, როგორც ნოტების ხანგრძლივობის მასივი და სიგრძე, როგორც ნოტების რაოდენობა.

ნაბიჯი 9: გარე IoT ინტეგრაცია

გარე IoT ინტეგრაცია
გარე IoT ინტეგრაცია
გარე IoT ინტეგრაცია
გარე IoT ინტეგრაცია
გარე IoT ინტეგრაცია
გარე IoT ინტეგრაცია

ცენტრი ამჟამად მხარს უჭერს IFTTT ვებგვერდებს. მათი გააქტიურება შესაძლებელია Hub_IoT.publish_webhook (url, მონაცემები, მოვლენა, გასაღები) ან Hub_IoT.publish_webhook (url, მონაცემები) ფუნქციის გამოძახებით. ეს აგზავნის POST მოთხოვნას მოცემულ URL– ზე, თან ერთვის ეს მონაცემები, საჭიროების შემთხვევაში ღონისძიების სახელთან ერთად. IFTTT ინტეგრაციის მაგალითის დასაყენებლად, ჯერ შექმენით ახალი აპლეტი. შემდეგ შეარჩიეთ webhook სერვისი, რომელიც იწყებს მოთხოვნის მიღებისას.

შემდეგი, დაურეკეთ ღონისძიებას "მაღალი_ ტემპერატურა" და შეინახეთ იგი. შემდეგ შეარჩიეთ Gmail სერვისი "ეს" ნაწილისთვის და აირჩიეთ "გაუგზავნე წერილი საკუთარ თავს". მომსახურების პარამეტრებში ჩაწერეთ "ტემპერატურა მაღალია!" საგნისთვის და შემდეგ მე დავდე „გაზომილი ტემპერატურა {{Value1}} {{OccurredAt}}" - ზე, რომელიც აჩვენებს გაზომილ ტემპერატურას და მოვლენის დაწყების დროს.

მისი დაყენების შემდეგ, უბრალოდ ჩასვით ვებგვერდის URL, რომელიც გენერირდება IFTTT– ით და ჩასვით „high_temp“ღონისძიების განყოფილებაში.

ნაბიჯი 10: გამოყენება

გამოყენება
გამოყენება
გამოყენება
გამოყენება
გამოყენება
გამოყენება
გამოყენება
გამოყენება

Smart Home Hub– ის გამოსაყენებლად, უბრალოდ დარეკეთ საჭირო ფუნქციებზე, როგორც setup (), ასევე loop (). მე უკვე მოვიყვანე ფუნქციური ზარების მაგალითი, როგორიცაა მიმდინარე დროის დაბეჭდვა და IFTTT ღონისძიების გამოძახება.

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

Smart Home Hub სისტემა მუშაობს ძალიან კარგად სახლის მარტივი ავტომატიზაციისა და მონაცემთა შეგროვების ამოცანებისთვის. ის შეიძლება გამოყენებულ იქნას თითქმის ყველაფრისთვის, როგორიცაა LED ზოლის ფერის დაყენება, ოთახის ტემპერატურის მონიტორინგი, სინათლის ჩართვის შემოწმება და სხვა მრავალი პოტენციური პროექტი. მომავალში, მინდა კიდევ უფრო გავაფართოვო ფუნქციონირება. ეს შეიძლება შეიცავდეს უფრო ძლიერი ვებ სერვერის დამატებას, ფაილების ადგილობრივ ჰოსტინგს და Bluetooth ან mqtt.

გირჩევთ: