Systém včasné výstrahy před lokální povodní

| Kategorie: Diplomové, bakalářské práce  | Tento dokument chci!

Cílem této diplomové práce je návrh lokálního protipovodňového výstražného systému. Systém se skládá ze dvou základních typů jednotek. První jednotka je umístěna v terénu a pomocí čidel vyhodnocuje přítomnost vody v jinak suchém místě. V případě zatopení posílá varovnou zprávu pomocí bezdrátové technologie. Druhá jednotka varovné zprávy vyhodnocuje a informuje pověřenou osobu o vzniklé situaci pomocí sms zprávy. Venkovní zařízení je plně autonomní a trvale umístěné ve venkovním prostředí. Systémje navržen na bázi 8-bitových mikrokontrolérů. Mezi hlavní parametry zařízení patří nízká spotřeba, mechanická odolnost a spolehlivost.

Vydal: FEKT VUT Brno Autor: Luděk Svoboda

Strana 60 z 95

Vámi hledaný text obsahuje tato stránku dokumentu který není autorem určen k veřejnému šíření.

Jak získat tento dokument?






Poznámky redaktora
Zadání příkazu čekací smyčka uvedena následující ukázce kódu. Čekání realizováno smyčkou while(). Sledováním počtu těchto znaků docíleno efektivního zadávání příkazů. Funkce vypisuje zadaný znakový obsah USART linku. 7. Kompletní nastavení je opět řešeno vlastní funkcí pro inicializaci. Baud Rate nastavena 9600.6 Zadávání příkazů K zadávání příkazu pro GSM modul využito funkce printf() obsažené v knihovně stdio.h. void USART0_Init( void) { UBRR0H (unsigned char)(myubrr>>8); UBRR0L (unsigned char)(myubrr); UCSR0A (1<<U2X); UCSR0B (1<<RXCIE)|(0<<TXCIE)|(0<<UDRIE)|(1<<RXEN)|(1<<TXEN); UCSR0C (0<<UMSEL1)|(0<<UMSEL0)|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0); return; } Aby byla zajištěna minimální spotřeba během spánku, nutné USART linku inicializovat probuzení před uspáním zase vypnout.UBRR= f OSC 8∗BAUDRATE −1= 1000000 8∗9600 −1=12 (6) Formát USART komunikace varovné jednotky GSM nastavena jako asynchronní, bitů, 1stop bit. zadání každého příkazu nutné čekat přijetí různého počtu znaků 0x0A, aby byl zadaný příkaz správně proveden. ISR(USART0_RX_vect) { unsigned char data; deklarace proměnné while !(UCSR0A (1<<RXC)) čekání dokončení příjmu data=UDR0; uložení přijatého znaku if(data==0x0A) sledovani prijmu znaku 0x0A { uk=uk+1; zvyseni poctu znaku 0x0A } return; } 51 . printf("ATZ0\n"); odeslání příkazu uk=0; vynulování počtu přijatých znaků 0x0A while(uk!=2); čekání přijetí dvou znaků Počítání přijatých znaků 0x0A sledováno přerušení přijímače.1.1