Cov txheej txheem:

Lub tsev qiv ntawv rau BMP280 thiab BME280: 7 Cov Kauj Ruam
Lub tsev qiv ntawv rau BMP280 thiab BME280: 7 Cov Kauj Ruam

Video: Lub tsev qiv ntawv rau BMP280 thiab BME280: 7 Cov Kauj Ruam

Video: Lub tsev qiv ntawv rau BMP280 thiab BME280: 7 Cov Kauj Ruam
Video: Rau (6) Qhov Kev Koom Tes Nrog Koj Tus Menyuam Lub Tsev Kawm Ntawv 2024, Hlis ntuj nqeg
Anonim
Lub tsev qiv ntawv rau BMP280 thiab BME280
Lub tsev qiv ntawv rau BMP280 thiab BME280
Lub tsev qiv ntawv rau BMP280 thiab BME280
Lub tsev qiv ntawv rau BMP280 thiab BME280
Lub tsev qiv ntawv rau BMP280 thiab BME280
Lub tsev qiv ntawv rau BMP280 thiab BME280

Taw qhia

Kuv tsis tau teem tawm los sau lub tsev qiv ntawv no. Nws "tshwm sim" raws li qhov tshwm sim ntawm qhov haujlwm kuv tau pib uas siv BMP280. Txoj haujlwm ntawd tseem tsis tau tiav, tab sis kuv xav tias lub tsev qiv ntawv npaj los qhia rau lwm tus. Tom qab ntawd kuv xav tau siv BME280, uas ntxiv ntsuas cov av noo rau qhov ntsuas thiab ntsuas kub ntawm BMP280. BME280 yog "rov qab -sib xws" nrog BMP280 - uas yog, txhua qhov sau npe thiab cov kauj ruam xav tau los nyeem qhov ntsuas thiab ntsuas kub los ntawm BME280 yog tib yam li cov uas siv rau BMP280. Muaj cov ntawv sau npe ntxiv thiab cov kauj ruam xav tau los nyeem cov av noo, siv rau BME280 nkaus xwb. Qhov no tsa cov lus nug, ib lub tsev qiv ntawv rau ob qho, lossis ob lub tsev qiv ntawv sib cais. Cov cuab yeej kho vajtse rau ob hom cuab yeej sib pauv tau. Txawm hais tias ntau ntawm cov qauv raug muag (piv txwv li ntawm Ebay thiab AliExpress) tau sau tias BME/P280. Txhawm rau nrhiav seb nws yog hom twg, koj yuav tsum saib (sau me me) sau ntawm lub ntsuas nws tus kheej, lossis kuaj lub cuab yeej ID byte. Kuv txiav txim siab mus rau ib lub tsev qiv ntawv. Nws zoo li tau ua tiav OK.

Kev tawm tswv yim, tshwj xeeb yog cov lus qhia rau kev txhim kho, yuav zoo siab.

Cov tsev qiv ntawv thiab lub peev xwm

Lub tsev qiv ntawv yog ib feem ntawm software uas muab Daim Ntawv Thov Kev Sib Tham (API) rau tus programmer kom siv lub peev xwm ntawm lub cuab yeej, tsis tas yuav tsum tau ua nrog txhua qhov ua tau zoo. Qhov xav tau, API yuav tsum yooj yim rau tus pib nrog qhov yooj yim xav tau kom pib, thaum muab rau kev siv tag nrho ntawm cov cuab yeej muaj peev xwm. Qhov xav tau lub tsev qiv ntawv yuav tsum ua raws ib qho kev qhia tshwj xeeb los ntawm cov chaw tsim khoom, nrog rau kev siv software zoo. Kuv tau ua haujlwm kom ua tiav txhua yam no. Thaum pib tawm nrog BMP280, Kuv pom 3 lub tsev qiv ntawv sib txawv rau nws: Adafruit_BMP280; Pom_BMP280; thiab ib qho hu ua BMP280 los ntawm cov chaw tsim khoom siv. Tsis yog Adafruit lossis Pom Pom tau muab lub peev xwm txuas ntxiv, txawm hais tias lawv ua haujlwm tau zoo thiab yooj yim siv rau cov ntawv thov yooj yim. Kuv tsis tuaj yeem txiav txim siab peb yuav siv ib qho twg uas tsim los ntawm cov chaw tsim khoom siv (Bosch Sensortec). Qhov no yuav yog kuv qhov tsis txaus, ntau dua li lawv. Txawm li cas los xij lub tsev qiv ntawv nyuaj ntau dua li ob qho ntxiv, kuv tsis tuaj yeem pom cov lus qhia lossis piv txwv ntawm kev siv (tom qab kuv pom cov piv txwv nyob hauv cov ntawv "bmp280_support.c", txawm li cas los xij cov no tsis tau pab tshwj xeeb rau kuv).

Raws li qhov tshwm sim ntawm cov xwm txheej no, Kuv txiav txim siab sau kuv lub tsev qiv ntawv rau BMP280.

Saib mus rau hauv lub tsev qiv ntawv xwm txheej rau BME280, Kuv pom cais cov tsev qiv ntawv Adafruit_BME280, Seed_BME280 thiab lwm qhov BME280_MOD-1022 sau los ntawm Embedded Adventures. Tsis muaj leej twg ua ke ua haujlwm rau BMP280 hauv lub tsev qiv ntawv muaj peev xwm siv BME280. Tsis muaj leej twg hais meej txhawb lub peev xwm ntawm cov cuab yeej khaws ob peb yam ntawm cov ntaub ntawv thaum lub cuab yeej thiab nws tswj hwm microprocessor tau tsaug zog (qhov peev xwm no tau pom tseeb hauv cov ntawv teev tseg thiab txhawb nqa hauv lub tsev qiv ntawv kuv tau sau thiab piav qhia ntawm no).

