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č 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 2 07
Význam 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 Doba platnosti SMS. Jen u odchozích zpráv a POUZE OUT 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 Uživatelská data. Formát viz. níže 9EC37
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
ANO Chyba? NE Výpis stavu na displej
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) Propojeno s AVR Butterfly pomocí kolíků/dutinek
Schéma obvodu V_in
Vcc SW0 SW1 GND
D1
GND
RXD TXD K1
D2
GND
R1
PE4 PE5
R2 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?