Mục lục:

Cách sử dụng Bluetooth (BLE) với ESP32: 3 bước
Cách sử dụng Bluetooth (BLE) với ESP32: 3 bước

Video: Cách sử dụng Bluetooth (BLE) với ESP32: 3 bước

Video: Cách sử dụng Bluetooth (BLE) với ESP32: 3 bước
Video: Sử dụng Bluetooth của ESP32 làm cảm biến hiện diện và cách đưa nó lên Apple Homekit 2024, Tháng sáu
Anonim

#####GHI CHÚ#####

Phương pháp hiển thị trong Bảng hướng dẫn này đã cũ và lỗi thời. Xem video này để biết phương pháp mới nhất.

###############

Trong khi ESP32 tự hào có danh sách tính năng mở rộng (Wikipedia), tính năng thu hút sự chú ý lớn nhất là bluetooth v4.2 tích hợp với hỗ trợ BLE. Nhưng tuyên bố đó có thể gây hiểu lầm, trong khi phần cứng ở đó, phần mềm hỗ trợ sử dụng Bluetooth lại thiếu. (Nó đang được phát triển)

Đối với những người không biết BLE là gì, nó là viết tắt của Bluetooth Low Energy. Đó là một giao thức bluetooth giúp tăng mức tiêu thụ điện năng thấp hơn đáng kể so với Bluetooth "Cổ điển".

Trong Tài liệu hướng dẫn này, tôi sẽ chỉ cho bạn cách bạn có thể sử dụng các tài nguyên (phần mềm) hạn chế theo ý của mình để gửi dữ liệu từ bo mạch ESP32 đến điện thoại của bạn qua BLE.

Một vài tuyên bố từ chối trách nhiệm…

Một số điều lưu ý mà tôi nên đề cập trước khi bạn tiếp tục với hướng dẫn này..

Lưu ý 1: Khi tôi nói rằng hỗ trợ Bluetooth vẫn chưa khả dụng, ý tôi là trong môi trường phát triển arduino.

Hỗ trợ rất tốt có thể có sẵn trong SDK chính thức cũng như IDF nhưng tôi chưa tìm thấy bất kỳ hướng dẫn có thẩm quyền nào cho chúng.

Lưu ý 2: Phương pháp mà tôi đang sử dụng rất là một cách giải quyết và không phải là cách BLE được cho là hoạt động lý tưởng. Thư viện hỗ trợ tạo dịch vụ trong BLE không có ở đây cho môi trường arduino.

Điều duy nhất bạn có thể làm một cách đáng tin cậy là tạo một Beacon quảng cáo tên của nó. Một bình luận trên YouTube diễn đạt rất thanh lịch: "LOL, một cuộc tấn công tàn bạo. Nhưng bạn có thể làm gì?"

Lưu ý 3: Loại dữ liệu duy nhất mà bạn có thể gửi là chuỗi.

Bạn rất có thể quyết định viết mã và giải mã các loại dữ liệu khác đến và từ chuỗi nhưng điều đó nằm ngoài phạm vi của hướng dẫn này.

Bước 1: Bản dựng mẫu

Image
Image
Bản dựng mẫu
Bản dựng mẫu
Bản dựng mẫu
Bản dựng mẫu
Bản dựng mẫu
Bản dựng mẫu

Nếu bạn chỉ ở đây để giải thích thì bạn có thể bỏ qua bước này nhưng thực hiện qua bước này có thể giúp bạn rõ ràng hơn một chút..

Trước tiên, tôi sẽ xây dựng một dự án mẫu và sau đó tôi sẽ cố gắng giải thích cách hoạt động của nó và cách bạn có thể tái tạo giao tiếp Bluetooth. Chúng tôi sẽ xây dựng một cảm biến nhiệt độ di động gửi nguồn cấp dữ liệu trực tiếp đến điện thoại thông minh của bạn. Bản dựng có thể chạy nhiều ngày trên một li-po duy nhất và dễ dàng thể hiện các lợi ích của BLE.

Bạn có thể sử dụng mô-đun này như một tấm lót ly để bảo ôn đồ uống của mình và nhận được thông báo ngay khi đồ uống của bạn đạt đến nhiệt độ tối ưu. Bởi vì sẽ thật là tội nghiệp nếu bạn phải nhấp một ngụm trà có độ trên 40.