Lub tsev qiv ntawv sib koom ua ke yuav tsum muaj kev txhawb nqa rau txhua lub peev xwm ntawm BME280, tab sis thaum siv nrog BMP280 nws yuav tsum tsis txhob siv ib qho nyiaj siv ua haujlwm los ntawm cov haujlwm tsis siv. Cov txiaj ntsig ntawm cov tsev qiv ntawv ua ke suav nrog tsawg dua cov tsev qiv ntawv cov ntaub ntawv los tswj, yooj yim sib xyaw thiab sib phim ntawm cov cuab yeej sib txawv hauv tib txoj haujlwm, thiab hloov pauv yooj yim rau kev saib xyuas lossis hloov kho tshiab uas tsuas yog yuav tsum ua tiav hauv ib qho ntau dua li ob qho. Cov no yog tej zaum txhua yam me me, txawm tias tsis tseem ceeb, tab sis …

Lub peev xwm ntaus ntawv

BMP280 thiab BME280 yog cov khoom siv saum npoo av txog 5mm square thiab 1 mm siab. Muaj 8 qhov sib cuam tshuam, suav nrog 2 cais cov khoom siv fais fab thiab ob daim av. Lawv muaj nyob ntawm eBay raws li tus qauv uas muaj 4 lossis 6 tus pin coj tawm. Tus lej 4-tus pin muaj qhov chaw nyob ruaj khov I2C thiab tsis tuaj yeem teeb tsa los siv SPI raws tu qauv.

Tus lej 6-tus lej lossis cov cuab yeej siv tau tuaj yeem siv nrog I2C lossis SPI cov txheej txheem. Hauv I2C hom nws tuaj yeem muaj ob qhov chaw sib txawv, ua tiav los ntawm kev txuas SDO tus pin rau hauv av (rau qhov chaw nyob = 0x76) lossis rau Vdd (rau chaw nyob +1 = 0x77). Hauv SPI hom nws muaj kev npaj ib txwm ntawm 1 teev, 2 cov ntaub ntawv (ib qho rau txhua qhov kev taw qhia) thiab cov cuab yeej xaiv tus pin (CS).

Lub tsev qiv ntawv kuv tau sau thiab piav qhia ntawm no tsuas yog txhawb nqa I2C. Adafruit_BMP280 thiab BME_MOD-1022 cov tsev qiv ntawv muaj kev txhawb nqa rau i2C thiab SPI.

Lub tsev qiv ntawv tuaj yeem rub tawm ntawm no:

github.com/farmerkeith/BMP280-library

Kauj ruam 1: Teeb Kho Vajtse

Teeb Kho Vajtse
Teeb Kho Vajtse

Ua ntej lub tsev qiv ntawv tuaj yeem muaj txiaj ntsig nws yog qhov tsim nyog los txuas lub microcontroller rau BMP280 (lossis ob ntawm lawv yog tias koj xav tau).

Kuv siv WeMos D1 mini pro, yog li kuv yuav qhia nws cov kev sib txuas. Lwm lub microcontrollers yuav zoo ib yam, koj tsuas yog xav tau SDA thiab SCL tus pin txuas kom raug.

Hauv qhov WeMos D1 mini pro, kev sib txuas yog:

Muaj nuj nqi WeMos tus pin BMP280 tus lej Sau

SDA D2 SDA SCL D1 SCL Vdd 3V3 Vin Nominal 3.3V Av GND Chaw nyob tswj SDO Av lossis Vdd I2C xaiv CSB Vdd (GND xaiv SPI)

Nco ntsoov tias tus pin SDO ntawm qee qhov ntawm MP280 tus qauv tau sau SDD, thiab Vdd tus pin tuaj yeem sau npe VCC. Nco tseg: SDA thiab SCL kab yuav tsum muaj cov rub tawm ntawm cov kab thiab Vin tus pin. Feem ntau tus nqi ntawm 4.7K yuav tsum yog. Qee qhov BMP280 thiab BME280 cov qauv muaj 10K rub tawm cov neeg tawm tsam suav nrog hauv tus qauv (uas tsis yog kev coj ua zoo, txij li tso ntau yam khoom siv ntawm I2C npav tuaj yeem thauj nws ntau dhau). Txawm li cas los xij siv 2 BME/P280 modules txhua tus nrog 10K tus tiv thaiv yuav tsum tsis muaj teeb meem hauv kev xyaum tsuav yog tsis muaj ntau lwm yam khoom siv ntawm tib lub npav tseem nrog rub tawm cov neeg tawm tsam.

Thaum koj muaj lub khoos phis tawj txuas nrog, koj tuaj yeem tshawb xyuas yooj yim seb koj lub cuab yeej yog BMP280 lossis BME280 los ntawm kev kos duab I2CScan_ID uas koj tuaj yeem pom ntawm no:

Koj tseem tuaj yeem tshawb xyuas seb koj puas muaj BMP280 lossis BME280 los ntawm kev saib lub cuab yeej nws tus kheej. Kuv pom tias nws tsim nyog siv lub tshuab tsom me me los ua qhov no, tab sis yog tias koj lub qhov muag pom tau zoo heev koj yuav tuaj yeem ua nws yam tsis muaj kev pab. Muaj ob kab ntawm kev luam ntawv ntawm lub casing ntawm lub cuab yeej. Qhov tseem ceeb yog thawj tsab ntawv ntawm kab thib ob, uas yog BMP280 cov cuab yeej yog "K" thiab thaum siv BME280 cov cuab yeej yog "U".

Kauj Ruam 2: APIs Muab los ntawm Lub Tsev Qiv Ntawv

APIs Muab los ntawm Lub Tsev Qiv Ntawv
APIs Muab los ntawm Lub Tsev Qiv Ntawv
APIs Muab los ntawm Lub Tsev Qiv Ntawv
APIs Muab los ntawm Lub Tsev Qiv Ntawv

Xws li lub tsev qiv ntawv hauv daim duab

Lub tsev qiv ntawv suav nrog cov duab kos hauv tus txheej txheem siv cov lus hais

#suav nrog "farmerkeith_BMP280.h"

Cov lus no yuav tsum tau suav nrog hauv qhov pib ntawm qhov kos duab ua ntej pib teeb tsa () muaj nuj nqi.

