Mục lục:
Video: Photon hạt - Hướng dẫn sử dụng cảm biến đo độ cao chính xác MPL3115A2: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
MPL3115A2 sử dụng cảm biến áp suất MEMS với giao diện I2C để cung cấp dữ liệu Áp suất / Độ cao và Nhiệt độ chính xác. Các đầu ra cảm biến được số hóa bằng ADC 24-bit có độ phân giải cao. Xử lý nội bộ loại bỏ các nhiệm vụ bồi thường khỏi hệ thống MCU chủ. Nó có khả năng phát hiện sự thay đổi chỉ 0,05 kPa tương đương với sự thay đổi độ cao 0,3m. Đây là phần trình diễn của nó với hạt photon.
Bước 1: Những gì bạn cần.. !
1. Photon hạt
2. MPL3115A2
3. Cáp I²C
4. Tấm chắn I²C cho Photon hạt
Bước 2: Kết nối:
Lấy một tấm chắn I2C cho photon hạt và nhẹ nhàng đẩy nó qua các chốt của photon hạt.
Sau đó kết nối một đầu của cáp I2C với cảm biến MPL3115A2 và đầu kia với tấm chắn I2C.
Các kết nối được hiển thị trong hình trên.
Bước 3: Mã:
Mã hạt cho MPL3115A2 có thể được tải xuống từ kho lưu trữ Github-DCUBE Store của chúng tôi.
Đây là liên kết.
Chúng tôi đã sử dụng hai thư viện cho mã hạt, đó là application.h và spark_wiring_i2c.h. Thư viện Spark_wiring_i2c được yêu cầu để tạo điều kiện giao tiếp I2C với cảm biến.
Bạn cũng có thể sao chép mã từ đây, nó được đưa ra như sau:
// Được phân phối với một giấy phép tự do.
// Sử dụng nó theo bất kỳ cách nào bạn muốn, lợi nhuận hoặc miễn phí, miễn là nó phù hợp với giấy phép của các tác phẩm liên quan.
// MPL3115A2
// Mã này được thiết kế để hoạt động với Mô-đun Mini MPL3115A2_I2CS I2C
#bao gồm
#bao gồm
// MPL3115A2 Địa chỉ I2C là 0x60 (96)
#define Addr 0x60
phao cTemp = 0.0, fTemp = 0.0, áp suất = 0.0, độ cao = 0.0;
int temp = 0, tHeight = 0; long pres = 0;
void setup ()
{
// Đặt biến
Particle.variable ("i2cdevice", "MPL3115A2");
Particle.variable ("cTemp", cTemp);
Particle.variable ("áp suất", áp suất);
Particle.variable ("độ cao", độ cao);
// Khởi tạo giao tiếp I2C
Wire.begin ();
// Giao tiếp nối tiếp khởi tạo, đặt tốc độ truyền = 9600
Serial.begin (9600);
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Chọn thanh ghi điều khiển
Wire.write (0x26);
// Chế độ hoạt động, OSR = 128, chế độ đo độ cao
Wire.write (0xB9);
// Dừng truyền I2C
Wire.endTransmission ();
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Chọn thanh ghi cấu hình dữ liệu
Wire.write (0x13);
// Sự kiện sẵn sàng dữ liệu được bật cho độ cao, áp suất, nhiệt độ
Wire.write (0x07);
// Dừng truyền I2C
Wire.endTransmission ();
chậm trễ (300);
}
void loop ()
{
dữ liệu int không dấu [6];
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Chọn thanh ghi điều khiển
Wire.write (0x26);
// Chế độ hoạt động, OSR = 128, chế độ đo độ cao
Wire.write (0xB9);
// Dừng truyền I2C
Wire.endTransmission ();
chậm trễ (1000);
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Chọn thanh ghi dữ liệu
Wire.write (0x00);
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 6 byte dữ liệu
Wire.requestFrom (Addr, 6);
// Đọc 6 byte dữ liệu từ địa chỉ 0x00 (00)
// trạng thái, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
if (Wire.available () == 6)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
data [4] = Wire.read ();
data [5] = Wire.read ();
}
// Chuyển đổi dữ liệu thành 20 bit
tHeight = ((((dài) data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);
temp = ((dữ liệu [4] * 256) + (dữ liệu [5] & 0xF0)) / 16;
độ cao = tHeight / 16,0;
cTemp = (temp / 16.0);
fTemp = cTemp * 1.8 + 32;
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Chọn thanh ghi điều khiển
Wire.write (0x26);
// Chế độ hoạt động, OSR = 128, chế độ phong vũ biểu
Wire.write (0x39);
// Dừng truyền I2C
Wire.endTransmission ();
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Chọn thanh ghi dữ liệu
Wire.write (0x00);
// Dừng truyền I2C
Wire.endTransmission ();
chậm trễ (1000);
// Yêu cầu 4 byte dữ liệu
Wire.requestFrom (Addr, 4);
// Đọc 4 byte dữ liệu
// trạng thái, msb1 đặt trước, msb đặt trước, lsb đặt trước
if (Wire.available () == 4)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
}
// Chuyển đổi dữ liệu thành 20 bit
pres = (((dài) data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16;
áp suất = (đặt trước / 4.0) / 1000.0;
// Xuất dữ liệu ra bảng điều khiển
Particle.publish ("Độ cao:", String (độ cao));
Particle.publish ("Áp suất:", String (áp suất));
Particle.publish ("Nhiệt độ tính bằng C:", String (cTemp));
Particle.publish ("Nhiệt độ tính bằng F:", String (fTemp));
chậm trễ (1000);
}
Bước 4: Ứng dụng:
Các ứng dụng khác nhau của MPL3115A2 bao gồm Đo độ chính xác cao, Điện thoại thông minh / Máy tính bảng, Đo độ cao điện tử cá nhân, v.v. Nó cũng có thể được kết hợp trong GPS Dead Reckoning, Tăng cường GPS cho Dịch vụ Khẩn cấp, Hỗ trợ Bản đồ, Điều hướng cũng như Thiết bị Trạm Thời tiết.
Đề xuất:
Đồng hồ đo điện áp chính xác & chính xác Arduino (0-90V DC): 3 bước
Đồng hồ đo điện áp chính xác & chính xác Arduino (0-90V DC): Trong tài liệu hướng dẫn này, tôi đã chế tạo một vôn kế để đo điện áp cao DC (0-90v) với độ chính xác và độ chính xác tương đối bằng cách sử dụng Arduino Nano. Các phép đo thử nghiệm tôi đã thực hiện đủ chính xác, chủ yếu là trong khoảng 0,3v so với điện áp thực được đo bằng
Xúc xắc điện tử - Arduino Die / xúc xắc 1 đến 6 Xúc xắc + D4, D5, D8, D10, D12, D20, D24 và D30: 6 bước (có Hình ảnh)
Xúc xắc điện tử - Arduino Die / xúc xắc 1 đến 6 Xúc xắc + D4, D5, D8, D10, D12, D20, D24 và D30: Đây là một dự án arduino đơn giản để tạo ra một con xúc xắc điện tử. Có thể chọn cho 1 đến 6 viên xúc xắc hoặc 1 trong 8 viên xúc xắc đặc biệt. Lựa chọn được thực hiện đơn giản bằng cách xoay một bộ mã hóa quay. Đây là các tính năng: 1 xúc xắc: hiển thị các chấm lớn 2-6 xúc xắc: hiển thị các chấm
Cảm biến giao diện, SPS-30, Cảm biến vật chất dạng hạt với Arduino Duemilanove sử dụng chế độ I2C: 5 bước
Cảm biến giao diện, SPS-30, Cảm biến vật chất hạt với Arduino Duemilanove Sử dụng chế độ I2C: Khi tôi đang xem xét các cảm biến giao tiếp SPS30, tôi nhận ra rằng hầu hết các nguồn đều dành cho Raspberry Pi nhưng không nhiều cho Arduino. Tôi dành một ít thời gian để làm cho cảm biến hoạt động với Arduino và tôi quyết định đăng trải nghiệm của mình ở đây để nó có thể
Cách tạo cảm biến tốc độ dòng khí chính xác với Arduino với giá dưới £ 20 COVID-19 Quạt thông gió: 7 bước
Cách tạo cảm biến tốc độ dòng khí chính xác với Arduino với giá dưới £ 20 COVID-19 Quạt thông gió: Vui lòng xem báo cáo này để biết thiết kế mới nhất của cảm biến lưu lượng lỗ này: https://drive.google.com/file/d/1TB7rhnxQ6q6C1cNb.
TỰ LÀM CẢM BIẾN ĐỘ ẨM ĐẤT RẺ CỰC CHÍNH XÁC !: 4 bước
TỰ LÀM CẢM BIẾN ĐỘ ẨM ĐẤT GIÁ RẺ CÒN CHÍNH XÁC !: Tôi là một người yêu thích thực vật và là người yêu công nghệ. Gần đây tôi quyết định trồng một số loại cây trên ban công của mình. Tôi quyết định tự động hóa hệ thống tưới nước vì tôi có thể quên tưới nước cho chúng, tôi không muốn có bất kỳ cơ hội nào với những cây hoa xinh đẹp của mình. vì vậy quyết định lấy đất