Před nedávnem jsem byl požádán, jestli bych
nesestrojil zabezpečovací zařízení pro objekt, který se nachází někde v
lesích mimo dosah elektrické sítě.
Při neoprávněném vniknutí do objektu měl být majitel upozorněn pomocí
SMS, nebo alespoň prozvoněním mobilního telefonu.
Jedna z nejdůležitějších podmínek byla, aby zařízení bylo schopné
pracovat na obyčejné baterie i několik měsíců bez zásahu obsluhy.
Navrhnul jsem tedy použití Arduina Mini Pro s GSM modulem.
Pokud by se někomu
podobné zařízení také hodilo, zde je popis.
Základní popis
Zabezpečovací zařízení se nachází uvnitř objektu
a je napájené třemi tužkovými bateriemi (=4,5V).
Na vstupních dveřích je umístěný koncový přepínač, který je k alarmu
připojený
pomocí 3 vodičů.
Po aktivaci hlídání pomocí "tajného" vypínače na
desce
alarmu má obsluha 20 sekund na to, aby opustila objekt. Během této doby
není testován stav přepínače na dveřích.
Po uplynutí 20 sekund se zařízení uspí do stavu, ve kterém odebírá méně
než 10uA. Z tohoto režimu spánku se zařízení probudí až otevřením dveří.
Po probuzení má uživatel dalších 20 sekund na to,
aby
deaktivoval hlídání pomocí "tajného" přepínače na desce.
Pokud ale do objektu přijde nezvaný host, neví, že má alarm deaktivovat
a po 20 sekundách dojde k tomu, že se zapne napájení do GSM modulu.
V
programu se pak spustí sekvence příkazů, které způsobí prozvonění
zvoleného
telefonního čísla (odesílání SMS se mi zatím zprovoznit nepodařilo).
Po prozvonění, které trvá asi 20 sekund se GSM
modul
odpojí a alarm přejde opět do režimu hlubokého spánku.
Proudový odběr
Kvůli maximální snaze o snížení odběru bylo nutné provést několik
zásahů na desce Arduino Mini Pro.
Jednalo se hlavně o odstranění
stabilizátoru a LED, která signalizuje přítomnost napájecího napětí.
Čerpal jsem z těchto stránek: http://home-automation-community.com.....
Odstranil jsem i několik kondenzátorů před a za stabilizátorem a
kondenzátor na vstupu referenčního napětí, ale to
už nemělo na odběr vliv.
Když je alarm deaktivovaný, nemá žádný proudový
odběr (je odpojená baterie).
Okamžitě po aktivaci hlídání se odběr zvětší na dobu 20 sekund asi na
10mA.
Pak přejde zařízení do režimu spánku, ve kterém odebírá jen zhruba 6uA.
Po otevření dveří se proud na dalších 20 sekund opět zvětší na 10mA.
Když nedojde k deaktivaci hlídání, zapne se GSM modul. Odběr tohoto
modulu kolísá podle způsobu komunikace s GSM sítí a krátkodobě může
dosáhnout až na 200mA. V tomto režimu vydrží maximálně 120 sekund. Když
se ale podaří navázat spojení se sítí rychleji, může se vypnout i dříve
(čas pro navázání spojení + 20 sekund na prozvánění.)
Schéma
Některé detaily
Když jsem použil GSM modul v předchozím
projektu,
objevily se velké problémy s rušením Arduina signálem z antény na GSM
modulu. Arduino se samo od sebe restartovalo, nebo se zasekávalo tak,
že jsem musel provést ruční reset. Nepomáhalo ani vyhlazování napájení
pomocí kondenzátorů.
Nakonec jsem zjistil, že za problémy může anténa, která byla příliš
blízko procesoru ATmega328 na Arduinu. Vytvořil jsem kolem Arduina
plechové stínění a od té doby už se žádný problém neobjevil.
V tomto zabezpečovacím zařízení jsem GSM modul umístil tak, aby byla
anténa co možná nejdál od Arduina. K resetům už nedocházelo, ale
pro jistotu jsem i tady Arduino raději oplechoval.
Protože si GSM modul bere z baterie opravdu velké
proudy (zaznamenal jsem i špičku kolem 200mA), použil jsem pro napájení
Arduina zapojení s kondenzátorem a Schottkyho diodou. Kdyby se stalo,
že kvůli velkému odběru proudu poklesne napájecí napětí, zůstane
Arduino ještě chvíli napájené z kondenzátoru C1. Dioda zajistí, že se
ten kondenzátor nevybije do GSM modulu. Je možné použít i obyčejnou
diodu. Schottka má ale výhodu v tom, že je na ní menší úbytek napětí v
propustném směru, takže zbývá ještě o pár desetin voltů víc pro Arduino.
Přepínač, kterým se aktivuje, nebo deaktivuje
hlídání, je dvojitý. Je to kvůli tomu, že kdyby došlo k deaktivaci
alarmu v okamžiku, kdy je Arduino v režimu spánku, dokázal by samotný
kondenzátor C1 ještě několik hodin Arduino napájet. Takže při následné
aktivaci
hlídání by Arduino ani nepoznalo, že mělo nějaký čas odpojenou baterii.
Druhý kontakt přepínače slouží právě k tomu, aby se při deaktivaci
hlídání
vybil kondenzátor C1 přes odpor R3. Tím bude zajištěno, že se při další
aktivaci hlídání provede RESET procesoru.
Tlačítko na GSM modulu bylo třeba přemostit, aby se dal modul spustit jen pouhým připojením napájecího napětí: detailní fotka
Kontakt na dveřích je přepínací. Je to z toho
důvodu, aby byla v obou polohách zajištěna jednoznačná logická úroveň
na vstupu D2.
Sice by bylo možné použít Pull-Up odpor, který by na vstupu udržoval
stále logickou "1". Při otevření dveří by se kontakt sepnul na GND a
tím by se by se stav změnil na "0".
Problém byl ale v zadání úlohy. Byla tam podmínka, že když zloděj
vykopne dveře (takže zůstanou trvale otevřené), mělo by zabezpečovací
zařízení po prozvonění telefonu
přejít opět do režimu s minimální spotřebou proudu.
Při použití Pull-Up odporu by při otevřených dveřích přes tento odpor
do GND
protékal trvale proud.
Je to ale asi jediná alternativa v případě, že je třeba zabezpečit více
vstupů do objektu zároveň (okna i dveře).
Při použití Pull-Up odporu 56k je trvale protékající proud při
otevřených dveřích něco pod 100uA ( Ibat = (Ubat - Uschott) / RPull-Up ).
Tady je schéma zapojení pro více hlídaných vstupů do objektu: vicevstupu.gif
Hlídač reaguje pouze na sestupnou hranu signálu na vstupu D2. Když tedy
narušitel nechá otevřené dveře, dalšího zloděje už systém nezachytí.
Program
Před kompilací je nutné v programu
zadat
správné telefonní číslo, které se má prozvánět:
Kvůli snížení odběru proudu bylo
třeba také přenastavit FUSE bity v ATmega328:
Ukázkové video
|