Tsim BME lossis BMP cov khoom software

Muaj 3 qib rau kev tsim cov khoom BMP280 software. Qhov yooj yim tshaj plaws tsuas yog

bme280 objectName; lossis bmp280 objectName;

Piv txwv, BMP280 bmp0;

Qhov no tsim cov khoom siv software nrog qhov chaw nyob tsis raug ntawm 0x76 (piv txwv li rau SDO txuas nrog hauv av).

Qib tom ntej rau kev tsim BME280 lossis BMP280 cov khoom siv software muaj qhov ntsuas ntawm 0 lossis 1, raws li hauv qab no:

bme280 objectNameA (0);

bmp280 objectNameB (1);

Qhov ntsuas (0 lossis 1) raug ntxiv rau I2C qhov chaw nyob, yog li ob lub BME280 lossis BMP280 cov cuab yeej tuaj yeem siv tau ntawm tib lub tsheb npav I2C (suav nrog ib qho ntawm txhua tus).

Qib peb rau kev tsim BME lossis BMP280 cov khoom siv software muaj ob qhov ntsuas. Thawj qhov ntsuas, uas yog 0 lossis 1, yog rau qhov chaw nyob, zoo li rooj plaub dhau los. Qhov ntsuas thib ob tswj kev debug luam ntawv. Yog tias nws tau teeb tsa rau 1, txhua qhov kev sib pauv nrog cov khoom siv software ua rau Serial.print tso tawm uas ua rau tus programmer pom cov ntsiab lus ntawm kev sib pauv. Piv txwv li:

bmp280 objectNameB (1, 1);

Yog tias qhov debug luam ntawv qhov ntsuas tau teeb tsa rau 0, cov khoom siv software hloov mus rau tus cwj pwm ib txwm muaj (tsis muaj luam ntawv).

Cov lus no lossis cov lus yuav tsum tau suav nrog tom qab #suav nrog thiab ua ntej teeb tsa () ua haujlwm.

Pib ua BME lossis BMP cov khoom software

Ua ntej yuav siv, nws yog qhov yuav tsum tau nyeem qhov ntsuas ntsuas los ntawm lub cuab yeej, thiab teeb tsa nws rau yam kev ntsuas twg, kev tshuaj xyuas ntau dhau, thiab lim cov chaw tsim nyog.

Rau qhov yooj yim, lub hom phiaj pib ua ntej, nqe lus yog:

objectName.begin ();

Qhov pib ntawm no () nyeem cov ntsuas ntsuas los ntawm lub cuab yeej thiab teeb tsa osrs_t = 7 (ntsuas kub 16), osrs_p = 7 (ntsuas ntsuas 16), hom = 3 (txuas ntxiv, Ib txwm), t_sb = 0 (0.5 ms pw ntawm ntsuas ntsuas), lim = 0 (K = 1, yog li tsis muaj lim) thiab spiw_en = 0 (SPI xiam oob qhab, yog li siv I2C). Hauv qhov xwm txheej ntawm BME280, muaj qhov ntsuas ntxiv osrs_h = 7 rau 16 ntsuas cov av noo.

Muaj lwm qhov pib ntawm () uas siv tag nrho rau (lossis 7) tsis. Qhov sib npaug ntawm nqe lus saum toj no yog

objectName.begin (7, 7, 3, 0, 0, 0); // osrs_t, osrs_p, hom, t_sb, lim, spiw_en

lossis objectName.begin (7, 7, 3, 0, 0, 0, 7); // osrs_t, osrs_p, hom, t_sb, lim, spiw_en, osrs_h

Daim ntawv teev tag nrho cov lej thiab lawv lub ntsiab lus yog hauv BME280 thiab BMP280 cov ntaub ntawv, thiab tseem nyob hauv cov lus pom hauv.cpp cov ntaub ntawv hauv lub tsev qiv ntawv.

Yooj yim ntsuas kub thiab ntsuas siab

Txhawm rau ntsuas qhov ntsuas kub qhov yooj yim tshaj plaws yog

kub ob npaug = objectName.readTemperature (); // ntsuas kub

Txhawm rau ntsuas lub siab ntsuas txoj hauv kev yooj yim tshaj plaws yog

ob npaug siab = objectName.readPressure (); // ntsuas siab

Txhawm rau kom ntsuas cov av noo qhov yooj yim tshaj plaws yog

ob npaug av noo = objectName.readHumidity (); // ntsuas cov av noo (BME280 nkaus xwb)

Txhawm rau kom tau txais ob qhov kub thiab siab ob nqe lus saum toj no tuaj yeem siv ib qho tom qab ib qho, tab sis muaj lwm txoj hauv kev, uas yog:

kub ob npaug;

ob npaug siab = objectName.readPressure (kub); // ntsuas siab thiab kub

Cov lus no nyeem cov ntaub ntawv los ntawm BME280 lossis BMP280 ntaus ntawv ib zaug xwb, thiab rov qab ob qho tib si kub thiab siab. Qhov no yog qhov siv me me ntawm I2C npav thiab ua kom ntseeg tau tias ob qhov kev nyeem tau sib xws rau tib lub voj voog ntsuas.

Rau BME 280, ib nqe lus ua ke uas tau txais tag nrho peb qhov tseem ceeb (av noo, kub thiab siab) yog:

ob npaug kub, siab; ob npaug av noo = objectName.readHumidity (kub, siab); // ntsuas cov av noo, siab thiab kub

Cov lus no nyeem cov ntaub ntawv los ntawm BMP280 lub cuab yeej tsuas yog ib zaug, thiab rov qab los tag nrho peb qhov txiaj ntsig. Qhov no yog qhov siv me me ntawm I2C npav thiab ua kom ntseeg tau tias peb qhov kev nyeem ntawv sib raug rau tib lub voj voog ntsuas. Nco ntsoov tias cov npe ntawm qhov hloov pauv tuaj yeem hloov pauv rau txhua yam uas tus neeg siv nyiam, tab sis lawv qhov kev txiav txim tau tsau - kub tuaj ua ntej, thiab siab tuaj thib ob.