Phần cứng duy nhất bạn cần là bo mạch ESP32 và cảm biến nhiệt độ kỹ thuật số. Bo mạch của tôi hỗ trợ pin bên ngoài nên tôi đang sử dụng li-po 3,7v mà tôi đã tận dụng được từ một số thiết bị cũ để làm cho dự án này có thể di động.

Phần cứng

Các kết nối cho cảm biến nhiệt độ rất đơn giản. Dây màu đỏ kết nối với 3.3v, màu đen kết nối với đất (gnd), màu vàng kết nối với GPIO 2 mà trên bảng của tôi được đánh dấu là D9. Kết nối một điện trở 4,7k ohm giữa dây màu đỏ và màu vàng. Tôi không sử dụng điện trở, thay vào đó tôi đang sử dụng thiết bị đầu cuối có thể cắm 3 chân đi kèm với cảm biến của tôi. Nó có một điện trở kéo lên được tích hợp sẵn.

Thực sự cần kết nối li-po bằng đầu nối JST nhưng tôi không muốn mua một cái nên tôi chỉ gắn một số cáp jumper (từ nữ sang nữ) vào đầu nối và hàn một cặp khác vào các đầu nối của pin. Điều này tạo ra một kết nối đáng tin cậy và một công tắc nguồn tạm thời.

Bây giờ là một bao vây dự án, tôi đang sử dụng một đĩa Styrofoam đã được cắt ra từ một trang tính lớn hơn. Điều này làm cho một chất cách điện tuyệt vời. Một đĩa nhỏ hơn nhiều khác bị kẹt ở trên cùng nhưng hơi lệch sang một bên. Điều này là để quấn thêm chiều dài của dây để chúng không bị lủng lẳng khắp nơi. Sau khi sử dụng đầy đủ keo và một lỗ nhỏ cho đầu dò cảm biến, bạn đã sẵn sàng để tiếp tục phần mềm.

Phần mềm

Nếu bạn chưa cài đặt arduino IDE thì hãy truy cập liên kết này để tải xuống. Phần mềm arduino theo mặc định không đi kèm với các định nghĩa về bo mạch cho các bo mạch ESP32 khác nhau. Để yêu cầu họ truy cập liên kết này và tải xuống các tệp dưới dạng zip. Bạn cần giải nén chúng đến vị trí này:

C: / Users // Documents / Arduino / hardware / espserrif / ESP32

Tên người dùng của bạn ở đâu trên PC của bạn. Đảm bảo rằng các tệp khác nhau có sẵn trong thư mục ESP32 và không nằm trong thư mục khác.

Bây giờ nếu bạn khởi động phần mềm arduino và đi đến công cụ-> bảng, bạn sẽ thấy nhiều bảng ESP32 khác nhau khi bạn cuộn xuống.

Hầu hết các cảm biến nhiệt độ kỹ thuật số sử dụng giao thức OneWire để giao tiếp với các bộ điều khiển vi mô, vì vậy chúng ta cần lấy thư viện. Đi tới sketch-> include library-> quản lý thư viện và tìm kiếm onewire và cài đặt thư viện có quá nhiều tác giả. Bạn không cần trung tâm onewire. Bỏ mặc nó.

Bây giờ bạn có thể tải xuống và mở mã được đính kèm trong bước này (nhiệt độ-example.ino).

Nếu bạn đang sử dụng cảm biến khác với tôi thì bạn sẽ phải thay đổi mã cho phù hợp. Thay thế mã trong getTemp (). Chỉ cần trả lại nhiệt độ cuối cùng ở dạng

Trở lại;

Phao chứa nhiệt độ ở đâu.

Cắm bảng, chọn bảng và cổng chính xác từ các công cụ bên dưới và nhấn tải lên.

Nếu mã từ chối tải lên, hãy ngắt kết nối cảm biến và kết nối GPIO 0 với đất. Khôi phục các kết nối sau khi tải lên.

ESP của bạn bây giờ có thể hét nhiệt độ của cà phê của bạn với thế giới nhưng bạn cần một người có thể hiểu nó.

Ứng dụng Android

Xin lỗi người dùng iPhone (… không hẳn vậy).

Tải xuống apk từ đây và cài đặt nó. Khi bạn khởi động ứng dụng, bạn sẽ được chào đón bằng một giao diện rất đơn giản.

Nếu bạn nhận được thông báo lỗi cho biết 'quảng cáo không được hỗ trợ', hãy nhấp vào OK và bỏ qua nó nhưng nếu bạn nhận được thông báo 'BLE không được hỗ trợ' thì điện thoại của bạn không có Bluetooth 4.0 trở lên và sẽ không thể chạy ứng dụng.

Đảm bảo rằng Bluetooth trên điện thoại của bạn đã được bật và nhấp vào "Bắt đầu quét", miễn là esp trong phạm vi và được bật nguồn, bạn sẽ nhận được một số giá trị nhiệt độ.

Các lỗi có thể xảy ra:

  • -1000:: Điều này có nghĩa là thiết bị của bạn không thể tìm thấy ESP. đảm bảo rằng Bluetooth được bật và thử khởi động lại ESP.
  • SNA:: Điều này có nghĩa là điện thoại của bạn đang nhận dữ liệu từ ESP nhưng chính ESP không thể tìm thấy cảm biến nhiệt độ trên GPIO 2. Đảm bảo rằng các kết nối được bảo mật, xem bạn có đang sử dụng điện trở có giá trị chính xác hay không. Kiểm tra kỹ với sơ đồ bảng của bạn để đảm bảo rằng bạn được kết nối với GPIO 2 và không phải là chân được đánh dấu là D2.

Bước 2: Giải thích

Cách BLE hoạt động bình thường là một thiết bị quảng cáo tên của nó giống như một đèn hiệu, tên này có thể được nhìn thấy bởi bất kỳ ai và được sử dụng để nhận dạng thiết bị. Sau đó, thiết bị có thể tạo ra các dịch vụ khác nhau mà người khác nhìn thấy khi họ kết nối với thiết bị đó. Các dịch vụ này có thể có các luồng dữ liệu khác nhau.

Ví dụ. Một thiết bị có tên là "Trạm thời tiết" có thể được bảo dưỡng trong đó như "Nhiệt độ", "Độ ẩm" và "Gió". Khi một thiết bị BLE khác như điện thoại thông minh của bạn quét tìm thiết bị, nó sẽ thấy Trạm thời tiết và khi kết nối với nó, nó sẽ có thể nhận các luồng dữ liệu tương ứng với các dịch vụ khác nhau.

Các thư viện (dành cho ESP32) hiện có sẵn cho chúng tôi cho phép chúng tôi tạo ra một beacon mà những người khác có thể khám phá nhưng đó là phạm vi của nó. Chúng tôi không thể tạo dịch vụ cũng như không thể kết nối bất kỳ thiết bị nào với nó.

Vì vậy, cách tôi gửi dữ liệu mà không cần tạo dịch vụ là sử dụng một kỹ thuật tương tự như giao thức WiFi được gọi là Beacon Stuffing. Điều này có nghĩa là tôi đang bao gồm dữ liệu sẽ được gửi trong chính tên beacon. Điều này cho phép tôi quảng cáo dữ liệu mà không yêu cầu các thiết bị khác kết nối với đèn hiệu.

ble.begin (beaconMsg); // beaconMsg là tên được quảng cáo

Chúng tôi đang sử dụng thư viện SimpleBLE để tạo báo hiệu với tên của nó ở định dạng ESP. Trong đó ‘ESP’ luôn không thay đổi ở đầu tên và được thay thế bằng dữ liệu mới nhất được trả về bởi hàm getValue () sau mỗi 100 mili giây.

float getValue () {return sensorValue;}

Ứng dụng android tìm kiếm các tên thiết bị BLE bắt đầu bằng ‘ESP’, sau khi được tìm thấy, nó sẽ tách tên và chỉ hiển thị dữ liệu từ cuối.

Giao tiếp chỉ là một chiều, ứng dụng không gửi lại bất cứ thứ gì.

Bước 3: Kết luận

Vào cuối ngày, phương pháp này không thể thay thế cho một thư viện BLE được triển khai đúng cách nhưng nó có thể đủ để xử lý một số dự án cho đến khi hỗ trợ BLE hoàn chỉnh đến với Arduino. Hy vọng rằng các tài liệu hướng dẫn này sẽ giúp ích được phần nào cho bạn.

Rất cám ơn DFRobot.com đã gửi cho tôi những sản phẩm này:

  • Bảng chữa cháy ESP32
  • FireBeetle Expantion Shield
  • Cảm biến nhiệt độ DS18B20

Gần đây tôi đã tìm thấy thư viện này. ReadME tuyên bố rằng bạn có thể kết nối với các thiết bị BLE khác để nhận dữ liệu (Không thể tự quảng cáo). Tôi chưa thử nhưng bạn có thể kiểm tra nếu bạn quan tâm.

Bạn có thể xem video dự án tại: YouTube

Đề xuất: