Phong vũ biểu với các chức năng tiên tiến. Máy đo độ cao khí áp đơn giản nhất dựa trên Arduino

BMP085 là cảm biến theo dõi áp suất khí quyển (ngoài ra còn theo dõi nhiệt độ).

Cảm biến này được sử dụng trong nhiều dự án, bao gồm cả những dự án sử dụng Arduino, vì nó thực tế không có cảm biến tương tự. Ngoài ra, nó cũng không tốn kém. Câu hỏi đầu tiên được đặt ra là: tại sao người ta lại đo áp suất khí quyển? Có hai lý do cho việc này. Đầu tiên là kiểm soát độ cao so với mực nước biển. Khi độ cao tăng lên, áp suất giảm xuống. Rất thuận tiện khi đi bộ đường dài, thay thế cho thiết bị định vị GPS. Ngoài ra, áp suất khí quyển còn được sử dụng để dự báo thời tiết.

BMP085 đã từng được thay thế bằng cảm biến BMP180, cảm biến này kết nối với Arduino và các bộ vi điều khiển khác theo cách tương tự như phiên bản tiền nhiệm của nó, nhưng nhỏ hơn và chi phí thấp hơn.

Đặc tính kỹ thuật của BMP085

  • Phạm vi độ nhạy: 300-1100 hPa (9000 m - 500 m so với mực nước biển);
  • Độ phân giải: 0,03 hPa/0,25 m;
  • Nhiệt độ làm việc-40 đến +85°C, độ chính xác đo nhiệt độ +-2°C;
  • Kết nối qua i2c;
  • V1 trên mô-đun sử dụng nguồn điện 3,3V và nguồn logic;
  • V2 trên mô-đun sử dụng nguồn 3,3-5V và nguồn logic;

Sau khi khởi động lại Arduino IDE, bạn có thể chạy bản phác thảo mẫu đầu tiên, mã của nó được đưa ra bên dưới:

#include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_BMP085_U.h>

Adafbean_BMP085_Unified bmp = Adafbean_BMP085_Unified(10085);

thiết lập void(void)

Serial.begin(9600);

Serial.println("Kiểm tra cảm biến áp suất"); Serial.println("");

/*Khởi tạo cảm biến */

if(!bmp.begin())

/* Nếu xuất hiện thông báo: "Đã xảy ra sự cố khi phát hiện BMP085 ...",

Kiểm tra xem cảm biến đã được kết nối đúng chưa */

Serial.print("Rất tiếc, không phát hiện thấy BMP085 ... Kiểm tra hệ thống dây điện hoặc I2C ADDR của bạn!");

sự kiện cảm biến_event_t;

bmp.getEvent(&event);

/* hiển thị kết quả (áp suất khí quyển được đo bằng hPa) */

nếu (sự kiện.áp lực)

/* Hiển thị áp suất khí quyển theo hPa */

Serial.print("Áp suất: "); Serial.print(event.áp lực); Serial.println("hPa");

Mở cửa sổ màn hình nối tiếp (tốc độ truyền - 9600). Bản phác thảo của chúng ta sẽ xuất ra dữ liệu áp suất tính bằng hPa (ha). Bạn có thể kiểm tra chức năng của cảm biến bằng cách nhấn ngón tay lên cảm biến. Hình vẽ hiển thị các giá trị áp suất sau khi nhấn bằng ngón tay.


Đo độ cao so với mực nước biển

Bạn có thể biết rằng áp suất giảm khi độ cao tăng lên. Nghĩa là, chúng ta có thể tính chiều cao khi biết áp suất và nhiệt độ. Một lần nữa, chúng ta sẽ bỏ lại toán học ở hậu trường. Nếu bạn quan tâm đến các phép tính, bạn có thể xem chúng trên trang Wikipedia này.

Trong ví dụ dưới đây, thư viện Arduino bổ sung sẽ được sử dụng. Để tính chiều cao bằng cảm biến BMP085, hãy cập nhật hàm "void loop()". Sự thay đổi cần thiết bản phác thảo được đưa ra trong bản phác thảo dưới đây. Kết quả là bạn sẽ nhận được giá trị nhiệt độ dựa trên mức áp suất và giá trị nhiệt độ.

/*tạo sự kiện mới cho cảm biến */

sự kiện cảm biến_event_t;

bmp.getEvent(&event);

/* hiển thị kết quả (áp suất khí quyển tính bằng hPa) */

nếu (sự kiện.áp lực)

/*hiển thị áp suất khí quyển theo hPa */

Serial.print("Áp suất: ");

Serial.print(event.áp lực);

Serial.println("hPa");

/* để tính chiều cao với độ chính xác nhất định, bạn cần biết *

* áp suất trung bình và nhiệt độ môi trường xung quanh

*tính theo độ C tại thời điểm lấy kết quả*

* nếu bạn không có dữ liệu này, bạn có thể sử dụng "giá trị mặc định"

* bằng 1013,25 hPa (giá trị này được xác định là

*SENSORS_PRESSURE_SEALEVELHPA*

* trong tệp cảm biến.h). Nhưng kết quả sẽ không chính xác*

*giá trị bắt buộc có thể được tìm thấy trên các trang web có dự báo nhiệt độ*

* hoặc trên tài nguyên trung tâm thông tin tại các sân bay lớn*

*ví dụ: đối với Paris, Pháp, bạn có thể tìm thấy giá trị áp suất trung bình hiện tại*

*qua trang web: http://bit.ly/16Au8ol */

/* lấy giá trị nhiệt độ hiện tại từ cảm biến BMP085 */

nhiệt độ nổi;

bmp.getTem Nhiệt độ(&nhiệt độ);

Serial.print("Nhiệt độ: ");

Serial.print(nhiệt độ);

Serial.println("C");

/*chuyển đổi dữ liệu nhận được sang chiều cao */

/* cập nhật hàng tiếp theo, hiển thị các giá trị hiện tại */

phao biểnLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;

Serial.print("Độ cao: ");