Cov xwm txheej siv no tau hais hauv qhov piv txwv piv txwv muab nrog lub tsev qiv ntawv, ua kom yooj yimTemperature.ino, basicPressure.ino, basicHumidity.ino, basicTemperatureAndPressure.ino thiab basicHumidityAndTemperatureAndPressure.ino.

Ntau qhov ntsuas kub thiab ntsuas siab

Txawm hais tias cov kab lus saum toj no yuav ua haujlwm yam tsis muaj teeb meem, muaj ob peb qhov teeb meem:

  1. lub cuab yeej ua haujlwm tsis tu ncua, thiab yog li ntawd tau siv lub zog ntawm nws qib siab tshaj plaws. Yog tias lub zog tuaj ntawm lub roj teeb, nws yuav tsim nyog txo qhov no.
  2. vim lub zog siv, lub cuab yeej yuav sov dua, thiab yog li ntsuas qhov ntsuas yuav siab dua qhov ntsuas kub ib puag ncig. Kuv yuav npog qhov no ntxiv hauv qib tom ntej.

Qhov tshwm sim uas siv lub zog tsawg dua, thiab muab qhov ntsuas kub uas ze dua rau ib puag ncig, tuaj yeem tau txais los ntawm kev siv pib () nrog cov ntsuas uas ua rau nws tsaug zog (piv txwv li hom = 0). Piv txwv li:

objectName.begin (1, 1, 0, 0, 0, 0 [, 1]); // osrs_t, osrs_p, hom, t_sb, lim, spiw_en [, osrs_h]

Tom qab ntawd, thaum ntsuas qhov xav tau, tsa lub cuab yeej nrog teeb tsa kev hais kom ua rau npe F2 (yog tias xav tau) thiab F4 uas teeb tsa qhov tsim nyog ntawm osrs_h, osrs_t thiab osrs_p, ntxiv rau hom = 1 (hom txhaj tshuaj nkaus xwb). Piv txwv li:

[objectName.updateF2Control (1);] // osrs_h - yeej tsis xav tau rau BMP280, // thiab tsis xav tau rau BME280 yog tias Tsis muaj kev ntsuas tsis raug hloov // los ntawm tus nqi muab hauv pib (). objectName.updateF4Control (1, 1, 1); // osrs_t, osrs_p, ua

Thaum woken lub cuab yeej, nws yuav pib ntsuas, tab sis qhov txiaj ntsig yuav tsis muaj rau qee lub milliseconds - tsawg kawg 4 ms, tej zaum mus txog 70 ms lossis ntau dua, nyob ntawm tus lej ntsuas uas tau teev tseg. Yog tias nyeem cov lus txib tam sim ntawd, lub cuab yeej yuav rov qab qhov txiaj ntsig los ntawm kev ntsuas yav dhau los - uas tej zaum yuav siv tau hauv qee qhov ntawv thov, tab sis feem ntau nws yuav zoo dua los ncua kom txog thaum ntsuas qhov tshiab muaj.

Qhov kev ncua no tuaj yeem ua tiav hauv ntau txoj hauv kev.

  1. tos sijhawm tas sijhawm kom npog qhov kev cia siab tshaj plaws
  2. tos ntau lub sijhawm suav los ntawm lub sijhawm ntsuas siab tshaj plaws ntawm qhov ntsuas (piv txwv li 2.3ms) lub sijhawm tus lej ntsuas, ntxiv rau cov nyiaj siv ua haujlwm, ntxiv rau cov paj tau paj.
  3. tos lub sijhawm luv luv xam raws li saum toj no, tab sis siv lub sijhawm ntsuas lub npe (piv txwv li 2 ms) ntxiv rau cov nyiaj siv ua haujlwm, thiab tom qab ntawd pib tshuaj xyuas qhov "Kuv tab tom ntsuas" me ntsis hauv qhov xwm txheej sau npe. Thaum cov xwm txheej me ntsis nyeem 0 (piv txwv li, tsis ntsuas), tau txais qhov ntsuas kub thiab siab.
  4. tam sim pib txheeb xyuas qhov xwm txheej sau npe, thiab tau txais qhov ntsuas kub thiab siab thaum cov xwm txheej me ntsis nyeem 0,

Kuv yuav qhia qhov piv txwv ntawm ib txoj hauv kev ua qhov no me ntsis tom qab.

Configuration register ua haujlwm

Txhawm rau ua txhua qhov no tshwm sim, peb xav tau ntau yam cuab yeej uas kuv tseem tsis tau qhia. Lawv yog:

byte nyeemRegister (reg)

void updateRegister (reg, tus nqi)

Txhua ntawm cov no muaj ntau cov lus txib los ntawm lub tsev qiv ntawv, uas ua rau software rau kev ua qee yam yooj yim dua.

Piv txwv powerSaverPressureAndTemperature.ino siv txoj hauv kev No. 3. Kab kab ntawv uas ua qhov kev rov xyuas dua yog

thaum (bmp0.readRegister (0xF3) >> 3); // loop untl F3bit 3 == 0

Nco ntsoov tias daim duab no yog rau ESP8266 microcontroller. Kuv siv WeMos D1 mini pro. Daim duab yuav tsis ua haujlwm nrog Atmega microcontrollers, uas muaj cov lus qhia sib txawv rau kev tsaug zog. Qhov kos duab no ua ob peb lwm cov lus txib, yog li kuv yuav qhia txhua tus ntawm lawv ua ntej piav qhia qhov kos duab ntawd kom ntxaws.

Thaum lub microcontoller tau pw tsaug zog ua ke nrog BMP280 sensor, kev teeb tsa ntawm lub ntsuas cua rau qhov ntsuas xav tau tuaj yeem ua tiav thaum pib () hais kom ua, siv 6 qhov ntsuas. Txawm li cas los xij yog tias lub microcontroller tsis tsaug zog, tab sis lub ntsuas cua yog, tom qab ntawd thaum lub sijhawm ntsuas lub ntsuas yuav tsum tau sawv thiab qhia nws qhov ntsuas ntsuas. Qhov no tuaj yeem ua ncaj qha nrog

updateRegister (reg, tus nqi)

tab sis yooj yim me ntsis nrog peb cov lus txib hauv qab no:

updateF2Control (osrs_h); // BME280 xwb

updateF4Control (osrs_t, osrs_p, hom); updateF5Config (t_sb, lim, spi3W_en);

Tom qab ntsuas ntsuas tiav, yog tias hom siv yog txhaj ib leeg (Hom yuam), tom qab ntawv lub cuab yeej yuav rov qab mus pw. Txawm li cas los xij, yog qhov ntsuas ntsuas cuam tshuam nrog ntau qhov kev ntsuas siv hom tas mus li (Li qub) ces BMP280 yuav tsum tau rov qab pw. Qhov no tuaj yeem ua tiav nrog ib qho ntawm ob qho lus txib hauv qab no:

hloov tshiab F4Control16xSleep ();

updateF4ControlSleep (tus nqi);

Ob qho ntawm no teeb tsa hom khoom rau 00 (piv txwv li hom pw tsaug zog). Txawm li cas los xij thawj zaug teeb tsa osrs_t thiab osrs_p rau 111 (piv txwv li 16 ntsuas) thaum tus thib ob khaws cov qis 6 khoom los ntawm "tus nqi" rau hauv cov khoom 7: 2 ntawm 0xF4 sau npe.

Zoo sib xws cov lus hauv qab no khaws qis rau qhov me me ntawm "tus nqi" rau hauv cov khoom 7: 2 ntawm 0xF5 sau npe.

hloov tshiab F5ConfigSleep (tus nqi);

Kev siv cov lus txib kawg no tso cai khaws cia 12 cov ntaub ntawv hauv BMP280 sau npe F4 thiab F5. Yam tsawg kawg ntawm ESP8266, thaum lub microcontroller sawv los tom qab lub sijhawm pw tsaug zog, nws pib thaum pib ntawm daim duab tsis paub txog nws lub xeev ua ntej pw tsaug zog hais kom ua. Txhawm rau khaws kev paub ntawm nws lub xeev ua ntej kev pw tsaug zog hais kom ua, cov ntaub ntawv tuaj yeem khaws cia hauv flash nco, siv EEPROM ua haujlwm lossis sau cov ntawv siv SPIFFS. Txawm li cas los xij lub cim xeeb nyem muaj qhov txwv ntawm tus naj npawb ntawm kev sau mus, ntawm qhov kev txiav txim ntawm 10, 000 txog 100, 000. Qhov no txhais tau tias yog lub microcontroller tab tom hla lub sijhawm pw tsaug zog txhua ob peb feeb, nws tuaj yeem tshaj qhov tso cai nco sau txwv hauv ob peb lub hlis. Khaws ob peb qho ntawm cov ntaub ntawv hauv BMP280 tsis muaj qhov txwv li.

Cov ntaub ntawv khaws cia hauv npe F4 thiab F5 tuaj yeem rov qab tau thaum lub microcontroller sawv los siv cov lus txib

readF4Sleep ();

readF5Sleep ();

Cov haujlwm no nyeem cov ntawv sau sib xws, hloov cov ntsiab lus kom tshem 2 LSBs thiab xa rov qab 6 seem ntxiv. Cov haujlwm no tau siv hauv qhov piv txwv kos duab lub zogSaverPressureAndTemperatureESP.ino raws li hauv qab no:

// nyeem tus nqi ntawm EventCounter rov qab los ntawm bmp0

byte bmp0F4value = bmp0.readF4Sleep (); // 0 txog 63 byte bmp0F5value = bmp0.readF5Sleep (); // 0 txog 63 eventCounter = bmp0F5value*64+bmp0F4value; 0 rau 4095

Cov haujlwm no nyeem cov ntawv sau sib xws, hloov cov ntsiab lus kom tshem 2 LSBs thiab xa rov qab 6 seem ntxiv. Cov haujlwm no tau siv hauv qhov piv txwv kos duab powerSaverPressureAndTemperature.ino raws li hauv qab no:

// nyeem tus nqi ntawm EventCounter rov qab los ntawm bmp1

byte bmp1F4value = bmp1.readF4Sleep (); // 0 txog 63 byte bmp1F5value = bmp1.readF5Sleep (); // 0 txog 63 eventCounter = bmp1F5value*64+bmp1F4value; 0 rau 4095

Nyuaj kub thiab siab ua haujlwm

Qhov yooj yim nyeemTemperature, nyeem Siab thiab readHumidity muaj ob ntu. Ua ntej qhov nyoos 20-ntsis qhov kub thiab txias qhov txiaj ntsig tau los ntawm BME/P280, lossis tus nqi nyoos 16-ntsis av noo tau los ntawm BME280. Tom qab ntawd cov txheej txheem kev them nyiaj raug siv los tsim cov txiaj ntsig tso tawm hauv degrees Celsius, hPa lossis %RH.

Lub tsev qiv ntawv muab cov haujlwm sib cais rau cov khoom siv no, yog li tuaj yeem tau txais cov ntaub ntawv ntsuas kub, ntsuas qhov tseeb thiab cov av noo, thiab tej zaum tau siv qee txoj hauv kev. Lub algorithm kom tau txais qhov kub, siab thiab av noo los ntawm cov txiaj ntsig raw no kuj tau muab. Hauv lub tsev qiv ntawv cov txheej txheem no tau ua tiav siv ob qhov ntev ntab cov lej lej. Nws ua haujlwm zoo ntawm ESP8266 uas yog 32-ntsis processor thiab siv 64 ntsis rau "ob npaug" ntab hloov pauv. Ua kom cov haujlwm no nkag tau tuaj yeem yog qhov muaj txiaj ntsig rau kev tshuaj xyuas thiab muaj peev xwm hloov pauv kev suav rau lwm lub platform.

Cov haujlwm no yog:

readRawPressure (rawTemperature); // nyeem cov ntaub ntawv siab thiab ntsuas kub los ntawm BME/P280readRawHumidity (rawTemperature, rawPressure); // nyeem cov av noo, qhov kub thiab txias cov ntaub ntawv los ntawm BME280 calcTemperature (rawTemperature, t_fine); calcPressure (rawPressure, t_fine); calcHumidity (rawHumidity, t_fine)

Kev sib cav "t-fine" rau cov haujlwm no tsim nyog piav me ntsis. Ob qho kev ntsuas siab thiab av noo suav nrog cov ntsuas kub uas ua tiav los ntawm t_fine sib txawv. Kev ua haujlwm calcTemperature sau tus nqi hauv t_fine raws li qhov ntsuas kub ntsuas cov txheej txheem, uas yog tom qab ntawd siv los ua cov tswv yim hauv ob qho tib si calcPressure thiab calcHumidity.

Ib qho piv txwv ntawm kev siv cov haujlwm no tuaj yeem pom hauv qhov piv txwv kos duab rawPressureAndTemperature.ino, thiab tseem nyob hauv txoj cai rau readHumidity () ua haujlwm hauv.cpp cov ntaub ntawv ntawm lub tsev qiv ntawv.

Siab thiab Dej Hiav Txwv Siab

Muaj kev paub txog kev sib raug zoo ntawm huab cua thiab qhov siab. Cov huab cua kuj cuam tshuam rau siab. Thaum cov koom haum huab cua tshaj tawm cov lus qhia txog huab cua, lawv feem ntau hloov kho nws rau qhov siab thiab yog li "daim ntawv qhia kev sib raug zoo" qhia txog isobars (kab ntawm qhov tsis tu ncua) tus qauv txhais tau tias yog theem hiav txwv. Yog li tiag tiag muaj 3 qhov tseem ceeb hauv kev sib raug zoo no, thiab kev paub ob ntawm lawv ua rau muaj txiaj ntsig ntawm tus thib peb. 3 qhov tseem ceeb yog:

  • qhov siab tshaj saum hiav txwv
  • huab cua siab tiag tiag ntawm qhov siab
  • huab cua sib npaug ntawm qib hiav txwv (nruj dua, txhais tau tias qib hiav txwv, vim tias tam sim ntawd hiav txwv hloov pauv tas li)

Lub tsev qiv ntawv no muab ob txoj haujlwm rau kev sib raug zoo no, raws li hauv qab no:

calcAltitude (siab, hiav txwvLevelhPa);

calcNormalised Pressureure (siab, qhov siab);

Kuj tseem muaj qhov hloov pauv yooj yim, uas kwv yees tus txheej txheem dej hiav txwv siab ntawm 1013.15 hPa.

calcAltitude (siab); // standard seaLevelPressure xav tias

Kauj Ruam 3: BMP280 Ntaus Cov Lus Qhia

BMP280 Ntaus Cov Lus Qhia
BMP280 Ntaus Cov Lus Qhia

Muaj peev xwm kho vajtse

BMP280 muaj 2 bytes ntawm cov ntaub ntawv teeb tsa (ntawm chaw nyob 0xF4 thiab 0xF5) uas yog siv los tswj ntau qhov ntsuas thiab cov ntaub ntawv tso tawm xaiv. Nws kuj tseem muab 2 cov khoom ntawm cov ntaub ntawv xwm txheej, thiab 24 bytes ntawm cov ntsuas ntsuas uas tau siv los hloov pauv qhov kub nyoos thiab ntsuas qhov ntsuas mus rau qhov ntsuas kub thiab ntsuas siab. BME280 muaj cov ntaub ntawv ntxiv raws li hauv qab no:

  • 1 ntxiv byte ntawm cov ntaub ntawv teeb tsa ntawm chaw nyob 0xF2 siv los tswj kev ntsuas ntau yam av noo;
  • 8 ntxiv bytes ntawm cov ntsuas ntsuas ntsuas siv hauv kev hloov pauv cov av noo cov nqi mus rau qhov feem pua ntawm cov txheeb ze txheeb ze.

Qhov ntsuas kub, siab thiab xwm txheej rau npe rau BME280 zoo ib yam rau BMP280 nrog qhov tshwj xeeb me me raws li hauv qab no:

  • "ID" cov khoom ntawm BME280 tau teeb tsa rau 0x60, yog li nws tuaj yeem sib txawv ntawm BMP280 uas yuav yog 0x56, 0x57 lossis 0x58
  • tswj lub sijhawm pw tsaug zog (t_sb) tau hloov pauv kom ob lub sijhawm ntev hauv BMP280 (2000 ms thiab 4000 ms) raug hloov pauv hauv BME280 nrog lub sijhawm luv ntawm 10 ms thiab 20 ms. Lub sijhawm pw ntau tshaj hauv BME280 yog 1000 ms.
  • Hauv BME280 qhov kub thiab txias qhov ntsuas qhov ib txwm yog 20 ntsis yog tias siv cov lim. Kev siv ntawm 16 txog 19 qhov txiaj ntsig me me yog txwv rau cov xwm txheej uas tsis muaj kev lim dej (piv txwv li lim = 0).

Kub thiab siab yog txhua qhov 20 ntsis qhov tseem ceeb, uas yuav tsum tau hloov pauv mus rau qhov ntsuas kub thiab siab dhau ntawm qhov txheej txheem nyuaj uas siv 3 16 ntsis ntsuas ntsuas ntsuas kub, thiab 9 16 ntsis ntsuas ntsuas ntxiv rau qhov ntsuas kub. Qhov ntsuas ntawm qhov ntsuas kub yog 0.0003 degrees Celsius rau qhov hloov pauv me ntsis (20 ntsis nyeem), nce mus rau 0.0046 degrees Celsius yog tias siv 16 ntsis nyeem.

Vaum yog 16 tus nqi me ntsis uas yuav tsum tau hloov pauv mus rau qhov txheeb ze cov av noo los ntawm lwm qhov txheej txheem nyuaj siv 6 qhov ntsuas tsis ntsuas uas yog sib xyaw ntawm 8, 12 thiab 16 khoom.

Cov ntaub ntawv qhia pom qhov tseeb ntawm qhov ntsuas kub li +-0.5 C ntawm 25 C thiab +-1 C hla qhov 0 txog 65 C.

Qhov ntau ntawm qhov ntsuas siab yog 0.15 Pascals (piv txwv li 0.0015 hectoPascals) ntawm 20 qhov kev daws teeb meem, lossis 2.5 Pascals ntawm 16 ntsis daws teeb meem. Cov txiaj ntsig siab nyoos cuam tshuam los ntawm qhov kub, yog li ntawm 25C, nce qhov kub ntawm 1 degree C txo qhov ntsuas siab los ntawm 24 Pascals. Kev ntsuas qhov kub thiab txias tau suav nrog hauv qhov ntsuas ntsuas, yog li qhov ntsuas qhov ntsuas siab yuav tsum yog qhov sib txawv ntawm qhov kub thiab txias.

Cov ntaub ntawv qhia pom qhov tseeb ntawm kev nyeem siab li +-1 hPa rau qhov kub thiab txias ntawm 0 C thiab 65 C.

Qhov tseeb ntawm cov av noo tau muab rau hauv cov ntaub ntawv xws li +-3% RH, thiab +-1% hysteresis.

Nws ua haujlwm li cas

24 bytes ntawm cov ntaub ntawv ntsuas kub thiab ntsuas siab, thiab tseem nyob hauv qhov xwm txheej ntawm BME280 8 bytes ntawm cov av noo ntsuas ntsuas cov ntaub ntawv, yuav tsum tau nyeem los ntawm lub cuab yeej thiab khaws cia hauv qhov sib txawv. Cov ntaub ntawv no tau teeb tsa tus kheej rau hauv lub cuab yeej hauv lub Hoobkas, yog li cov cuab yeej sib txawv muaj qhov sib txawv - yam tsawg kawg rau qee qhov kev ntsuas. BME/P280 tuaj yeem nyob hauv ib ntawm ob lub xeev. Hauv ib lub xeev nws yog ntsuas. Hauv lwm lub xeev nws tseem tos (tsaug zog).

Lub xeev twg nws tuaj yeem tshawb xyuas los ntawm saib me ntsis 3 ntawm kev sau npe 0xF3.

Cov txiaj ntsig ntawm qhov ntsuas ntsuas tshiab tshaj plaws tuaj yeem tau txais txhua lub sijhawm los ntawm kev nyeem cov ntaub ntawv sib xws tus nqi, tsis hais seb lub cuab yeej tsaug zog lossis ntsuas.

Kuj tseem muaj ob txoj hauv kev los ua haujlwm BME/P280. Ib qho yog Nruam hom (hu ua Normal mode in the data sheet) uas tau rov ua dua ntawm Kev Xeem thiab Lub Xeev tsaug zog. Hauv hom no lub cuab yeej ua cov ntsuas ntsuas, tom qab ntawd mus pw, tom qab sawv los rau lwm qhov kev ntsuas, thiab ntxiv rau. Tus naj npawb ntawm kev ntsuas tus kheej thiab lub sijhawm pw tsaug zog ib feem ntawm lub voj voog tuaj yeem tswj tau los ntawm kev teeb tsa cov npe.

Lwm txoj hauv kev los ua haujlwm BME/P280 yog hom txhaj tshuaj ib leeg (hu ua Hom yuam nyob hauv cov ntaub ntawv). Hauv hom no lub cuab yeej tau tsim los ntawm kev tsaug zog los ntawm kev hais kom ntsuas, nws ntsuas cov ntsuas, tom qab ntawd rov qab mus pw. Tus naj npawb ntawm kev ntsuas tus kheej hauv txheej yog tswj hwm hauv cov lus txib teeb tsa uas tsa lub cuab yeej.

Hauv BMP280, yog tias ntsuas ib leeg, 16 qhov tseem ceeb tshaj plaws hauv tus nqi tau suav nrog, thiab plaub qhov tseem ceeb me ntsis hauv tus nqi nyeem yog txhua tus zeros. Tus lej ntsuas tuaj yeem teev rau 1, 2, 4, 8 lossis 16 thiab raws li tus lej ntsuas tau nce, tus naj npawb ntawm cov neeg nyob nrog cov ntaub ntawv nce ntxiv, yog li nrog 16 ntsuas txhua 20 khoom yog suav nrog cov ntaub ntawv ntsuas. Cov ntaub ntawv hais txog cov txheej txheem no yog kev tshuaj xyuas ntau.

Hauv BME280, tib txoj kev npaj siv tau ntev li qhov txiaj ntsig tsis raug lim. Yog tias siv cov lim dej, qhov txiaj ntsig ib txwm yog 20 khoom, tsis hais txog pes tsawg qhov kev ntsuas raug ntsuas hauv txhua qhov ntsuas ntsuas.

Txhua qhov ntsuas tus kheej yuav siv li 2 milliseconds (tus nqi raug; tus nqi siab tshaj yog 2.3 ms). Ntxiv rau qhov no ua haujlwm ruaj khov ntawm kwv yees li 2 ms (feem ntau tsawg dua) txhais tau tias kev ntsuas ib ntu, uas tuaj yeem suav nrog los ntawm 1 txog 32 tus neeg ntsuas, tuaj yeem siv los ntawm 4 ms txog 66 ms.

Cov ntaub ntawv muab cov txheej txheem pom zoo ua ke ntawm qhov kub thiab txias siab rau ntau yam kev siv.

Kev teeb tsa tswj kev sau npe

