Სარჩევი:

ESP32 Capacitive Touch შეყვანის გამოყენებით "ლითონის ხვრელის დანამატები" ღილაკებისთვის: 5 ნაბიჯი (სურათებით)
ESP32 Capacitive Touch შეყვანის გამოყენებით "ლითონის ხვრელის დანამატები" ღილაკებისთვის: 5 ნაბიჯი (სურათებით)

ვიდეო: ESP32 Capacitive Touch შეყვანის გამოყენებით "ლითონის ხვრელის დანამატები" ღილაკებისთვის: 5 ნაბიჯი (სურათებით)

ვიდეო: ESP32 Capacitive Touch შეყვანის გამოყენებით
ვიდეო: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, ივლისი
Anonim
Image
Image
ტექნიკა
ტექნიკა

როდესაც ვამთავრებდი დიზაინის გადაწყვეტილებებს მომავალი ESP32 WiFi Kit 32 დაფუძნებული პროექტისათვის, რომელიც მოითხოვს სამი ღილაკის შეყვანას, ერთი შესამჩნევი პრობლემა ის იყო, რომ WiFi Kit 32 -ს არ გააჩნია ერთი მექანიკური ღილაკი, მაგრამ მხოლოდ სამი მექანიკური ღილაკი, შესასვლელად. თუმცა, WiFi Kit 32– ს აქვს საკმაოდ დიდი მოცულობის შეხება, ამიტომ გარკვეული დრო გავატარე აპარატურის აწყობაზე, პროგრამული უზრუნველყოფის წერაზე და ვამოწმებდი სამი ღილაკის შეყვანის დიზაინს ESP32 capacitive touch touch feature და სამი 3/8 "" მეტალის ხვრელი შტეფსელისთვის " ღილაკები.

როგორც ყველამ, ვინც ექსპერიმენტი ჩაატარა ESP32 ტევადობის შეყვანის საშუალებებზე, აღმოაჩინა, რომ შეხების საშუალებები, რა თქმა უნდა, საკმაოდ ხმაურიანია, რომ მოითხოვოს ფილტრაცია საიმედო შეყვანის გამოვლენისათვის. მომავალი პროექტის ნაწილების მთლიანი რაოდენობის შესამცირებლად, მე დავადგინე, რომ უბრალო შეწყვეტის მქონე ციფრული ფილტრი (უფრო "დებუნსი" ვიდრე ფილტრი, მაგრამ მე გადავაბიჯებ), გარე ფილტრის აპარატურის დამატებისგან განსხვავებით, შეუძლია ხმაურიანი საშუალებების დამშვიდება. რა და ტესტირების შემდეგ, ცხადი გახდა, რომ ESP32 capacitive inputs, three 3/8 "metallic hole plugs and some digital" filtering "software, ნამდვილად უზრუნველყოფს საიმედო სამ ღილაკს input for the design.

ასე რომ, თუ თქვენ დაინტერესებული ხართ ESP32– ზე ციფრული გაფილტვრით მოცულობითი შეყვანის ტესტირებით, მე ჩავრთე წყაროს კოდი „Buttons.ino“Arduino გარემოს ფორმატში, შეკრებისა და პროგრამირების ინსტრუქციებთან ერთად, ასევე წყაროს კოდის მოკლე აღწერა, რაც აღმოვაჩინე, რომ იყო უაღრესად საიმედო სამი ღილაკის შეყვანა.

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

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

ნაბიჯი 1: აპარატურა

ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა

დიზაინი იყენებს შემდეგ ტექნიკას:

  • ერთი, WiFi ნაკრები 32.
  • სამი, 3/8 "მეტალის ხვრელი საცობები.
  • სამი, 4 "სიგრძის 28awg მავთული.

აპარატურის ასაწყობად, მე შევასრულე შემდეგი ნაბიჯები:

  • გაშიშვლებული და მოჭედილი თითოეული 4 "მავთულის სიგრძის ბოლოები, როგორც ნაჩვენებია.
  • პირველი მავთული მიმაგრებულია ESP32- ის მე -13 პინზე (TOUCH4, ან "T4", შესასვლელი).
  • მეორე მავთული გაერთიანებულია ESP32– ის 12 პინზე (TOUCH5, ან „T5“, შესასვლელი).
  • მესამე მავთული მიმაგრებულია ESP32– ის 14 პინზე (TOUCH6, ან "T6" შეყვანა).
  • სამი 3/8 დიუმიანი მეტალის ხვრელიდან თითოეული დადებულია ერთი სამი მავთულის სიგრძის თავისუფალ ბოლოებზე.

ნაბიჯი 2: პროგრამული უზრუნველყოფა

პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა

ფაილი "Buttons.ino" არის Arduino გარე ფაილი, რომელიც შეიცავს დიზაინის პროგრამულ უზრუნველყოფას. ამ ფაილის გარდა, თქვენ დაგჭირდებათ გრაფიკული ბიბლიოთეკა "U8g2lib" WiFi Kit32 OLED ეკრანისთვის (იხილეთ https://github.com/olikraus/u8g2/wiki ამ ბიბლიოთეკის შესახებ დამატებითი ინფორმაციისათვის).

თქვენს Arduino დირექტორიაში დაინსტალირებული U8g2lib გრაფიკული ბიბლიოთეკით და Arduino გარემოში ჩატვირთული „Buttons.ino“- ით, შეადგინეთ და ჩამოტვირთეთ პროგრამული უზრუნველყოფა ESP32– ში.

გადმოტვირთვისა და გაშვების შემდეგ ეკრანის ზედა სტრიქონი უნდა კითხულობდეს „ღილაკებს“, ხოლო ეკრანის მეორე სტრიქონში იკითხება „1 2 3“, როგორც ღილაკის მაჩვენებლები. თითოეული 1, 2, 3 ღილაკის ინდიკატორის ქვემოთ არის გაუფილტრავი შეხებით წაკითხვის მნიშვნელობები, ხოლო თითოეული მათგანის ქვემოთ არის ღილაკის დაჭერის ინდიკატორები ("1" დაჭერით, "0" არა დაჭერით). როგორც ვიდეოში ჩანს (და რამდენადაც დადასტურებულია გრძელვადიანი ტესტირება), პროგრამული უზრუნველყოფის ფილტრი უზრუნველყოფს საიმედო ღილაკის შეყვანის გამოვლენას ცრუ გაშვების გარეშე.

ნაბიჯი 3: პროგრამული უზრუნველყოფის შესახებ

პროგრამული უზრუნველყოფა შეიცავს სამ ძირითად კოდის განყოფილებას; არდუინომ მოითხოვა სექციები "setup ()" და "loop ()" და "interrupts" განყოფილება. Setup () განყოფილება შეიცავს კოდს, რომელიც აუცილებელია OLED– ის ინიციალიზაციისთვის და სერვისების შეწყვეტისთვის. OLED დაყენების ფუნქციები აღწერილია ზემოთ მოცემულ ბმულზე. შეწყვეტის სერვისის დაყენების ფუნქციები შემდეგია:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" ქმნის სემფორს "InterruptService ()" (შეფერხების სერვისის რუტინისთვის) მარყუჟის () ინფორმირებისთვის, როდესაც მარყუჟის გავლის დროა.
  • "timerInterruptService = timerBegin (0, 80, ჭეშმარიტი)" ქმნის ქრონომეტრს აპარატურის ქრონომეტრის გამოყენებით 80 წინასწარ განსაზღვრულ 80 -ით.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" ანიჭებს ტაიმერს InterruptService ().
  • "timerAlarmWrite (timerInterruptService, 1000, true)" ადგენს შეწყვეტის სერვისის სიჩქარეს 1000 ჰც.
  • "timerAlarmEnable (timerInterruptService)" იწყებს ტაიმერის სიგნალს და ამით წყვეტს სერვისს.

კონფიგურაციის დასრულების შემდეგ, მარყუჟი () შედის და დაუყოვნებლივ ჩერდება ხაზზე:

თუ (xSemaphoreTake (timerLoopSemaphore, პორტი MAX_DELAY) == pdTRUE), მნიშვნელობის მარყუჟი () დაელოდება ამ მომენტში სანამ InteraphService– ის () სემიფორმი არ მოვა. როდესაც სემიფორმი მოდის, მარყუჟის () კოდი სრულდება, განახლდება OLED ეკრანი ღილაკის მონაცემებით, შემდეგ ბრუნდება ზევით და კვლავ ელოდება მომდევნო სემფორს. InterruptService () 1000Hz– ზე და LOOP_DELAY მნიშვნელობა 30 – ით, loop () ასრულებს ყოველ 30 ms– ს, ან ჩვენების განახლების სიჩქარეს 33.333 Hz. მიუხედავად იმისა, რომ ეს არის ეკრანის განახლების უფრო მაღალი მაჩვენებელი, ვიდრე საჭიროა ESP32 პროგრამების უმეტესობისთვის, მე ეს პარამეტრი გამოვიყენე ფილტრის რეაგირების საილუსტრაციოდ. მე ჩავატარე ტესტირება და დავადგინე ერთი მარყუჟის () გავლის შესასრულებლად საჭირო დრო 20 ms.

InterruptService () ეწოდება ტაიმერს, რომელიც შექმნილია setup- ში () 1000 ჰც სიხშირით. როდესაც დარეკავს, ის განაახლებს ორ დაბლა მრიცხველს, nLoopDelay და nButtonDelay. როდესაც nLoopDelay ჩამოითვლება ნულამდე, ის აგზავნის სემაფორს, რომელიც საშუალებას აძლევს მარყუჟს () შეასრულოს ერთი უღელტეხილი, შემდეგ აღადგენს nLoopDelay- ს. როდესაც nButtonDelay ითვლება ქვემოთ ნულამდე, ის ასევე გადატვირთულია, შემდეგ ღილაკი "ფილტრები" შესრულდება.

თითოეული ღილაკის ფილტრს აქვს უნიკალური ფილტრის მრიცხველი (მაგ. NButton1Count, nButton2Count და nButton3Count). სანამ ღილაკზე მინიჭებული შეხების შეყვანის მნიშვნელობა აღემატება ან უდრის განსაზღვრულ ზღურბლს (BUTTON_THRESHHOLD), ღილაკზე და ღილაკზე მინიჭებული ფილტრის მრიცხველი რჩება ნულოვანი. თუ ღილაკზე შეხების შეყვანის მნიშვნელობა განსაზღვრულ ზღვარზე ნაკლებია, ღილაკზე მინიჭებული ფილტრის მრიცხველი იზრდება ყოველ 20 წმ -ით. როდესაც ფილტრის მრიცხველი აღემატება ღილაკის ფილტრის მნიშვნელობას (BUTTON_FILTER), ღილაკი ითვლება "დაჭერილი". ამ მეთოდის ეფექტი არის ფილტრის შექმნა, რომელიც მოითხოვს 80ms (20ms nButtonDelay * 4ms nButtonCountN სადაც N არის ღილაკის ნომერი) განსაზღვრული ბარიერის ქვემოთ შეხების მუდმივი მნიშვნელობების გათვალისწინებით ღილაკზე ფაქტიურად დაჭერილი. ნებისმიერ დროს 80 მმ -ზე ნაკლები ითვლება "ხარვეზად" და უარყოფილია ფილტრის მიერ.

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

იმედია მოგეწონათ!

ნაბიჯი 4: "მომავალი პროექტი"

ის
ის

მომავალი პროექტი, "Intelligrill® Pro", არის ორმაგი ტემპერატურის ზონდის მწეველის მონიტორი, რომელშიც არის:

  • სტეინჰარტ-ჰარტის ტემპერატურის ზონდის გამოთვლები (განსხვავებით "საძიებელი" ცხრილებისგან) გაზრდილი სიზუსტისთვის.
  • გამოძიების 1 დასრულების პროგნოზირებადი დრო, რომელიც მოიცავს სტეინჰარტ-ჰარტის გამოთვლებით მიღებულ სიზუსტეს.
  • მეორე ზონდი, ზონდი 2, მწეველის ტემპერატურის მონიტორინგისთვის (შემოიფარგლება 32 -დან 399 გრადუსამდე).
  • შეხების შეყვანის მოცულობის კონტროლი (როგორც ამ ინსტრუქციებშია).
  • WIFI დაფუძნებული დისტანციური მონიტორინგი (ფიქსირებული IP მისამართით, საშუალებას გაძლევთ მონიტორინგი გაუწიოთ მწეველთა პროგრესს ნებისმიერი ადგილიდან, სადაც არის ინტერნეტ კავშირი).
  • გაფართოებული ტემპერატურის დიაპაზონი (ისევ 32 -დან 399 გრადუსამდე).
  • დასრულების ხმოვანი სიგნალიზაცია ხდება როგორც Intelligrill® გადამცემში, ასევე WiFi- ს მონიტორინგის მოწყობილობების უმეტესობაზე.
  • ტემპერატურის ჩვენება ან F გრადუსით ან C გრადუსით.
  • დროის ფორმატი HH: MM: SS ან HH: MM.
  • ბატარეის ჩვენება ან ვოლტი ან % დამუხტული.
  • და მალე, PID გამომავალი შთამბეჭდავი მწეველებისთვის.

"Intelligrill® Pro" ცდილობს გახდეს ყველაზე ზუსტი, გამორჩეული და საიმედო HTML დაფუძნებული Intelligrill®, რომელიც მე შემქმნია.

ის ჯერ კიდევ გამოცდის ქვეშაა, მაგრამ იმ კერძებით, რომლებიც ტესტირების დროს ემზადება, რამდენიმე კილოგრამზე მეტი მოვიმატე.

კიდევ ერთხელ, ვიმედოვნებ, რომ ისიამოვნებთ!

ნაბიჯი 5: შემდეგი: ESP32 NTP ტემპერატურის ზონდის ანალოგური შეყვანა Steinhart-Hart კორექციით

მოემზადეთ იმისათვის, რომ თქვენი ალგებრის წიგნები ამოიღოთ ამ წიგნისგან.

გირჩევთ: