Kućni alarm ili korištenje senzora pokreta i LCD monitora s Arduinom. O senzoru pokreta i njegovom spajanju na Arduino Provalni alarm na arduinu


Pozdrav svima, danas ćemo pogledati uređaj koji se zove senzor pokreta. Mnogi od nas su čuli za ovu stvar, netko se čak bavio ovim uređajem. Što je senzor pokreta? Pokušajmo to shvatiti, pa:

Senzor pokreta ili senzor pomaka - uređaj (uređaj) koji otkriva kretanje bilo kakvih predmeta. Vrlo često se ovi uređaji koriste u sigurnosnim, alarmnim i nadzornim sustavima. Postoji mnogo faktora oblika ovih senzora, ali mi ćemo razmotriti modul senzora kretanja za povezivanje s pločama arduino,i od tvrtke RobotDyn. Zašto baš ova tvrtka? Ne želim reklamirati ovu trgovinu i njene proizvode, ali upravo su proizvodi ove trgovine odabrani kao laboratorijski uzorci zbog kvalitetne prezentacije proizvoda krajnjem potrošaču. Dakle, upoznajte - senzor pokreta(PIR senzor) iz RobotDyn-a:


Ovi senzori su male veličine, troše malo energije i jednostavni su za korištenje. Osim toga, RobotDyn senzori pokreta također imaju kontakte označene sitotiskom, to je naravno sitnica, ali vrlo ugodno. Pa, za one koji koriste iste senzore, ali samo od drugih tvrtki, ne brinite - svi imaju istu funkcionalnost, pa čak i ako kontakti nisu označeni, pinout takvih senzora lako je pronaći na Internetu.

Glavni tehnički podaci Senzor pokreta (PIR senzor):

Radno područje senzora: od 3 do 7 metara

Kut praćenja: do 110 o

Radni napon: 4,5...6 Volti

Potrošnja struje: do 50uA

Bilješka: Standardna funkcionalnost senzora može se proširiti spajanjem svjetlosnog senzora na IN i GND pinove i tada će senzor pokreta raditi samo u mraku.

Inicijalizacija uređaja.

Kada je uključen, senzoru treba gotovo jedna minuta da se inicijalizira. Tijekom tog razdoblja senzor može davati lažne signale, to treba uzeti u obzir pri programiranju mikrokontrolera s senzorom spojenim na njega ili u krugovima aktuatora ako se veza vrši bez upotrebe mikrokontrolera.

Kut i područje detekcije.

Kut detekcije (praćenja) je 110 stupnjeva, raspon udaljenosti detekcije je od 3 do 7 metara, ilustracija ispod sve to prikazuje:

Podešavanje osjetljivosti (udaljenost detekcije) i vremenske odgode.

Donja tablica prikazuje glavne prilagodbe senzora kretanja, lijevo je kontrola vremenske odgode, odnosno u lijevom stupcu je opis mogućih postavki. Desni stupac opisuje prilagodbe udaljenosti detekcije.


Spajanje senzora:

  • PIR senzor - Arduino Nano
  • PIR senzor - Arduino Nano
  • PIR senzor - Arduino Nano
  • PIR senzor - za svjetlosni senzor
  • PIR senzor - za svjetlosni senzor

Tipični dijagram povezivanja je dan na dijagramu ispod, u našem slučaju senzor je prikazan uvjetno sa stražnje strane i spojen je na Arduino Nano ploču.

Skica koja prikazuje rad senzora pokreta (koristimo program):

/* * PIR senzor -> Arduino Nano * PIR senzor -> Arduino Nano * PIR senzor -> Arduino Nano */ void setup() ( //Postavite vezu na port monitor Serial.begin(9600); ) void petlja () ( //Očitajte vrijednost praga s porta A0 //obično je veća od 500 ako postoji signal if(analogRead(A0) > 500) ( //Signal sa senzora kretanja Serial.println("Postoji kretanje !!!"); ) else ( / /Nema signala Serial.println("Sve je tiho..."); ) )

Skica je normalan test senzora pokreta, ima mnogo nedostataka, kao što su:

  1. Mogući lažni alarmi, senzor treba samoinicijalizaciju unutar jedne minute.
  2. Čvrsto vezanje na port monitor, bez izlaznih pokretača (relej, sirena, LED)
  3. Vrijeme signala na izlazu senzora je prekratko, kod detekcije pokreta potrebno je programski odgoditi signal na duže vrijeme.

Kompliciranjem kruga i proširenjem funkcionalnosti senzora mogu se izbjeći gore navedeni nedostaci. Da biste to učinili, morat ćete nadopuniti krug relejnim modulom i spojiti običnu svjetiljku od 220 volti kroz ovaj modul. Sam relejni modul bit će spojen na pin 3 na Arduino Nano ploči. Dakle, koncept je:

Sada je vrijeme da malo poboljšamo skicu, koja je testirala senzor pokreta. Na skici će biti implementirana odgoda isključivanja releja, jer sam senzor kretanja ima prekratko vrijeme izlaznog signala kada se aktivira. Program implementira odgodu od 10 sekundi kada se senzor aktivira. Ako želite, ovo vrijeme se može povećati ili smanjiti promjenom vrijednosti varijable DelayValue. Ispod je skica i video rada cjeline sklopljeni sklop:

/* * PIR senzor -> Arduino Nano * PIR senzor -> Arduino Nano * PIR senzor -> Arduino Nano * Relejni modul -> Arduino Nano */ //relout - pin (izlazni signal) za relejni modul const int relout = 3 ; //prevMillis - varijabla za pohranjivanje vremena prethodnog ciklusa skeniranja programa //interval - vremenski interval za brojanje sekundi dok se relej ne isključi unsigned long prevMillis = 0; int interval = 1000; //DelayValue - period tijekom kojeg je relej uključen int DelayValue = 10; //initSecond - Iteracijska varijabla inicijalizacijske petlje int initSecond = 60; //countDelayOff - brojač vremenskog intervala static int countDelayOff = 0; //okidač - zastavica aktivacije senzora kretanja static bool okidač = false; void setup() ( // Standardni postupak inicijalizacija porta na koji je spojen relejni modul //VAŽNO!!! - kako bi relejni modul ostao u inicijalno isključenom stanju //i ne bi radio tijekom inicijalizacije, potrebno je upisati vrijednost HIGH na ulazno/izlazni port, time će se izbjeći lažni "klikovi" i zadržati // stanje releja kakvo je bilo prije uključivanja cijelog kruga u rad pinMode(relout, OUTPUT); digitalWrite(reout, HIGH); // Ovdje je sve jednostavno - čekamo da završi 60 ciklusa (varijabla initSecond) // u trajanju od 1 sekunde, tijekom tog vremena senzor se "samoinicijalizira" za (int i = 0; i< initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) >500) ( //Postavi zastavicu okidača senzora kretanja if(!trigger) ( trigger = true; ) ) //Dok je zastavica okidača senzora kretanja postavljena while(okidač) ( //Izvrši slijedeći upute//Spremi u varijablu currMillis //vrijednost milisekundi proteklih od //početka izvođenja programa unsigned long currMillis = millis(); //Usporedi s prethodnom vrijednošću milisekundi //ako je razlika veća od navedenog intervala, tada: if(currMillis - prevMillis > interval) ( //Spremi trenutnu vrijednost milisekundi u varijablu prevMillis prevMillis = currMillis; // Provjerite brojač kašnjenja uspoređujući ga s vrijednošću razdoblja / /tijekom kojeg se relej mora držati u uključenom stanju if(countDelayOff >= DelayValue) ( ​​​​//Ako je vrijednost jednaka, tada: //resetirajte zastavica za aktiviranje okidača senzora kretanja = false; //Poništi brojač kašnjenja countDelayOff = 0; // Isključi relej digitalWrite(relout, HIGH); //Prekini prekid petlje; ) else ( //Ako je vrijednost i dalje manje, zatim //Povećaj brojač kašnjenja za jedan countDelayOff ++; //Zadrži relej na digitalWrite(relout, LOW ); ) ) ) )

Program sadrži strukturu:

unsigned long prevMillis = 0;

int interval = 1000;

...

unsigned long currMillis = millis();

if(currMillis - prevMillis > interval)

{

prevMillis = currMillis;

....

// Naše operacije zatvorene u tijelu konstrukcije

....

}

Da pojasnimo, odlučeno je zasebno komentirati ovu konstrukciju. Tako, ovaj dizajn omogućuje izvođenje, tako reći, paralelnog zadatka u programu. Tijelo strukture puca otprilike jednom u sekundi, što je olakšano varijablom interval. Prvo, promjenjivo currMillis vrijednost koja se vraća kada je funkcija pozvana je dodijeljena millis(). Funkcija millis() vraća broj milisekundi proteklih od početka programa. Ako razlika currMillis-prevMillis veća od vrijednosti varijable interval onda to znači da je već prošlo više od jedne sekunde od početka izvođenja programa, te trebate spremiti vrijednost varijable currMillis u varijablu prevMillis zatim izvršiti operacije zatvorene u tijelu strukture. Ako razlika currMillis-prevMillis manja od vrijednosti varijable interval, tada još nije prošla sekunda između ciklusa skeniranja programa, a operacije sadržane u tijelu strukture su preskočene.

Pa, na kraju članka, video od autora:

Omogućite javascript kako bi komentari radili.

Ovaj projekt se odnosi na razvoj i poboljšanje sustava za sprječavanje/kontrolu svakog pokušaja ulaska lopova. Razvijeni sigurnosni uređaj koristi ugrađeni sustav (uključuje hardverski mikrokontroler koji koristi otvoreni kod i gsm modem) temeljen na GSM (Global System for Mobile Communications) tehnologiji.

Sigurnosni uređaj može se ugraditi u kuću. Senzor sučelja protuprovalnog alarma također je povezan sa sigurnosnim sustavom koji se temelji na upravljaču.
Kada se pokuša upad, sustav šalje poruku upozorenja (na primjer, sms) vlasniku na mobitel ili na bilo koji unaprijed konfigurirani mobilni telefon za daljnju obradu.

Sigurnosni sustav sastoji se od Arduino Uno mikrokontrolera i standardnog SIM900A GSM/GPRS modema. Cijeli sustav može se napajati bilo kojim napajanjem/baterijom od 12V 2A.

Donji dijagram je prikazan sigurnosni sustav baziran na Arduinu.

Rad sustava je vrlo jednostavan i razumljiv sam po sebi. Kada se na sustav priključi napajanje, on prelazi u stanje pripravnosti. Kada su pinovi J2 konektora kratko spojeni, željenom se šalje unaprijed programirana poruka upozorenja broj mobitela. Na ulazni konektor J2 možete spojiti bilo koji detektor provale (kao što je zaštita od svjetla ili detektor pokreta). Imajte na umu da će aktivni-niski (L) signal na pinu 1 konektora J2 aktivirati protuprovalni alarm.

Štoviše, sustavu je dodan opcijski uređaj za alarmiranje poziva. Aktivirati će telefonski poziv kada korisnik pritisne tipku S2 (ili kada druga elektronička jedinica pokrene alarm). Nakon pritiska na tipku "poziv" (S2), poziv se može prekinuti pritiskom na drugu tipku S3, tipku "kraj". Ova se opcija može koristiti za generiranje alarma "propuštenog poziva" u slučaju upada.

Krug je vrlo fleksibilan, tako da može koristiti bilo koji SIM900A modem (i naravno Arduino Uno ploču). Pažljivo pročitajte dokumentaciju modema prije sastavljanja. To će olakšati i učiniti proces proizvodnje sustava ugodnim.

Popis radijskih elemenata

Oznaka Tip Vjeroispovijest Količina BilješkaDućanMoja bilježnica
Arduino ploča

Arduino Uno

1 U bilježnicu
GSM/GPRS modemSIM900A1 U bilježnicu
IC1 Linearni regulator

LM7805

1 U bilježnicu
C1 100uF 25V1 U bilježnicu
C2 elektrolitički kondenzator10uF 16V1 U bilježnicu
R1 Otpornik

1 kOhm

1 U bilježnicu
LED1 Dioda koja emitira svjetlo 1 U bilježnicu
S1 DugmeS fiksacijom1

Danas ćemo razgovarati o tome kako ga koristiti Arduino prikupiti sigurnosni sustav. Naš "čuvar" će čuvati jedan strujni krug i kontrolirati jedan javljač.

Za Arduino to nije problem, a kao što ćete vidjeti iz programskog koda i dijagrama uređaja, lako možete povećati broj zaštićenih pristupnih točaka i broj uređaja za obavještavanje ili indikaciju.
sigurnosni sustav može se koristiti za zaštitu i velikih objekata (zgrada i objekata), i malih predmeta (lijesova, sefova), pa čak i prijenosnih torbi i kofera. Iako s ovim potonjim morate biti oprezniji, ako ugradite sigurnosni sustav, primjerice, na kofer s kojim ste odlučili ići na put, a sustav upozorenja radi na nekoj zračnoj luci, onda mislim da ćete imati ozbiljan razgovor s lokalnom sigurnosnom službom :-)

Pojednostavljeni princip rada uređaja je sljedeći (slika 1). Nakon uključivanja napajanja, uređaj ulazi u način rada i čeka na aktiviranje. Aktiviranje i deaktiviranje vrši se jednim gumbom. Za povećanje sigurnosti, bolje je staviti ovaj gumb unutar zaštićene prostorije (sef ili kutija). Prije uključivanja sigurnosnog načina, vrata moraju biti lagano otvorena. Kada je sigurnosni način rada uključen (pritiskom na tipku) elektronički sklopčeka dok zatvorite vrata sobe (vrata sefa, poklopac kutije itd.).

Bilo koja vrsta graničnog prekidača mora biti instalirana na vratima (ili vratima), više o tome kasnije. Zatvaranjem (ili otvaranjem), granični prekidač će obavijestiti uređaj da je zaštićeni krug zatvoren, a uređaj će prijeći u naoružani način rada. Sustav će vas obavijestiti o prijelazu u stanje pripravnosti s dva kratka zvučna signala (kao u auto alarmi). U ovom načinu rada uređaj "hvata" otvaranje vrata. Nakon otvaranja vrata sustav čeka nekoliko sekundi (to je konfigurabilna vrijednost, za sobe oko deset sekundi, za boks jedan ili dva) za deaktiviranje, ako se to ne dogodi, uključuje se sirena. Algoritam i sklop su dizajnirani na takav način da se sirena može isključiti samo potpunim rastavljanjem kućišta i isključivanjem napajanja.

Uređaj sigurnosni sustav vrlo jednostavno (slika 2). U središtu ploče Arduino. Granični prekidači spojeni su kao obični gumb, preko otpornika za povlačenje. Zasebno ću se zadržati na graničnim prekidačima. Normalno su zatvoreni i normalno otvoreni. Obični gumb možete uključiti kao granični prekidač, samo što je hod običnog gumba vrlo velik, zračnost vrata je obično veća. Stoga je potrebno smisliti neku vrstu potiskivača za gumb i oprugu kako ne bi slomio gumb s vratima. Pa, ako nije previše lijen, onda možete otići u trgovinu i kupiti magnetski prekidač (reed prekidač) (slika 3), on se ne boji prašine i zagađenja.

Prikladan je i granični prekidač za auto alarme (slika 4). Treba napomenuti da je program napisan za reed prekidač. Na zatvorena vrata njegov kontakt je zatvoren. Ako koristite prekidač iz auto alarma, onda kada su vrata zatvorena, najvjerojatnije će biti otvorena, a na odgovarajućim mjestima u kodu morat ćete promijeniti 0 u 1 i obrnuto.

Kao sirena, predlažem korištenje zvučnog javljača PKI-1 IVOLGA bjeloruske proizvodnje (Sl. 5). Napon napajanja 9 - 15 V, radna struja 20 - 30 mA. To mu omogućuje da se koristi s baterijskim napajanjem. U isto vrijeme "ispušta" 95 - 105 dB.

S takvim karakteristikama baterije Krona zvučat će nekoliko desetaka minuta. Našao sam ga na internetu za 110 rubalja. Na istom mjestu, reed prekidač s magnetom košta oko 30 rubalja. Prekidač iz auto alarma u auto dijelovima kupljen je za 28 rubalja. Tranzistor KT315 može se uzeti bilo kojim slovom ili zamijeniti bilo kojim modernim silicijskim tranzistorom male snage odgovarajuće vodljivosti. Ako glasnoća jednog signalnog signala nije dovoljna (tko zna, možda želite da vas se čuje mnogo kilometara), možete spojiti nekoliko signalnih signala paralelno ili uzeti jači, samo u tom slučaju tranzistor treba zamijeniti snažniji (na primjer, poznati sklop tranzistora ULN2003). Kao konektore za spajanje reed prekidača i sirene koristio sam najjednostavnije konektore za audio / video uređaje - cijena na radio tržištu je 5 rubalja. za par.

Tijelo uređaja može se lijepiti od plastike ili šperploče; ako se čuva ozbiljan objekt, onda je bolje da bude metalni. Baterije ili akumulatore za povećanje pouzdanosti i sigurnosti, poželjno je staviti unutar kućišta.

Kako bi se pojednostavio programski kod, elementi za uštedu energije nisu korišteni, a baterije nisu dovoljne za dugo vremena. Možete optimizirati kod, ili još bolje, radikalno ga ponoviti primjenom rukovanja događajima na prekide i MK stanje mirovanja. U ovom slučaju, napajanje iz dvije četvrtaste baterije spojene u seriju (9 V) trebalo bi trajati nekoliko mjeseci.

Sada kod

// trajno
gumb const int = 12; // igla za gumb
const int gerkon = 3; // igla za reed prekidač
const int sirena = 2; // kontrolni pin sirene
const int led = 13; // indikatorska igla
// varijable
int buttonState = 0; // stanje gumba
intgerkonState=0; // stanje reed prekidača
int N = 0; // brojač gumba za deaktiviranje
void setup()(
// kontrola sirene i indikatora - izlaz
pinMode(sirena, IZLAZ);
pinMode(led, IZLAZ); // gumb i reed prekidač - ulazi
pinMode(gerkon, INPUT);
pinMode(gumb, INPUT);
}
void petlja()(
digitalWrite(led, HIGH);
while(buttonState= =0)( // petlja čekanja dok se gumb ne pritisne
buttonState = digitalRead(gumb); // za prebacivanje u naoružani način rada
}
digitalWrite(led, LOW);
buttonState=0; // poništi vrijednost gumba
while(gerkonState= =0)( // petlja dok ne zatvorimo vrata

}
kašnjenje (500); // :-)
digitalWrite(sirena, HIGH); // Kod
kašnjenje (100); // indikacije
digitalWrite(sirena, LOW); // uključiti
kašnjenje(70); // način rada
digitalWrite(sirena, HIGH); // čuvari
kašnjenje (100); // obavijest
digitalWrite(sirena, LOW); // zvuk
while(gerkonState= =1)( // pričekajte da se vrata otvore
gerkonState = digitalRead(gerkon);
}
za (int i=0; i<= 5; i++){ // 7,5 секунды на нажатие
buttonState = digitalRead(gumb); // tajni gumb
if (buttonState = = HIGH) ( // pratimo svoje - tuđe
N=N+1;
}
kašnjenje (1500); // tajna karakteristika :-)))
}
if (N > 0) ( // najvažnije
digitalWrite(sirena, LOW); // ne pali sirenu
}
drugo(
digitalWrite(sirena, HIGH); // ili uključiti sirenu
}
digitalWrite(led, HIGH); // uključi indikator N = 0;
buttonState=0;
kašnjenje (15000); // podsjetnik za glupane koji vole
digitalWrite(led, LOW); // tipke bez odgode prekida (1000);

Proljeće, kao što znate, prate svakakva pogoršanja, a sada je glavno "pogoršanje" ispuzalo iz svojih rupa na ulicu kako bi sebi prisvojilo ono što mu ne pripada. To znači da je tema zaštite vlastite imovine aktualnija nego ikad.
Stranica već ima nekoliko recenzija o domaćim -. Funkcionalni su, naravno, ali svi imaju zajednička značajka- ovisno o utičnici. Ako to nije problem s nekretninom gdje je struja već priključena, što je onda s nekretninom gdje je utičnica daleko ili je okolina potpuno bez napona? Odlučio sam ići drugim putem - sastaviti dugovječan, što jednostavniji i neovisan o električnoj mreži uređaj, koji će cijelo vrijeme spavati, a kada pljačkaši uđu, pokrenut će se i zvati natrag na telefon vlasnika, signaliziranje jednostavnim alarmnim pozivom.

Pregledajte stavke

Kupljeno:
1. Daska za kruh jednostrano 5x7 cm: getinaks- ili stakloplastike
* - fiberglass je puno bolji od getinaksa.
2. Modul Neoway M590 - , s PCB antenom -
3. Arduino Pro Mini "RobotDyn" ATmega168PA 8MHz 3.3V -
4. Kontrolna ploča punjenja i pražnjenja litija -

Dobiveno iz ruševina civilizacije:
1. Stalci za ploču, piljeni od kućišta uređaja - 6 kom.
2. Litij ravna baterija 1300mAh
3. Spojnice koje se koriste za pričvršćivanje kabela na zid
4. Gumica za tiskanice
5. Bakrene žice 1,5 mm debljine
6. Kutija za instrumente s lokalnog radijskog tržišta - 1.5$
7. Par LED dioda različite boje(preuzeto sa VHS playera)
8. Antena i gumb s poklopcem (preuzeto s Wi-Fi rutera)
9. 4-pinski terminalni blok (preuzeto s dimmera)
10. Konektor za napajanje (preuzet sa starog punjača za 18650)
11. 6-pinski konektor (preuzet s DVD pogona)
12. Limenka(ispod kafe npr.)

Arduino Pro Mini "RobotDyn" Atmega 168PA 3.3V 8MHz

Tehnički podaci:
Mikrokontroler: ATmega168PA
Izravni radni napon: 0,8 - 5,5 V
Radni napon kroz stabilizator LE33: 3,3 V ili 5 V (ovisno o modelu)
Radna temperatura:-40°C… 105°C
Ulazni napon: 3,35-12V (3,3V model) ili 5-12V (5V model)
Digitalni ulazi/izlazi: 14 (od kojih se 6 mogu koristiti kao PWM izlazi: 3, 5, 6, 9, 10 i 11)
Analogni ulazi: 6
Brojači vremena: dva 8-bitna i jedan 16-bitni
Načini uštede energije: 6
Istosmjerna struja kroz ulaz/izlaz: 40 mA
Brza memorija: 16 KB (2 korištena za bootloader)
RADNA MEMORIJA: 1 Kb
EEPROM: 512 bajtova
Resurs pisanja/brisanja memorije: 10.000 Flash/100.000 EEPROM
Frekvencija sata: 8 MHz (3,3 V model) ili 16 MHz (5 V model)
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)
I2C: A4 (SDA) i A5 (SCL)
UART TTL: 0 (RX) i 1 (TX)
Podatkovna tablica:

Izbor je sasvim slučajno pao na ovu atmegu. na jednom forumu gdje se raspravljalo o energetski učinkovitim projektima, u komentarima sam dobio savjet da koristim upravo 168. atmegu.
Međutim, morao sam petljati da pronađem takvu ploču, jer su vrlo često sve parcele bile preplavljene s 328 atmega na frekvenciji od 16 MHz, radeći od 5V. Za moj projekt takve su karakteristike od samog početka bile suvišne i nezgodne, traženje je postalo kompliciranije.
Kao rezultat toga, na eBayu sam naišao na verziju Pro Mini od 3,3 volta na Atmega 168PA, i to ne samo kinesku, već pod robnom markom RobotDyn od ruskog programera. Da, i ja sam u početku, kao i ti, imala zrnce sumnje. Ali uzalud. Kad je projekt već bio sastavljen, a AliExpress je uveo obaveznu plaćenu dostavu za jeftinu robu (nakon čega su se paketi počeli gubiti mnogo češće), kasnije sam naručio obični Pro Mini Atmega168 (bez PA) 3.3V 8MHz. Malo sam eksperimentirao s načinima uštede energije s obje ploče, ubacivši u svaku posebnu skicu koja je mikrokontroler uronila u način maksimalne uštede energije i evo što se dogodilo:
1) Arduino Pro Mini "RobotDyn": ~250uA
2) Arduino Pro Mini "NoName": kada se napaja regulator napona (RAW izlaz) i LED je zalemljen, potrošnja struje je ~3,92 mA




- kao što razumijete, razlika u potrošnji energije je gotovo 16 puta, a sve zato što NoName's Moscow Pro Mini koristi hrpu Atmega168 +, od kojih sam MK jede samo 20uA struja (ovo sam zasebno provjerio), sav ostatak proždrljivosti pada na AMS1117 linearni pretvarač napona - podatkovna tablica to samo potvrđuje:


U slučaju ploče iz RobotDyn-a, veza je već nešto drugačija - ovo je Atmega168PA + - ovdje se već koristi još jedan LDO stabilizator, čije su se karakteristike u pogledu uštede energije pokazale ugodnijim:


Nisam ga lemio, tako da ne mogu reći koliko struje Atmega168PA troši u svom čistom obliku. U ovom slučaju jesam ~250uA kada ga pokreće Nokia litijska baterija. Međutim, ako odlemite AMS1117 s NoName "Moskovske ploče, tada je ATmega168 običan, u svom čistom obliku, kao što sam rekao gore, troši 20uA.
LED diode napajanja mogu se oboriti nečim oštrim. Nije problem. Stabilizator je zalemljen sušilom za kosu. Međutim, nemaju svi sušilo za kosu i vještine za rad s njim, tako da obje gore navedene opcije imaju pravo postojati.

Neoway M590E modul

Tehnički podaci:
Frekvencije: EGSM900/DCS1800 Dual-band, ili GSM850/1900 ili Quad-band
Osjetljivost:-107 dBm
Maksimalna snaga prijenosa: EGSM900 klasa 4 (2W), DCS1800 klasa 1 (1W)
Vršna struja: 2A
Radna struja: 210 mA
Struja mirovanja: 2,5 mA
Radna temperatura:-40°C… +85°C
Radni napon: 3,3 V…4,5 V (preporučeno 3,9 V)
Protokoli: GSM/GPRS Phase2/2+, TCP/IP, FTP, UDP itd.
Internet: GPRS KLASA 10
Podatkovna tablica:

Najjeftiniji GSM modul koji se može naći na tržištu, najčešće polovni, zalemljen ne baš uvijek spretnim kineskim rukama od opreme. Zašto ne uvijek pametan? Da, sve zbog lemljenja sušilom za kosu - često ovi moduli dolaze ljudima s kratko spojenim plusom i minusom, što je jedan od razloga njihove neispravnosti. Stoga je prvi korak zvoniti kontakte za napajanje zbog kratkog spoja.

Bilješka.Želio bih napomenuti zasebnu, važnu, po mom mišljenju, točku - ovi moduli mogu doći s okruglim koaksijalnim konektorom za antenu, što vam omogućuje da zasebno naručite ozbiljniju antenu i spojite je na modul bez plesanja s tamburinom . I mogu doći bez ovog priključka. Ovo je ako govorimo o najjeftinijim setovima. Ako se ne želite osloniti na sretnu priliku, onda postoje setovi koji su malo skuplji, gdje je ovaj konektor prisutan + komplet dolazi s vanjskom antenom na tekstolitnoj ploči.

Ovaj modul je hirovit i pred napajanjem jer na svom vrhuncu troši i do 2A struje, a dioda koja dolazi u kompletu kao da je predviđena za spuštanje napona od 5V (zato na samoj pločici piše 5V ) na 4,2 V, ali sudeći prema pritužbama ljudi, on stvara više problema nego koristi.
Pretpostavimo da ste već sastavili ovaj modul, a umjesto diode je zalemljen kratkospojnik, budući da mu nećemo napajati napon od 5 V, već ćemo ga napajati izravno iz litijske baterije, koja je unutar dopuštenog napona od 3,3-4,2 V.
Bit će potrebno nekako ga povezati s računalom i provjeriti operativnost. Za ovaj slučaj, bolje je kupiti se unaprijed - preko njega ćemo komunicirati s Arduino modulom i pločama preko UART (USART) serijskog sučelja.
Spoj je prikazan ispod na slici (nacrtao sam najbolje što mogu):
TX modem >>> RX pretvarač
RX modem<<< TX конвертера
Battery Plus - Modem Plus
Minus litijske baterije kombiniran je s GND modema i GND pretvarača
Za pokretanje modema spojite BOOT izlaz preko otpornika od 4,7 kΩ na GND


U međuvremenu pokrenite program na računalu. Obratite pozornost na postavke:
1) Odaberite COM port na koji je spojen TTL pretvarač, u mom slučaju to je COM4, ​​vaš može biti drugačiji.
2) Odaberite brzinu prijenosa podataka. (Ovdje postoji nijansa, jer se sami moduli mogu konfigurirati za različite brzine, najčešće 9600 bauda ili 115200 bauda. Ovdje morate odabrati empirijski, odabirom neke brzine, povezivanjem i slanjem AT naredbe, ako pukotine dođu kao odgovor , zatim će se isključiti, odaberite drugu brzinu i ponavljajte naredbu dok odgovor ne bude OK).
3) Odaberite duljinu paketa (u ovom slučaju 8 bita), paritetni bit onemogućen (nema), stop bit (1).
4) Obavezno označite +CR, a zatim će svakoj naredbi koju pošaljemo modulu na kraju automatski biti dodan znak za vraćanje redaka - modul razumije naredbe samo s tim znakom na kraju.
5) Veza, ovdje je sve jasno, kliknuto i možemo raditi s modulom.

Ako kliknete na "Spajanje", a zatim pokrenete modul primjenom BOOT-a kroz otpornik od 4,7 K na masu, prvo će se na terminalu prikazati poruka "MODEM:STARTUP", a nakon nekog vremena poruka "+ PBREADY" će se prikazati, što znači da je telefonski broj pročitan. knjiga, iako je možda prazna:

Pod ovim spojlerom AT naredbe s primjerima

Ispisujemo AT naredbu - kao odgovor, modul nam šalje našu naredbu, budući da je echo način rada omogućen, i OK:

Provjerimo status modema s AT + CPAS naredbom - kao odgovor, opet naš tim, + CPAS: 0 i OK.
0 - znači da je modul spreman za rad, ali ovisno o situaciji, mogu postojati i drugi brojevi, na primjer, 3 - dolazni poziv, 4 - u načinu rada veze, 5 - način mirovanja. Nisam mogao pronaći informacije o 1 i 2.

Promjena brzine prijenosa podataka putem UART-a događa se naredbom AT + IPR = 9600 - to je ako trebate brzinu od 9600. Ako je neka druga, slično AT + IPR = 19200 na primjer ili AT + IPR = 115200.

Provjerimo mrežni signal. AT + CSQ, + CSQ dolazi kao odgovor: 22.1 - vrijednost prije decimalne točke ima raspon od 0 ... 31 (115 ... 52 dB) - ovo je razina signala, što više, to bolje. Ali 99 znači njegovo odsustvo. Vrijednost nakon decimalne točke - kvaliteta signala 0 ... 7 - ovdje je suprotna, što je broj manji, to bolje.

Isključimo echo mod slanjem naredbe ATE0 tako da duple naredbe ne smetaju. Ovaj način se ponovno uključuje naredbom ATE1.

Pogledajte verziju firmvera AT+GETVERS



Ove i mnoge druge naredbe možete vidjeti

Kombinacija ploča

Ako Pro Mini nije teško lemiti na matičnu ploču, onda je s GSM modulom situacija nešto složenija, jer. njegov kontaktni češalj nalazi se samo s jedne strane, a ako je samo zalemljen, tada će druga strana ploče jednostavno visjeti u zraku. Onda sam, opet, na oko, morao izbušiti dodatne 3 rupe u blizini tri kuta na ploči. Područja oko svake od rupa zatim su demaskirana. Radi praktičnosti, stavio sam odspojene vodove s češlja na matičnu ploču bez lemljenja (bijelu) i, nakon što sam na njih instalirao ploču GSM modula, normalno zalemio:

Kasnije sam morao napraviti još jednu rupu, u mom slučaju na slovo "I", gdje piše "Made In China", na rubu ploče.


Dogodilo se da je dodani kontakt, koji je u biti GND, postao blizak GND-u Pro Mini ploče, pa je tako postalo moguće spojiti masu GSM modula i Pro Mini-a s kapljicom lema (dugi vod u sredini i desno od njega je Pro Mini lead) - označeni su strelicama. Ispalo je krivo, naravno, ali sada sigurno drži:



Ostalo je nešto prostora između ploča – postavio sam pločicu za kontrolu punjenja pražnjenja litija s prethodno zalemljenim microUSB konektorom i zalemljenim žicama u njoj.

Šal tu ulazi vrlo čvrsto, dok će se kroz malu rupicu na kućištu jasno vidjeti sjaj LED dioda sa strane.



Stalci za ploče

Da bih sigurno fiksirao ploču unutar kućišta, morao sam provesti nekoliko dana razmišljajući o tome kako bi se to moglo implementirati. Opcija s taljivim ljepilom nije razmatrana iz nekoliko razloga - može otpasti, deformirati se, i što je najvažnije, dizajn bi se pokazao teškim za rastavljanje.
Došao sam do zaključka da bi najjednostavnija i najispravnija opcija ovdje bila uporaba stalaka, koje naravno nisam imao. Međutim, bilo je nekoliko neradnih punjača, odakle je izrezan jedan dugačak stalak s navojem za samorezne vijke. Svaki je stalak prerezan na pola i dorađen turpijom na oko 9,5 mm - na ovoj visini baterija ispod ploče ima dovoljnu marginu, oko 2 mm - to je učinjeno tako da lemljeni kontakti ploče ne dodiruju to s njihovim vrhovima i tako da je moguće između njih staviti komad pjene za fiksiranje.
Što se tiče pričvršćivanja ploče izravno na kućište, ovdje sam izrezao četiri trake iz limenke za kavu, izbušio rupu na čijim krajevima, a zatim ih pričvrstio na iste samorezne vijke koji se uvijaju u police. Pogledajte fotografiju ispod kako biste vidjeli kako to izgleda.
Sljedeći korak je prišrafiti par postolja s druge strane ploče, odnosno odozgo, tako da kada je kućište zatvoreno, poklopac lagano naliježe na te postolje, stvarajući dodatnu fiksaciju. Malo kasnije, ispod ovog slučaja, naišao sam na zgradu ispod sovjetskog propagandnog radija (da je pronađena ranije, odavde bih uzeo sve regale), gdje sam pronašao nekoliko više ili manje prikladnih visina, ali prvo sam ih izbušio u sredini bušilicom ispod samoreznih vijaka. Zatim ih je odrezao i također dovršio turpijom, uklanjajući višak. Ovdje sam dobio jednu suptilnost - na fotografiji možete vidjeti da je jedan bijeli stalak pričvršćen na getinax ploču s ruba, a drugi bijeli stalak je direktno na ploču modula, jer. s jednog ruba modemska ploča potpuno prekriva donju ploču, a sa suprotnog ruba, naprotiv, donja gleda van. Pritom je u obje ploče trebalo dodatno izbušiti rupe kako bi glave samoreznih vijaka mogle slobodno prolaziti.
I na kraju, ostaje paziti da ploča uvijek bude paralelna s kućištem - nosači koji se koriste za fiksiranje žica i kablova na zidu savršeno pristaju ispod ove kućišta, prethodno sam izvadio čavle s njih. Nosači dobro prianjaju na ploču svojom konkavnom stranom bez ikakvih dodatnih naprava, jedino što je desno od SIM kartice, širina nosača se pokazala pretjeranom i trebalo ga je također brusiti.
Svi detalji su prilagođeni okom i empirijski, ispod je fotografija svega navedenog:



Priključci. LED diode. Dugme.

Budući da mi je ponestalo češlja, morao sam rastaviti 6-pinski konektor s ploče DVD pogona, koji sam zatim zalemio na Pro Mini, ovo je radi lakšeg bljeskanja ploče. U blizini sam zalemio okrugli konektor (Nokiev 3,5 mm) za punjenje litija.

Tijelo 6-pinskog konektora je malo dorađeno turpijom, jer su njegovi rubovi malo virili iznad tijela. Utičnica za punjenje savršeno pristaje uz stijenku kućišta.

S druge strane ploče zalemio sam tipku za resetiranje uređaja i dvije LED diode za ispravljanje pogrešaka firmvera - crvena LED je spojena na GSM modul, druga zelena LED je spojena na 10. izlaz Pro Minija - to je lakše mi je otkloniti pogreške u programu.

Nadogradnja baterije

Prazna baterija Nokian iz Nokia telefona nije ništa manje uobičajena od 18650, ali mnogi je jednostavno odbijaju koristiti zbog neugodnosti povezivanja kontakata koji su duboko uvučeni u samu bateriju. Neželjeno ih je lemiti, pa je odlučeno upotrijebiti metodu koju su predložili, naime, izraditi kontaktni blok od gumice za tiskanice i bakrene žice (debljine 1,5 mm).
Prvo sam probušio komad gumice s dvije žice s prethodno ogoljenim krajevima i skužio to do kontakata baterije tako da se razmak između njih podudara,
savio je krajeve, pokositrio ih lemilicom i malo ih povukao za duge krajeve tako da su dobiveni kontakti utonuli u gumicu.



Primjer baterije:

Priključni blok možete popraviti gumicom ili omotati plavom električnom trakom, što sam ja na kraju i učinio.

Skupština.

Glavni dio posla je obavljen, ostaje sve skupiti i popraviti.
Između baterije i ploče stavio sam komad pjenaste gume da se kasnije ne uvuče u kućište. Dodatno sam zalemio kondenzator od 2200 uF za napajanje modula.

Kada je priključeno punjenje:

Okvir. Vanjski terminalni blok.

Kućište je na lokalnom radijskom tržištu dospjelo za oko 1,5 dolara, prevedeno u dolare, veličine 95x60x25 mm, gotovo veličine kutije cigareta. Izbušio sam nekoliko rupa u njemu. Prvo, za 4-pinski terminalni blok preuzet iz neradnog dimmera.
Potpuno sam oslobodio dva ekstremna kontakta od vijaka s brtvama, izbušio rupe za duže vijke, na kojima će se cijeli blok stezaljki držati na kućištu. Na samom kućištu, naravno, dvije krajnje rupe će biti velike, a dvije u sredini će biti manje - kroz njih će biti provučeni kontakti od kojih je jedan spojen na VCC Pro Mini, a drugi kontakt na VCC Pro Mini. igla 2.

Bušenje rupa, iako na prvi pogled jednostavno, nije ništa manje dugotrajno, vrlo je lako promašiti, pa sam to prvo radio s bušilicom manjeg promjera, pa onda većom.

Za gumb za sat uzeo sam kapu s blago konkavnim vrhom, tako da je kroz usku rupu u kućištu bilo zgodno udariti je šibicom ili spajalicom.

Ploča u kućištu s priključenim USB-TTL konverterskim kabelom:

O anteni.
Antena se, kao što ste možda primijetili tijekom recenzije, stalno mijenjala, dok sam eksperimentirao s različitim antenama domaće izrade. U početku je na pločici modula bio okrugli koaksijalni konektor, ali nakon petog korištenja za vanjsku antenu jednostavno se raspao, pa imajte na umu da je slab. Kao rezultat toga, iščupao sam tekstolitnu antenu iz starog usmjerivača i zalemio je na ploču modula, jer. malo bolje hvata mrežu od opruge i žice.

Pa, potpuno sastavljen s povezanim punjenjem izgleda ovako:

Test. Kako radi:

Osim testova s ​​antenama, provjerio sam kako će se alarm ponašati na ulici, na mrazu -15. Da bih to učinio, jednostavno sam stavio cijelu unutrašnjost u posudu i ostavio je na balkonu preko noći, dok se alarm nije uključio, razlog se pokazao općenito očitim - litij ne voli mraz. To je potvrdio još jedan test, gdje sam ostavio bateriju kod kuće, a ploču kroz duge žice iznio na ulicu i ostavio je tako jedan dan na istom mrazu - rad, kao da se ništa nije dogodilo. S druge strane, bilo bi čudno da alarm ne radi. u podatkovnim tablicama za atmega, za modul, za kvarc - dopuštene radne temperature su do -40 stupnjeva.

Princip rada organiziran je vanjskim prekidom, inicijalno je pin 2 zatvoren na VCC i tako se održava logička 1 na izlazu, a kontroler spava. Čim se kontakt prekine i na pinu 2 se pojavi 0, mikrokontroler se budi, spušta 3. pin (na koji je modem BOOT spojen preko otpornika) na masu - modul se pokreće, MK povremeno ispituje modul za spremnosti, a čim uhvati mrežu, odmah šalje poziv na telefonski broj vlasnika naveden u šifri. Nakon odbijanja poziva, uređaj se gasi bez slanja više beskonačnih poziva nego što griješe mnogi kineski alarmi.

dodatne informacije

#uključi #uključi // softverska UART biblioteka SoftwareSerial gsm(7, 6); // RX(7), TX(6) void wakeUp()() // prazan rukovatelj prekidom ///////////////////////////// ////////// /////////////// void gsmOFF()( // PORTD|=(1<<3); // ВЫКЛЮЧЕНИЕ МОДУЛЯ _delay_ms(10); // gsm.println("AT+CPWROFF"); // ПЕЧАТАЕМ КОМАНДУ OFF PORTB &=~ (1<<2); // выключить LED 10 } // //========================================= void gsmON(){ // PORTD|=(1<<6); // 6-му порту (TX) назначить 1 PORTD &= ~(1<<3); // ЗАПУСК МОДУЛЯ _delay_ms(10); // while(!gsm.find("+PBREADY")); // ждём прочтения тел. книги PORTB |= (1<<2); // включить LED 10 _delay_ms(100); // while(1){ // gsm.println("AT+CREG?"); // проверяем в сети ли модуль if (gsm.find("0,1")) break; // если сеть есть, выходим из цикла _delay_ms(400); // проверка раз в 0,4 сек } // } // /////////////////////////////////////////// // void sleepNow(){ // функция засыпания ADCSRA = 0x00; // отключить подсистему АЦП (экономия 140 мкА) PORTD&=~(1<<6); // в вывод TX поставить 0 _delay_ms(100); // set_sleep_mode(SLEEP_MODE_PWR_DOWN); // режим сна PWR_DOWN sleep_enable(); // включение сна attachInterrupt(0, wakeUp, LOW); // включить прерывания sleep_mode(); // sleep_disable(); // detachInterrupt(0); // отключить прерывания } void setup(){ gsm.begin(9600); // скорость работы UART DDRD = B01001000; // 3-й и 6-й выводы на выход DDRB |= (1<<2); // вывод 10 на выход gsmON(); // запуск модуля для теста gsmOFF(); // выключаем модуль } void loop(){ if (!(PIND&(1<<2))){ // если на 0-ом прерывании появился 0 gsmON(); gsm.println("ATD+79xxxxxxxxx;"); // отзваниваемся, в ответ приходит OK и CONNECT _delay_ms(100); if (gsm.find("OK")) while(1){ // ожидание сброса вызова gsm.println("AT+CPAS"); // при каждой итерации опрашиваем модуль if (gsm.find("0")) break; // если 0, то выходим из цикла while _delay_ms(100); // проверка раз в 0,1 сек } for (char i=0; i<14; i++){ PORTB|=(1<<2); // LED 10 ON _delay_ms(200); PORTB&=~(1<<2); // LED 10 OFF _delay_ms(200); } gsmOFF(); // выключить модуль _delay_ms(10); while(1); // блокируем программу } else { sleepNow(); // укладываем контроллер спать } }

Dijagram (bez upravljačke ploče punjenja i pražnjenja)



Zaključci i razmišljanja. Planovi.

Alarm se koristi u zemlji, zadovoljan sam radom, međutim, daljnjim proučavanjem AVR-a dolazi sve više ideja za njegovu daljnju modifikaciju. Arduino sa svojim pseudo-jezikom Wiring me jako uznemirio, jer. U radu je postojao jedan neugodan trenutak. Kada sam koristio funkcije za rad s portovima digitalWrite(); ili pinMode(); - tada je GSM modul iz nekog razloga vrlo često prekidao vezu. Ali vrijedilo ih je zamijeniti trikovima poput DDRB|=(1<Samo operacija izravnog pristupa priključcima omogućila je da uređaj radi kako je i zamišljeno.

Za uštedu energije...
Sastavljeni uređaj radio je puna četiri mjeseca bez punjenja i nastavlja raditi, iako je ispravnije reći "spavanje". To se provjerava jednostavnim ponovnim pokretanjem putem bijelog gumba. Uz potrošnju od 250 μA (preko LE33 stabilizatora) i bateriju od ~1430 mAh, iako okej, zbog nenovosti baterije ćemo zaokružiti na 1000mAh, ispada da uređaj može spavati oko 5,5 mjeseci bez punjenja. Ako i dalje odlemite stabilizator, tada se vrijeme rada može sigurno pomnožiti 10 puta. Ali u mom slučaju nema potrebe za tim, jer još uvijek morate trošiti stanje sa SIM kartice svaka tri mjeseca, au isto vrijeme uređaj se može provjeriti i napuniti.
Primjer uštede energije dat u pregledu daleko je od granice, jer. sudeći prema podacima iz podatkovne tablice, moguće je spustiti takt mikrokontrolera (a to se radi ugradnjom osigurača) na 1 MHz, a ako se stavi napon od 1,8 V, onda će potrošnja pasti ispod bara od 1 μA u aktivnom načinu rada. Vrlo glupo! Ali ako se MK taktira iz internog RC generatora, tada će se pojaviti još jedan problem - UART eter će biti začepljen smećem i pogreškama, pogotovo ako se kontroler grije ili hladi.

Po završetku...
1) Konvencionalna žica postavljena na prekid nije baš zgodna, planiram eksperimentirati s Hallovim senzorom i reed prekidačem, iako za potonji kažu da nije baš pouzdan, jer se kontakti unutar njega mogu zalijepiti.
2) Bilo bi lijepo dodati mogućnost promjene "vlasničkog broja" bez sudjelovanja računala i bljeskanja. Ovo već s EEPROM-om će morati raditi.
3) Pokušajte s prekidima od watchdog timera, ali ne samo radi znatiželje, već da se mikrokontroler povremeno sam probudi, izmjeri napon baterije i pošalje dobivenu vrijednost putem SMS-a kako biste bili svjesni koliko je baterija prazna.
4) Solarni panel može u potpunosti eliminirati potrebu za punjenjem uređaja, a to će posebno vrijediti za baterije niskog kapaciteta.
5) Dugo sam želio kupiti LiFePo4 baterije, koje, prema recenzijama, normalno podnose mraz, ali dok sam tražio odgovarajuću parcelu, proljeće je već neprimjetno došlo.
6) Radite na estetskoj komponenti

Koji Pro Mini trebam kupiti?
Ako nema sušila za kosu, onda Pro Mini "RobotDyn" Atmega168PA 3.3V, podignite LED nečim oštrim i imajte ~ 250 μA.
Ako postoji sušilo za kosu, onda bilo koja ploča, lemljenje stabilizatora i LED za napajanje - dobivate ~ 20 μA potrošnje struje.

Toliko za sada, nadam se da je recenzija bila zanimljiva i korisna.

Planiram kupiti +174 Dodaj u favorite Svidjela mi se recenzija +143 +278