Signalizacijos valdymas su arduino ekranu. Namų signalizacija arba naudojant judesio jutiklį ir LCD monitorių su Arduino. Kas yra Arduino modulis

Šiandien mes kalbėsime apie tai, kaip naudoti Arduino surinkti apsaugos sistema... Mūsų „sargas“ saugos vieną grandinę ir valdys vieną sireną.

„Arduino“ tai nėra problema ir, kaip matysite iš programos kodo ir įrenginio diagramos, galite nesunkiai padidinti apsaugotų prieigos taškų skaičių ir įspėjimo ar indikacijos įrenginių skaičių.
Apsaugos sistema gali būti naudojamas saugoti tiek didelius objektus (pastatus ir statinius), tiek smulkius daiktus (dėžutes, seifus), ir net nešiojamus dėklus bei lagaminus. Nors su pastaraisiais reikia būti atsargesniems, bet jeigu įdiegsite apsaugos sistemą, pavyzdžiui, ant lagamino, su kuriuo nuspręsite vykti į kelionę, o kokiame nors oro uoste suges perspėjimo sistema, tai manau, kad turėsite rimtas pokalbis su vietine apsaugos tarnyba :-)

Supaprastintu būdu įrenginio veikimo principas yra toks (1 pav.). Įjungus maitinimą, įrenginys persijungia į darbo režimą ir laukia apsaugos įjungimo. Apsaugos įjungimas ir išjungimas atliekamas vienu mygtuku. Siekiant padidinti saugumą, šį mygtuką geriau įdėti į saugomą zoną (seifą arba dėžę). Prieš įjungiant apsaugos režimą, dureles reikia šiek tiek atidaryti. Kai įjungtas saugos režimas (paspaudus mygtuką) elektroninė grandinė laukia, kol uždarysite kambario duris (seifo duris, dėžės dangtį ir pan.).

Ant durų (arba durų) turi būti sumontuotas bet kokio tipo ribinis jungiklis, daugiau apie tai vėliau. Uždarydamas (arba atidarydamas), ribinis jungiklis informuos įrenginį, kad apsaugota grandinė uždaryta, o įrenginys persijungs į saugojimo režimą. Apie perėjimą į saugomą režimą sistema praneš dviem trumpi pyptelėjimai(kaip ir automobilių signalizacijose). Šiuo režimu prietaisas „pagauna“ durų atidarymą. Atidarius dureles, sistema laukia kelias sekundes (tai konfigūruojama reikšmė, kambariams apie dešimt sekundžių, dėžutei viena ar dvi) apsaugos išjungimo, jei tai neįvyksta, įsijungia sirena. Algoritmas ir grandinė suprojektuoti taip, kad išjungti sireną galėtumėte tik visiškai išardę korpusą ir išjungę maitinimą.

Įrenginys apsaugos sistema labai paprasta (2 pav.). Mokesčio esmė Arduino... Ribiniai jungikliai sujungiami kaip įprastas mygtukas per ištraukiamuosius rezistorius. Prie galinių jungiklių pakalbėsiu atskirai. Paprastai jie yra uždaryti ir paprastai atidaryti. Įprastą mygtuką galite įjungti kaip ribinį jungiklį, tik paprasto mygtuko eiga labai didelė, durų laisvumas dažniausiai didesnis. Todėl reikia sugalvoti kažkokį mygtuko stūmiklį ir jį spyruokliuoti, kad nenulaužtų mygtuko su durelėmis. Na, o jei ne tinginystė, tai galima nueiti iki parduotuvės ir nusipirkti magnetinį jungiklį (nendrinį jungiklį) (3 pav.), jis nebijo dulkių ir purvo.

Taip pat tinka automobilio signalizacijos ribinis jungiklis (4 pav.). Reikėtų pažymėti, kad programa yra parašyta nendriniam jungikliui. Kai durys uždarytos, jų kontaktas užsidaro. Jei naudosite jungiklį iš automobilio signalizacijos, tada, kai durys bus uždarytos, jos greičiausiai bus atidarytos, o atitinkamose kodo vietose turėsite pakeisti 0 į 1 ir atvirkščiai.

Kaip sireną siūlau naudoti Baltarusijoje pagamintą garso signalizatorių PKI-1 IVOLGA (5 pav.). Maitinimo įtampa 9 - 15 V, darbinė srovė 20 - 30 mA. Tai leidžia jį naudoti su akumuliatoriaus energija. Tuo pačiu „išduoda“ 95 – 105 dB.

Su tokiomis „Krona“ akumuliatoriaus savybėmis jis skambės kelias dešimtis minučių. Radau internete už 110 rublių. Ten nendrinis jungiklis su magnetu kainuoja apie 30 rublių. Automobilio signalizacijos jungiklis automobilių dalyse buvo įsigytas už 28 rublius. KT315 tranzistorius gali būti paimtas su bet kokia raide arba pakeistas bet kokiu šiuolaikiniu mažos galios silicio tranzistoriumi, turinčiu atitinkamą laidumą. Jei vienos sirenos garsumo neužtenka (kas žino, gal nori, kad girdėtų daug kilometrų), galima lygiagrečiai sujungti kelias sirenas arba imti galingesnę, tik tokiu atveju tranzistorių reikia pakeisti galingesnis (pavyzdžiui, pažįstamas tranzistorių mazgas ULN2003). Kaip nendrinio jungiklio ir sirenos prijungimo jungtis naudojau paprasčiausias garso / vaizdo įrenginių jungtis - kaina radijo rinkoje yra 5 rubliai. porai.

Prietaiso korpusas gali būti klijuojamas iš plastiko arba faneros; jei rimtas objektas yra saugomas, tai geriau jį padaryti metaliniu. Baterijos arba įkraunamos baterijos turi būti dedamos į dėklo vidų, kad padidintumėte patikimumą ir saugumą.

Kad būtų supaprastintas programos kodas, nebuvo naudojami jokie energiją taupantys elementai, o baterijų ilgam neužtenka. Galite optimizuoti kodą arba, dar geriau, radikaliai jį pakeisti, taikydami pertraukimo įvykių tvarkymą ir MK užmigdymo režimą. Tokiu atveju maitinimas iš dviejų nuosekliai sujungtų kvadratinių baterijų (9 V) turėtų trukti kelis mėnesius.

Dabar kodas

// konstantos
const int mygtukas = 12; // mygtuko smeigtukas
const int gerkon = 3; // kaištis nendriniam jungikliui
const int sirena = 2; // sirenos valdymas
const int led = 13; // indikatoriaus kaištis
// kintamieji
int mygtukasBūsena = 0; // mygtuko būsena
int gerkonState = 0; // nendrinio jungiklio būsena
int N = 0; // apsaugos išjungimo mygtuko skaitiklis
anuliuota sąranka () (
// sirenos ir indikatoriaus valdymas – išėjimas
pinMode (sirena, OUTPUT);
pinMode (LED, OUTPUT); // mygtukas ir nendrinis jungiklis yra įvestis
pinMode (gerkon, INPUT);
pinMode (mygtukas, INPUT);
}
tuščioji kilpa () (
digitalWrite (LED, HIGH);
while (buttonState = = 0) (// palaukite, kol paspausime mygtuką
buttonState = skaitmeninis skaitymas (mygtukas); // norėdami perjungti į saugos režimą
}
digitalWrite (LED, LOW);
mygtuko būsena = 0; // nulinę mygtuko reikšmę
while (gerkonState = = 0) (// kilpa, kol uždarysime duris

}
vėlavimas (500); // :-)
digitalWrite (sirena, HIGH); // Kodas
vėlavimas (100); // indikacijos
digitalWrite (sirena, LOW); // įtraukti
vėlavimas (70); // režimas
digitalWrite (sirena, HIGH); // apsauga
vėlavimas (100); // budrus
digitalWrite (sirena, LOW); // garsas
while (gerkonState = = 1) (// palaukite, kol atsidarys durys
gerkonState = digitalRead (gerkon);
}
už (int i = 0; i<= 5; i++){ // 7,5 секунды на нажатие
buttonState = skaitmeninis skaitymas (mygtukas); // slaptas mygtukas
if (buttonState = = HIGH) (// Sekite savo – svetimą
N = N + 1;
}
vėlavimas (1500); // slapta funkcija :-)))
}
jei (N> 0) (// svarbiausia
digitalWrite (sirena, LOW); // nejunkite sirenos
}
Kitas (
digitalWrite (sirena, HIGH); // arba įjungti sireną
}
digitalWrite (LED, HIGH); // įjungti indikatorių N = 0;
mygtuko būsena = 0;
vėlavimas (15000); // priminimas manekenams, kuriems patinka
digitalWrite (LED, LOW); // paspausti mygtukus be pertraukos delsos (1000);

Gera diena! Vėlgi, daugkartinė Kinijos elektroninių komponentų apžvalga, kaip įprasta šiek tiek apie viską, pabandysiu trumpai, bet ar pavyks? Taigi sveiki GSM signalizacija kainuoja iki 700 rublių. Įdomus? Aš prašau "nupjauti"!

Pradėkime! Prieš pradedant rekomenduoju pažvelgti į šį, mažiau komponentų ir daugiau savarankiškumo. Taigi, „techninės sąlygos“, pagrindiniai signalizacijos reikalavimai:

1) Praneškite, kai jutikliai suveikia.
2) Nutrūkus elektrai, turi būti suteikta tam tikra autonomija.
3) Signalizacijos valdymas sms ir skambučiais.

Kadangi aliarmo kūrimo procesas užsitęsė kelis mėnesius ir kai kurie pardavėjai nebeparduoda tų komponentų, kurie buvo įsigyti iš jų, bus atnaujintos nuorodos į kitų pardavėjų produktus, kurių skaičius yra didžiausias arba artimas maksimaliam. produktų pardavimo ir geriausia kaina... Apžvalgoje pateiktos kainos galioja rašymo dieną.

Sąrašas ko jums reikia:

Pakeitimų sąrašas

GSM_03_12_2016-14-38.hex- fiksuotas įrenginio veikimas su M590 modemu.
GSM_05_12_2016-13-45.hex- pridėta konsolės komanda memtest, RAM naudojimo optimizavimas.
GSM_2016_12_06-15-43.hex- pridėta komandų rezultatų išvestis į konsolę, atminties optimizavimas. Užimtumas: 49% SRAM.
GSM_2016_12_07-10-59.hex- dabar telefono numeriai pridedami ir pašalinami teisingai. Užimta: 49% SRAM, 74% Flash atmintis.
GSM_2016_12_07-15-38.hex- pridėta galimybė prijungti judesio jutiklį, jis jungiamas prie kaiščio A0 (šiuo atveju kontaktas A0 naudojamas kaip skaitmeninis). Pridėta SMS – komandos PIROn, PIRO išjungtas... Užimta: 48% SRAM, 76% Flash atmintis.
GSM_2016_12_08-13-53.hex– Dabar, sėkmingai įvykdžius komandą, kuri nesiunčia atsakymo SMS žinutės, įrenginys vieną kartą sumirksi mėlynu šviesos diodu. Dabar, netinkamai įvykdžius komandą, kuri neatsiunčia SMS žinutės, įrenginys du kartus sumirksi mėlynu šviesos diodu. Dabar, inicijavus įrenginio parametrus, jei įjungtas „tylus“ režimas (SendSms = 0), įrenginys 2 sekundes greitai mirksi mėlynu šviesos diodu. Ištaisyta klaida, dėl kurios numeris ne visada buvo ištrintas iš atminties komanda DeletePhone. Užimta: 48% SRAM, 78% Flash atmintis.
GSM_2016_12_11-09-12.hex- Pridėtos konsolės komandos AddPhone ir DeletePhone, sintaksė panaši į SMS komandas. Atminties optimizavimas. Užimta: 43% SRAM, 79% Flash atmintis.
GSM_2017_01_03-22-51.hex- Įdiegtas palaikymas panašiems įvesties / išvesties prievadų plėtikliams PCF8574 mikroschemoje, norint prijungti papildomus 8 jutiklius, įskaitant nendrinius jungiklius. Automatinė adresų paieška ir automatinė modulių konfigūracija. Standartiniai jutiklių pavadinimai ir loginis jų suveikimo lygis keičiami naudojant komandą EditSensor. Pakeistas pagrindinio jutiklio aliarmo SMS turinys (pin D0) „Aliarmas! Pagrindinis jutiklis! ir judesio jutiklis (kaištis A0) „Aliarmas! PIR jutiklis! Pridėtos EditSensor ir I2CScan komandos. Užimta: 66% SRAM, 92% Flash atmintis.
GSM_2017_01_15-23-26.šeš- A6_Mini modemo palaikymas. Išorinio maitinimo valdymas (kaištis D7). Pridėtos SMS komandos WatchPowerOn, WatchPowerOff. Pridėtos konsolės komandos ListConfig, ListSensor. Dabar SMS komanda EditSensor veikia tinkamai. Derinimo išvestis į prievado monitorių buvo šiek tiek „nukirpta“. Užimta: 66% SRAM, 95% Flash atmintis.
GSM_2017_01_16-23-54.hex- Dabar atsakymo žinutėje į SMS komandą „Info“ taip pat pranešama apie judesio jutiklio būseną. Ištaisyta klaida, dėl kurios kartais buvo siunčiamos tuščios SMS atsakymo žinutės. Dabar įrenginys praneša ne tik apie atsijungimą, bet ir apie išorinio maitinimo atnaujinimą. Visi modemai pradėjo "mažiau kalbėtis", dabar prievado monitorius yra šiek tiek švaresnis. Užimta: 66% SRAM, 95% Flash atmintis.
GSM_2017_02_04-20-23.hex- Ištaisyta klaida „Stebėkite įjungtą maitinimą“. Dabar, po apsaugos išjungimo, „signalizacijos kaištis“ yra išjungtas. Dabar, ištrynus numerį, konsolėje rodoma teisinga informacija. Galbūt ištaisyta klaida, dėl kurios kartais buvo siunčiamos tuščios SMS atsakymo žinutės. Užimta: 66% SRAM, 90% Flash atmintis.
GSM_2017_02_14-00-03.hex- Dabar SMS žinutės siunčiamos pagal numatytuosius nustatymus, parametras SendSms vėl lygus 1. Dabar, kai pagrindinio nendrinio jungiklio kontaktai yra uždaryti (durelės uždarytos), prietaisas 2 sekundes mirksi mėlynu šviesos diodu, signalizuodamas normalus darbas jutiklis. Užimta: 66% SRAM, 90% Flash atmintis.
GSM_2017_03_01-23-37.hex- Pašalinta komanda WatchPowerOn. Pridėta konsolės komanda WatchPowerOff, identiška SMS komandai. Pridėtos komandos WatchPowerOn1, WatchPowerOn2. WatchPowerOn1 – išorinis maitinimo stebėjimas įjungtas, jei aliarmas įjungtas, WatchPowerOn2 – išorinis maitinimo stebėjimas visada įjungtas. Įdiegta apsaugos įjungimo ir išjungimo iš išorinių įrenginių funkcija, tam naudojami gnybtai A1 (D15) ir A2 (D16). Signalizacijos įjungimas / išjungimas, kai pasirodo ant kaiščio A1 (D15) aukštas lygis+ 5V arba ant kaiščio A2 (D16) žemo lygio GND. Kaištis A1 (D15) traukiamas į GND, kaištis A2 (D16) traukiamas į + 5 V per 20 (10) kΩ rezistorius. Pridėtos komandos GuardButtonOn ir GuardButtonOff. Dabar, įjungus apsaugą, raudonas šviesos diodas mirksi tol, kol bus patikrintas pagrindinio nendrinio jutiklio grandinės vientisumas. Jei grandinė nepažeista, užsidega raudonas šviesos diodas. Užimta: 66% SRAM, 95% Flash atmintis.
GSM_2017_03_12-20-04.hex– Dabar konsolė tapo dar švaresnė, tačiau jei įjungtas „TestOn“ testavimo režimas, tada pulte rodoma papildoma informacija. Ištaisyta klaida „Išsiųsta!“, Dabar konsolėje teisingai rodomas pranešimas apie pranešimų siuntimą. „Pakartotinio klaidingo skambučio“ klaida buvo ištaisyta. Balanso užklausa dabar turėtų tinkamai veikti visuose modemuose. Užimta: 67% SRAM, 95% Flash atmintis.
GSM_2017_04_16-12-00.hex- Fiksuotas. Dabar informacijos ir pinigų komandos visada atsiųs atsakymo SMS žinutę. Komanda GuardButtonOn buvo pakeista komandomis GuardButtonOn1 ir GuardButtonOn2. Užimta: 67% SRAM, 99% Flash atmintis.
GSM_2017_04_21-09-43.hex - nerekomenduojama naudoti, tik testavimui, ačiū už nustatytas klaidas :) - Dabar parametras sendsms neturi įtakos SMS žinučių siuntimui elektros tinklo stebėjimui. Pridėta SMS komanda DelayBeforeGuard, kuri atsakinga už uždelsimą įjungiant apsaugą, reikšmė negali viršyti 255 sekundes. Pridėta SMS komanda DelayBeforeAlarm, kuri atsakinga už pranešimų siuntimo uždelsimą ir „alarm pin“ įjungimą, kai suveikia jutikliai, reikšmė negali viršyti 255 sekundes. Pašalintos ClearSMS komandos, dabar pranešimai ištrinami automatiškai gavus. Užimta: 68% SRAM, 100% Flash atmintis.
GSM_2017_04_22-20-42.hex- Ištaisytos kelios klaidos. ClearSMS komandos vėl yra programinėje įrangoje. Atminties optimizavimas. Užimta: 68% SRAM, 98% Flash atmintis.
GSM_2017_04_23-17-50.hex- Dabar balanso užklausa turėtų tinkamai veikti visuose modemuose. Apsaugos įjungimas ir išjungimas naudojant išorinius įrenginius dabar veikia tinkamai. Info komanda SMS atsakymo žinutės neturi būti tušti. Atminties optimizavimas. Užimta: 68% SRAM, 98% Flash atmintis.
GSM_2017_04_24-13-22.hex- Dabar konsolės komandų perkėlimas į GSM modulis atliekama tik tada, kai įjungtas bandymo režimas. Dabar nėra skirstymo į SMS komandas ir konsolines komandas, visas esamas komandas galima siųsti tiek SMS žinute, tiek per pultą. Tikriausiai ištaisyta klaida su komanda Info. Atminties optimizavimas. Užimta: 68% SRAM, 94% Flash atmintis.
GSM_2017_04_25-20-54.hex- Ištaisyta klaida, kai komanda ListConfig pakeitė paskutinio įvykio reikšmę. Dabar, įvedus komandas per kosol, nereikalingos SMS žinutės nesiunčiamos. Tikriausiai ištaisyta klaida su komanda Info. Atminties optimizavimas. Užimta: 66% SRAM, 94% Flash atmintis.
GSM_2017_04_30-12-57.hex- Laikinai įjungtas papildomos informacijos išvedimas į pultą siunčiant SMS žinutes ir formuojant atsakymą į Info komandą. Tikriausiai ištaisyta klaida su komanda Info. Atminties optimizavimas. Užimta: 66% SRAM, 92% Flash atmintis.
GSM_2017_05_06-11-52.hex- Ištaisyta naudojant funkciją DelayBeforeAlarm. Užimta: 66% SRAM, 93% Flash atmintis.
GSM_2017_05_23-21-27.hex- Šiek tiek pakeistas informacijos išvestis į konsolę. Pridėtas prievadų išplėtimo modulių palaikymas PCF8574A su adresais nuo 0x38 iki 0x3f imtinai. Ištaisyta klaida c. Dabar įrenginys automatiškai paleidžiamas iš naujo po komandų FullReset, ResetConfig, ResetPhone ir sėkmingai įvykdžius MemTest komandą. Pridėta „WatchPowerTime“ komanda. Dabar galima nustatyti laiką, po kurio bus išsiųsta SMS žinutė apie atsijungimą išorinis šaltinis mityba. Užimta: 67% SRAM, 94% Flash atmintis.
GSM_2017_05_26-20-22.hex- Fiksuotas išplėtimo plokštės jutiklių atminties inicijavimas. Pakeista komandos AddPhone sintaksė. Pridėta komanda EditMainPhone. Pakeistas pranešimų sistemos veikimo principas, suveikus davikliui pirmiausia bus siunčiamos sms žinutės, po kurių bus skambinami balso skambučiai. Telefonų numeriais su ženklu „S“ bus siunčiamos nerimą keliančios SMS žinutės (SMS). Balso skambučiai bus atliekami numeriais su „R“ (skambėjimo) ženklu. Pranešimai apie išorinio maitinimo šaltinio išjungimą / įjungimą bus siunčiami telefono numeriais su ženklu „P“ (maitinimas). Pridėta komanda RingTime. Dabar galima nustatyti aliarmo balso skambučio trukmę, parametras gali turėti reikšmę nuo 10 iki 255 sekundžių. Dabar komanda RingOn / RingOff visame pasaulyje įjungia / išjungia balso skambučio pranešimus. Pridėta komanda ResetSensor. Užimta: 68% SRAM, 99% Flash atmintis.
GSM_2017_06_02-17-43.hex- Prie AddPhone ir EditMainPhone komandų pridėtas parametras „I“ (Info), kuris atsakingas už sms pranešimus apie įrenginio apsaugos įjungimą arba išjungimą. Dabar, pridėjus pagrindinį numerį, įrenginys automatiškai paleidžiamas iš naujo. Dabar tuos pačius numerius galite įtraukti į įrenginio atmintį. Pridedant antrąjį ir vėlesnius pasikartojančius numerius, atributai „M“, „S“, „P“ ir „I“ iš jų bus automatiškai pašalinti. Šie numeriai bus naudojami pakartotiniams balso skambučiams, kai suveikia jutikliai. Ištaisyta klaida su kreivės išvestimi į konsolę, įvykdžius AddPhone komandą, dabar informacija automatiškai nerodoma pridėjus skaičių. Pridėta Reboot komanda. Užimta: 69% SRAM, 99% Flash atmintis.
GSM_2017_06_11-00-07.hex- Dabar vėl, kai uždaromi pagrindinio nendrinio jungiklio kontaktai (durelės uždarytos), prietaisas 2 sekundes mirksi mėlynu šviesos diodu, pranešdamas apie normalų jutiklio veikimą, kol įrenginys nėra įjungtas arba išjungtas. RingOn / RingOff komandos pašalintos. Dabar įrenginį galima išjungti žadintuvo skambučio metu, dabar jie atliekami fone. Užimta: 69% SRAM, 99% Flash atmintis.
GSM_2017_07_04-21-52.hex- Dabar komanda Pause nesiunčia atsakymo SMS. Pašalintos TestOn ir TestOff komandos. Valdymo vėliavėlė pašalinta iš visų numerių. Užimta: 68% SRAM, 96% Flash atmintis.
GSM_2017_07_24-12-02.hex- Pridėtos „ReedSwitchOn“ / „ReedSwitchOff“ komandos, skirtos pagrindiniam nendriniam jutikliui stebėti, dabar jį galima įjungti / išjungti taip pat, kaip ir judesio jutiklį. Ištaisyta komandos Info klaida. TestOn ir TestOff komandos vėl yra programinėje įrangoje. Užimta: 68% SRAM, 96% Flash atmintis.
GSM_2017_07_26-10-03.hex- Pridėta komanda ModemID. Automatinis modemo aptikimas atliekamas tik tada, kai šio parametro reikšmė yra 0. Nustačius parametro reikšmę į 0, įrenginys automatiškai paleidžiamas iš naujo. Užimta: 68% SRAM, 98% Flash atmintis.
GSM_2017_08_03-22-03.hex- Dabar signalizacija gali valdyti išorinius įrenginius. Valdymui naudojamas analoginis išėjimas A3 (D17 – naudojamas kaip skaitmeninis). Išėjimo loginį lygį (+ 5V arba GND) galima keisti, pakeitus lygį per nustatymo komandą, įrenginys automatiškai persikraus. Galima keisti išorinio įrenginio valdymo signalo trukmę. Pridėtos komandos ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open. Kai kurie valdymo komandų logikos pakeitimai. Atminties optimizavimas. Užimta: 68% SRAM, 99% Flash atmintis.
GSM_2017_08_10-12-17.hex- Pašalintos komandos SmsOn / SmsOff, ReedSwitchOn / ReedSwitchOff, PIROn / PIROff ir viskas, kas su jomis susiję. DelayBeforeAlarm komanda pakeista išplėstinėmis komandomis. Informacijos komandos išvestis pakeista. Optimizuotas komandos ListConfig išvestis į konsolę. Dabar prie D6 ir A0 kaiščių galima prijungti bet kokius aukšto arba žemo atsako lygio skaitmeninius jutiklius, įskaitant nendrinius jungiklius. Kaiščiai D6 ir A0 turi būti prijungti prie žemės (GND) per 10 (20) kΩ rezistorių. Jei jutiklis sukonfigūruotas žemam paleidimo lygiui (įjungtas nendrinio jungiklio režimu), patikrinamas grandinės tęstinumas. Įėjimų D6 ir A0 (+ 5V arba GND) loginį suveikimo lygį galima keisti, pakeitus loginį lygį įrenginys bus automatiškai paleistas iš naujo. Kiekvienam jutikliui (pagrindinei, antrai, PCF išplėtimo kortelėms), kai suveikia, galima nustatyti savo laiką, po kurio bus pranešta (SMS ir (arba) balso skambutis). „PIR jutiklis“ pervadintas į „Antrasis jutiklis“. Išplėtimo plokštės veikimas ištaisytas, klaida, dėl kurios įrenginys visada pranešdavo apie jutiklių suveikimą, nepriklausomai nuo to, ar įrenginys buvo įjungtas, ar ne. Dabar galite pasirinkti darbo režimą, kuriuo įrenginys gali stebėti išplėtimo plokštės jutiklius tiek įjungtu (GuardOn), tiek išjungtu (GuardOff) režimu. Pridėtos komandos PCFForceOn / PCFForceOff, MainSensorLevelHigh / MainSensorLevelLow / MainSensorLevelOff, SecondSensorLevelHigh / SecondSensorLevelLow / SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeFAforeAlay, PC Užimta: 68% SRAM, 99% Flash atmintis.

* Vėlesnėse programinės aparatinės įrangos versijose yra ankstesnių versijų pakeitimų.


Naudoti Arduino Nano v3 prievadai

D4- "aliarmo" kaiščio išvestis, kai jutiklis suveikia, ant šio kaiščio nustatomas aukšto lygio signalas
D5- atvirkštinis "aliarmo" kaiščio išėjimas, kai jutiklis suveikia, ant šio kaiščio nustatomas žemo lygio signalas

D6- nendrinis jungiklis. Nuo versijos GSM_2017_08_10-12-17.hex prie D6 kaiščio galima prijungti bet kokius aukšto arba žemo atsako lygio skaitmeninius jutiklius, įskaitant nendrinius jungiklius. Kaištis D6 turi būti ištrauktas į žemę (GND) per 10 (20) kΩ rezistorių.
D7- prijungtas prie įtampos daliklio iš išorinio maitinimo šaltinio + 5V. Viršutinė ranka yra 2,2 kOhm, apatinė - 3,3 kOhm.

Įtampos daliklis


D8- TX modemas
D9- RX modemas

D10- raudonas šviesos diodas
D11- mėlynas LED
D12- žalias šviesos diodas

Periferinis ryšys:
A0- Judesio jutiklis . Pradedant nuo versijos GSM_2017_08_10-12-17.hex, prie A0 kaiščio galima prijungti bet kokius skaitmeninius jutiklius su aukštu arba žemu paleidimo lygiu, įskaitant nendrinius jungiklius. Kaištis A0 turi būti ištrauktas į žemę (GND) per 10 (20) kΩ rezistorių.

A1- Įvestis išoriniam valdymui. Signalizacija įjungs / išjungs apsaugą, kai įėjime pasirodys aukštas + 5 V lygis.
A2- Apverstas įėjimas išoriniam valdymui. Signalizacija bus įjungta / išjungta, kai įėjime pasirodys žemas GND lygis.

A3- Konfigūruojama (+ 5V arba GND) išvestis išoriniams įrenginiams valdyti. Kai gaunama valdymo komanda, šio išvesties reikšmė pasikeičia priklausomai nuo to, kuri komanda buvo nustatyta tam tikram laikotarpiui.

A4- SDA I2C
A5- SLC I2C
, skirtas prijungti papildomus 8 jutiklius.


Valdymo komandos šešioliktainei programinei įrangai

Dėmesio! Specialios komandos paryškinti galima atlikti tik iš pagrindinio numerio, nes jie yra atsakingi už įrenginio konfigūraciją. Likusias komandas galima vykdyti iš skaičių su ženklu „Valdymas“.

SMS – valdymo komandos neskiria didžiosios ir mažosios raidės:
Pridėti telefoną- Pridėkite telefono numerį. Iš viso galima pridėti ne daugiau kaip 9 numerius + 1 pagrindinis numeris, kuris automatiškai išsaugomas atmintyje, kai pirmą kartą skambinate į įrenginį po to, kai komandomis atkuriate gamyklinius nustatymus Iš naujo nustatyti telefoną arba FullReset... Tie. Tas, kuris pirmą kartą paskambino į įrenginį po to, kai buvo atstatyti gamykliniai nustatymai, yra „pagrindinis“, šis numeris įvedamas į pirmą atminties langelį ir jo negalima pakeisti ar ištrinti SMS žinute. Neįmanoma pridėti dviejų vienodų skaičių.
Komandos pavyzdys:



Komandos sintaksė:

Pridėti telefoną- komandą
: - skyriklis
5 - įrašyti į penktąją atminties vietą
+71234567890 - telefono numeris
Prieš GSM_2017_05_26-20-22.hex versiją:
a - Parametras „Aliarmas“ – SMS žinutės bus siunčiamos numeriais su šiuo parametru – pranešimai apie aliarmo įjungimą ir pranešimai apie apsaugos įjungimą arba išjungimą.
Iš versijos GSM_2017_05_26-20-22.hex:
m – parametras „Valdymas“ – įjungtas aliarmo valdymas
s – „SMS“ parametras – suveikus jutikliams bus išsiųsta SMS žinutė
r – „Skambėjimo“ parametras – suveikiant jutikliams bus atliktas balso skambutis
p - "Power" parametras - įjungus / išjungus išorinį maitinimą, bus išsiųsta SMS žinutė
i - Parametras "Info" - įjungiant arba išjungiant apsaugą bus išsiųsta sms žinutė
Nesant parametrų „m“, „s“, „r“, „p“, „i“ telefonas išsaugomas atmintyje, bet jokiu būdu nenaudojamas.


Ištrinti telefoną- Ištrinkite telefono numerį.
Komandos pavyzdys:

Komandos sintaksė:

DeletePhone – komanda
: - skyriklis
+71234567891 - telefono numeris


EditMainPhone- Pakeiskite pagrindinio telefono parametrus "s", "r", "p", "i", šis numeris įvedamas į pirmą atminties langelį.
Komandos pavyzdys:

Komandos sintaksė:

EditMainPhone – komanda
: - skyriklis
srpi – parametrai


BalanceNum- Pakeisti balanso užklausos numerį ir apdoroti užklausos atsakymo trukmę. Numatytoji „Beeline“ vertė: # 100 # L22.
Komandos pavyzdys:

Komandos sintaksė:

BalanceNum – komanda
: - skyriklis
# 103 # - balanso užklausos numeris
L24 – siunčiamo atsakymo ilgis (len) yra 24 simboliai, iš balanso užklausos atkirtome šlamštą.


EditSensor- Pakeiskite jutiklio pavadinimą ir loginį veikimo lygį. Iš viso gali būti ne daugiau kaip 8 papildomi jutikliai. Pakeitus parametrus, reikia iš naujo paleisti įrenginį.
Komandos pavyzdys:
Redagavimo jutiklis: 1 + Datchik dvizheniya v koridoras # val

Komandos sintaksė:

EditSensor – komanda
: - skyriklis
1 - įrašyti į pirmąją atminties vietą
+ - separatorius
Datchik dvizheniya v koridore - jutiklio pavadinimas, negali būti ilgesnis nei 36 simboliai, įskaitant tarpus.
#h – jutiklio aukšto loginio lygio ženklas, kurį gavus suveikia aliarmas. Jei „#h“ nėra, aliarmas suveikia, kai iš jutiklio gaunamas žemas loginis lygis.


Miego laikas- Signalo „užmigimo“ laikas gavus SMS – komanda „Pauzė“, nurodomas minutėmis. Numatytoji reikšmė: 15, negali būti mažesnė nei 1 ir didesnė nei 60.
Komandos pavyzdys:

Komandos sintaksė:

SleepTime – komanda
: - skyriklis
20 - 20 minučių „miego“.


AlarmPinTime- Laikas, per kurį aliarmas / atvirkštinis kaištis yra įjungtas / išjungtas, rodomas sekundėmis. Numatytoji reikšmė: 60, negali būti trumpesnė nei 1 sekundė ir daugiau nei 43 200 sekundžių (12 valandų).
Komandos pavyzdys:

Komandos sintaksė:

„AlarmPinTime“ komanda
: - skyriklis
30–30 sekundžių įjungimo / išjungimo žadintuvo kaištis.


DelayBeforeGuard- Laikas iki apsaugos įjungimo gavus atitinkamą komandą.
Komandos pavyzdys:

Komandos sintaksė:

DelayBeforeGuard – komanda
: - skyriklis
likus 25–25 sekundėms iki apsaugos įjungimo


DelayBeforeAlarm- Laikas, po kurio bus išsiųstas „alsminis“ SMS pranešimas, jei per šį laikotarpį aliarmas nebuvo išjungtas. Pakeistas išplėstinėmis komandomis, pradedant nuo versijos GSM_2017_08_10-12-17.hex
Komandos pavyzdys:

Komandos sintaksė:

DelayBeforeAlarm – komanda
: - skyriklis
likus 40–40 sekundžių iki „aliarmo“ pranešimo išsiuntimo


WatchPowerTime- Laikas minutėmis, po kurio bus išsiųsta SMS žinutė apie išorinio maitinimo šaltinio atjungimą. Jei išorinis maitinimas atkuriamas nepasibaigus nustatytam laikui, pranešimas nebus išsiųstas.
Komandos pavyzdys:

Komandos sintaksė:

WatchPowerTime – komanda
: - skyriklis
Likus 5-5 minutėms iki SMS siuntimo


Skambėjimo laikas- Signalo balso skambučio trukmė, parametro reikšmė gali būti nuo 10 iki 255 sekundžių.
Komandos pavyzdys:

Komandos sintaksė:

RingTime – komanda
: - skyriklis
40 - 40 pokalbio trukmė bus 40 sekundžių, po kurios bus skambinamas kitas abonentas.


ModemID- Priverstinis naudojamo modemo modelio įdiegimas. Galimos reikšmės: 0 - automatinis modemo aptikimas, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Komandos pavyzdys:

Komandos sintaksė:

ModemID - komanda
: - skyriklis
2 - modemo ID.


ExtDeviceTime- sekundžių skaičius, per kurį pasikeis signalo lygis išorinio įrenginio valdymo išvestyje.
Komandos pavyzdys:

Komandos sintaksė:

ExtDeviceTime - komanda
: - skyriklis
5-5 sekundes


ExtDeviceLevelLow- Prie išvesties A3 prijungtas išorinis įrenginys yra valdomas žemo signalo lygio (GND). Pagal numatytuosius nustatymus išvestis bus aukšto lygio + 5 V, kol bus gauta komanda valdyti išorinį įrenginį.
ExtDeviceLevelHigh- Prie išvesties A3 prijungtas išorinis įrenginys valdomas aukštu signalo lygiu (+ 5V). Išėjimas pagal numatytuosius nustatymus bus žemas GND lygis, kol bus gauta komanda valdyti išorinį įrenginį.

ResetSensor- iš naujo nustatykite prievado plėtiklio jutiklių parametrus

ResetConfig- atkurti gamyklinius nustatymus

Iš naujo nustatyti telefoną- visų ištrynimas iš atminties telefono numeriai

FullReset- nustatymų atstatymas, visų telefonų numerių ištrynimas iš atminties, numatytos BalanceNum komandos reikšmės atkūrimas.

RingOn- įjungti pranešimą skambinant "pagrindiniu" numeriu, įrašytu pirmoje atminties langelyje, kai jutiklis suveikia. Pašalinta nuo versijos GSM_2017_06_11-00-07.hex
Padėti telefono ragelį- išjungti pranešimą skambučiu, kai suveikia jutiklis. Pašalinta nuo versijos GSM_2017_06_11-00-07.hex

SmsOn- įjungti SMS pranešimą, kai suveikia jutiklis. Pašalinta nuo versijos GSM_2017_08_10-12-17.hex
SmsOff- išjungti SMS pranešimą, kai suveikia jutiklis. Pašalinta nuo versijos GSM_2017_08_10-12-17.hex

PIROn- įjungti judesio jutiklio apdorojimą
PIRO išjungtas- išjungti judesio jutiklio apdorojimą

ReedSwitchOn- įjungti pagrindinio nendrinio jutiklio apdorojimą
ReedSwitchOff- išjunkite pagrindinio nendrinio jutiklio apdorojimą

WatchPowerOn- įjungti išorinio maitinimo valdymą, bus išsiųsta SMS žinutė apie išorinio maitinimo atjungimą, jei signalizacija įjungta. Pašalinta nuo versijos GSM_2017_03_01-23-37.

WatchPowerOn1- įjungti išorinio maitinimo valdymą, bus išsiųsta SMS žinutė apie išorinio maitinimo atjungimą, jei signalizacija įjungta.
WatchPowerOn2- įjungti išorinio maitinimo valdymą, SMS žinutė apie išorinio maitinimo atjungimą bus išsiųsta bet kuriuo atveju

WatchPowerOff- išjungti išorinio maitinimo šaltinio valdymą

GuardButtonOn- įjungtas signalizacijos valdymas išoriniais įrenginiais arba mygtuku Pašalinta nuo versijos GSM_2017_04_16-12-00.
GuardButtonOn1- funkcija ginklavimas arba nuginklavimas apsauga nuo išorinių įrenginių arba mygtukas įjungtas
GuardButtonOn2- funkcija tik kūriniaiįjungtas išoriniais įrenginiais arba mygtukas įjungtas, išjungimas atliekamas paskambinus į įrenginį arba naudojant SMS komandą.
GuardButtonOff- signalizacijos valdymas išoriniais įrenginiais arba mygtuku išjungtas

PCFForceOn- nuolatinis visų plėtiklio jutiklių grupės stebėjimas
PCFForceOff- visų plėtiklio jutiklių grupės stebėjimas tik tada, kai įrenginys įjungtas

MainSensorLevelHigh- aliarmo pranešimas bus išsiųstas, kai jutiklio įėjime (D6) pasirodys aukšto lygio signalas (+5 V)
MainSensorLevelLow- aliarmo pranešimas bus išsiųstas, kai jutiklio įėjime (D6) pasirodys žemo lygio signalas (GND).
MainSensorLevelOff- jutiklio įvesties apdorojimas (D6) išjungtas

SecondSensorLevelHigh- aliarmo pranešimas bus išsiųstas, kai jutiklio įėjime (A0) pasirodys aukšto lygio signalas (+5 V)
SecondSensorLevelLow- aliarmo pranešimas bus išsiųstas, kai jutiklio įėjime (A0) pasirodys žemo lygio signalas (GND).
SecondSensorLevelOff- jutiklio apdorojimas prie įėjimo (A0) išjungtas

MainDelayBeforeAlarm- laikas, po kurio bus išsiųstas „aliarmo“ SMS pranešimas, kai suveikia pagrindinis jutiklis (D6), jei per šį laikotarpį signalizacija nebuvo išjungta. Sintaksė yra tokia pati kaip ir komandos DelayBeforeAlarm.
SecondDelayBeforeAlarm- laikas, po kurio bus išsiųstas „aliarmo“ SMS pranešimas, kai suveikia papildomas jutiklis (A0), jei per šį laikotarpį signalizacija nebuvo išjungta. Sintaksė yra tokia pati kaip ir komandos DelayBeforeAlarm.
PCFDelayBeforeAlarm- laikas, po kurio bus išsiųstas „aliarinis“ SMS pranešimas, kai suveikia išplėtimo plokštės (PCF8574) jutikliai, jei per šį laikotarpį signalizacija nebuvo išjungta. Sintaksė yra tokia pati kaip ir komandos DelayBeforeAlarm.

GuardOn - ranka
GuardOff – pašalinkite apsaugą

Atidaryti – komanda valdyti išorinį įrenginį

Informacija - patikrinkite būseną, atsakant į šį pranešimą bus išsiųsta SMS su informacija apie numerį, nuo kurio buvo įjungta / išjungta apsauga

Pauzė – pristabdo sistemą miego laiko komanda nustatytam laikui minutėmis, sistema nereaguoja į jutiklio suveikimą.

TestOn – įjungtas bandymo režimas, mirksi mėlynas šviesos diodas.
TestOff – testavimo režimas išjungtas.

LedOff – išjungia budėjimo režimo šviesos diodą.
LedOn – įjungia budėjimo režimo šviesos diodą.

Pinigai – likučio prašymas.

ClearSms – ištrinkite visas SMS žinutes iš atminties

Konsolės komandos (iki versijos GSM_2017_04_24-13-22.hex) - įvedamos į Arduino IDE prievado monitorių:

AddPhone – panašiai kaip SMS komanda AddPhone

DeletePhone – panašu į SMS komandą DeletePhone

EditSensor – panašu į sms komandą EditSensor

ListPhone – atmintyje saugomų telefonų sąrašo rodymas prievado monitoriuje

ResetConfig – panašus į ResetConfig sms komandą

ResetPhone – panašus į ResetPhone sms komandą

FullReset – panašus į FullReset sms komandą

ClearSms – panašiai kaip ClearSms sms komanda

WatchPowerOn1 – panašus į WatchPowerOn1 SMS komandą
WatchPowerOn2 – panašus į WatchPowerOn2 SMS komandą
WatchPowerOff – panašiai kaip WatchPowerOff sms komanda

GuardButtonOn – panašiai kaip GuardButtonOn sms komanda. Pašalinta nuo versijos GSM_2017_04_16-12-00
GuardButtonOn1 – panašus į GuardButtonOn1 SMS komandą
GuardButtonOn2 – panašus į GuardButtonOn2 SMS komandą
GuardButtonOff – panašiai kaip GuardButtonOff sms komanda

Memtest – įrenginio nepastovios atminties testas, visi įrenginio nustatymai bus nustatyti iš naujo, panašiai kaip FullReset komanda.

I2CScan – ieškokite ir inicijuokite palaikomus įrenginius I2C magistralėje.

ListConfig – išveskite esamą įrenginio konfigūraciją į prievado monitorių.

ListSensor – išveskite esamą jutiklio konfigūraciją į prievado monitorių.

UPD. Naudojant judesio jutiklį, norint pašalinti klaidingus pavojaus signalus, kai modemas veikia, būtina tarp smeigtukai GND ir A0 Arduino kėlė pasipriešinimą, sakome ačiū draugui
AllowPhone = ("70001234501", "70001234502", "70001234503", "70001234504", "70001234505") – numeriai, kuriems leidžiama valdyti saugumą.
AlarmPhone = ("70001234501", "70001234502") – SMS pranešimų siuntimo numeriai, kai jutiklis suveikia, ir pranešimai apie apsaugos išjungimą arba įjungimą. Pirmuoju sąrašo numeriu bus iškviečiamas jutiklis suaktyvinus, jei bus vykdoma komanda RingOn, pagal numatytuosius nustatymus ši parinktis įjungta. Taip yra todėl, kad SMS žinutės gali šiek tiek užtrukti, tačiau skambutis turi vykti nedelsiant.

Jei skambinama iš įgalioto numerio arba SMS žinute su komanda GuardOn / GuardOff, tada, priklausomai nuo esamos apsaugos būsenos, AlarmPhone masyve nurodytais numeriais bus išsiųsta SMS žinutė apie apsaugos įjungimą arba išjungimą, SMS žinutė. taip pat bus išsiųstas numeriu, iš kurio buvo skambinta.

Kai jutiklis suveikia SMS žinutės siunčiamos visais numeriais iš AlarmPhone masyvo (sąrašo), o balso skambutis bus atliktas pirmuoju numeriu iš šio masyvo.

Šviesos indikacija:
Raudonas šviesos diodas – įjungtas.
LED dega žalias- išjungtas, įjungtas / išjungtas SMS komanda LedOn / LedOff.
LED nuolat mirksi mėlynai – signalizuoja, kad su Arduino viskas tvarkoje, plokštė neužšalusi, naudojama išskirtinai derinimui, įjungiama/išjungiama TestOn / TestOff sms komanda.
* Kode yra LedTest () funkcija, jis mirksi mėlynu šviesos diodu, yra skirtas tik Arduino stebėjimui, mirksi reiškia, kad jis veikia, nemirksi - užšalęs. Dar nesušalo :)

Nėra svarbus!

2 ar daugiau jutiklių prijungimas prie atviros programinės įrangos (taikoma tik šiai programinės aparatinės įrangos sketch_02_12_2016.ino)
Norėdami prijungti papildomus nendrinius jungiklius, naudojame nemokamus skaitmeninius kaiščius D2, D3, D5 arba D7. Sujungimo schema su papildomu jutikliu D7.

Reikalingi programinės įrangos pakeitimai
... #define DoorPin 6 // Įėjimo, prijungto prie pagrindinio jutiklio, numeris int8_t DoorState = 0; // Kintamasis pagrindinio jutiklio būsenai saugoti int8_t DoorFlag = 1; // Kintamasis pagrindinio jutiklio būsenai saugoti #define BackDoorPin 7 // Prie papildomo jutiklio prijungto įėjimo numeris int8_t BackDoorState = 0; // Kintamasis papildomo jutiklio būsenai saugoti int8_t BackDoorFlag = 1; // Kintamasis papildomo jutiklio būsenai saugoti...
void setup () (... pinMode (DoorPin, INPUT); pinMode (BackDoorPin, INPUT); ...
... void Detect () (// Skaityti reikšmes iš jutiklių DoorState = digitalRead (DoorPin); BackDoorState = digitalRead (BackDoorPin); // Apdorojamas pagrindinis jutiklis, jei (DoorState == LOW && DoorFlag == 0) (DoorFlag = 1; delsa (100); if (LedOn == 1) digitalWrite (GLed, LOW); Aliarmas ();) if (DoorState == AUKŠTA && DoorFlag == 1) (DoorFlag = 0; delsa (100);) // Apdorojamas papildomas jutiklis if (BackDoorState == LOW && BackDoorFlag == 0) (BackDoorFlag = 1; delsa (100); if (LedOn == 1) digitalWrite (GLed, LOW); Aliarmas ();) if (BackDoorState == = AUKŠTA && BackDoorFlag == 1) (BackDoorFlag = 0; delsa (100);)) ...

Ir dar kažkas:
1. Geriau naudoti diodus, skirtus 2 A srovei, nes modulis užkrečia 1 A srovę ir vis tiek reikia kažkuo maitinti Arduino ir modemą. Šiuo atveju naudojami 1N4007 diodai, jei jie sugenda, pakeiskite juos 2 A.
2. Visus rezistorius LED naudojau 20 kOhm, kad neapšviestų visas koridorius naktį.
3. Aš taip pat pakabinau 20 kOhm rezistorių ant nendrinio jutiklio tarp GND kaiščio ir D6 kaiščio.

Tai kol kas viskas. Ačiū už dėmesį! :)

Planuoju pirkti +207 Pridėti prie mėgstamiausių Man patiko apžvalga +112 +243

Pavasarį, kaip žinia, lydi visokie paūmėjimai, o pagrindinis „paūmėjimas“ iš savo duobių išlipo į gatvę tam, kad pasisavintų sau tai, kas jai nepriklauso. Tai reiškia, kad jūsų turto apsaugos tema tampa kaip niekad aktuali.
Svetainėje jau yra keletas atsiliepimų apie naminius. Žinoma, jie yra funkcionalūs, bet visi turi bendras bruožas- priklausomybė nuo lizdo. Jei tai nėra problema su nekilnojamuoju turtu, kur jau tiekta elektra, tai kaip su turtu, kur elektros lizdas yra toli arba aplinka visiškai atjungta? Nusprendžiau eiti kitu keliu - surinkti ilgaamžį, maksimaliai paprastą ir nepriklausomą nuo elektros maitinimo įrenginį, kuris visą laiką miegos, o plėšikams prasiskverbus užveda ir paskambina savininkui telefonu, signalizuodamas a. paprastas žadintuvo skambutis.

Peržiūrėkite elementus

Nupirkta:
1. Bandomoji Lenta vienpusis 5x7 cm: getinax- arba stiklo pluošto
* - stiklo pluoštas yra daug geriau nei getinax.
2. Neoway M590 modulis -, su PCB antena -
3. Arduino Pro Mini "RobotDyn" ATmega168PA 8MHz 3.3V -
4. Ličio įkrovimo-iškrovimo valdymo plokštė -

Išgauta iš civilizacijos griuvėsių:
1. Stovai lentai, išpjauti iš instrumentų dėklų - 6 vnt.
2. Baterija ličio plokščia 1300 mAh
3. Laikikliai, naudojami kabeliui pritvirtinti prie sienos
4. Raštinės reikmenų trintukas
5. 1,5 mm storio varinė viela
6. Instrumentų dėklas iš vietinės radijo rinkos - 1.5$
7. Šviesos diodų pora skirtinga spalva(paimta iš VHS grotuvo)
8. Antena ir mygtukas su dangteliu (paimtas iš Wi-Fi maršrutizatoriaus)
9. 4 kontaktų gnybtų blokas (paimtas iš reguliatoriaus)
10. Maitinimo jungtis (paimta iš seno 18650 įkroviklio)
11. 6 kontaktų jungtis (paimta iš DVD įrenginio)
12. Skardinė (pavyzdžiui, kavai)

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

Specifikacijos:
Mikrovaldiklis: ATmega168PA
Tiesioginė darbinė įtampa:.8 - 5,5V
Darbinė įtampa per LE33 stabilizatorių: 3,3 V arba 5 V (priklausomai nuo modelio)
Darbinė temperatūra:-40 ° C ... 105 ° C
Įėjimo įtampa: 3,35–12 V (3,3 V modelis) arba 5–12 V (5 V modelis)
Skaitmeniniai įėjimai / išėjimai: 14 (iš kurių 6 gali būti naudojami kaip PWM išėjimai: 3, 5, 6, 9, 10 ir 11)
Analoginiai įėjimai: 6
Laikmačiai-skaitikliai: du 8 bitų ir vienas 16 bitų
Energijos taupymo režimai: 6
Pastovi srovė per įvestį / išėjimą: 40 mA
Flash atmintis: 16 KB (2 naudojami įkrovos programai)
RAM: 1 Kb
EEPROM: 512 baitų
Išteklių įrašymo / ištrynimo atmintis: 10 000 „Flash“ / 100 000 EEPROM
Laikrodžio dažnis: 8 MHz (3,3 V modelis) arba 16 MHz (5 V modelis)
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)
I2C: A4 (SDA) ir A5 (SCL)
UART TTL: 0 (RX) ir 1 (TX)
Duomenų lapas:

Šiai atmegai pasirinkimas pateko visai atsitiktinai. viename forume, kuriame buvo aptariami energiją taupantys projektai, komentaruose aptiko patarimą naudoti būtent 168 atmega.
Tačiau man teko padirbėti ieškant tokios plokštės, nes gana dažnai visos aikštelės buvo nukrautos 328 atmegais 16 MHz dažniu, veikiančiu nuo 5 V. Mano projektui tokios charakteristikos nuo pat pradžių buvo perteklinės ir nepatogios, paieška tapo sudėtingesnė.
Dėl to „eBay“ aptikau 3,3 volto „Pro Mini“ versiją „Atmega 168PA“ ir ne tik paprastą kinišką, bet ir Rusijos kūrėjo „RobotDyn“ prekės ženklą. Taip, aš taip pat iš pradžių, kaip ir tu, abejojau. Bet veltui. Kai projektas jau buvo surinktas, o AliExpress įvedė privalomą mokamą pristatymą pigioms prekėms (po to siuntos dingdavo daug dažniau), tai vėliau užsisakiau įprastą Pro Mini Atmega168 (be PA) 3.3V 8MHz. Šiek tiek paeksperimentavau su energijos taupymo režimais su abiem plokštėmis, į kiekvieną įdėjau specialų eskizą, panardinau mikrovaldiklį į maksimalų energijos taupymo režimą ir štai kas nutiko:
1) Arduino Pro Mini „RobotDyn“: ~ 250μA
2) Arduino Pro Mini „NoName“:įjungus maitinimą įtampos reguliatoriui (RAW išvestis) ir nuėmus šviesos diodą, srovės suvartojimas buvo ~ 3,92 mA




- Kaip suprantate, energijos suvartojimo skirtumas yra beveik 16 kartų, nes „NoName“ „Pro Mini“ naudoja krūvą Atmega168 +, iš kurių pats MK valgo tik 20μA srovė (tikrinau tai atskirai), visa kita sloga tenka tiesinės įtampos keitikliui AMS1117 - duomenų lapas tai tik patvirtina:


„RobotDyn“ plokštės atveju paketas yra šiek tiek kitoks - tai yra Atmega168PA + - čia mes panaudojome kitą LDO stabilizatorių, kurio energijos taupymo savybės pasirodė malonesnės:


Aš jo nelitavau, todėl negaliu pasakyti, kiek Atmega168PA sunaudoja srovės gryna forma. Šiuo atveju man užteko ~ 250μA kai maitinamas naudojant Nokia ličio bateriją. Tačiau jei lituojate AMS1117 iš pagrindinės plokštės NoName ", tada ATmega168 yra paprastas, gryna forma, kaip sakiau aukščiau, jis sunaudoja 20μA.
Maitinimo šviesos diodus galima numušti kuo nors aštriu. Tai ne problema. Stabilizatorius buvo lituojamas plaukų džiovintuvu. Tačiau ne visi turi plaukų džiovintuvą ir įgūdžių su juo dirbti, todėl abu aukščiau išvardyti variantai turi teisę egzistuoti.

Neoway M590E modulis

Specifikacijos:
Dažniai: EGSM900 / DCS1800 dviejų juostų arba GSM850 / 1900 arba keturių juostų
Jautrumas:-107dBm
Didžiausia perdavimo galia: EGSM900 Class4 (2W), DCS1800 Class1 (1W)
Didžiausia srovė: 2A
Darbinė srovė: 210 mA
Miego srovė: 2,5 mA
Darbinė temperatūra:-40 ° C ... + 85 ° C
Darbinė įtampa: 3,3 V ... 4,5 V (rekomenduojama 3,9 V)
Protokolai: GSM / GPRS Phase2 / 2+, TCP / IP, FTP, UDP ir kt.
Internetas: GPRS KLASĖ 10
Duomenų lapas:

Pigiausias GSM modulis, kurį galima rasti rinkoje, dažniausiai naudojamas, ne visada lituojamas gudriais Kinijos rankos iš įrangos. Kodėl ne visada gudrus? Taip, viskas dėl litavimo su plaukų džiovintuvu – dažnai žmonės ateina su šiais moduliais su trumpu jungimu pliusu ir minusu, o tai yra viena iš jų neveiklumo priežasčių. Todėl pirmiausia reikia suskambinti maitinimo kontaktus dėl trumpojo jungimo.

Pastaba. Atskirą svarbų dalyką, mano nuomone, norėčiau pastebėti - šie moduliai gali būti su apvalia koaksialine jungtimi antenai, kuri leidžia atskirai užsisakyti rimtesnę anteną ir prijungti ją prie modulio nešokant su tamburinu. Ir jie gali būti be šios jungties. Tai yra tada, kai kalbame apie pigiausius rinkinius. Jei nenorite pasikliauti atsitiktinumu, tai yra šiek tiek brangesni rinkiniai, kuriuose yra ši jungtis + į komplektą įeina išorinė antena ant tekstolito plokštės.

Šis modulis taip pat yra kaprizingas prieš maitinimo šaltinį, nes jo piko metu jis suvartoja iki 2A srovės, o komplekte esantis diodas, atrodo, yra skirtas sumažinti įtampą nuo 5 V (todėl tai parašyta ant pačios 5 V plokštės ) iki 4,2V, bet sprendžiant iš žmonių nusiskundimų tai pridaro daugiau bėdų nei naudos.
Tarkime, kad jau surinkote šį modulį, o vietoj diodo yra lituojamas trumpiklis, nes mes jam tiekiame ne 5 V įtampą, o maitinsime tiesiai iš ličio baterijos, kuri yra diapazone leistinos 3,3-4,2 V įtampos.
Reikės kažkaip prijungti prie kompiuterio ir patikrinti, ar veikia. Tokiu atveju geriau pirkti patiems iš anksto – per jį susisieksime su moduliu ir Arduino plokštės per nuosekliąją sąsają UART (USART).
Ryšys parodytas žemiau esančiame paveikslėlyje (nupiešiau kaip galiu):
TX modemas >>> RX keitiklis
RX modemas<<< TX конвертера
Battery Plus - Modem Plus
Ličio baterijos minusas derinamas su modemo GND ir keitiklio GND
Norėdami paleisti modemą, įkiškite BOOT kaištį per 4,7 kΩ rezistorių prie GND


Tuo tarpu paleiskite programą kompiuteryje. Atkreipkite dėmesį į nustatymus:
1) Pasirinkite COM prievadą, prie kurio prijungtas TTL keitiklis, mano atveju tai yra COM4, ​​galbūt turite kitą.
2) Pasirinkite perdavimo spartą. (Čia yra niuansas, nes pačius modulius galima sukonfigūruoti įvairiems greičiams, dažniausiai 9600 bodų arba 115 200 bodų. Čia reikia pasirinkti empiriškai, pasirenkant tam tikrą greitį, prisijungti ir išsiųsti komandą AT, jei atsako krekeriai , jis išsijungs , pasirinks kitą greitį ir kartos komandą ir taip toliau, kol gausite gerą atsakymą).
3) Pasirinkite paketo ilgį (šiuo atveju 8 bitai), pariteto bitas išjungtas (nėra), stop bitas yra (1).
4) Būtinai pažymėkite langelį + CR, ir tada prie kiekvienos komandos, kurią siunčiame moduliui, automatiškai pridedamas karietos grąžinimo simbolis – modulis supranta komandas tik su šiuo simboliu pabaigoje.
5) Ryšys, čia viskas aišku, paspaudėme ir galime dirbti su moduliu.

Jei spustelėsite „Prisijungti“ ir paleiskite modulį, į žemę įvesdami BOOT per 4,7K rezistorių, terminalas pirmiausia parodys užrašą „MODEMAS: STARTUP“, o po kurio laiko – užrašą „+ PBREADY“. , o tai reiškia, kad telefonų knyga, net jei ji gali būti tuščia:

Pagal šią spoilerio AT komandą su pavyzdžiais

Spausdiname komandą AT - atsakydamas, modulis siunčia mums komandą, nes įjungtas aido režimas, ir gerai:

Patikrinkime modemo būseną su komanda AT + CPAS – atsakant mūsų komanda vėl yra + CPAS: 0 ir OK.
0 - reiškia, kad modulis yra paruoštas darbui, tačiau priklausomai nuo situacijos gali būti ir kitų numerių, pavyzdžiui, 3 - gaunamas skambutis, 4 - ryšio režimas, 5 - miego režimas. Neradau informacijos apie 1 ir 2.

Duomenų perdavimo spartos UART keitimas atliekamas naudojant komandą AT + IPR = 9600 - tai yra, jei greitis yra 9600. Jei bet kuris kitas, tai panašu į, pavyzdžiui, AT + IPR = 19200 arba AT + IPR = 115200.

Patikrinkime tinklo signalą. AT + CSQ, atsakymas yra + CSQ: 22.1 - kablelio reikšmė yra 0 ... 31 (115 ... 52 dBl) - tai signalo lygis, kuo daugiau, tuo geriau. Bet 99 reiškia jo nebuvimą. Reikšmė po kablelio yra signalo kokybė 0 ... 7 - čia jau atvirkščiai, kuo mažesnis skaičius, tuo geriau.

Išjunkite aido režimą išsiųsdami komandą ATE0, kad pasikartojančios komandos netrukdytų. Ir atvirkščiai, šis režimas įjungiamas komanda ATE1.

Peržiūrėkite programinės įrangos versiją AT + GETVERS



Šias ir daugelį kitų komandų galima peržiūrėti

Lentų lygiavimas

Nors „Pro Mini“ lengva lituoti prie duonos lentos, situacija su GSM moduliu yra šiek tiek sudėtingesnė. jo kontaktinės šukos yra tik vienoje pusėje, o jei lituosite tik jas, tada kita lentos pusė tiesiog pakibs ore. Tada, vėl akimis, prie trijų lentos kampų turėjau išgręžti 3 papildomas skylutes. Tada plotai aplink kiekvieną skylę buvo užmaskuoti. Patogumo dėlei atjungtus laidus nuo šukų padėjau ant belituotos duonos lentos (baltos) ir, ant jų sumontavęs GSM modulio plokštę, paprastai sulitavau:

Vėliau teko padaryti dar vieną skylutę, mano atveju ant raidės „I“, kur parašyta „Made In China“, lentos krašte.


Taip atsitiko, kad pridėtas kontaktas, kuris iš esmės yra GND, priartėjo prie Pro Mini plokštės GND ir taip atsirado galimybė sujungti GSM modulio ir Pro Mini žemę su litavimo lašeliu (ilguoju kaiščiu). viduryje ir dešinėje nuo jo yra Pro Mini kaištis) – juos pažymėjau rodyklėmis. Žinoma, pasirodė šiek tiek kreivai, bet dabar laikosi patikimai:



Tarp plokščių liko šiek tiek vietos - įdėjau ličio iškrovos įkrovimo valdymo plokštę su iš anksto išlituota microUSB jungtimi ir prilituotais laidais.

Šalikas ten priglunda labai tvirtai, tuo tarpu pro nedidelę skylutę korpuse bus aiškiai matomas šviesos diodų švytėjimas iš šono.



PCB stovai

Norint saugiai pritvirtinti plokštę korpuso viduje, turėjau praleisti keletą dienų galvojant, kaip tai būtų galima įgyvendinti. Variantas su karšto lydalo klijais nebuvo svarstomas dėl kelių priežasčių – jie gali nukristi, deformuotis, o svarbiausia, kad konstrukcija būtų sunkiai išardoma.
Padariau išvadą, kad paprasčiausias ir teisingiausias variantas būtų naudoti stelažus, kurių, žinoma, neturėjau. Tačiau buvo pora neveikiančių įkroviklių, iš kurių buvo nupjautas vienas ilgas stovas su sriegiu savisriegiams varžtams. Kiekvienas stovas buvo perpjautas per pusę ir apdailintas dilde iki maždaug 9,5 mm – būtent tokiame aukštyje po plokšte esanti baterija turi pakankamai rezervo, apie 2 mm – tai daroma taip, kad lituoti plokštės kontaktai nesiliestų jį su krašteliais ir taip, kad tarp jų būtų galima įkišti gabalėlį porolono fiksavimui.
Kalbant apie lentos tvirtinimą tiesiai prie korpuso, čia iš kavos skardinės iškirpau keturias juosteles, kurių galuose išgręžiau skylę, tada pritvirtinau ant tų pačių varžtų, kurie buvo įsukti į lentynas. Pažiūrėkite, kaip tai atrodo toliau esančioje nuotraukoje.
Kitas žingsnis – kitoje lentos pusėje, tai yra iš viršaus, prisukti porą stelažų, kad uždarius korpusą dangtelis šiek tiek atsiremtų į šias lentynas, sukurdamas papildomą fiksaciją. Kiek vėliau, pagal šią bylą, aptikau kūną iš po sovietinės propagandos radijo (jei būtų buvęs rastas anksčiau, būčiau iš čia paėmęs visus stelažus), kur radau porą daugiau ar mažiau tinkamo ūgio, bet pirmiausia aš juos išgręžiau centre su grąžtu po savisriegiais. Tada jis juos nupjovė ir taip pat užbaigė dilde, pašalindamas perteklių. Tada gavau vieną subtilumą - nuotraukoje matosi, kad vienas baltas stovas yra prisukamas prie getinax plokštės iš krašto, o kitas baltas stovas prisukamas tiesiai prie modulio plokštės, nes nuo vieno modemo plokštės krašto visiškai uždengia apatinę plokštę, o iš priešingo krašto - priešingai - apatinė žiūri. Tuo pačiu metu abiejose lentose reikėjo papildomai išgręžti skylutes, kad varžtų dangteliai galėtų laisvai praeiti.
Ir galiausiai belieka pasirūpinti, kad lenta visada būtų lygiagreti korpusui - laikikliai, kuriais tvirtinami laidai ir kabeliai ant sienos, puikiai tinka šiam atvejui, prieš tai nuėmiau vinis nuo jų. Laikikliai įgaubta puse puikiai laikosi prie lentos be jokių papildomų įtaisų, tik SIM kortelės dešinėje, kronšteino plotis pasirodė per didelis, teko ir šlifuoti.
Visos detalės buvo pakoreguotos akimis ir empiriškai, žemiau yra aukščiau pateiktos nuotraukos:



Jungtys. šviesos diodai. Mygtukas.

Kadangi pritrūko šukos, teko išardyti 6 kontaktų jungtį nuo DVD įrenginio plokštės, kurią paskui prilitavau prie Pro Mini, tai dėl patogumo mirksėti plokštę. Netoliese prilitavau apvalią jungtį (Nokia 3.5mm) ličio įkrovimui.

6 kontaktų jungties korpusas buvo šiek tiek apdailintas dilde, nes jos kraštai šiek tiek išsikišo virš korpuso. Įkrovimo lizdas puikiai priglunda prie korpuso sienelės.

Kitoje plokštės pusėje prilitavau mygtuką įrenginiui perkrauti ir du šviesos diodus programinės aparatinės įrangos derinimui - raudonas šviesos diodas prijungtas prie GSM modulio, antras žalias šviesos diodas prie Pro Mini 10 kaiščio - man lengviau derinti programą naudojant ją.

Baterijos atnaujinimas

Išsikrovusi „Nokia“ baterija iš „Nokia“ telefonų yra ne mažiau paplitusi nei 18650, tačiau daugelis tiesiog atsisako ja naudotis dėl nepatogumų jungiant kontaktus, kurie yra įleistas į pačią bateriją. Lituoti jų nepageidautina, todėl buvo nuspręsta panaudoti jų siūlomą būdą – gnybtų bloką pagaminti iš raštinės trintuko ir varinės vielos (1,5 mm storio).
Pirma, aš praduriau trintuko gabalėlį dviem laidais iš anksto nuimtais galais ir pritvirtinau prie akumuliatoriaus kontaktų taip, kad atstumas tarp jų sutaptų,
Antgalius išlenkiau, lituokliu nuskardinau ir už ilgų galų šiek tiek atitraukiau atgal, kad susidarę kontaktai būtų įleistas į trintuką.



Montavimas ant akumuliatoriaus:

Galite pritvirtinti gnybtų bloką gumine juostele arba apvynioti mėlyna elektros juosta, ką aš padariau pabaigoje.

Surinkimas.

Pagrindinė darbo dalis atlikta, belieka visa tai surinkti ir sutvarkyti.
Tarp baterijos ir plokštės įdėjau porolono gabalėlį, kad po to neįlįstų į korpuso vidų. Moduliui maitinti papildomai prilitavau 2200 uF kondensatorių.

Kai įkrovimas prijungtas:

Rėmas. Išorinis gnybtų blokas.

Gavau dėklą vietinėje radijo rinkoje už maždaug 1,5 dolerio, 95x60x25 mm dydžio, beveik cigarečių pakelio dydžio. Jame išgręžiau keletą skylių. Pirma, 4 kontaktų gnybtų blokui, paimtam iš neveikiančio reguliatoriaus.
Visiškai atlaisvinau du kraštutinius kontaktus nuo varžtų su tarpikliais, išgręžiau skylutes ilgesniems varžtams, ant kurių laikysis visas gnybtų blokas. Pačiame korpuse, žinoma, dvi kraštutinės skylės bus didelės, o dvi vidurinės mažesnės – per jas bus įsriegti kaiščiai, iš kurių vienas jungiamas prie VCC Pro Mini, o antras – prie kaiščio. 2.

Skylių gręžimas, nors ir iš pirmo žvilgsnio paprastas, vis tiek atima ne mažiau laiko, jį labai lengva praleisti, todėl iš pradžių dariau su mažesniu grąžtu, vėliau – su didesniu.

Taktiniam mygtukui parinkau dangtelį šiek tiek įgaubtu viršumi, kad būtų patogu per siaurą dėklo skylutę permušti degtuku ar sąvaržėlę.

Plokštė dėkle su prijungta USB-TTL keitiklio kilpa:

Apie anteną.
Antena, kaip turbūt pastebėjote pakeliui, nuolat keitėsi, nes eksperimentavau su įvairiomis savadarbėmis antenomis. Iš pradžių modulio plokštėje buvo apvali koaksialinė jungtis, tačiau penktą kartą ji buvo naudojama išorinei antenai, ji tiesiog subyrėjo, todėl turėkite omenyje, kad ji yra menka. Dėl to aš išplėšiau anteną ant PCB iš senojo maršrutizatoriaus ir prilitavau prie modulio plokštės, tk. jis pagauna tinklą šiek tiek geriau nei spyruoklė ir viela.

Na, visiškai surinktas su prijungtu įkrovikliu atrodo taip:

Testas. Kaip tai veikia:

Be bandymų su antenomis, patikrinau, kaip signalizacija elgsis gatvėje, esant -15 šalčiui. Norėdami tai padaryti, aš tiesiog įdėjau vidines dalis į konteinerį ir palikau balkone per naktį, signalizacija tuo pačiu metu neįsijungė, priežastis apskritai buvo akivaizdi - litis nemėgsta šalčio. Tai patvirtino ir kitas testas, kai bateriją palikau namuose, o plokštę per ilgus laidus atnešiau į gatvę ir ten palikau parai tame pačiame šaltyje - operacija, lyg nieko nebūtų nutikę. Kita vertus, būtų keista, jei signalizacija neveiktų. duomenų lapuose atmegai, moduliui, kvarcui - leistina darbinė temperatūra iki -40 laipsnių.

Veikimo principas organizuojamas išoriniu pertraukimu, iš pradžių kaištis 2 uždaromas VCC, todėl loginis 1 palaikomas ant kaiščio, o valdiklis miega. Kai tik kontaktas nutrūksta ir ant 2 kaiščio pasirodo 0, mikrovaldiklis atsibunda, nuleidžia 3 kaištį (prie kurio per rezistorių prijungtas modemo BOOT) į žemę - modulis paleidžiamas, MC periodiškai apklausia modulį. pasirengimui, o kai tik pagauna tinklą, iš karto siunčia skambutį kode nurodytu savininko telefono numeriu. Atmetus skambutį, įrenginys išsijungia ir nesiųs daugiau begalinių skambučių nei daugelis kiniškų aliarmų.

Papildoma informacija

#įtraukti #įtraukti // programinės įrangos biblioteka UART SoftwareSerial gsm (7, 6); // RX (7), TX (6) void wakeUp () () // tuščia pertraukimų tvarkytuvė ////////////////////////////// /////////////// 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(); // укладываем контроллер спать } }

Grandinė (be įkrovimo-iškrovimo valdymo plokštės)



Išvados ir mintys. Planai.

Signalizacija naudojama šalyje, esu patenkintas darbu, tačiau toliau tiriant AVR kyla vis daugiau idėjų dėl tolimesnio jo modifikavimo. Arduino su pseudokalbiniu laidu mane labai nuliūdino, nes darbe buvo vienas nemalonus momentas. Kai naudojau funkcijas darbui su prievadais digitalWrite (); arba pinMode (); - tada GSM modulis kažkodėl labai dažnai pakibo. Tačiau verta juos pakeisti tokiais triukais kaip DDRB | = (1<Tik tiesioginės prieigos prie prievadų veikimas privertė įrenginį veikti taip, kaip buvo numatyta.

Energiją taupantis...
Surinktas įrenginys be įkrovimo dirbo ištisus keturis mėnesius ir veikia toliau, nors teisingiau būtų sakyti „miega“. Tai patikrinama paprastu paleidimu iš naujo spustelėjus baltą mygtuką. Energijos sąnaudos 250 μA (per LE33 stabilizatorių) ir ~ 1430 mAh baterija, nors ir gerai, dėl baterijos nenaujybės apvaliname iki 1000mAh, pasirodo, įrenginys gali miegoti apie 5,5 mėnesius be įkrovimo. Jei vis dėlto išgarinsite stabilizatorių, veikimo laiką galima saugiai padauginti iš 10 kartų. Bet mano atveju to nereikia, nes vis tiek kas tris mėnesius reikia išleisti likutį iš SIM kortelės, tuo pačiu metu įrenginį galima patikrinti ir įkrauti.
Apžvalgoje pateiktas energijos taupymo pavyzdys toli gražu nėra riba, nes sprendžiant iš duomenų lapo, galima mikrovaldiklio taktinį dažnį sumažinti (ir tai daroma sumontavus saugiklius) iki 1 MHz ir, pajungus 1,8 V įtampą, suvartojimas nukris žemiau 1 μA juostos aktyvioje režimu. Visai neblogai! Bet jei MK laikrodis yra iš vidinio RC generatoriaus, atsiras kita problema - UART eteris bus užkimštas šiukšlėmis ir klaidomis, ypač jei valdiklis šildomas arba aušinamas.

Baigus...
1) Paprastas ant tarpelio sumontuotas laidas nėra visai patogus, planuoju paeksperimentuoti su Hall davikliu ir nendriniu jungikliu, nors apie pastarąjį sako, kad nelabai patikimas, nes jo viduje gali prilipti kontaktai.
2) Būtų malonu pridėti galimybę pakeisti „pagrindinį numerį“ nedalyvaujant kompiuteriui ir mirksi. Tai jau turi veikti su EEPROM.
3) Išbandykite pertraukimus iš sarginio laikmačio, bet ne tik dėl smalsumo, o tam, kad mikrovaldiklis periodiškai pats pabustų, pamatuotų baterijos įtampą ir gautą reikšmę siųstų SMS žinute, kad žinotų, kiek yra akumuliatoriaus. yra išleidžiamas.
4) Saulės baterija gali visiškai panaikinti įrenginio įkrovimo poreikį, tai bus aktualu ypač mažos talpos akumuliatoriams.
5) Jau seniai norėjau įsigyti LiFePo4 baterijas, kurios, anot atsiliepimų, normaliai toleruoja šalčius, bet kol ieškojau tinkamos partijos, jau nepastebimai atėjo pavasaris.
6) Dirbkite su estetiniu komponentu

Kurį „Pro Mini“ turėtumėte nusipirkti?
Jei nėra plaukų džiovintuvo, tai Pro Mini "RobotDyn" Atmega168PA 3.3V, nuimkite LED su kažkuo aštriu ir turite ~ 250μA.
Jei turite plaukų džiovintuvą, tai bet kokią plokštę, lituojate stabilizatorių ir maitinimo LED - gaunate ~ 20μA srovės suvartojimo.

Kol kas tiek, tikiuosi apžvalga buvo įdomi ir naudinga.

Planuoju pirkti +174 Pridėti prie mėgstamiausių Man patiko apžvalga +143 +278

Infraraudonųjų (IR, IR) jutikliai dažniausiai naudojami atstumams matuoti, tačiau juos galima naudoti ir objektams aptikti. Prijungę kelis IR jutiklius prie Arduino, galite sukurti signalizaciją apie įsilaužimą.

Apžvalga

Infraraudonųjų (IR, IR) jutikliai dažniausiai naudojami atstumams matuoti, tačiau juos galima naudoti ir objektams aptikti. IR jutikliai susideda iš infraraudonųjų spindulių siųstuvo ir infraraudonųjų spindulių imtuvo. Siųstuvas skleidžia infraraudonosios spinduliuotės impulsus, o imtuvas aptinka bet kokius atspindžius. Jei imtuvas aptinka atspindį, tai reiškia, kad priešais jutiklį tam tikru atstumu yra objektas. Jei nėra atspindžio, nėra ir objekto.

IR jutiklis, kurį naudosime šiame projekte, aptinka atspindžius tam tikrame diapazone. Šie jutikliai turi nedidelį linijinį krūvį sujungtą įrenginį (CCD), kuris nustato kampą, kuriuo IR spinduliuotė grįžta į jutiklį. Kaip parodyta paveikslėlyje žemiau, jutiklis perduoda infraraudonųjų spindulių impulsą į erdvę, o kai priešais jutiklį atsiranda objektas, impulsas atsispindi atgal į jutiklį kampu, proporcingu atstumui tarp objekto ir jutiklio. Jutiklio imtuvas aptinka ir išveda kampą, o naudodami šią vertę galite apskaičiuoti atstumą.

Prie Arduino prijungę porą IR jutiklių, galime sukurti paprastą signalizaciją. Jutiklius sumontuosime ant durų staktos, o tinkamai sureguliavę jutiklius galėsime aptikti, kai kas nors įeina pro duris. Kai taip atsitiks, IR jutiklio išvesties signalas pasikeis, o šį pokytį aptiksime nuolat skaitydami jutiklių išvestį su Arduino. Šiame pavyzdyje žinome, kad objektas praeina pro duris, kai IR jutiklio rodmuo viršija 400. Kai taip atsitiks, Arduino suaktyvins aliarmą. Norėdami iš naujo nustatyti aliarmą, vartotojas gali paspausti mygtuką.

Komponentai

  • 2 x IR atstumo jutiklis;
  • 1 x Arduino Mega 2560;
  • 1 x garsinis signalas;
  • 1 x mygtukas;
  • 1 x 470 omų rezistorius;
  • 1 x NPN tranzistorius;
  • džemperiai.

Sujungimo schema

Šio projekto schema parodyta paveikslėlyje žemiau. Dviejų IR jutiklių išėjimai prijungti prie kaiščių A0 ir A1. Kiti du kontaktai yra prijungti prie 5 V ir GND. 12 voltų garsinis signalas per tranzistorių prijungtas prie 3 kaiščio, o mygtukas, naudojamas aliarmui išjungti, yra prijungtas prie 4 kaiščio.


Žemiau esančioje nuotraukoje parodyta, kaip šiam eksperimentui priklijavome jutiklius prie durų staktos. Žinoma, nuolatinio naudojimo atveju jutiklius montuotumėte kitaip.


Montavimas

  1. Prijunkite Arduino plokštės 5 V ir GND kaiščius prie jutiklių maitinimo ir GND kaiščių. Taip pat galite tiekti jiems išorinę maitinimą.
  2. Prijunkite jutiklių išvesties laidus prie Arduino plokštės A0 ir A1 kaiščių.
  3. Prijunkite Arduino 3 kaištį prie tranzistoriaus pagrindo per 1K rezistorių.
  4. Prijunkite 12 V įtampą į tranzistoriaus kolektorių.
  5. Prijunkite teigiamą 12 V garso signalo laidą prie emiterio, o neigiamą - prie įžeminimo bėgelio.
  6. Mygtuku prijunkite 4 kaištį prie 5 V kaiščio. Saugumo sumetimais visada geriausia tai padaryti naudojant papildomą mažą rezistorių, kad būtų išvengta didelio srovės srauto.
  7. Prijunkite Arduino plokštę prie kompiuterio per USB kabelį ir įkelkite programą į mikrovaldiklį naudodami Arduino IDE.
  8. Įjunkite Arduino plokštę naudodami maitinimo šaltinį, bateriją arba USB kabelį /

Kodas

const int buzzer = 3; // 3 kaištis yra garsinio signalo išvestis const int mygtukas = 4; // 4 kaištis yra mygtuko galios sąrankos () įvestis (pinMode (skambrelis, OUTPUT); // 3 kaištį nustatykite į išvestį pinMode (mygtukas, INPUT); // 4 kaištį nustatykite į įvestį) void loop () (/ / nuskaitykite abiejų jutiklių išvestį ir palyginkite rezultatą su slenksčiu int sensor1_value = analogRead (A0); int sensor2_value = analogRead (A1); if (sensor1_value> 400 || sensor2_value> 400) (while (true) (digitalWrite (buzzer) , HIGH) ; // įjungti aliarmą, jei (digitalRead (mygtukas) == HIGH) pertrauka;)) else (digitalWrite (skambrelis, LOW); // išjungti signalą))

Vaizdo įrašas

Geras paros metas 🙂 Šiandien kalbėsime apie žadintuvą. Paslaugų rinkoje gausu įmonių, organizacijų, kurios užsiima apsaugos sistemų įrengimu ir priežiūra. Šios firmos pirkėjui siūlo platų signalizacijos sistemų pasirinkimą. Tačiau jų kaina toli gražu nėra pigi. Tačiau ką turėtų daryti žmogus, neturintis tiek daug asmeninių lėšų, kad išleistų signalizacijai? Manau, kad išvada rodo pati save daryti signalizacija pagal jų ranka... Šiame straipsnyje pateikiamas pavyzdys, kaip galite sukurti savo koduotą apsaugos sistemą naudodami Arduino uno plokštę ir kelis magnetinius jutiklius.

Sistemą galima išjungti klaviatūroje įvedus slaptažodį ir paspaudus „ * ‘. Jei norite pakeisti dabartinį slaptažodį, tai galite padaryti paspausdami „ B', Ir jei norite praleisti arba nutraukti operaciją, galite tai padaryti paspausdami mygtuką ‘#’. Sistema turi garsinį signalą, leidžiantį leisti įvairius garsus atliekant tam tikrą operaciją.

Sistema įjungiama paspaudus „A“ mygtuką. Sistema palieka patalpas per 10 sekundžių. Po 10 sekundžių įsijungia žadintuvas. Magnetinių jutiklių skaičius priklausys nuo jūsų norų. Projekte yra 3 jutikliai (dviem langams ir durims). Atidarius langą, sistema įsijungia, o signalizacija suskamba garsiniu signalu. Sistemą galima išjungti įvedus slaptažodį. Atidarius duris, signalizacija suteikia lankytojui 20 sekundžių įvesti slaptažodį. Sistema naudoja ultragarsinį jutiklį, galintį aptikti judesį.

Vaizdo įrašas apie įrenginio veikimą

Amatas sukurta informaciniais/švietimo tikslais. Jei norite jį naudoti namuose, turėsite jį patobulinti. Įdėkite valdymo bloką į metalinį dėklą ir apsaugokite maitinimo liniją nuo galimų pažeidimų.

Pradėkime!

1 žingsnis: ko mums reikia

  • Arduino uno plokštė;
  • didelio kontrasto LCD ekranas 16 × 2;
  • 4 × 4 klaviatūra;
  • 10 ~ 20kΩ potenciometras;
  • 3 magnetiniai jutikliai (jie taip pat yra nendriniai jungikliai);
  • 3 2 kontaktų varžtų gnybtai;
  • HC-SR04 ultragarsinis jutiklis;

Jei norite sukurti sistemą nenaudodami „Arduino“, jums taip pat reikės:

  • DIP jungtis atmega328 + atmega328 mikrovaldikliui;
  • 16MHz kristalų rezonatorius;
  • 2 vnt. 22pF keramika, 2 vnt. 0,22uF elektrolitinis kondensatorius;
  • 1 PC. 10k omų rezistorius;
  • maitinimo lizdas (DC maitinimo lizdas);
  • Bandomoji Lenta;
  • 5V maitinimo šaltinis;

Ir viena dėžutė viskam supakuoti!

Instrumentai:

  • Kažkas, kas gali perpjauti plastikinę dėžę;
  • Karšto klijų pistoletas;
  • Grąžtas / atsuktuvas.

2 veiksmas: aliarmo grandinė

Ryšio schema yra gana paprasta.

Nedidelis paaiškinimas:

Didelio kontrasto LCD:

  • Pin1 - Vdd į GND;
  • Pin2 - Vss iki 5V;
  • Pin3 - Vo (į centrinį potenciometro kaištį);
  • Pin4 – RS iki 8 Arduino kaiščio;
  • Pin5 - RW į GND;
  • Pin6 – EN iki 7 Arduino kaiščio;
  • 11 kaištis – D4 iki 6 Arduino kaiščio;
  • 12 kaištis – D5 iki 5 Arduino kaiščio;
  • 13 kaištis – D6 iki 4 Arduino kaiščio;
  • 14 kaištis – D7 iki 3 Arduino kaiščio;
  • Pin15 - Vee (dešinėje arba kairėje potenciometro kaištyje).

4 × 4 klaviatūra:

Iš kairės į dešinę:

  • „Arduino“ kaištis nuo 1 iki A5;
  • „Arduino“ kaištis nuo 2 iki A4 formato;
  • „Arduino“ kaištis nuo 3 iki A3;
  • „Arduino“ kontaktas nuo 4 iki A2;
  • Pin5 iki 13 Arduino kaiščio;
  • Pin6 iki 12 Arduino kaiščio;
  • Pin7 iki 11 Arduino kaiščio;
  • Pin8 prie 10 Arduino kaiščio.

3 veiksmas: programinė įranga

Šiame žingsnyje pateikiamas kodas, kurį naudoja įtaisytasis!

Atsisiųskite „codebender“ papildinį. Spustelėkite mygtuką „Vykdyti“ „Arduino“ ir paleiskite lentą naudodami šią programą. Tai viskas. Jūs ką tik užprogramavote Arduino! Jei norite pakeisti kodą, spustelėkite mygtuką „Redaguoti“.

Pastaba: jei nenaudosite Codebender IDE savo Arduino plokštei programuoti, turėsite įdiegti papildomų bibliotekų Arduino IDE.

4 veiksmas: sukurkite savo valdymo plokštę

Sėkmingai surinkę ir išbandę naują projektą, pagrįstą Arduino uno, galite pradėti kurti savo lentą.

Keletas patarimų, kaip sėkmingiau užbaigti įsipareigojimą:

  • 10K rezistorius turi būti prijungtas tarp 1 (atstatyti) ir 7 (Vcc) mikrovaldiklio Atmega328 kaiščių.
  • 16MHz kristalas turi būti prijungtas prie 9 ir 10 kaiščių, pažymėtų XTAL1 ir XTAL2
  • Prijunkite kiekvieną rezonatoriaus laidą su 22pF kondensatoriais. Bešvinis kondensatorius veda į mikrovaldiklio 8 kaištį (GND).
  • Nepamirškite prijungti antrosios ATmega328 maitinimo linijos prie maitinimo šaltinio, 20 Vcc ir 22 GND kaiščių.
  • Daugiau informacijos apie mikrovaldiklio kaiščius rasite antrame paveikslėlyje.
  • Jei planuojate naudoti maitinimo šaltinį, kurio įtampa didesnė nei 6V, turite naudoti linijinį reguliatorių LM7805 ir du 0,22uF elektrolitinius kondensatorius, kurie turėtų būti montuojami reguliatoriaus įėjime ir išėjime. Svarbu! Nejunkite prie plokštės daugiau nei 6 V įtampos !!! Priešingu atveju sudeginsite savo Atmega mikrovaldiklį ir LCD ekraną.

5 veiksmas: įdėkite grandinę į dėklą