Thu thập dữ liệu cảm biến SHT85 bằng STM32 & Bluetooth năng lượng thấp
Overview
Đây là một dự án Bluetooth Low Energy đơn giản hướng dẫn cách lấy dữ liệu Cảm biến nhiệt độ độ ẩm SHT85 được kết nối với STM32 Nucleo-144 bằng javascript. Chúng tôi sẽ giao tiếp Cảm biến độ ẩm & nhiệt độ SHT85 với vi điều khiển STM32 và thu thập dữ liệu cảm biến với BLE.
Dòng SHT85 là cảm biến nhiệt độ và độ ẩm được thiết kế mới từ Sensations. Cảm biến này bao gồm cảm biến nhiệt độ dải tần để đo nhiệt độ, cảm biến độ ẩm điện dung để đo độ ẩm trong môi trường, bộ chuyển đổi tương tự-kỹ thuật số, bộ nhớ dữ liệu, xử lý dữ liệu đo lường và cũng có giao diện truyền thông kỹ thuật số. SHT85 hoạt động trong khoảng từ 2,15V đến 5,5V và giao tiếp với bộ vi điều khiển qua bus I2C.
Yêu cầu
Một dongle BleuIO (https://www.bleuio.com/)
Cảm biến SHT85 (https://sensirion.com/products/catalog/SHT85/)
Bo mạch có Vi điều khiển STM32 với cổng USB. (Một bảng phát triển Nucleo-144: NUCLEO-H743ZI2, đã được sử dụng để phát triển ví dụ này. (Https://www.st.com/en/evaluation-tools/nucleo-h743zi.html)
Để kết nối dongle với bo mạch Nucleo, chúng tôi đã sử dụng "USB A đến Micro USB B" - có thể kết nối với bộ chuyển đổi USB A từ nữ sang nữ.)
STM32CubeIDE (https://www.st.com/en/development-tools/stm32cubeide.html)
Khi BleuIO Dongle được kết nối với cổng USB của bo mạch Nucleo, STM32 sẽ nhận ra nó và bắt đầu quảng cáo các giá trị cảm biến mà nó đọc được từ SHT85 cùng với số sê-ri của cảm biến. Nó sẽ cập nhật các giá trị này sau mỗi 10 giây.
Sao chép dự án hoặc tải xuống dưới dạng tệp zip và giải nén nó vào không gian làm việc STM32CubeIDE của bạn.
Importing as an Existing Project
From STM32CubeIDE choose File>Import…
Then choose General > Existing Projects into Workspace then click ‘Next >’
Đảm bảo rằng bạn đã chọn không gian làm việc của mình trong "Chọn thư mục gốc:". Bạn sẽ thấy dự án “stm32_bleuio_SHT85_example”, kiểm tra dự án và nhấp vào ‘Hoàn tất’.
Nếu bạn tải xuống dự án dưới dạng tệp zip, bạn sẽ cần đổi tên thư mục dự án từ ‘stm32_bleuio_SHT85_example-master’ thành ‘stm32_bleuio_SHT85_example’
Kết nối SDA của cảm biến SHT85 với PF0 trên bo mạch STM32 Nucleo và SCL với PF1. Sau đó thiết lập I2C2 trong tệp ioc STM32Cube như sau:
Running the Example
Trong STMCubeIDE nhấp vào biểu tượng cái búa để xây dựng dự án.
Mở ‘Cổng COM STMicroelectronics STLink Viritual’ bằng chương trình mô phỏng thiết bị đầu cuối nối tiếp như TeraTerm, Putty hoặc CoolTerm.
Tốc độ truyền: 115200
Số bit dữ liệu: 8
Tính chẵn lẻ: Không có
Dừng bit: 1
Kiểm soát dòng chảy: Không có
Trong STMCubeIDE, hãy nhấp vào nút phát màu xanh lục để nhấp nháy và chạy nó trên bảng của bạn. Lần đầu tiên bạn nhấp vào nó, cửa sổ ‘Chạy cấu hình’ sẽ xuất hiện. Bạn chỉ có thể để nguyên như vậy và nhấp vào chạy.
Kết nối BleuIO Dongle.
Access SHT85 sensor data from a web browser
We wrote a simple script that connects to the BleuIO dongle and reads advertised data from STM32.
For this script to work, we need
Các bước
Tạo một tệp Html đơn giản có tên là index.html, tệp này sẽ đóng vai trò là giao diện người dùng của tập lệnh. Tệp Html này chứa một số nút giúp kết nối và đọc dữ liệu được quảng cáo từ dongle từ xa, được kết nối với stm32.
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Bootstrap CSS -->
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
crossorigin="anonymous"
/>
<title>STM32 Read sensor value</title>
</head>
<body>
<div class="container mt-5">
<h1>Sensor data collection from stm32 using Bluetooth Low Energy</h1>
<button id="connect" class="btn btn-primary">Connect</button>
<button id="getdata" class="btn btn-success">Get device data</button>
<div id="loader"></div>
<br />
<div id="response" class="fw-bold"></div>
<script src="./index.js"></script>
</div>
</body>
</html>
Tạo một tệp js có tên script.js và bao gồm nó ở cuối tệp Html. Tệp js này sử dụng thư viện js BleuIO để viết các lệnh AT và giao tiếp với dongle khác.
import * as my_dongle from 'bleuio'
//connect to BleuIO
document.getElementById('connect').addEventListener('click', function(){
my_dongle.at_connect()
})
//get sensor data
document.getElementById('getdata').addEventListener('click', function(){
document.getElementById('loader').innerHTML = 'Loading'
//set the BleuIO dongle into dual role
my_dongle.at_dual().then(()=>{
// sensor id of the device that we are trying to get data from
let sensorID='05084FA3'
//look for advertised data of with the sensor id
my_dongle.at_findscandata(sensorID,4).then(x=>{
//split the advertised data from the respnse
let advdata= x[x.length-1].split(" ").pop()
//trim the advertised string to only get sensor response
const result = advdata.split(sensorID).slice(1).join(sensorID)
//get temperature and humidity value
let temp = result.substring(0, 4);
let hum = result.substring(4, 8);
//convert from hex to decimal and device by 100
temp = parseInt(temp, 16)/100
hum = (parseInt(hum, 16)/100).toFixed(1)
document.getElementById('loader').innerHTML = ''
document.getElementById('response').innerHTML = `Sensor ID : 05084FA3 <br/>
Temperature : ${temp} °C<br/>
Humidity : ${hum} %rH<br/>`
})
})
})
Tập tin js script có hai hành động nút; kết nối và đọc dữ liệu được quảng cáo.
Chúng tôi cũng cần cập nhật ID cảm biến trên dòng 13 của tập lệnh js. ID cảm biến của dự án ví dụ này là 05084FA3, chúng tôi nhận được từ SHT85.
Do đó, tập lệnh này tìm kiếm dữ liệu được quảng cáo có chứa ID cảm biến 05084FA3. Sau khi nhận được dữ liệu được quảng cáo, chúng tôi tách thông tin nhiệt độ và độ ẩm và hiển thị trên trang index.html của chúng tôi.
Bây giờ chúng ta cần một trình gói web. Chúng tôi có thể sử dụng parcel.js
Sau khi cài đặt parcel js, hãy vào thư mục gốc và nhập “parcel index.html”. Điều này sẽ bắt đầu môi trường phát triển của chúng tôi.
Hãy mở tập lệnh trên trình duyệt và chọn đúng cổng nơi dongle được kết nối.
Đây là cách bạn có thể thu thập Dữ liệu cảm biến nhiệt độ độ ẩm SHT85 với STM32 & Bluetooth năng lượng thấp. Tập lệnh web có sẵn trên thư mục tập lệnh web của kho lưu trữ GitHub.