GSM alarm

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: GSM alarm

Příspěvek od pavel1tu » 28 čer 2018, 08:47

Ahoj,
mám pár GSM alarmů jen na baterkách - vyrobené pro chataře a zahrádkáře, kde jsou zvyklí vypínat elektřinu mimo sezonu.

Postupně jsem všechny dotlačil k investici 12V/4-10W solárního panelu (jsou verze i k nalepení na okno-takové folie).

Důvod je prostý - nevím proč, ale stávalo se, že arduino prostě zamrzlo - pak alarm nefungoval. Teď posímáme při zapnutém alarmu každých 24h SMS o stavu alarmu, baterie, teploty a další blbosti - což je náročné na energii.

PS: jen má zkušenost :-)
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: GSM alarm

Příspěvek od rejze69 » 28 čer 2018, 22:52

Stačí krátký stisk, ale provede se to se zpožděním 15s.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: GSM alarm

Příspěvek od gilhad » 28 čer 2018, 23:08

rejze69: const int pin=A4 .Do int nelze ukláday písmena a vůbec mi nedochází co má ta deklarace znamenat.
A4 je Analog 4 pin, definovany v hardware/arduino/avr/variants/standard (a podobne dle typu cilove platformy) /pins_arduino.h

Kód: Vybrat vše

...
#define PIN_A4   (18)
...
static const uint8_t A4 = PIN_A4;
...
takze davat ho do int samozrejme jde, navic by stacil obycejny byte.
Sperhak:

Kód: Vybrat vše

 if (b == 1 && buttonState == HIGH ) {
Treba b1 a button na HIGH držať 15s aby sa uspal alebo stačí na par ms splniť podmienku a spraví sa všetko čo je v nej?
ta podminka porovna b s jednickou a buttonState taky s jednickou, to je par strojovych instrukci (cti neco pod mikrosekundu)

Kód: Vybrat vše

 int reading = digitalRead(buttonPin);
 buttonState = reading;
digitalRead(buttonPin) je funkce na par radek, ale podstatne je to, ze bez ohledu na vsechna ostatni zdrzeni (dana vypocty v ni) v ni, si JEN JEDNOU precte obsah prislusneho registru, coz je JEDINA asm instrukce (tedy 1/ 16,000,000 s) behem ktere se cte z HW ulozeny stav napeti na tom pinu coz je bud nula, nebo jedna, at uz je tam cokoli mezi 0 a 5V (resp. 3.3V), tak se to na jednu z tehle hodnot prevede, protoze nic jineho nez 0 nebo 1 v bitu byt proste nemuze.

Takze pokud ve spravnou dobu je na prislusnem pinu spravne napeti, tak digitalRead(..) vrati jednicku. To napeti tam musi byt dost dlouho na to, aby se nabil kondik dany prechodem CMOS tranzistoru na dostatecne napeti - radove jeste kratsi dobu, nez trva JEDNA asm instrukce.

Ten delay tam jen zpusobi, ze se to sleepNow() zavola az o 15s pozdeji, nez je cela ta podminka vyhodnocena. (mikroprocesor ti do hlavy nevidi, dela, co mu naprogramujes. if (a==1 && b==1) je pro nej jen nejake porovnani hodnot bez hlubsiho vyznamu a provede se takrka okamzite.)

Sperhak
Příspěvky: 46
Registrován: 22 čer 2018, 19:49
Reputation: 0

Re: GSM alarm

Příspěvek od Sperhak » 01 črc 2018, 20:24

Dakujem za zložitú odpoveď niečo nové som sa zasa naučil.To som si aj myslel no nebol som si istý či to ten delay nepreruší a potom o 15s keď nebude stále b 1 a button 1 nesplní sleep. No podarilo sa,zatiaľ mám fungujúci kód časom by som chcel dať ešte pohybový senzor cez I2C ale najskôr mi musí prísť z číny. Chcem sa opítať asi hlavne teba AstroMik ty si z tej dosky odstránil aj kondenzátor na AREF nebude to tam chýbať? A dočítal som sa že Atmega na 3,3V žerie menej prúdu ale že vtedy ide na 8MHz bude mi tých 8 stačiť? Dá sa to nejak vyrátať alebo podla čoho sa to určuje?

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 11 hostů