Serial.print(bmp. PressureToAltitude(seaLevelPressure,

Serial.println("m");

Serial.println("");

Serial.println("Lỗi cảm biến");

Chúng tôi chạy bản phác thảo và xem độ cao được tính toán trên mực nước biển.

Độ chính xác của số đọc BMP085 có thể được tăng lên đáng kể bằng cách chỉ định giá trị áp suất trung bình, giá trị này thay đổi tùy theo thời tiết. Cứ 1 hPa áp suất mà chúng ta không tính đến sẽ dẫn đến sai số 8,5 mét!

Hình dưới đây hiển thị các giá trị áp suất từ ​​một trong các nguồn thông tin của sân bay Châu Âu. Màu vàng giá trị áp suất được đánh dấu, chúng ta có thể sử dụng giá trị này để làm rõ kết quả.


Hãy thay đổi dòng sau trong bản phác thảo của chúng ta, viết vào đó giá trị hiện tại (1009 hPa):

phao biểnLevelÁp lực = 1009;

Kết quả là chúng ta sẽ nhận được kết quả hơi khác một chút:

Mẹo: khi bạn chỉ định áp suất, đừng quên chuyển đổi dữ liệu được sử dụng sang hPa.

Sử dụng BMP085 (API v1)

Chúng ta hãy nhắc lại một lần nữa: để tìm ra áp suất và độ cao so với mực nước biển, chúng ta cần thực hiện một số phép tính. Nhưng tất cả chúng đều đã có trong Thư viện Arduino Adafruit_BMP085 (API v1), có thể tải xuống từ liên kết.

Sau khi cài đặt các thư viện, bạn cần khởi động lại Arduino IDE

Sau khi khởi động lại, bạn có thể chạy bản phác thảo ví dụ đầu tiên:

#include <Wire.h>

Adaf nhung_BMP085 bmp;

Serial.begin(9600);

Serial.println(" *C");

Serial.print("Áp suất = ");

Serial.println("Pa");

Serial.println();

Sau khi flash Arduino của bạn, hãy mở màn hình nối tiếp. Đặt tốc độ baud thành 9600. Bản phác thảo sẽ xuất ra nhiệt độ tính bằng độ C và áp suất tính bằng pascal. Nếu bạn đặt ngón tay lên phần cảm biến của cảm biến, nhiệt độ và áp suất sẽ tăng lên:


Đo độ cao (API v1)

Để kiểm soát độ cao so với mực nước biển, chỉ cần chạy bản phác thảo bên dưới:

#include <Wire.h>

#include <Adafruit_BMP085.h>

Adaf nhung_BMP085 bmp;

Serial.begin(9600);

Serial.print("Nhiệt độ = ");

Serial.print(bmp.readTem Nhiệt độ());

Serial.println(" *C");

Serial.print("Áp suất = ");

Serial.print(bmp.readPressure());

Serial.println("Pa");

// tính độ cao so với mực nước biển dựa trên các giá trị

// áp suất khí quyển "tiêu chuẩn" bằng 1013,25 millibar = 101325 Pascal

Serial.print("Độ cao = ");

Serial.print(bmp.readAltitude());

Serial.println("mét");

Serial.println();

Chạy sketch để hiển thị kết quả:


Đánh giá theo các thông số ở trên, chúng ta đang ở độ cao -21,5 mét so với mực nước biển. Nhưng chúng tôi biết rằng chúng tôi đang ở trên biển! Chúng tôi nhớ lại vấn đề tương tự như với sử dụng API V2. Chúng ta phải tính đến thời tiết! ĐƯỢC RỒI. Giả sử chúng ta tìm thấy một trang web về thời tiết tốt và áp suất là 101,964 Pa. Mở ví dụ Ví dụ->BMP085test trong Arduino IDE và chỉnh sửa dòng được tô sáng trong hình bên dưới:


Tại dòng này bạn cần nhập dữ liệu áp suất hiện tại. Sau lần ra mắt mới, bạn sẽ thấy rằng dữ liệu đã thay đổi đáng kể và chúng tôi nhận được 29,58 mét có dấu cộng, điều này giống với sự thật hơn nhiều.


Để lại ý kiến, câu hỏi và chia sẻ của bạn kinh nghiệm cá nhân dưới. Những ý tưởng và dự án mới thường được nảy sinh trong các cuộc thảo luận!

Phong vũ biểu là một thiết bị đo áp suất khí quyển. Tức là áp suất không khí đè lên chúng ta từ mọi phía. Từ khi còn đi học, chúng ta đã biết rằng phong vũ biểu đầu tiên là một tấm thủy ngân và một ống nghiệm đảo ngược bên trong. Tác giả của thiết bị này là Evangelista Torricelli, một nhà vật lý và toán học người Ý. Việc lấy số đọc từ phong vũ biểu thủy ngân có thể được lấy đơn giản như số đọc từ nhiệt kế rượu: áp suất bên ngoài bình càng lớn thì cột thủy ngân bên trong nó càng cao. Hơi thủy ngân được biết là có độc tính cao.

Sau đó, một thiết bị an toàn hơn xuất hiện - phong vũ biểu aneroid. Trong phong vũ biểu này, thủy ngân đã được thay thế bằng một hộp tôn làm bằng thiếc mỏng, trong đó tạo ra chân không. Dưới tác động của khí quyển, chiếc hộp co lại và thông qua hệ thống đòn bẩy, mũi tên sẽ quay trên mặt số. Hai phong vũ biểu này trông như thế này. Bên trái là aneroid, bên phải là phong vũ biểu của Torricelli.

Tại sao chúng ta có thể cần một phong vũ biểu? Thông thường, thiết bị này được sử dụng trên máy bay để xác định độ cao chuyến bay. Máy bay càng lên cao so với mực nước biển thì trải nghiệm phong vũ biểu trên tàu càng ít áp lực. Biết được sự phụ thuộc này, dễ dàng xác định được chiều cao.

Một trường hợp sử dụng phổ biến khác là trạm thời tiết tự chế. Trong trường hợp này, chúng ta có thể sử dụng sự phụ thuộc đã biết của thời tiết trong tương lai vào áp suất khí quyển. Ngoài phong vũ biểu, các trạm như vậy còn được trang bị cảm biến độ ẩm và nhiệt độ.

1. Phong vũ biểu điện tử

Chúng ta không thể sử dụng phong vũ biểu cồng kềnh như vậy trong chế tạo robot. Chúng ta cần một thiết bị thu nhỏ và tiết kiệm năng lượng có thể dễ dàng kết nối với cùng một Arduino Uno. Hầu hết các phong vũ biểu hiện đại đều được chế tạo bằng công nghệ MEMS, cũng như con quay hồi chuyển và gia tốc kế. Áp kế MEMS dựa trên phương pháp đo áp điện hoặc đo biến dạng, sử dụng hiệu ứng thay đổi điện trở của vật liệu dưới tác động của lực biến dạng.

Nếu bạn mở vỏ phong vũ biểu MEMS, bạn có thể thấy bộ phận cảm biến (phải), nằm ngay dưới lỗ trên vỏ bảo vệ của thiết bị và bảng điều khiển (trái), thực hiện lọc sơ cấp và chuyển đổi các phép đo .

2. Cảm biến BMP085 và BMP180

Đối với các cảm biến áp suất giá cả phải chăng nhất, thường được sử dụng trong bộ điều khiển chuyến bay và trong các loại thiết bị tự chế khác nhau các thiết bị điện tử, các cảm biến từ BOSH có thể kể đến: BMP085 và BMP180. Phong vũ biểu thứ hai mới hơn nhưng hoàn toàn tương thích với phiên bản cũ.

Một vài đặc điểm quan trọng của BMP180:

  • phạm vi giá trị đo được: từ 300 hPa đến 1100 hPa (từ -500m đến +9000m so với mực nước biển);
  • điện áp cung cấp: từ 3,3 đến 5 Vôn;
    hiện tại: 5 µA ở tốc độ bỏ phiếu - 1 Hertz;
  • Độ ồn: 0,06 hPa (0,5m) ở chế độ năng lượng cực thấp và 0,02 hPa (0,17m) ở chế độ Độ phân giải tối đa(chế độ phân giải nâng cao).

Bây giờ hãy kết nối cảm biến này với bộ điều khiển và thử ước tính áp suất khí quyển.

3. Kết nối BMP180

Cả hai cảm biến đều có giao diện I2C, vì vậy chúng có thể dễ dàng kết nối với bất kỳ nền tảng nào từ dòng Arduino. Đây là giao diện của bảng kết nối Arduino Uno.

BMP 180 GND VCC S.D.A. SCL
Arduino Uno GND +5V A4 A5

Sơ đồ

Giao diện bố cục

4. Chương trình

Để làm việc với cảm biến, chúng ta cần một thư viện: BMP180_Breakout_Arduino_Library

Tải xuống từ kho lưu trữ và cài đặt nó trong Arduino IDE. Bây giờ mọi thứ đã sẵn sàng để viết chương trình đầu tiên của bạn. Hãy thử lấy dữ liệu thô từ cảm biến và xuất nó ra màn hình cổng COM.

#bao gồm #bao gồm Áp suất SFE_BMP180; void setup())( Serial.begin(9600); Pressure.begin(); ) void loop())( double P; P = getPressure(); Serial.println(P, 4); delay(100); ) double getPressure ()( char status; double T,P,p0,a; status = Pressure.startTemperature(); if (status != 0)( // chờ độ trễ đo nhiệt độ(trạng thái); status = áp suất.getTem Nhiệt độ( T); if (trạng thái != 0)( trạng thái = áp suất.startPressure(3); if (trạng thái != 0)( // chờ độ trễ đo áp suất (trạng thái); trạng thái = áp suất.getPressure(P,T); if (trạng thái ! = 0)( return(P); ) ) ) ) )

Quy trình để đạt được áp suất mong muốn từ cảm biến không quá tầm thường và bao gồm nhiều giai đoạn. Ở dạng đơn giản hóa, thuật toán trông như thế này:

  1. chúng tôi yêu cầu phong vũ biểu đọc kết quả từ cảm biến nhiệt độ tích hợp;
  2. thời gian chờ A trong khi cảm biến đánh giá nhiệt độ;
  3. chúng tôi nhận được nhiệt độ;
  4. chúng tôi yêu cầu phong vũ biểu đo áp suất;
  5. thời gian chờ B trong khi cảm biến đánh giá áp suất;
  6. lấy giá trị áp suất;
  7. trả về giá trị áp suất từ ​​hàm.

Thời gian B phụ thuộc vào độ chính xác của phép đo được xác định trong hàm áp lực bắt đầu. Đối số duy nhất của hàm này có thể nhận các giá trị từ 0 đến 3, trong đó 0 là giá trị thô nhất và lớn nhất đánh giá nhanh, 3 là ước tính áp suất chính xác nhất.

Chúng tôi tải chương trình lên Arduino Uno và quan sát luồng đo áp suất khí quyển. Hãy thử nâng cảm biến lên trên đầu của bạn và hạ nó xuống mức sàn. Các bài đọc sẽ thay đổi một chút. Tất cả những gì còn lại là tìm ra cách chúng ta có thể chuyển đổi những con số kỳ lạ này thành độ cao so với mực nước biển.

5. Chuyển đổi áp suất thành độ cao

Cảm biến BMP180 trả về giá trị áp suất tính bằng hectopascal (hPa). Chính trong các đơn vị này, áp suất khí quyển thường được đo. 1 hPa = 100 Pascal. Được biết, ở mực nước biển, áp suất trung bình là 1013 hPa, và mỗi mét tăng thêm trên mực nước biển sẽ làm giảm áp suất này chỉ 0,11 hPa (xấp xỉ).

Vì vậy, nếu chúng ta trừ đi kết quả của hàm nhận được áp lực số đó là 1013 và chia phần chênh lệch còn lại cho 0,11, khi đó chúng ta sẽ có được độ cao so với mực nước biển tính bằng mét. Đây là cách chương trình của chúng tôi sẽ thay đổi:

Void loop())( double P, Alt; P = getPressure(); Alt = (P - 1013)/0.11; Serial.println(Alt, 2); delay(100); )

Trên thực tế, áp suất phụ thuộc phi tuyến tính vào độ cao so với mực nước biển và công thức của chúng tôi chỉ phù hợp với độ cao mà chúng ta thường sống. May mắn thay, nhân loại biết được sự phụ thuộc chính xác hơn của áp lực vào chiều cao mà chúng ta có thể áp dụng để thu được kết quả chính xác hơn.

Ở đây p là áp suất đo được tại một điểm nhất định, p0 là áp suất tương ứng với độ cao được đo.

Thư viện SFE_BMP180 đã có chức năng sử dụng chức năng được chỉ định. công thức để có được chiều cao chính xác. Chúng tôi sử dụng nó trong chương trình của chúng tôi.

#bao gồm #bao gồm Áp suất SFE_BMP180; gấp đôi P0 = 0; void setup())( Serial.begin(9600); Pressure.begin(); P0 = Pressure.getPressure(); ) void loop())( double P, Alt; P = getPressure(); Alt = Pressure.altitude (P ,P0) Serial.println(Alt, 2); delay(100); ) double getPressure()( ... )

Tôi đã không sao chép hoàn toàn hàm getPressure để giữ cho văn bản có thể đọc được.

Một biến khác P0 đã xuất hiện trong chương trình - đây là áp suất mà chúng ta sẽ đo khi bắt đầu chương trình. Trong trường hợp máy bay, P0 sẽ là áp suất tại điểm cất cánh so với nơi chúng ta sẽ bắt đầu leo ​​lên.

6. Hình dung

Bây giờ hãy thử hiển thị số đọc áp suất trong chương trình SFMonitor, và hãy xem áp suất thay đổi như thế nào khi cảm biến di chuyển lên độ cao 2 mét.

Byte const tĩnh PACKET_SIZE = 1; byte const tĩnh VALUE_SIZE = 2; const tĩnh boolean SEPARATE_VALUES = true; #bao gồm #bao gồm #bao gồm Áp suất SFE_BMP180; SerialFlow rd(&Serial); gấp đôi P0 = 0; void setup())( rd.setPacketFormat(VALUE_SIZE, PACKET_SIZE, SEPARATE_VALUES); rd.begin(9600); Pressure.begin(); P0 = getPressure(); ) void loop())( double P; P = getPressure( ); rd.setPacketValue(100+int((P - P0)*100)); rd.sendPacket(); delay(100); ) double getPressure())( ... )

Kết quả của chương trình, chúng ta thu được biểu đồ áp suất trong Pascals:

7. Kết luận

Như chúng ta đã học trong bài, định nghĩa độ cao so với mực nước biển là không giống nhau nhiệm vụ tầm thường. Áp suất không chỉ phụ thuộc phi tuyến vào độ cao mà hình ảnh còn bị ảnh hưởng bởi nhiều yếu tố khác nhau. yếu tố bên ngoài. Ví dụ, áp lực trong nhà chúng ta liên tục thay đổi theo thời gian. Thậm chí trong vài phút, chiều cao mà thiết bị của chúng tôi đo được có thể thay đổi trong khoảng 0,5 - 1 mét. Nhiệt độ cũng ảnh hưởng rất lớn đến chất lượng của phép đo nên khi tính áp suất chúng ta phải tính đến nó.

phi cơ Nên sử dụng cảm biến tăng độ chính xác, chẳng hạn như MS5611. Độ chính xác đo của phong vũ biểu này có thể đạt 0,012 hPa, cao gấp 5 lần so với BMP180. Ngoài ra, tọa độ GPS được sử dụng để làm rõ độ cao khí quyển của chuyến bay.

Chúc may mắn quan sát bầu không khí! 🙂

Chưa bao giờ người ta lại có niềm đam mê với kỹ thuật điện, robot, hệ thống tự động phản ứng và kiểm soát không dễ thực hiện.

Nếu như trước đây đã có những nhà xây dựng chuyên dụng với bộ giới hạn chức năng và nghiêm ngặt tham số đã cho, thì sự đa dạng của các nhà thiết kế ngày nay thật tuyệt vời: thực sự hệ thống vi xử lý, được lắp ráp trên đầu gối, có chức năng gần như không giới hạn. Trí tưởng tượng phong phú, rộng lớn cơ sở nguyên tố, cộng đồng lớn người hâm mộ, kỹ sư và sự hỗ trợ của nhà sản xuất là những cộng đồng chính tính năng đặc biệt bộ dụng cụ robot theo nhu cầu thị trường như vậy.

Một trong số đó và phổ biến nhất, tất nhiên, là Arduino. Trình xây dựng để lắp ráp điện tử ngay lập tức thiết bị tự động bất kỳ mức độ khó khăn: cao, trung bình và thấp. Nền tảng này còn được gọi là “điện toán vật lý” vì sự tương tác chặt chẽ với môi trường. Bảng mạch in với bộ vi xử lý, mở Mã chương trình, giao diện tiêu chuẩn và cảm biến kết nối với Arduino là những thành phần tạo nên sự phổ biến của nó.

Hệ thống là tấm bảng tập hợp mọi thứ lại với nhau thành phần cần thiết, cung cấp một chu kỳ phát triển đầy đủ. Tâm điểm của bảng này là vi điều khiển. Nó cung cấp khả năng kiểm soát tất cả các thiết bị ngoại vi. Các cảm biến được kết nối với hệ thống cho phép hệ thống “giao tiếp” và tương tác với môi trường: phân tích, đánh dấu, thay đổi.

Kết nối cảm biến nhiệt độ, độ ẩm kỹ thuật số

Hai cảm biến phổ biến - DHT11, DHT22 - được thiết kế để đo độ ẩm và nhiệt độ (chúng ta sẽ nói về việc kết nối cảm biến nhiệt độ); giải pháp rẻ tiền, tuyệt vời cho mạch đơn giản và Đào tạo. Điện trở nhiệt, cảm biến điện dung - cơ sở của DHT11 và DHT22. Con chip bên trong thực hiện ADC, cung cấp cho đầu ra một “chữ số” mà bất kỳ bộ vi điều khiển nào cũng có thể hiểu được.

DHT11 khác DHT22 ở dải đo và tần số lấy mẫu: độ ẩm - 20-80% đối với DHT11 và 0-100% đối với DHT22; nhiệt độ - 0°C đến +50°C đối với DHT11 và -40°C đến +125°C đối với DHT22; bỏ phiếu - mỗi giây cho DHT11 và hai giây một lần cho DHT22.

Cả hai cảm biến DHT đều có 4 chân tiêu chuẩn:

  1. Nguồn cấp cho cảm biến.
  2. Xe buýt dữ liệu.
  3. Không liên quan.
  4. Trái đất.

Các chân dữ liệu và nguồn yêu cầu điện trở 10k ohm giữa chúng.

Được thiết kế cho cảm biến DHT thư viện DHT.h(có thể xem tại link). Khi tải bản phác thảo vào bộ điều khiển, màn hình cổng sẽ hiển thị các giá trị hiện tại của độ ẩm và nhiệt độ. Thật dễ dàng để kiểm tra chức năng của nó - chỉ cần hít vào cảm biến và nhấc nó lên: nhiệt độ và độ ẩm sẽ thay đổi.

Có thể hiển thị giá trị trên màn hình LCD 1602 I2C, nếu bạn đưa nó vào hệ thống.

Sử dụng những cảm biến này bạn có thể xây dựng hệ thống tự động tưới đất ngoài trời, trong nhà kính và thậm chí trên bậu cửa sổ. Hoặc tổ chức một hệ thống sấy quả mọng - quả sau được thổi hoặc đun nóng tùy thuộc vào độ ẩm của quả.

Ngoài ra, một số bể thủy sinh yêu cầu điều kiện đặc biệtđộ ẩm, có thể được kiểm soát dễ dàng bằng DHT1 và DHT22.

Thông thường, trong việc dự đoán thời tiết hay xác định độ cao so với mực nước biển cần giải quyết bài toán đo áp suất. Đây là lúc áp kế điện tử dựa trên công nghệ MEMS ra đời: một máy đo biến dạng hoặc phương pháp áp điện liên quan đến sự thay đổi điện trở của thiết bị khi tác dụng lực làm biến dạng vật liệu.

Phổ biến nhất cảm biến BMP085; Ngoài áp suất khí quyển, nó còn ghi lại nhiệt độ. Nó được thay thế bằng BMP180, có các đặc điểm tương tự:

  • Độ nhạy trong phạm vi: 300-1100 hPa (nếu tính bằng mét - 9000 - 500 m so với mực nước biển);
  • Độ phân giải: 0,03 hPa hoặc 0,25 m;
  • Nhiệt độ hoạt động của cảm biến -40 +85°C, độ chính xác đo trong phạm vi chỉ định - ±2°C;
  • Kết nối qua chuẩn i2c;
  • V1 sử dụng 3,3V cho nguồn và logic;
  • V2 sử dụng 3,3-5V cho nguồn và logic.

Kết nối cảm biến với Arduino trong trường hợp này là tiêu chuẩn:

Sẽ cần Trình điều khiển cảm biến hợp nhất- phiên bản cập nhật của nó cung cấp độ chính xác cao hơn cho các bài đọc; Ngoài ra, nó cho phép bạn làm việc đồng thời với nhiều cảm biến áp suất được kết nối khác nhau. Bạn cũng phải cài đặt thư viện Adafrut_Sensor.

Không có của cảm biến này không có hệ thống bảo mật nghiêm túc nào có thể làm được điều này. Cảm biến hồng ngoại - phần tử cơ bản phát hiện sự hiện diện của động vật máu nóng.

Ngoài ra, bằng cách sử dụng cảm biến PIR, việc điều khiển ánh sáng tùy thuộc vào sự hiện diện của người ở gần sẽ cực kỳ thuận tiện. Cảm biến hồng ngoại hoặc nhiệt điện rất đơn giản trong cơ cấu nội bộ và không tốn kém. Chúng cực kỳ đáng tin cậy và hiếm khi thất bại.

Đế cảm biến- chất nhiệt điện hoặc chất điện môi có khả năng tạo ra trường khi nhiệt độ thay đổi. Chúng được lắp đặt theo cặp và được đóng lại phía trên bằng một mái vòm có các đoạn ở dạng thấu kính thông thường hoặc thấu kính Fresnel. Điều này cho phép các chùm tia được tập trung từ các điểm xuyên thấu khác nhau.

Trong trường hợp không có vật phát nhiệt trong phòng, mỗi phần tử có cùng liều bức xạ tới và theo đó, có cùng điện áp ở đầu ra. Khi một động vật máu nóng còn sống đi vào vùng “quan sát” của các cảm biến, sự cân bằng sẽ bị xáo trộn và các xung động sẽ xuất hiện và được ghi lại.

HC-SR501- cảm biến phổ biến và phổ biến nhất. Nó có hai tông đơ biến điện trở: một là để điều chỉnh độ nhạy và kích thước của đối tượng được phát hiện, thứ hai là để điều chỉnh thời gian phản hồi (thời gian tạo xung sau khi phát hiện).

Sơ đồ kết nối là tiêu chuẩn và sẽ không gây ra bất kỳ khó khăn nào.

Mặc dù nhiều cảm biến có chức năng đo nhiệt độ nhưng tốt hơn hết bạn nên sử dụng cảm biến chuyên dụng, riêng biệt. Ví dụ: DS18B20. Đây là một cảm biến tích hợp với giao diện nối tiếp kỹ thuật số.

Điểm mạnh của anh ấy:

  • hiệu chuẩn sơ bộ tại nhà máy;
  • sai số nhỏ hơn 0,5°C;
  • độ phân giải được xác định bằng phần mềm là 0,0625°C ở độ phân giải 12 bit;
  • phạm vi nhiệt độ đo cực kỳ rộng: từ -55°C đến +125°C;
  • cảm biến có ADC tích hợp;
  • Một số cảm biến có thể được bao gồm trong một đường truyền thông.

Thân TO-92- phổ biến nhất cho các cảm biến này. Có hai sơ đồ chính để kết nối cảm biến nhiệt độ DS18B20 với bộ vi xử lý hoặc bộ điều khiển:

Để làm việc với cảm biến, nó phải được khởi tạo. Tiếp theo là viết một byte và đọc một byte.

Ba thao tác này thể hiện cách hoạt động của cảm biến và thư viện OneWire hỗ trợ chúng một cách hoàn hảo. Cài đặt Thư viện OneWire. Sau đó, chúng tôi tải lên bản phác thảo - và môi trường phần mềm sẵn sàng.

Có thể kết nối một số cảm biến DS18B20 - trong trường hợp này chúng phải được kết nối song song. Thư viện OneWire sẽ cho phép bạn đọc các bài đọc từ tất cả chúng cùng một lúc. Với đồng thời một số lượng lớn Khi kết nối cảm biến, bạn phải gắn thêm điện trở 100 hoặc 120 Ohm giữa chân dữ liệu của cảm biến DS18B20 và bus dữ liệu trên Arduino.

kết luận

Kết nối cảm biến với Arduino là sự biến đổi của một robot thuật toán được điều khiển tự động hoặc chế độ thủ công, thành một môi trường chính thức cho sự tương tác của các thiết bị và mạch với môi trường. Đừng quên - đây không phải là thuốc chữa bách bệnh cho mọi bệnh tật. Và không phải là sản phẩm công nghệ cao cuối cùng hay ứng dụng cuối cùng. Arduino là một tổ hợp phần cứng và giải pháp phần mềmđiều này sẽ giúp:

  • hệ thống thuật toán hóa tổng thể dành cho kỹ sư mới vào nghề;
  • nắm vững các kỹ năng thiết kế cơ bản;
  • học lập trình.

Bất kể trình độ đào tạo, kiến ​​​​thức của bạn như thế nào, bạn luôn có thể lựa chọn nhiệm vụ trong khả năng của mình. Bạn có thể đưa ra một giải pháp đơn giản để tự động hóa một số tác vụ đơn giản mà không cần hàn gắn với học sinh; Hoặc bạn có thể đặt ra một nhiệm vụ chung, ngoài kiến ​​​​thức và logic, còn đòi hỏi khả năng hàn, vẽ và đọc bản vẽ một cách hiệu quả và chính xác. Và các cộng đồng, diễn đàn và cơ sở kiến ​​thức tích cực về hệ thống Arduino sẽ giúp giải quyết hầu hết mọi vấn đề.

Giới thiệu

Những gì có thể được hiển thị trên màn hình hai dòng ngoài “Xin chào thế giới!”? Tại sao không hiển thị nhiệt độ, độ ẩm và áp suất?

Các cảm biến được cung cấp dưới dạng hướng dẫn cho arduino (DHT11, DHT22) hiển thị nhiệt độ và độ ẩm không khí. Vì mục đích giáo dục (đối với trường đại học), việc theo dõi áp lực cũng cần thiết. Đương nhiên, bộ có phong vũ biểu, nhưng tại sao không tự xây cho mình một phong vũ biểu? Ngoài ra, bạn có thể tích lũy thêm các bài đọc trong chế độ tự động, và đây là một kinh nghiệm tốt trong việc học arduino.

Bằng cách này hay cách khác, các linh kiện được đặt hàng từ Trung Quốc và thiết bị này đã được lắp ráp.

Thành phần bắt buộc

USB-UART đã được sử dụng để gửi bản phác thảo tới arduino. Bạn cũng có thể sử dụng Raspberry Pi hoặc máy tính có cổng COM.

Sơ đồ kết nối phần mềm và mã chương trình

USB-UART đến từ Trung Quốc kèm theo bộ dây:

Có khá đủ chúng. Tôi để nút nhảy ở mức 3,3 volt, mặc dù thực tế là tôi phiên bản arduino Cung cấp bởi 5 volt.

UART-Arduino
5v - VCC
TXD - RXD
RXD - TXD
GND - GND
CTS - DTR (tùy chọn, không hoạt động với tôi, có lẽ vì điện áp tín hiệu vẫn ở mức 3,3V)

Nếu bạn không kết nối DTR, thì sau khi gửi chương trình cơ sở, arduino cần được khởi động lại bằng nút tích hợp, quá trình trao đổi dữ liệu đang hoạt động sẽ bắt đầu theo cả hai hướng (bằng chứng là đèn LED trên USB-UART), sau khi chương trình cơ sở đã kết nối được tải thành công, nó sẽ tự khởi động lại.

Thư viện bên thứ ba cần thiết:

Bản thân mã, với các nhận xét từ các ví dụ (trong trường hợp ai đó cần thay đổi điều gì đó).

Mã số

#bao gồm #include "SparkFunBME280.h" #include "Wire.h" #include "SPI.h" #include //Đối tượng cảm biến toàn cầu BME280 mySensor; Màn hình LCD LiquidCrystal_I2C(0x3F,16,2); //Địa chỉ hiển thị, trong trường hợp của tôi là 0x3F void setup() ( lcd.init(); lcd.backlight(); //***Cài đặt trình điều khiển****************** ***************// //commInterface có thể là I2C_MODE hoặc SPI_MODE // chỉ định chipSelectPin bằng tên chân arduino // chỉ định địa chỉ I2C. Có thể là 0x77(mặc định) hoặc 0x76 //Dành cho I2C, bật phần sau và tắt phần SPI mySensor.settings.commInterface = I2C_MODE; mySensor.settings.I2CAddress = 0x76; // Địa chỉ cảm biến, trong trường hợp của tôi không chuẩn // Đối với SPI, hãy bật phần sau và vô hiệu hóa phần I2C // mySensor.settings.commInterface = SPI_MODE; //mySensor.settings.chipSelectPin = 10; //***Cài đặt hoạt động*************************** ****// //renMode có thể là: // 0, Chế độ ngủ// 1 hoặc 2, Chế độ cưỡng bức // 3, Chế độ bình thường mySensor.settings.runMode = 3; // Trong ví dụ, họ đề xuất sử dụng Chế độ cưỡng bức, nhưng khi cập nhật mỗi giây một lần, Chế độ bình thường //tStandby có thể là: // 0, 0,5ms // 1, 62,5ms // 2, 125ms // 3, 250ms // 4.500ms // 5.1000ms // 6, 10ms // 7, 20ms mySensor.settings.tStandby = 5; // Rõ ràng, thường thì không cần thiết // bộ lọc có thể tắt hoặc số hệ số FIR sẽ sử dụng: // 0, filter off // 1, hệ số = 2 // 2, hệ số = 4 // 3, hệ số = 8 // 4 , hệ số = 16 mySensor.settings.filter = 0; //tempOverSample có thể là: // 0, bỏ qua // 1 đến 5, lấy mẫu quá mức *1, *2, *4, *8, *16 tương ứng mySensor.settings.tempOverSample = 1; //pressOverSample có thể là: // 0, bỏ qua // 1 đến 5, lấy mẫu quá mức *1, *2, *4, *8, *16 tương ứng mySensor.settings.pressOverSample = 1; //humidOverSample có thể là: // 0, bỏ qua // 1 đến 5, lấy mẫu quá mức *1, *2, *4, *8, *16 tương ứng mySensor.settings.humidOverSample = 1; //Gọi .begin() khiến cài đặt được tải mySensor.begin(); ) void loop() ( //Các chữ cái có thể được hiển thị một lần và sau đó có thể thay đổi số đọc, nhưng số đọc có thể dịch chuyển dòng khi thay đổi số chữ số có nghĩa. lcd.setCursor(0,0); lcd.print( "H="); lcd .print((uint8_t)mySensor.readFloatHumidity()); lcd.print("%"); lcd.print(" T="); lcd.print(mySensor.readTempC()); lcd.setCursor(13,0 ); lcd.print(" P:"); lcd.setCursor(0,1); int mmH=mySensor.readFloatPressure()/133; lcd.print(mmH); lcd.print( "mmH "); lcd.print(mySensor.readFloatPressure()); lcd.setCursor(14,1); lcd.print("Pa"); delay(1000); )


Địa chỉ cảm biến có thể đoán được, chỉ có hai trong số đó.

Bạn có thể xem cách tìm ra địa chỉ màn hình của bạn. Tùy thuộc vào vi mạch, có hai nhãn.

TRONG trong trường hợp này:


Và địa chỉ sẽ là 0x3F vì A0 – A2 mở:

Đèn LED có hình bầu dục có thể được hàn lại tốt hơn.

Sơ đồ kết nối

Điện trở được chọn bằng một nửa điện trở cảm biến (giữa VVC và GND) sao cho điện áp rơi trên nó là 1,7 volt. Mạch cũng có thể được cấp nguồn từ đầu vào RAW, với điện áp khác (ví dụ: từ vương miện).

Ảnh cho thấy, để gọn nhẹ thì các bạn có thể lấy nguồn cho cảm biến và hiển thị từ một chân cắm khác. Bạn cũng có thể thấy một nhánh của một cặp dây màu vàng cam, trên chúng treo một điện trở 100 Ohm để giảm độ sáng của đèn nền (bạn có thể bỏ dây nối nhưng sẽ hại mắt).

Trong trường hợp của tôi, mọi thứ đều được cung cấp bởi cái cũ đơn vị máy tính dinh dưỡng. Có thể được cấp nguồn bằng USB. Tất cả các thành phần đều được dán bằng keo Moment có sẵn trên tay.

Điểm mấu chốt

1602 xuất hiện tại nơi làm việc, được vặn vào bàn, trên đó hiển thị áp suất, độ ẩm, nhiệt độ. Arduino có thể được khởi động lại mà không cần gỡ bỏ nó (có thể nó sẽ trở thành một đường leo).

Cảm biến áp suất khí quyển bmp180, bmp280, bme280 là khách mời thường xuyên trong các dự án kỹ thuật. Chúng có thể được sử dụng để dự đoán thời tiết hoặc đo độ cao so với mực nước biển. Ngày nay, dòng đặc biệt này có thể được gọi là cảm biến phổ biến và rẻ tiền nhất dành cho Arduino. Trong bài viết này chúng tôi sẽ mô tả nguyên lý hoạt động của các cảm biến, sơ đồ kết nối với bảng khác nhau Arduino và đưa ra ví dụ về bản phác thảo lập trình.

Phong vũ biểu là một thiết bị đo áp suất khí quyển. Phong vũ biểu điện tử được sử dụng trong robot và các thiết bị điện tử khác nhau. Các cảm biến áp suất phổ biến nhất và giá cả phải chăng là của BOSH: đây là BMP085, BMP180, BMP280 và các loại khác. Hai cái đầu tiên rất giống nhau, BMP280 là một cảm biến mới hơn và cải tiến hơn.

Cảm biến áp suất hoạt động bằng cách chuyển đổi áp suất thành chuyển động của bộ phận cơ khí. Cảm biến áp suất bao gồm một bộ chuyển đổi với bộ phận nhạy cảm, vỏ, các bộ phận cơ khí (màng chắn, lò xo) và mạch điện tử.

Cảm biến BMP280 được thiết kế đặc biệt cho các ứng dụng yêu cầu kích thước nhỏ và giảm mức tiêu thụ điện năng. Những ứng dụng như vậy bao gồm hệ thống định vị, dự báo thời tiết, chỉ báo tốc độ thẳng đứng và những thứ khác. Cảm biến có độ chính xác cao, độ ổn định và tuyến tính tốt. Đặc tính kỹ thuật của cảm biến BMP280:

  • Kích thước 2 x 2,5 x 0,95 mm.
  • Áp suất 300-1100 hPa;
  • Nhiệt độ từ 0C đến 65C;
  • Hỗ trợ giao diện I2C và SPI;
  • Điện áp nguồn 1,7V – 3,6V;
  • Dòng điện trung bình 2,7 µA;
  • 3 chế độ hoạt động - chế độ ngủ, chế độ FORCED (lấy số đo, đọc giá trị, chuyển sang chế độ ngủ), chế độ BÌNH THƯỜNG (chuyển cảm biến sang hoạt động theo chu kỳ - nghĩa là thiết bị tự động thoát khỏi chế độ ngủ sau một thời gian đã đặt, thực hiện các phép đo, đọc số đọc, lưu các giá trị đo được và quay lại chế độ ngủ).

Cảm biến BMP180 rẻ và dễ sử dụng cảm biến chạm, đo áp suất và nhiệt độ khí quyển. Thường được sử dụng để xác định độ cao và trong các trạm thời tiết. Thiết bị này bao gồm một cảm biến điện trở áp điện, một cảm biến nhiệt độ, một ADC, bộ nhớ không bay hơi, RAM và vi điều khiển.

Đặc tính kỹ thuật của cảm biến BMP180:

  • Giới hạn của áp suất đo được là 225-825 mm Hg. Nghệ thuật.
  • Điện áp nguồn 3,3 – 5V;
  • 0,5mA hiện tại;
  • Hỗ trợ giao diện I2C;
  • Thời gian đáp ứng 4,5ms;
  • Kích thước 15 x 14 mm.

Cảm biến bme280 chứa 3 thiết bị - để đo áp suất, độ ẩm và nhiệt độ. Được thiết kế để tiêu thụ dòng điện thấp, độ tin cậy cao và công việc ổn định lâu dài.

Đặc tính kỹ thuật của cảm biến bme280:

  • Kích thước 2,5 x 2,5 x 0,93 mm;
  • Vỏ LGA kim loại được trang bị 8 đầu ra;
  • Điện áp nguồn 1,7 – 3,6V;
  • Có sẵn giao diện I2C và SPI;
  • Mức tiêu thụ dòng điện dự phòng 0,1 µA.

Nếu bạn so sánh tất cả các thiết bị với nhau thì cảm biến rất giống nhau. So với người tiền nhiệm của nó, bao gồm BMP180, nhiều hơn nữa cảm biến mới BMP280 có kích thước nhỏ hơn đáng kể. Pin tám của nó cơ thể thu nhỏ yêu cầu chăm sóc trong quá trình cài đặt. Thiết bị này cũng hỗ trợ giao diện I2C và SPI, không giống như các thiết bị tiền nhiệm chỉ hỗ trợ I2C. Thực tế không có thay đổi nào về logic hoạt động của cảm biến, chỉ có độ ổn định nhiệt độ được cải thiện và độ phân giải của ADC được tăng lên. Cảm biến BME280 đo nhiệt độ, độ ẩm và áp suất cũng tương tự như BMP280. Sự khác biệt giữa chúng là ở kích thước của vỏ, vì BME280 có cảm biến độ ẩm, giúp tăng kích thước một chút. Số lượng điểm tiếp xúc và vị trí của chúng trên cơ thể là như nhau.

Tùy chọn kết nối cho Arduino

Kết nối cảm biến BMP180 với Arduino. Để kết nối, bạn sẽ cần chính cảm biến BMP180, bo mạch Arduino UNO và dây kết nối. Sơ đồ kết nối được thể hiện trong hình dưới đây.

Nối đất từ ​​Arduino cần nối đất trên cảm biến, điện áp là 3,3 V, SDA là chân A4, SCL là chân A5. Các chân A4 và A5 được chọn dựa trên sự hỗ trợ của chúng cho giao diện I2C. Bản thân cảm biến hoạt động ở điện áp 3,3 V và Arduino hoạt động ở điện áp 5 V, do đó, một bộ ổn định điện áp được lắp đặt trên mô-đun cùng với cảm biến.

Kết nối BMP 280 với Arduino. Sơ đồ chân và mặt trên của bảng được hiển thị trong hình.

Bản thân mô-đun cảm biến áp suất trông như thế này:

Để kết nối với Arduino, bạn cần kết nối các đầu ra như sau: nối đất với Arduino và trên cảm biến, VCC - đến 3,3V, SCL / SCK - với chân analog A5, SDA / SDI - với A4.

Kết nối cảm biến BME280. Vị trí các điểm tiếp xúc và sơ đồ chân của cảm biến BME280 giống với vị trí của BMP280.

Vì cảm biến có thể hoạt động thông qua I2C và SPI nên kết nối có thể được thực hiện bằng hai phương pháp.

Khi kết nối qua I2C, bạn cần kết nối chân SDA và SCL.

Khi kết nối qua SPI, bạn cần kết nối SCL từ mô-đun và SCK (chân thứ 13 trên Arduino), SDO từ mô-đun đến chân 12 của Arduino, SDA với chân 11, CSB (CS) với bất kỳ chân kỹ thuật số nào, trong trường hợp này là chân 10 trên Arduino. Trong cả hai trường hợp, điện áp được kết nối với 3,3V trên Arduino.

Mô tả thư viện để làm việc với cảm biến. Ví dụ phác thảo

Để làm việc với cảm biến BMP180, có nhiều thư viện khác nhau giúp đơn giản hóa công việc. Chúng bao gồm SFE_BMP180, Adafbean_BMP085. Các thư viện tương tự phù hợp để làm việc với cảm biến BMP080. Cảm biến bmp280 sử dụng thư viện tương tự, Adafruit_BMP280.

Bản phác thảo thử nghiệm đầu tiên sẽ làm cho cảm biến đọc được áp suất và nhiệt độ. Mã phù hợp cho cả cảm biến BMP180 và BMP280, bạn chỉ cần kết nối đúng thư viện và chỉ định chính xác các liên hệ mà mô-đun được kết nối. Trước hết, bạn cần kết nối tất cả các thư viện trong mã và khởi tạo hoạt động của cảm biến. Để xác định áp suất, trước tiên bạn phải biết nhiệt độ. Với mục đích này nó được sử dụng phần tử tiếp theo mã số.

Status = Pressure.startTemperature(); // Đọc dữ liệu nhiệt độ từ cảm biến if(status!=0)( delay(status); // Trạng thái chờ = Pressure.getTemperature(T); // Lưu dữ liệu nhiệt độ nhận được if( status !=0)( Serial.print("Temperature: "); // Hiển thị từ "Nhiệt độ" Serial.print(T,2); // Hiển thị giá trị nhiệt độ. Serial.println("deg C, "); // In ký hiệu độ C.

Sau đó, bạn cần có được thông tin về áp suất khí quyển.

Trạng thái = áp lực.startPressure(3); // áp suất được đọc if(status!=0)( delay(status); // Trạng thái chờ = Pressure.getPressure(P,T); // áp suất được nhận, lưu if(status!=0)( Serial.print ("Áp suất tuyệt đối: "); // Hiển thị dòng chữ "Áp suất khí quyển" Serial.print(P,2); // Hiển thị giá trị của biến mBar Serial.print(" mbar, "); // Hiển thị văn bản " mBar" Serial.print(P*0.7500637554192,2); // hiển thị giá trị tính bằng mmHg (mmHg) Serial.println(" mmHg");) // hiển thị đơn vị áp suất "mmHg" " (mmHg.).

Sau khi tải bản phác thảo, dữ liệu về nhiệt độ và áp suất khí quyển sẽ xuất hiện trong cửa sổ giám sát cổng.

Cảm biến BME280 còn hiển thị áp suất và nhiệt độ, ngoài ra nó còn có thể đọc các chỉ số về độ ẩm, tính năng này mặc định bị tắt. Nếu cần, bạn có thể điều chỉnh cảm biến và bắt đầu đọc chỉ số độ ẩm. Phạm vi đo từ 0 đến 100%. Thư viện cần thiết để làm việc với cảm biến có tên là Adafruit_BME280.

Mã tương tự như mã được mô tả ở trên, chỉ có các dòng được thêm vào để xác định độ ẩm.

Void printValues() ( Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println(" C"); //xác định nhiệt độ, hiển thị trên màn hình theo độ C. Serial.print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.println(" hPa"); //xác định áp suất, hiển thị ra màn hình Serial.print("Humidity = "); Serial.print(bme.readHumidity()); Serial.println(" %"); //xác định độ ẩm theo phần trăm, hiển thị giá trị đo được trên màn hình. Serial.println(); )

Các lỗi kết nối có thể xảy ra và cách loại bỏ chúng

Lỗi phổ biến nhất là dữ liệu không chính xác về áp suất và nhiệt độ, khác nhau nhiều bậc so với giá trị thực. Lý do cho điều này thường xuyên nhất là kết nối không chính xác– ví dụ: thư viện nói rằng nó cần được kết nối qua I2C, nhưng cảm biến được kết nối qua SPI.

Ngoài ra, khi sử dụng cảm biến “Trung Quốc”, bạn có thể gặp phải các địa chỉ I2C hoặc SPI không chuẩn. Trong trường hợp này, bạn nên quét tất cả các thiết bị được kết nối bằng một trong các bản phác thảo phổ biến và tìm ra địa chỉ nào mà cảm biến áp suất của bạn phản hồi.

Một vấn đề khác có thể là sự khác biệt giữa điện áp hoạt động của mô-đun và điện áp cơ bản của bộ điều khiển đang được sử dụng. Vì vậy, để làm việc với cảm biến 3,3 V, bạn sẽ cần tạo một bộ chia điện áp hoặc sử dụng một trong các mô-đun khớp mức làm sẵn hiện có. Nhân tiện, các mô-đun như vậy khá rẻ và người mới bắt đầu nên sử dụng chúng.

Những sai lệch nhỏ so với giá trị thực tế có thể là do hiệu chuẩn cảm biến. Ví dụ: đối với cảm biến BMP180, tất cả dữ liệu được tính toán và chỉ định trong bản phác thảo. Để có được giá trị độ cao chính xác hơn, bạn cần biết áp suất hiện tại trên mực nước biển đối với các tọa độ này.

Phần kết luận

Cảm biến áp suất khí quyển bmp180, bmp280 không phải là loại cảm biến rẻ nhất, nhưng trong nhiều trường hợp thực tế không có lựa chọn thay thế nào cho các cảm biến như vậy. Trong dự án trạm thời tiết, cảm biến ghi lại tham số quan trọng– áp suất khí quyển, giúp dự đoán thời tiết. Trong các dự án liên quan đến việc chế tạo phương tiện bay, phong vũ biểu được sử dụng làm cảm biến đo độ cao thực so với mực nước biển.

Việc kết nối các cảm biến không gặp bất kỳ khó khăn nào, bởi vì kết nối i2C hoặc SPI tiêu chuẩn được sử dụng. Để lập trình, bạn có thể sử dụng một trong những cái làm sẵn.