Mục lục:

Đầu vào cảm ứng điện dung ESP32 sử dụng "Phích cắm lỗ kim loại" cho các nút: 5 bước (có hình ảnh)
Đầu vào cảm ứng điện dung ESP32 sử dụng "Phích cắm lỗ kim loại" cho các nút: 5 bước (có hình ảnh)

Video: Đầu vào cảm ứng điện dung ESP32 sử dụng "Phích cắm lỗ kim loại" cho các nút: 5 bước (có hình ảnh)

Video: Đầu vào cảm ứng điện dung ESP32 sử dụng
Video: Chú chó bị bỏ rơi và những cn ve chó🤦 2024, Tháng bảy
Anonim
Image
Image
Phần cứng
Phần cứng

Khi tôi đang hoàn thiện các quyết định thiết kế cho dự án dựa trên ESP32 WiFi Kit 32 sắp tới yêu cầu đầu vào ba nút, một vấn đề đáng chú ý là WiFi Kit 32 không có một nút cơ học duy nhất, mà chỉ có ba nút cơ học, cho đầu vào. Tuy nhiên, Bộ Wi-Fi 32 có rất nhiều đầu vào cảm ứng điện dung, vì vậy tôi đã dành một khoảng thời gian để lắp ráp phần cứng, viết phần mềm và thử nghiệm thiết kế đầu vào ba nút bằng cách sử dụng tính năng đầu vào cảm ứng điện dung ESP32 và ba phích cắm lỗ kim loại 3/8 "" cho nút.

Như bất kỳ ai đã thử nghiệm với các đầu vào cảm ứng điện dung ESP32 đều phát hiện ra, các đầu vào cảm ứng chắc chắn đủ ồn để yêu cầu lọc để phát hiện đầu vào đáng tin cậy. Để giảm thiểu tổng số bộ phận cho dự án sắp tới, tôi đã xác định rằng một bộ lọc kỹ thuật số điều khiển gián đoạn đơn giản (giống "bộ lọc" hơn bộ lọc, nhưng tôi lạc đề), trái ngược với việc thêm phần cứng bộ lọc bên ngoài, có thể làm dịu các đầu vào ồn ào. Và sau khi thử nghiệm, rõ ràng là các đầu vào điện dung ESP32, ba phích cắm lỗ kim loại 3/8 "và một số phần mềm" lọc "kỹ thuật số, thực sự sẽ cung cấp đầu vào ba nút đáng tin cậy cho thiết kế.

Vì vậy, nếu bạn quan tâm đến việc thử nghiệm đầu vào điện dung với lọc kỹ thuật số trên ESP32, tôi đã đưa mã nguồn "Buttons.ino" vào định dạng môi trường Arduino cùng với hướng dẫn lắp ráp và lập trình, cùng với mô tả ngắn gọn về mã nguồn, cho những gì tôi phát hiện ra là một đầu vào ba nút có độ tin cậy cao.

Và như thường lệ, tôi có thể quên một hoặc hai tệp hoặc ai biết gì khác, vì vậy nếu bạn có bất kỳ câu hỏi nào, vui lòng hỏi vì tôi có rất nhiều lỗi.

Và một lưu ý cuối cùng, tôi không nhận được bồi thường dưới bất kỳ hình thức nào, bao gồm nhưng không giới hạn ở các mẫu miễn phí, cho bất kỳ thành phần nào được sử dụng trong thiết kế này

Bước 1: Phần cứng

Phần cứng
Phần cứng
Phần cứng
Phần cứng
Phần cứng
Phần cứng

Thiết kế sử dụng các phần cứng sau:

  • Một, Bộ WiFi 32.
  • Ba, phích cắm lỗ kim loại 3/8 ".
  • Chiều dài 3, 4”của dây 28awg.

Để lắp ráp phần cứng, tôi đã thực hiện các bước sau:

  • Tước và thiếc các đầu của mỗi dây dài 4”như hình bên.
  • Đã hàn dây đầu tiên vào chân 13 của ESP32 (đầu vào TOUCH4, hoặc "T4").
  • Đã hàn dây thứ hai vào chân 12 của ESP32 (đầu vào TOUCH5, hoặc "T5").
  • Đã hàn dây thứ ba vào chân 14 của ESP32 (đầu vào TOUCH6, hoặc "T6").
  • Hàn một trong ba lỗ kim loại 3/8 "vào các đầu còn lại của ba chiều dài dây.

Bước 2: Phần mềm

Phần mềm
Phần mềm

Tệp "Buttons.ino" là tệp môi trường Arduino chứa phần mềm thiết kế. Ngoài tệp này, bạn sẽ cần thư viện đồ họa "U8g2lib" cho màn hình OLED WiFi Kit32 (xem https://github.com/olikraus/u8g2/wiki để biết thêm thông tin về thư viện này).

Với thư viện đồ họa U8g2lib được cài đặt trong thư mục Arduino của bạn và "Buttons.ino" được tải vào môi trường Arduino, hãy biên dịch và tải phần mềm vào ESP32.

Sau khi tải xuống và chạy, dòng trên cùng của màn hình sẽ đọc "Các nút" với dòng thứ hai của màn hình là "1 2 3" làm chỉ báo nút. Bên dưới mỗi chỉ báo nút 1, 2, 3 là các giá trị đọc khi chạm chưa được lọc và bên dưới mỗi chỉ báo này là các chỉ báo nhấn nút ("1" để nhấn, "0" cho không nhấn). Như có thể thấy trong video (và như đã được kiểm tra lâu dài được xác nhận), bộ lọc phần mềm cung cấp khả năng phát hiện đầu vào nút đáng tin cậy mà không có kích hoạt sai.

Bước 3: Giới thiệu về Phần mềm

Phần mềm chứa ba phần mã chính; phần Arduino bắt buộc phải có "setup ()" và "loop ()" và phần "Interrupts". Phần setup () chứa mã cần thiết để khởi tạo OLED và các dịch vụ ngắt. Các chức năng thiết lập OLED được mô tả trong liên kết ở trên. Các chức năng thiết lập dịch vụ ngắt như sau:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" tạo một semaphore cho "InterruptService ()" (quy trình phục vụ ngắt) để thông báo cho loop () khi đến lúc thực hiện một vòng lặp.
  • "timerInterruptService = timerBegin (0, 80, true)" tạo bộ hẹn giờ sử dụng bộ định thời phần cứng 0 với tỷ lệ đặt trước là 80.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" gắn InterruptService () vào bộ định thời.
  • "timerAlarmWrite (timerInterruptService, 1000, true)" đặt tốc độ dịch vụ ngắt thành 1000hz.
  • "timerAlarmEnable (timerInterruptService)" bắt đầu cảnh báo hẹn giờ và do đó làm gián đoạn dịch vụ.

Khi thiết lập hoàn tất, vòng lặp () được nhập và ngay lập tức dừng lại ở dòng:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), nghĩa là loop () sẽ đợi tại thời điểm này cho đến khi semaphore từ InterruptService () đến. Khi đến semaphore, mã loop () thực thi, cập nhật màn hình OLED với dữ liệu nút, sau đó quay trở lại đầu để chờ semaphore tiếp theo. Với InterruptService () chạy ở 1000hz và giá trị LOOP_DELAY là 30, loop () thực thi 30ms một lần hoặc ở tốc độ cập nhật hiển thị là 33.333hz. Mặc dù đây là tốc độ làm mới màn hình cao hơn yêu cầu đối với hầu hết các ứng dụng ESP32, tôi đã sử dụng cài đặt này để minh họa khả năng đáp ứng của bộ lọc. Tôi đã kiểm tra và xác định thời gian cần thiết để thực hiện một lần vượt qua vòng lặp () duy nhất là 20ms.

InterruptService () được gọi bởi bộ định thời được tạo trong setup () với tốc độ 1000hz. Khi được gọi, nó cập nhật hai bộ đếm xuống, nLoopDelay và nButtonDelay. Khi nLoopDelay được đếm ngược đến 0, nó sẽ gửi vòng lặp cho phép semaphore () để thực hiện một lần vượt qua sau đó đặt lại nLoopDelay. Khi nButtonDelay được đếm ngược về 0, nó cũng được đặt lại sau đó nút "bộ lọc" sẽ thực thi.

Mỗi bộ lọc nút có một bộ đếm bộ lọc duy nhất (ví dụ: nButton1Count, nButton2Count và nButton3Count). Miễn là giá trị đầu vào cảm ứng được gán cho nút lớn hơn hoặc bằng giá trị ngưỡng đã xác định (BUTTON_THRESHHOLD), bộ đếm bộ lọc được gán cho nút và nút vẫn bằng không. Nếu giá trị đầu vào cảm ứng được gán cho nút nhỏ hơn ngưỡng đã xác định, thì bộ đếm bộ lọc được gán cho nút sẽ tăng lên một lần sau mỗi 20ms. Khi bộ đếm bộ lọc vượt quá giá trị bộ lọc nút (BUTTON_FILTER), nút được coi là "được nhấn". Tác dụng của phương pháp này là tạo một bộ lọc yêu cầu 80ms (20ms nButtonDelay * 4ms nButtonCountN trong đó N là số nút) các giá trị đầu vào chạm liên tục dưới ngưỡng đã xác định để xem xét nút thực sự được nhấn. Bất kỳ thời điểm nào dưới 80ms được coi là "trục trặc" và bị bộ lọc từ chối.

Với mô tả ngắn gọn này, nếu bạn có bất kỳ câu hỏi nào, vui lòng hỏi và tôi sẽ cố gắng hết sức để trả lời chúng.

Hy vọng bạn thích nó!

Bước 4: "Dự án sắp tới"

Các
Các

Dự án sắp tới, "Intelligrill® Pro", là một màn hình hút thuốc lá thăm dò nhiệt độ kép có tính năng:

  • Tính toán thăm dò nhiệt độ Steinhart-Hart (trái ngược với bảng "tra cứu") để tăng độ chính xác.
  • Thời gian dự đoán để hoàn thành trên đầu dò 1 kết hợp với độ chính xác tăng lên từ các tính toán của Steinhart-Hart.
  • Một đầu dò thứ hai, đầu dò 2, để theo dõi nhiệt độ của người hút thuốc (giới hạn từ 32 đến 399 độ).
  • Điều khiển đầu vào cảm ứng điện dung (như trong Có thể hướng dẫn này).
  • Giám sát từ xa dựa trên WIFI (với địa chỉ IP cố định, cho phép theo dõi tiến trình của người hút thuốc từ bất kỳ nơi nào có kết nối internet).
  • Phạm vi nhiệt độ mở rộng (một lần nữa từ 32 đến 399 độ).
  • Âm thanh báo động hoàn thành cả trong bộ phát Intelligrill® và trên hầu hết các thiết bị giám sát có hỗ trợ WiFi.
  • Hiển thị nhiệt độ ở độ F hoặc độ C.
  • Định dạng thời gian ở HH: MM: SS hoặc HH: MM.
  • Pin hiển thị theo vôn hoặc% đã sạc.
  • Và sắp ra mắt, đầu ra PID cho những người hút thuốc dựa trên thuốc tăng cường.

"Intelligrill® Pro" đang thử nghiệm để trở thành Intelligrill® dựa trên HTML chính xác nhất, được đóng gói tính năng và đáng tin cậy nhất mà tôi đã thiết kế.

Nó vẫn đang được thử nghiệm, nhưng với những bữa ăn mà nó hỗ trợ chuẩn bị trong quá trình thử nghiệm, tôi đã tăng hơn vài cân.

Một lần nữa, tôi hy vọng bạn sẽ thích nó!

Bước 5: Tiếp theo: Đầu vào tương tự đầu dò nhiệt độ NTP ESP32 với hiệu chỉnh Steinhart-Hart

Hãy chuẩn bị để quét sạch những cuốn sách đại số của bạn cho phần này.

Đề xuất: