Meteostanica s Nucleo Board
Zo stránky SensorWiki
Balogh: * výborne opísané senzory, tak som si to predstavoval * výstup vlastne neviem aký by z toho mal byť * dokumentácia je zrejme nedokončená
Autori: | Kamila Vavríková, Martin Herceg | |
Študijný odbor: | Aplikovaná mechatronika a elektromobilita | 1. Ing. (2018) |
Zadanie
Využitím dosky X. MEMS Inertial Nucleo board zostavte Meteostanicu, ktorá bude merať teplotu vzduchu, vlhkosť vzduchu a atmosferický tlak.
Úlohy
- Nájdite si k senzorom datasheet
- Nájdite si schémy zapojenia dosky
- Na základe predošlých vedomostí navrhnite spôsob pripojenia k riadiacej jednotke
- Napíšte základný demonštračný program využívajúci vaše funkcie
- Vymyslite a demonštrujte vhodnú aplikáciu
Komponenty
Na vypracovanie sme použili nasledujúce komponenty:
- 1 x Vývojovú dosku X-NUCLEO-IKS01A1
- 1 x Vývojová doska Acrob
- 1 x Basic Breakout 5V (Sparkfun DEV-09716) USB mini to serial 6pin
- 1 x Mini USB kábel
- Prepojovacie kábliky
- Software - Arduino IDE
Doska X-NUCLEO-IKS01A1
Je MEMs inerciálna vývojová doska, ktorá môže byť použitá na rozšírenie systému SMT32 Nucleo. Je tiež kompatibilná s Arduino UNO R3.
- Obr. 1: Vývojová doska X-Nucleo-IKS01A1
Zoznam senzorov, ktoré sa nachádzajú na doske:
- LSM6DS0: MEMS 3D accelerometer (±2/±4/±8 g) + 3D gyroscope (±245/±500/±2000 dps)
- LIS3MDL: MEMS 3D magnetometer (±4/ ±8/ ±12/ 16 gauss)
- LPS25HB*: MEMS pressure sensor, 260-1260 hPa absolute digital output barometer
- HTS221: capacitive digital relative humidity and temperature
Vývojová doska Acrob (Arduino Compatible Robot)
Jedná sa o riadiacú jednotku s mikropocesorom ATmga328 s 32KB Flash pamäte, 2KB SRAM pamäte a 1 KB EEPROM pamäte. Dosku je možné programovať v jazyku C alebo Arduino a teda je možné ju programovať pomocou Arduino IDE.
- Obr. 2: Vývojová doska Acrob
Technické parametre vývojovej dosky nájdete tu: Klik
Basic Breakout 5V (Sparkfun DEV-09716) USB mini to serial 6pin
Jedná sa o plošnú dosku, ktorá obsahuje čip, ktorý umožňuje prevod USB na UART rozhranie.
- Obr. 3: Basic Breakout 5V
Technické parametre nájdete tu: klik
Analýza
Na realizáciu Meteostanice, ktorá bude merať teplotu vzduchu, atmosferický tlak a vlhkosť vzduchu sme využili senzor HTS221 a senzor LPS25HB* Na komunikáciu budeme využívať zbernicu I2C.
Zbernica I2C
I2C je dvojvodičová obojsmerná sériová zbernica používajúca vodiče SCL a SDA. Úlohou SCL vodiča je prenášať hodinové signály, úlohou SDA vodiča je prenášať sériové dáta. Na komunikáciu využíva master - slave komunikáciu.
Obe linky (SDA, SCL) musia byť pripojené na kladný pól napájacieho napätia prostredníctvom tzv. pull-up rezistorov (výstup typu otvorený kolektor). Tým je zabezpečená práca liniek SDA a SLC v obidvoch smeroch. Pokiaľ by došlo ku kolízii, poškodili by sa iba úrovne signálu a nie vysielacie obvody. Spätnou väzbou je zaistené, že obvod môže pracovať aj ako vysielač, aj ako prijímač.
- Obr. 4: Zapojenie liniek
V priebehu jedného hodinového cyklu SLC je prenesený práve jeden dátový bit. Dáta privedené na linku SDA musia zostať nemenné po celú dobu taktovania kladného impulzu hodín SLC. Pri SLC=1 sú totiž zmeny SDA chápané ako riadiaci signál.
- Obr. 5: Prenos bitu po zbernici I2C
K označeniu začiatku a konca prenosu nie sú používané prídavné riadiace linky, ale dva špeciálne stavy zbernice. ŠTART prenosu (S) je oznámený zostupnou hranou SDA pri SLC=1. STOP prenosu (P) je definovaný nábežnou hranou SDA pri SLC=1. Pokiaľ je zbernica v neaktívnom stave, sú signály SDA a SLC v log. 1 (jednotke).
- Obr. 6: START a STOP bit pri I2C zbernici
Pri prenose nie je počet dátových bitov prenesených medzi START a STOP z vysielača do prijímača obmedzený. Každý dátový bajt (8bitov) je nasledovaný jedným potvrdzovacím bitom ACK (A). ACK predstavuje log. 0 (nulu) vloženú na zbernicu prijímačom, spojenú s potvrdzovacím hodinovým impulzom. Prijímač, ktorý je adresovaný, musí generovať ACK po prijatí každého bajtu.
- Obr. 7: Potvrdzovací ACK bit pri zbernici I2C
V našom projekte je doska Acrob master a senzory HTS221 a LPS25HB* sú podriadené (slave). Master môže z podriadeného zariadenia údaje čítať alebo naň údaje zapisovať. Prenos údajov môže začať iba Master zariadenie.
Viac informácií o I2C zbernici je možné nájsť napr. na:
Senzor HTS221
HTS221 sníma relatívnu vlhkosť a teplotu vzduchu. Obsahuje snímač a zmiešaný signál ASIC na poskytovanie informácií o meraní prostredníctvom digitálnych sériových rozhraní. Snímač pozostáva z dielektrickej štruktúry kondenzátora, ktorá je schopná detekovať zmeny relatívnej vlhkosti. Na komunikáciu používa I2C alebo SPI zbernicu.
- Obr. 8: Púzdro senzora HTS221
Parametre:
- Napájacie napätie: 1,7 až 3,6 V
- Prevádzková teplota: -40 až +120 °C
- Rozsah merania vlhkosti: 0 až 100%
- Presnosť merania teploty: ±0,5 °C, 15 až +40°C
- Presnosť merania vlhkosti: ±3.5% rH, 20 až 80% rH
Schéma zapojenia senzora (na vývojovej doske X-NUCLEO-IKS01A1):
- Obr. 9: Schéma zapojenia HTS221
Rozloženie pinov senzora:
- Obr. 10: Rozloženie pinov HTS221
Komunikácia pomocou I2C zbernice:
Ako sme už spomínali vyššie senzor HTS221 v pracuje ako podriadený (v režime slave) a doska Acrob pracuje ako pán (v režime master). Štartovacia transakcia na zbernici začína cez signál START (ST). Po štartovacej podmienke sa vysiela na zbernicu 7 bit číslo ktoré predstavuje adresu slave zariadenia s ktorým chceme komunikovať. Adresa slave zariadenia je doplnená 1 bitom (Read / Write). Na obrázku môžeme vydieť, ako sa skladá vzor bitov na čítanie / zápis.
- Obr. 11: Skladanie bitov pri I2C komunikácii - HTS221
Údaje sa prenášajú v bajtovom formáte (DATA). Každý prenos údajov obsahuje 8 bitov. Počet prenesených bajtov na prenos je neobmedzený. Údaje sa najskôr prenášajú najvýznamnejším bitom (MSB).
Senzor LPS25HB*
LPS25HB je piezoelektrický snímač absolútneho tlaku, ktorý funguje ako digitálny výstupný barometer. Zariadenie obsahuje senzorový prvok a rozhranie IC, ktoré komunikuje cez I2C alebo SPI zo snímacieho prvku s aplikáciou. Senzor taktiež umožňuje získavať dáta o teplote.
Parametre:
- Napájacie napätie: 1,7 až 3,6 V
- Prevádzková teplota: -30 až +105 °C
- Rozsah merania tlaku: 260 až 1260 hPa
- Presnosť merania tlaku: ±1 hPa, 0 až +80°C
Schéma zapojenia senzora (na vývojovej doske X-NUCLEO-IKS01A1):
Rozloženie pinov senzora:
Komunikácia pomocou I2C zbernice:
Riešenie
Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru (nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.
Pozn.: Názov obrázku musí byť jedinečný, uvedomte si, že Obr1.jpg už pred vami skúsilo nahrať už aspoň 10 študentov.
Algoritmus a program
Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili. Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu. Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
Vyberte podstatné časti zdrojového kódu, použite na to prostredie source:
/* A nezabudnite zdroják hojne komentovať */
int main(void) {
printf("Hello, World!\n");
return(0);
}
Nezabudnite však nahrať aj kompletné zdrojové kódy vášho programu!
Zdrojový kód: serial.h a main.c
Overenie
Jednotlivé merané veličiny boli vykreslené v prostredí Matlab. Každá veličina je vykreslená samostatne kvôli rôznemu rozsahu osi y.
Zdrojový kód (Matlab): ZadanieGrafy.m
Vízia komplexnej aplikácie
V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje, ktoré sú potrebné na úspešné vyriešenie projektu. Napríklad:
- popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)
- obrázok zapojenia vývodov použitej súčiastky
- odkaz na katalógový list
- priebehy dôležitých signálov
- este jedna polozka
Literatúra
- Zoznam použitej literatúry, vrátane katalógových údajov (datasheet), internetových odkazov a pod.