Pokojový termostat řízený pomocí SMS zpráv v síti GSM Prezentace bakalářské práce Tomáš Vondra České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů Červen 2009 Vedoucí práce: Ing. Martin Novotný
Osnova Cíl práce Rozbor trhu Vlastní výrobek Komponenty projektu Softwarová část SMS PDU Softwarová část AT příkazy Softwarová část Hlavní program Hardwarová část AVR Butterfly Hardwarová část Spínací obvod Výsledky práce
Cíl práce Pokojový termostat GSM řízení a dohled Princip znám v průmyslu (např. výtahy) Málo rozšířen v domácnostech Použití: rekreační objekt / služební cesty Motivace: Neexistuje řešení v rozumné cenové hladině Nenašel jsem volně dostupnou implementaci
Rozbor trhu: Electrobock PT30GSM Programovatelný 7+2 týdenní programy funkce dovolená Nastavení teploty přes SMS a tlačítka Přesnost na 0,1 C Nastavitelná hystereze Specielní LCD displej Výkonový spínač Cena: 6 188 Kč
Rozbor trhu: SEA GSM RELÉ var. 2 Nastavení teploty přes SMS Žádná tlačítka a displej 3 logické vstupy 1 výkonový a 2 logické výstupy Přehrávání zvuků Cena: 7 173 Kč
Rozbor trhu: Jablotron GD-04 DAViD Nelze nastavit teplotu Žádná tlačítka a displej 4 vstupy 2 výkonové výstupy Bezdrátové rozšíření Komplexně programovatelný Cena: 4 205 Kč bez termostatu
Vlastní výrobek: GSM termostat Nastavení teploty přes SMS a tlačítka Přesnost na 1 C Pevná hystereze 6 znakový LCD displej Výkonový spína nač Možnost rozšíření Výrobní cena: asi 770 Kč bez telefonu
Komponenty projektu Softwarová část SMS PDU AT příkazy Hlavní program Hardwarová část AVR Butterfly Spínací obvod Mobilní telefon Propojovací kabel
Softwarová část SMS PDU SMS PDU mode Kodér a dekodér standardních SMS GSM 7bit kódová stránka Bitový packing Kódování i dekódování Psáno v jazyce C a testováno na platformě GNU Znaků Příklad Význam 2 07 Délka dalších 2 položek v bytech. U odeslílané SMS může být 0, použije se pak číslo SMSC uložené v telefonu (+CSCA) [2] 91 Typ čísla SMSC. 91 znamená mezinárodní formát (vč. všech předvoleb), 81 obecný formát (předvolba země může chybět) [?] 7283010010F5 Číslo SMSC ve formátu desítkových semi-oktetů viz. níže 2 01 Typ PDU. Poslední 2 bity znamenají typ zprávy 00 příchozí, 01 odchozí. Dále se dá určit doba platnosti, žádat o potvrzení apod. 2 OUT 00 POUZE u odchozích zpráv! Referenční číslo pro potvrzení. 00 náhodné 2 0B Délka čísla druhé strany v číslicích 2 91 Typ čísla druhé strany (příjemce u odchozí, odesílatele u příchozí zprávy)? 6407281553F8 Číslo druhé strany ve formátu desítkových semioktetů viz. níže 2 00 Identifikace protokolu. V textových zprávách vždy 0 2 00 Kódovací schéma. 00 znamená GSM 7-bit, což je nejrozšířenější kód. 10 navíc vytvoří FLASH zprávu přímo na displej telefonu. Dále se dá nastavit např. 8bitový text, Unicode, 8bitová data. [2/14] AA OUT Doba platnosti SMS. Jen u odchozích zpráv a POUZE pokud je povolena v Typu PDU! Relativní nebo timestamp formát. 14 IN 99309251619580 Časové razítko. POUZE u příchozích zpráv. Formát viz.níže 2 0A Délka uživatelských dat v 7-bit znacích u GSM kódování, jinak v bytech. [?] E8329BFD4697D 9EC37 Uživatelská data. Formát viz. níže
Schéma kódování GSM 7 bit
Softwarová část AT příkazy Podmnožina AT příkazů pro práci se SMS Norma GSM 07.07 (3GPP TS 27.007) Funkce na: Inicializaci telefonu Odeslání zprávy Polling příchozích zpráv Přečtení zprávy Smazání zprávy Stavový automat na vyhodnocení odpovědí vč. přijímače oznámení o příchodu zprávy +CSMS Select Message Service +CMGF Select SMS Message Format +CPMS Preferred Message Storage +CMGS Send Message +CNMI New SMS Message Indications +CMGL List Messages +CMGR Read Messages +CMGD Delete Messages
Softwarová část Hlavní program Platforma Atmel AVR Vývojové prostředí WinAVR / AVR-gcc Upravený demo program AVR Butterfly Přejaty procedury na ovládání hardware Změny zvláště v měření teploty a timerech Lepší knihovna pro práci s USARTem Napsána nová hlavní smyčka Portován AT parser a PDU kodér
Struktura programu Inicializace periferií Čtení stavu tlačítek Nastavená teplota, naměřená teplota a zap/vyp vytápění Pin Change Interrupt Handler Spouštění měření teploty a čtení výsledku Parser uživ. příkazů Ovladač sériového portu Čtení znaků z UARTu Parser AT příkazů Timery Hlídání stavového automatu, (re)inicializace telefonu a polling SMS zpráv Kodér PDU Indikace chyb Ovládání relé s hysterezí Ovladač LCD Displeje Chyba? NE Výpis stavu na displej ANO Opakování stisku tlačítek
Hardwarová část AVR Butterfly Platforma AVR Butterfly obsahuje: Mikrokontrolér AVR ATmega169 Displej, tlačítka, termistor, hodinový krystal RS-232 převodník, baterii, flash paměť, piezo Open-source demonstrační aplikace Rozumná cena Mnoho periferií -> málo volných pinů
Hardwarová část Spínací obvod Nutno připojit relé k procesoru Mikrokontrolér nedodá dostatečný proud -> > spínací tranzistor Pro tranzistor proud zbytečně velký -> předřadný odpor Tranzistor nesnese napěťové špičky z relé -> > ochranná dioda Nelze postavit ve vzduchu -> > univerzální plošný spoj Přidáno několik dalších součástek (LED, D-sub) D Propojeno s AVR Butterfly pomocí kolíků/dutinek
Schéma obvodu Vcc GND SW0 SW1 D1 V_in GND RXD K1 D2 TXD GND R1 PE4 R2 PE5 D3 D4 T1 PE6 RS-232 GND
Výsledky práce Funkční prototyp GSM Termostatu Možnosti přídání více vstupů/výstupů: další topná soustava, chlazení, snímání teploty ve více místnostech + termokohouty,, alarm, spínání osvětlení, zavlažování Univerzální knihovna pro SMS zprávy v jazyce C Zkušenosti s programováním mikrokontroléru v jazyce C Použijí elektroamatéři mou konstrukci?