Ob qhov kev teeb tsa tswj kev sau npe hauv BMP280 yog nyob ntawm chaw sau npe 0xF4 thiab 0xF5, thiab tau teeb tsa mus rau 6 tus kheej kev teeb tsa tswj tus nqi. 0xF4 muaj:

  • 3 khoom osrs_t (ntsuas kub 0, 1, 2, 4, 8 lossis 16 zaug);
  • 3 khoom osrs_p (ntsuas siab 0, 1, 2, 4, 8 lossis 16 zaug); thiab
  • 2 khoom hom (Pw tsaug zog, yuam (piv txwv li txhaj ib zaug), Ib txwm (piv txwv li txuas ntxiv).

0xF5 muaj:

  • 3 khoom t_sb (sijhawm tos, 0.5ms txog 4000 ms);
  • 3 khoom lim (saib hauv qab); thiab
  • 1 ntsis spiw_en uas xaiv SPI lossis I2C.

Cov lim dej ntsuas tswj ib hom txheej txheem kev nthuav tawm kev puas tsuaj, lossis Infinite Impulse Response (IIR) lim, siv rau lub siab nyoos thiab ntsuas qhov ntsuas kub (tab sis tsis yog rau qhov ntsuas qhov av noo). Qhov sib npaug yog muab rau hauv cov ntaub ntawv. Lwm qhov kev nthuav qhia yog:

Tus nqi (n) = Tus nqi (n-1) * (K-1) / K + ntsuas (n) / K

qhov twg (n) qhia qhov ntsuas tam sim no thiab tus nqi tso tawm tam sim no; thiab K yog lub lim lim. Cov lim lim K thiab tuaj yeem teeb tsa rau 1, 2, 4, 8 lossis 16. Yog K tau teeb tsa rau 1 qhov sib npaug tsuas yog dhau los Tus nqi (n) = ntsuas (n). Lub coding ntawm lim lim yog:

  • lim = 000, K = 1
  • lim = 001, K = 2
  • lim = 010, K = 4
  • lim = 011, K = 8
  • lim = 1xx, K = 16

BME 280 ntxiv kev teeb tsa kev tswj hwm ntxiv rau npe chaw nyob 0xF2, "ctrl_hum" nrog rau ib qho 3-ntsis ntsuas osrs_h (ntsuas cov av noo 0, 1, 2, 4, 8 lossis 16 zaug).

Kauj Ruam 4: Kev Ntsuas thiab Sijhawm Nyeem Ntawv

Kuv npaj yuav ntxiv qhov no tom qab, qhia lub sijhawm ntawm cov lus txib thiab ntsuas cov lus teb.

Iddt - tam sim no ntsuas kub. Raug nqi 325 uA

Iddp - tam sim no ntawm kev ntsuas siab. Tus nqi raug 720 uA, max 1120 uA

Iddsb - tam sim no hauv hom tos. Tus nqi raug 0.2 uA, max 0.5 uA

Iddsl - tam sim no hauv hom pw tsaug zog. Tus nqi raug 0.1 uA, max 0.3 uA

Kauj Ruam 5: Cov Txheej Txheem Software

Cov txheej txheem Software
Cov txheej txheem Software
Cov txheej txheem Software
Cov txheej txheem Software

I2C Burst hom

Daim ntawv BMP280 muab cov lus qhia txog kev nyeem cov ntaub ntawv (ntu 3.9). Nws hais tias nws tau pom zoo kom siv cov ntawv tawg thiab tsis hais txog txhua qhov kev sau npe ib tus zuj zus. Tsis muaj lus qhia qhia txog kev nyeem cov nyiaj them poob haujlwm/ntsuas ntsuas. Tej zaum cov no tsis yog qhov teeb meem vim tias lawv zoo li qub thiab tsis hloov pauv.

Lub tsev qiv ntawv no nyeem tag nrho cov txiaj ntsig sib xws hauv kev nyeem ib zaug - 24 bytes thaum ntsuas qhov ntsuas kub thiab ntsuas siab, 6 bytes rau qhov kub thiab txias ua ke, thiab 8 bytes rau cov av noo, kub thiab siab ua ke. Thaum ntsuas kub ib leeg, tsuas yog nyeem 3 bytes xwb.

Kev siv macros (#define thiab lwm yam)

Tsis muaj macros hauv lub tsev qiv ntawv no dua li lub tsev qiv ntawv ib txwm "suav nrog tus saib xyuas" macro uas tiv thaiv kev rov ua dua.

Txhua qhov xwm txheej tau piav qhia siv lub ntsiab lus tseem ceeb, thiab kev debug luam ntawv yog tswj nrog tus qauv C ua haujlwm.

Nws tau yog lub hauv paus ntawm qee qhov tsis paub tseeb rau kuv, tab sis cov lus qhia uas kuv tau txais los ntawm kev nyeem ntau cov ncauj lus ntawm cov ncauj lus no yog siv #define rau kev tshaj tawm qhov tsis tu ncua (tsawg kawg) thiab (tej zaum) debug luam ntawv tswj yog qhov tsis tsim nyog thiab tsis xav tau.

Cov ntaub ntawv rau kev siv const ntau dua li #define yog qhov zoo nkauj - const siv cov peev txheej ib yam li #define (piv txwv li nil) thiab qhov txiaj ntsig tshwm sim ua raws txoj cai ntsuas, yog li txo txoj hauv kev yuam kev.

Cov ntaub ntawv rau kev debug luam ntawv kev tswj hwm yog qhov tsis meej me ntsis, vim tias txoj kev uas kuv tau ua nws txhais tau tias cov lej kawg muaj cov laj thawj rau kev debug luam tawm cov lus, txawm tias lawv tsis tau siv dua los. Yog tias lub tsev qiv ntawv yuav tsum tau siv hauv txoj haujlwm loj ntawm lub microcontroller nrog lub cim xeeb tsawg, qhov no yuav dhau los ua qhov teeb meem. Txij li thaum kuv txoj kev txhim kho nyob ntawm ESP8266 nrog lub cim xeeb loj, qhov no tsis zoo li yog teeb meem rau kuv.

Kauj Ruam 6: Kev Ua Haujlwm Kub

Kuv npaj yuav ntxiv qhov no tom qab.

Kauj Ruam 7: Kev Ua Haujlwm Siab

Kuv npaj yuav ntxiv qhov no tom qab.

Pom zoo: