Talaan ng mga Nilalaman:

Batay sa Arduino na GSM / SMS Remote Control Unit: 16 Mga Hakbang (na may Mga Larawan)
Batay sa Arduino na GSM / SMS Remote Control Unit: 16 Mga Hakbang (na may Mga Larawan)

Video: Batay sa Arduino na GSM / SMS Remote Control Unit: 16 Mga Hakbang (na may Mga Larawan)

Video: Batay sa Arduino na GSM / SMS Remote Control Unit: 16 Mga Hakbang (na may Mga Larawan)
Video: Hacking into Android in 32 seconds | HID attack | Metasploit | PIN brute force PoC 2024, Nobyembre
Anonim
Batay sa Arduino na GSM / SMS Remote Control Unit
Batay sa Arduino na GSM / SMS Remote Control Unit

! ! ! N O T I C E! !

Dahil sa pag-upgrade ng lokal na tore ng cellphone sa aking lugar, hindi ko na magagamit ang module na GSM na ito. Hindi na sinusuportahan ng mas bagong tower ang mga 2G device. Samakatuwid, hindi na ako makapagbigay ng anumang suporta para sa proyektong ito.

Sa tulad ng isang malawak na hanay ng mga module ng GSM na magagamit para sa hobbyist, karamihan sa atin ay nagtapos sa pagbili ng isa. Bumili ako ng isang module na SIM800L nang lokal, at nagtapos sa paglalaro ng iba't ibang mga utos ng modyul.

Gamit ang Arduino Uno at ang Arduino IDE, nagawa kong maging totoo ang aking mga ideya. Hindi ito naging madali, sa SINGLE BIGGEST ISSUE na ang hangganan ng 2KB SRAM lamang. Matapos ang maraming pagsasaliksik sa internet at iba't ibang mga forum, nagawa kong madaig ang limitasyong ito.

Ang iba't ibang mga diskarte sa pagprogram, isang mas mahusay na pag-unawa sa Arduino compiler, at paggamit ng SIM card at EEPROM para sa karagdagang memorya, ay nai-save ang proyektong ito. Matapos ang ilang mga pagbabago sa code, isang matatag na prototype ang binuo at nasubukan sa loob ng isang linggo.

Ang isang sagabal sa limitadong SRAM ay ang yunit na hindi maaaring lagyan ng isang display at mga key ng gumagamit. Nagresulta ito sa isang kumpletong muling pagsulat ng code. Walang interface ng gumagamit, ang natitirang pagpipilian lamang upang magpatuloy sa proyekto, ay upang magamit ang mga mensahe sa SMS upang mai-configure ang yunit, pati na rin ang mga gumagamit.

Ito ay naging isang kapanapanabik na proyekto, at mas maraming futures ang idinagdag habang nagpatuloy ang pag-unlad.

Ang aking pangunahing layunin ay manatili sa Arduino Uno, o sa kasong ito, ang ATMEGA328p, at hindi gumagamit ng anumang mga bahagi ng mount mount. Gagawa ito ng mas madali para sa pangkalahatang publiko na kopyahin at buuin ang yunit.

Pagtukoy ng yunit:

  • Ang maximum na 250 mga gumagamit ay maaaring mai-program sa yunit
  • Apat na digital na output
  • Apat na mga digital na input
  • Ang bawat output ay maaaring mai-configure bilang isang PULSE o ON / OFF na output
  • Ang tagal ng output pulse ay maaaring itakda sa pagitan ng 0.5.. 10 segundo
  • Ang bawat pag-input ay maaaring mai-configure upang mag-trigger sa OFF sa ON mga pagbabago.
  • Ang bawat input ay maaaring mai-configure upang ma-trigger sa ON hanggang OFF ang mga pagbabago
  • Ang bawat oras ng pagkaantala ng pag-input ay maaaring itakda sa pagitan ng 0 segundo at 1 oras
  • Ang mga mensahe sa SMS para sa mga pagbabago sa Mga Input ay maaaring ipadala sa 5 magkakaibang mga gumagamit
  • Ang mga pangalan at teksto ng katayuan para sa bawat input ay maaaring itakda ng gumagamit
  • Ang mga pangalan at teksto ng katayuan para sa bawat output ay maaaring itakda ng gumagamit
  • Maaaring mai-configure ang unit upang makatanggap ng mga mensahe sa balanse ng SIM card sa pamamagitan ng pagmemensahe ng USSD.
  • Ang lahat ng mga gumagamit ay maaaring humiling ng mga pag-update ng katayuan ng I / O ng yunit
  • Maaaring makontrol ng lahat ng mga gumagamit ang mga indibidwal na output sa pamamagitan ng mga mensahe sa SMS
  • Maaaring makontrol ng lahat ng gumagamit ang mga indibidwal na output sa pamamagitan ng pagtawag sa yunit

Mga Tampok sa Kaligtasan

  • Ang paunang pag-set up ng yunit ay magagawa lamang habang nasa yunit.
  • Ang paunang pag-set up ay magagawa lamang ng MASTER USER
  • Ang mga paunang utos ng pag-setup ay awtomatikong hindi pinagana pagkatapos ng sampung minuto.
  • Ang mga tawag at SMS lamang na nagmemensahe mula sa mga kilalang gumagamit ang maaaring makontrol ang yunit
  • Maaari lamang mapatakbo ng mga gumagamit ang mga output na nakatalaga sa kanila ng MASTER USER

Iba pang Mga Tampok

  • Ang mga tawag sa yunit na ito ay libre, dahil hindi kailanman nasasagot ang tawag.
  • Kapag tinawag ang yunit, ang tawag ay bababa lamang pagkatapos ng 2 segundo. Ito ang kumpirmasyon sa tumatawag na ang unit ay tumugon sa tawag.
  • Kung sinusuportahan ng service provider ng SIM card ang mga mensahe sa USSD, ang mga katanungan sa balanse ay maaaring gawin ng MASTER USER. Ang mensahe ng USSD na naglalaman ng balanse, ay ipapasa sa MASTER USER.

Hakbang 1: Supply ng Kuryente

Power Supply
Power Supply

Upang maipatuloy na ang yunit ay maaaring konektado sa karaniwang mga sistema ng seguridad (mga sistema ng alarma, mga pintuan ng de-kuryenteng garahe, mga de-koryenteng de-motor na gate), ang yunit ay pinalakas mula sa 12V DC na karaniwang magagamit sa mga naturang sistema.

Ang kapangyarihan ay inilapat sa 12V IN at 0V terminals, at protektado ng isang 1A fuse. Ang mga karagdagang 12V OUT terminal ay magagamit, at protektado rin ng piyus.

Protektahan ng Diode D1 ang yunit laban sa mga pabalik na koneksyon ng polarity sa mga linya ng 12V.

Ang mga Capacitor C1 at C2 ay sinasala ang anumang ingay na naroroon sa mga linya ng supply ng 12V. Ginagamit ang supply ng 12V upang mapagana ang mga relay ng yunit.

Ang supply ng 5V ay binubuo ng isang LM7805L boltahe regulator, at naglalabas ng matatag + 5V na kinakailangan para sa SIM800L GSM module, pati na rin ang micro processor. Ang mga Capacitor C3 at C4 ay sinasala ang anumang ingay na maaaring naroroon sa linya ng supply ng + 5V. Ang kamag-anak na malalaking sukat na electrolytic capacitor ay ginamit, dahil ang module na SIM800L GSM ay gumagamit ng kaunting lakas kapag nagpapadala.

Walang kinakailangang heat sink sa voltage regulator.

Hakbang 2: Mga Digital na Input

Mga Digital na Pag-input
Mga Digital na Pag-input
Mga Digital na Pag-input
Mga Digital na Pag-input

Ang mga signal ng digital input ay pawang 12V, at dapat na ma-interfaced sa 5V micro controller. Para sa mga ito, ginagamit ang mga opto coupler upang ihiwalay ang mga signal ng 12V mula sa 5V system.

Nililimitahan ng 1K input resistor ang kasalukuyang pag-input sa opto coupler sa paligid ng 10mA.

Dahil sa mga limitasyon sa puwang, walang puwang na magagamit sa PC Board para sa 5V pull-up resistors. Ang micro controller ay naka-set up upang paganahin ang mga input pin na mahina ang mga pull-up.

Nang walang signal na nasa input (LOW) ng opto coupler, walang kasalukuyang dumadaloy sa pamamagitan ng opto coupler LED. Sa gayon ang opto coupler transistor ay pinatay. Ang mahinang pull-up ng micro controller ay kukuha ng kolektor sa halos 5V, at makikita bilang isang lohika HATAAS ng micro controller.

Sa pamamagitan ng 12V na inilapat (TAAS) sa pag-input ng opto coupler, sa paligid ng 10mA ay dumadaloy sa pamamagitan ng opto coupler LED. Sa gayon ang opto coupler transistor ay bubuksan. Hahila nito ang kolektor sa halos 0V, at makikita bilang isang LOW na lohika ng micro controller.

Tandaan na ang input na nakita ng micro controller ay inverted kumpara sa 12V input.

Ang normal na code upang mabasa ang input pin ay tulad ng sumusunod:

boolean Input = digitalRead (inputpin);

Upang maitama ang baligtad na signal, gamitin ang sumusunod na code:

boolean Input =! digitalRead (inputpin); // TANDAAN ang! sa harap ng binasa

Ngayon, ang input na nakita ng micro controller ay tumutugma sa input sa 12V input.

Ang huling input circuit ay binubuo ng 4 digital input. Ang bawat input ay konektado sa mga terminal sa PC Board.

Hakbang 3: Mga Digital na Output

Mga Digital Output
Mga Digital Output
Mga Digital Output
Mga Digital Output
Mga Digital Output
Mga Digital Output

Karaniwan, sa isang circuit na nagmamaneho lamang ng isang minimum na bilang ng mga relay, ang pinakamahusay na paraan ay ang paggamit ng isang transistor driver circuit tulad ng ipinakita. Ito ay simple, mababang gastos, at epektibo.

Ang mga resistor ay nagbibigay ng pull-down sa lupa, at kasalukuyang limitasyon ng transistor base. Ginagamit ang transistor upang madagdagan ang kasalukuyang magagamit upang humimok ng isang relay. Sa pamamagitan lamang ng 1mA na iginuhit mula sa micro controller pin, ang transistor ay maaaring lumipat ng isang load ng 100mA. Higit sa sapat para sa karamihan ng mga uri ng mga relay. Ang diode ay isang fly-back diode, pinoprotektahan ang circuit mula sa mataas na boltahe na mga spike sa panahon ng paglipat ng relay. Ang idinagdag na bentahe ng paggamit ng circuit na ito, ay ang relay operating voltage ay maaaring naiiba mula sa boltahe ng micro controller. Sa gayon, sa halip na gumamit ng isang 5V relay, ang isa ay maaaring gumamit ng anumang boltahe ng DC na hanggang 48V.

Ipinakikilala ang ULN2803

Ang mas maraming mga relay na kinakailangan ng isang proyekto, mas mataas ang bilang ng bahagi. Gagawin nitong mahirap ang disenyo ng PCB, at maaaring magamit ang mahalagang puwang ng PCB. Ngunit ang paggamit ng isang transistor array, tulad ng ULN2803, ay tiyak na makakatulong sa pagpapanatiling maliit ang laki ng PCB. Ang ULN2803 ay angkop na angkop para sa mga 3.3V at 5V na input mula sa isang micro controller, at maaaring magmaneho ng relay hanggang sa 48V DC. Ang ULN2803 na ito ay mayroong 8 indibidwal na mga circuit ng transistor, ang bawat circuit ay nilagyan ng lahat ng mga sangkap na kinakailangan upang lumipat ng isang relay.

Ang huling output circuit ay binubuo ng isang ULN3803, na nagmamaneho ng 4 12V DC output relay. Ang bawat contact ng relay ay magagamit sa mga termnals ng PC Board.

Hakbang 4: Micro Controller Oscillator

Oscillator ng Micro Controller
Oscillator ng Micro Controller
Oscillator ng Micro Controller
Oscillator ng Micro Controller
Oscillator ng Micro Controller
Oscillator ng Micro Controller

Oscillator Circuit

Ang micro controller ay nangangailangan ng isang oscillator upang gumana nang tama. Upang mapanatili ang disenyo ng Arduino Uno, gagamitin ng circuit ang karaniwang oscillator ng 16MHz. Dalawang pagpipilian ang magagamit:

Crystal

Ang pamamaraang ito ay gumagamit ng isang kristal na konektado sa dalawang paglo-load ng mga capacitor. Ito ang pinakakaraniwang pagpipilian.

Tagataguyod

Ang isang resonator ay karaniwang isang kristal at dalawang paglo-load ng mga capacitor sa isang solong 3-pin na pakete. Binabawasan nito ang dami ng mga bahagi, at pinapataas ang magagamit na puwang sa PC Board.

Upang mapanatili ang bilang ng sangkap bilang mababang hangga't maaari, pinili kong gumamit ng isang 16MHz resonator.

Hakbang 5: Mga LED na Indikasyon

Mga LED na Indikasyon
Mga LED na Indikasyon
Mga LED na Indikasyon
Mga LED na Indikasyon

Ano ang anumang circuit na walang mga LED? Ang probisyon ay ginawa sa PC Board para sa 3mm LEDs.

Ginagamit ang 1K resistors upang limitahan ang kasalukuyang sa pamamagitan ng LED sa mas mababa sa 5mA, Kapag gumagamit ng 3mm high-bright LEDs, ang ilaw ay mahusay.

Para sa madaling interpretasyon ng mga LED status, dalawang kulay ang ginagamit. Sa pamamagitan ng pagsasama-sama ng dalawang LEDs na may kumikislap na mga pahiwatig, medyo maraming impormasyon ang maaaring makuha mula sa dalawang LED lamang.

Pulang LED

Ginagamit ang pulang LED upang ipahiwatig ang mga kondisyon ng kasalanan, mahabang pagkaantala, anumang maling utos.

Green LED

Ginagamit ang berdeng LED upang ipahiwatig ang malusog at / o tamang mga input at utos.

Hakbang 6: Micro Processor Reset Circuit

Ang Micro Processor Reset Circuit
Ang Micro Processor Reset Circuit

Para sa mga kadahilanang panseguridad, ang ilan sa mga pagpapaandar ng yunit ay magagamit lamang sa unang 10 minuto pagkatapos ng pag-upo ng yunit.

Sa isang pindutan ng pag-reset, ang kapangyarihan sa yunit ay hindi kailangang patayin upang ma-reset ang yunit.

Kung paano ito gumagana

Ang risistor ng 10K ay panatilihin ang linya ng RESET na malapit sa 5V. Kapag pinindot ang pindutan, ang linya ng RESET ay hilahin sa 0V, sa gayon ay mapanatili ang reset ng micro controller. Kapag ang pindutan ay pinakawalan, ang linya ng RESET ay babalik sa% v, na muling i-set ang micro controller.

Hakbang 7: Module ng SIM800L

Module ng SIM800L
Module ng SIM800L
Module ng SIM800L
Module ng SIM800L
Module ng SIM800L
Module ng SIM800L

Ang puso ng yunit ay ang module na SIM800L GSM. Gumagamit lamang ang modyul na ito ng 3 I / O na mga pin sa micro controller.

Ang mga interface ng module sa micro controller sa pamamagitan ng isang karaniwang serial port.

  • Ang lahat ng mga utos sa yunit ay ipinapadala sa pamamagitan ng serial port gamit ang karaniwang mga AT utos.
  • Sa isang papasok na tawag, o kapag natanggap ang isang SMS, ipinapadala ang impormasyon sa micro controller sa pamamagitan ng serial port gamit ang ASCII text..

Upang makatipid ng puwang, ang module ng GSM ay konektado o ang PC Board sa pamamagitan ng isang 7-pin header. Ginagawa nitong madali ang pagtanggal ng module ng GSM. Pinapayagan din nito ang gumagamit na madaling maipasok / alisin ang SIM card sa ilalim ng module.

Kinakailangan ang isang aktibong SIM card, at ang SIM card ay dapat na makapagpadala at makatanggap ng mga mensahe sa SMS.

Pag-setup ng module na SIM800L GSM

Sa pagpapagana ng yunit, ang GSM module reset pin ay hinila pababa sa isang segundo. Tinitiyak nito na ang module ng GSM ay nagsisimula lamang pagkatapos na ang kuryente ay nagpapatatag. Ang module ng GSM ay tumatagal ng ilang segundo upang mag-reboot, kaya maghintay ng 5 segundo bago magpadala ng anumang mga utos ng AT sa module.

Upang matiyak na ang module ng GSM ay naka-configure upang makipag-usap nang tama sa micro controller, ang mga sumusunod na utos ng AT ay ginagamit habang nagsisimula:

AT

ginamit upang matukoy kung ang isang module ng GSM ay magagamit

SA + CREG?

Ang pagboto sa utos na ito hanggang sa ang module ng GSM ay nakarehistro sa network ng cellphone

SA + CMGF = 1

Itakda ang SMS message mode sa ASCII

SA + CNMI = 1, 2, 0, 0, 0

Kung ang SMS avaialble, magpadala ng mga detalye ng SMS sa serial port ng module ng GSM

SA + CMGD = 1, 4

Tanggalin ang anumang mga mensaheng SMS na nakaimbak sa SIM card

SA + CPBS = / "SM

Itakda ang libro ng telepono ng module ng GSM sa SIM card

AT + COPS = 2, pagkatapos ay AT + CLTS = 1, pagkatapos ay AT + COPS = 0

Itakda ang oras ng module ng GSM sa oras ng network ng cellphone

Maghintay ng 5 segundo para maitakda ang oras

SA + CUSD = 1

Paganahin ang pagpapaandar sa pagmemensahe ng USSD

Hakbang 8: Ang Micro Controller

Ang Micro Controller
Ang Micro Controller
Ang Micro Controller
Ang Micro Controller
Ang Micro Controller
Ang Micro Controller

Ang micro controller ay isang karaniwang AtMega328p, pareho sa ginamit sa Arduino Uno. Ang code ay sa gayon maihahambing sa pareho. Upang payagan ang madaling pag-program sa board, ang isang 6-pin na header ng programa ay magagamit sa PC Board.

Ang iba't ibang mga seksyon ng yunit ay konektado sa micro processor, at kasama ang mga sumusunod:

  • Apat na mga digital na input
  • Apat na digital na output
  • Ang oscillator
  • Dalawang LEDs na pahiwatig
  • I-reset ang circuit
  • Modyul ng SIM800L GSM

Ang lahat ng mga komunikasyon papunta at mula sa module ng GSM ay ginagawa gamit ang pagpapaandar ng SoftwareSerial (). Ang pamamaraang ito ay ginamit upang palayain ang pangunahing serial port para sa Arduino IDE habang nasa yugto ng pag-unlad.

Sa pamamagitan lamang ng 2KB ng SRAM, at 1KB ng EEPROM, walang sapat na memorya upang mag-imbak ng higit sa isang pares ng mga gumagamit na maaaring maiugnay sa yunit. Upang mapalaya ang SRAM, ang lahat ng impormasyon ng gumagamit ay nakaimbak sa SIM card sa module na GSM. Sa pag-aayos na ito, ang yunit ay maaaring magsilbi ng hanggang sa 250 iba't ibang mga gumagamit.

Ang data ng pagsasaayos ng yunit ay nakaimbak sa EEPROM, sa gayon ay pinaghihiwalay ang data ng gumagamit at data ng system mula sa bawat isa.

Marami pa ring mga ekstrang I / O na pin na magagamit, Gayunpaman, ang pagpipilian ng pagdaragdag ng isang LCD display at / o keyboard ay hindi posible dahil sa maraming halaga ng SRAM na ginamit ng SoftWareSerial () tumanggap at magpadala ng mga buffer, Dahil sa kakulangan ng anumang uri ng interface ng gumagamit sa yunit, ang lahat ng mga setting at mga gumagamit ay naka-program na gumagamit ng mga mensahe sa SMS.

Hakbang 9: Pag-optimize sa memorya ng SRAM

Pag-optimize sa memorya ng SRAM
Pag-optimize sa memorya ng SRAM

Medyo maaga sa yugto ng pag-unlad, iniulat ng Arduino IDE ang mababang memorya ng SRAM kapag pinagsasama ang code. Maraming pamamaraan ang ginamit upang mapagtagumpayan ito.

Limitahan ang natanggap na data sa serial port

Iuulat ng module ng GSM ang lahat ng mga mensahe sa micro controller ng serial port. Kapag tumatanggap ng ilang mga mensahe sa SMS, ang kabuuang haba ng natanggap na mensahe ay maaaring lumampas sa 200 mga character. Maaari nitong mabilis na ubusin ang lahat ng magagamit na SRAM sa AtMega chip, at magdulot ng mga problema sa katatagan.

upang maiwasan ito, ang unang 200 character lamang ng ANUMANG mensahe na matatanggap mula sa module ng GSM ang gagamitin. Ipinapakita ng halimbawa sa ibaba kung paano ito ginagawa sa pamamagitan ng pagbibilang ng mga natanggap na character sa variable na Counter.

// scan para sa data mula sa serial serial ng software

// ----------------------------------------------- RxString = ""; Counter = 0; habang (SSerial.available ()) {pagkaantala (1); // maikling pagkaantala upang magbigay ng oras para sa bagong data na mailalagay sa buffer // kumuha ng bagong character RxChar = char (SSerial.read ()); // add first 200 character to string if (Counter <200) {RxString.concat (RxChar); Counter = Counter + 1; }}

Pagbawas ng Serial.print () code

Bagaman madaling gamitin sa panahon ng pag-unlad, ang Arduino Serial Monitor ay maaaring gumamit ng maraming SRAM. Ang code ay binuo gamit ang ilan hangga't maaari Serial.print () code. Ang isang isang seksyon ng code ay nasubukan upang gumana, ang lahat ng Serial.print () na code ay tinanggal mula sa bahaging iyon ng code.

Paggamit ng Serial.print (F (("")) code

Maraming impormasyon na karaniwang ipinapakita sa Arduino Serial Monitor ay may katuturan kapag naidagdag ang mga paglalarawan. Kunin ang sumusunod na halimbawa:

Serial.println ("Naghihintay para sa mga tukoy na aksyon");

Ang string na "Naghihintay para sa mga tukoy na aksyon" ay naayos na, at hindi maaaring baguhin.

Sa panahon ng pagtitipon ng code, isasama ng tagatala ang string na "Naghihintay para sa mga tukoy na aksyon" sa memorya ng FLASH.

Bilang karagdagan, nakikita ng tagatala na ang string ay isang pare-pareho, na ginagamit ng "Serial.print" o "Serial.println" na tagubilin. Sa panahon ng boot-up ng micro, ang pare-pareho na ito ay inilalagay din sa memorya ng SRAM.

Sa pamamagitan ng paggamit ng "F" na unlapi sa mga pagpapaandar ng Serial.print (), sinasabi nito sa tagatala na ang string na ito ay magagamit lamang sa memorya ng FLASH. Para sa halimbawang ito, naglalaman ang string ng 28 character. Ito ay 28 bytes na maaaring mapalaya sa SRAM.

Serial.println (F ("Naghihintay para sa mga tukoy na aksyon"));

Nalalapat din ang pamamaraang ito sa mga utos ng SoftwareSerial.print (). Habang gumagana ang module ng GSM sa mga utos ng AT, naglalaman ang code ng maraming mga utos ng SoftwareSerial.print ("xxxx"). Ang paggamit ng awtomatikong "F" ay napalaya ang halos 300 bytes ng SRAM.

Huwag gamitin ang hardware serial port

Pagkatapos ng pag-debug ng code, hindi pinagana ang serial port ng hardware sa pamamagitan ng pag-alis ng LAHAT ng mga utos ng Serial.print (). Pinalaya nito ang ilang dagdag na byte ng SRAM.

Nang walang anumang mga utos na Serial.print () na natitira sa code, isang karagdagang 128 bytes ng SRAM ang ginawang magagamit. Ginawa ito sa pamamagitan ng pag-alis ng hardware serial port mula sa code. Pinalamanan nito ang 64 byte transmit at 64 byte na tumatanggap ng mga buffer.

// Serial.begin (9600); // hindi pinagana ang serial serial port

Paggamit ng EEPROM para sa mga string

Para sa bawat input at output, kailangan ng tatlong mga string upang mai-save. Ang mga ito ang pangalan ng channel, string kung naka-on ang channel, at string kapag naka-off ang channel.

Sa isang kabuuang 8 I / O na mga channel, ang kanilang magiging

  • 8 mga string na naglalaman ng mga pangalan ng channel, bawat 10 character ang haba
  • 8 mga string na naglalaman ng channel Sa paglalarawan, bawat 10 character ang haba
  • 8 mga string na naglalaman ng channel na Naka-off ang paglalarawan, bawat 10 character ang haba

Ang mga ad na ito ay hanggang sa 240 bytes ng SRAM. Sa halip na itago ang mga string na ito sa SRAM, nakaimbak ito sa EEPROM. Pinalaya nito ang isang karagdagang 240 bytes ng SRAM.

Pagdeklara ng string na may tamang haba

Karaniwang idineklara ang variable sa simula ng code. Ang isang karaniwang pagkakamali kapag idineklara ang isang variable ng string, ay hindi namin idedeklara ang string na may tamang bilang ng mga character.

String GSM_Nr = "";

String GSM_Name = ""; String GSM_Msg = "";

Sa panahon ng pagsisimula, ang micro controller ay hindi maglalaan ng memorya sa SRAM para sa mga variable na ito. Ito ay maaaring maging sanhi ng kawalang-tatag sa paglaon kapag ginamit ang mga string na ito.

Upang maiwasan ito, ideklara ang mga string gamit ang tamang bilang ng mga character na gagamitin ng string sa software.

String GSM_Nr = "1000000000";

String GSM_Name = "2000000000"; String GSM_Msg = "3000000000";

Pansinin kung paano hindi ko idineklara ang mga string gamit ang parehong mga character. Kung ideklara mo ang mga string na ito sa lahat na may pagsasabing "1234567890", makikita ng tagatala ang parehong string sa tatlong variable, at maglalaan lamang ng sapat na memorya sa SRAM para sa isa sa mga string.

Hakbang 10: Laki ng Serial Buffer ng Software

Laki ng Serial Buffer ng Software
Laki ng Serial Buffer ng Software

Sa sumusunod na code, mapapansin mo na hanggang sa 200 mga character ang maaaring mabasa mula sa serial software ng software.

// scan para sa data mula sa serial serial ng software

// ----------------------------------------------- RxString = ""; Counter = 0; habang (SSerial.available ()) {pagkaantala (1); // maikling pagkaantala upang magbigay ng oras para sa bagong data na mailalagay sa buffer // kumuha ng bagong character RxChar = char (SSerial.read ()); // add first 200 character to string if (Counter <200) {RxString.concat (RxChar); Counter = Counter + 1; }}

Nangangailangan ito ng isang buffer ng hindi bababa sa 200 bytes para sa software serial port din. bilang default, ang software serial port buffer ay 64 bytes lamang. Upang madagdagan ang buffer na ito, hanapin ang sumusunod na file:

SoftwareSerial.h

Buksan ang file gamit ang isang text editor, at baguhin ang laki ng buffer sa 200.

/******************************************************************************

* Mga Kahulugan ***** *****

Hakbang 11: Paggawa ng PC Board

Paggawa ng PC Board
Paggawa ng PC Board

Ang PC Board ay dinisenyo gamit ang bersyon ng freeware ng Cadsoft Eagle (naniniwala akong nagbago ang pangalan).

  • Ang PC Board ay isang solong panig na disenyo.
  • Walang ginamit na mga bahagi ng mount mount.
  • Ang lahat ng mga bahagi ay naka-mount sa PC board, kasama ang module na SIM800L.
  • Walang kinakailangang panlabas na mga bahagi o koneksyon
  • Ang mga wire jumper ay nakatago sa ilalim ng mga bahagi para sa isang mas malinis na hitsura.

Ginagamit ko ang sumusunod na pamamaraan upang gumawa ng mga PC Board:

  • Ang imahe ng PC Board ay nakalimbag sa Press-n-Peel gamit ang isang laser printer.
  • Pagkatapos ay inilalagay ang Press-n-Peel sa tuktok ng isang malinis na piraso ng PC Board, at na-secure sa ilang tape.
  • Ang imahe ng PC Board ay inililipat mula sa Press-n-Peel patungo sa blangkong PC Board sa pamamagitan ng pagpasa sa board sa pamamagitan ng isang laminator. Para sa akin, 10 pass ang pinakamahusay na gumagana.
  • Matapos ang cool ng PC Board sa temperatura ng kuwarto, ang Press-n-Peel ay dahan-dahang itinaas mula sa board.
  • Ang PC Board ay nakaukit gamit ang Ammonium Persulphate crystals na natunaw sa mainit na tubig.
  • Pagkatapos ng pag-ukit, ang asul na Press-n-Peel at itim na toner ay tinanggal sa pamamagitan ng paglilinis ng naka-ukit na PC Board na may ilang acetone.
  • Pagkatapos ang board ay gupitin sa laki gamit ang isang Dremel
  • Ang mga butas para sa lahat ng mga bahagi ng through-hole ay drill gamit ang isang 1mm drill bit.
  • Ang mga konektor ng terminal screw ay drilled gamit ang isang 1.2mm drill bit.

Hakbang 12: Assembly ng PC Board

Assembly ng PC Board
Assembly ng PC Board
Assembly ng PC Board
Assembly ng PC Board
Assembly ng PC Board
Assembly ng PC Board
Assembly ng PC Board
Assembly ng PC Board

Ang pagpupulong ay ginagawa sa pamamagitan ng pagdaragdag muna ng pinakamaliit na mga sangkap, at pagtatrabaho hanggang sa pinakamalaking bahagi.

Ang lahat ng mga sangkap na ginamit sa Instructable na ito, hindi kasama ang module ng SIM800, ay nagmula sa aking lokal na tagapagtustos. Iniisip sa kanila ang laging pagkakaroon ng stock. Mangyaring tingnan ang kanilang websie sa South Africa:

www.shop.rabtron.co.za/catalog/index.php

TANDAAN! Una panghinang ang dalawang jumper na matatagpuan sa ilalim ng ATMEGA328p IC

Ang order ay ang sumusunod:

  • Mga resistor at diode
  • I-reset ang pindutan
  • IC Sockets
  • Tagapangasiwa ng boltahe
  • Mga pin ng header
  • Maliit na capacitor
  • Mga LED
  • May hawak ng piyus
  • Mga bloke ng terminal
  • Relay
  • Mga capacitor ng electrolytic

Bago ipasok ang mga IC's, ikonekta ang yunit sa 12V, at subukan ang lahat ng mga boltahe na wasto.

Sa wakas, gamit ang ilang malinaw na may kakulangan, takpan ang gilid ng tanso ng PC Board upang maprotektahan ito mula sa mga elemento.

Kapag natuyo ang may kakulangan, ipasok ang mga IC, ngunit iwanan ang module ng GSM hanggang sa ma-program ang AtMega.

Hakbang 13: Programming ang AtMega328p

Programming ang AtMega328p
Programming ang AtMega328p
Programming ang AtMega328p
Programming ang AtMega328p
Programming ang AtMega328p
Programming ang AtMega328p

# # Firmware Mag-upgrade sa Bersyon 3.02 # #

Pinagana ang SMS na maipadala sa MASTER USER kapag naibalik ang kapangyarihan sa aparato

Gumagamit ako ng isang Arduino Uno na may isang kalasag sa programa upang mai-program ang yunit. Para sa karagdagang impormasyon sa kung paano gamitin ang isang Arduino Uno bilang isang programmer, sumangguni sa Instructable na ito:

Arduino UNO Bilang AtMega328P Programmer

Ang module ng GSM ay kailangang alisin mula sa PC Board upang makakuha ng pag-access sa header ng programa. Mag-ingat na hindi mapinsala ang wire ng antena kapag tinatanggal ang module ng GSM.

Ikonekta ang cable ng programa sa pagitan ng programmer at ng yunit gamit ang program header sa PC Board., At i-upload ang sketch sa unit.

Ang panlabas na 12V na supply ay hindi kinakailangan upang mai-program ang yunit. Ang PC Board ay papatakbo mula sa Arduino sa pamamagitan ng programming cable.

Buksan ang nakalakip na file sa Arduino IDE, at i-program ito sa yunit.

Pagkatapos ng programa, alisin ang programming cable, at ipasok ang module ng GSM.

Ang yunit ay handa na para magamit.

Hakbang 14: Pagkonekta sa Yunit

Pagkonekta sa Yunit
Pagkonekta sa Yunit
Pagkonekta sa Yunit
Pagkonekta sa Yunit
Pagkonekta sa Yunit
Pagkonekta sa Yunit

Ang lahat ng mga koneksyon sa yunit ay ginawa sa pamamagitan ng mga screw terminal.

Pagpapatakbo ng Unit

Tiyaking nakapasok ka ng isang nakarehistrong SIM card sa module ng GSM, at na ang SIM card ay maaaring magpadala at makatanggap ng mga mensahe sa SMS.

Ikonekta ang isang 12V DC power supply sa 12V IN at alinman sa mga 0V terminal. Kapag napagana na, ang pulang LED sa PC Board ay magbubukas. Sa halos isang minuto, ang module ng GSM ay dapat na konektado sa network ng cellphone. Ang pulang LED ay papatayin, at isang pulang LED sa module ng GSM ay mabilis na mag-flash.

Kapag naabot na ang yugtong ito, handa nang mai-configure ang yunit.

Mga Koneksyon sa Input

Gumagana ang mga digital input sa 12V. Upang buksan ang isang input, kailangang ilapat ang 12V sa input. Ang pag-alis ng 12V ay magpapapatay ng input.

Mga Koneksyon sa Output

Ang bawat output ay binubuo ng isang contact na nagbago. Wire up ang bawat contact kung kinakailangan.

Hakbang 15: Paunang Pag-set up

Paunang Pag-set up
Paunang Pag-set up

Ang paunang pag-set up ng yunit ay dapat na natupad upang matiyak na ang lahat ng mga parameter ay nakatakda sa mga default ng pabrika, at ang SIM card na naka-configure upang tanggapin ang impormasyon ng gumagamit sa tamang format.

Tulad ng lahat ng mga utos batay sa SMS, kakailanganin mo ng isa pang telepono upang maisagawa ang pag-set up.

Para sa paunang pag-set up, kailangan mong nasa unit.

Itakda ang numero ng telepono ng MASTER USER

Dahil ang MASTER USER lamang ang maaaring mag-configure ng unit, ang hakbang na ito ay dapat na isagawa muna.

  • Dapat na pinalakas ang yunit.
  • Pindutin at bitawan ang pindutang I-reset, at hintaying patayin ang pulang LED sa PC Board.
  • Ang NET LED sa module ng GSM ay mabilis na mag-flash.
  • Handa na ang unit na tanggapin ang paunang mga utos ng pag-setup. Dapat itong isagawa sa loob ng 10 minuto.
  • Magpadala ng mensahe sa SMS na naglalaman ng MASTER, paglalarawan sa unit number ng telepono.
  • Kung natanggap, ang berdeng LED sa PC Board ay dalawang beses mag-flash.
  • Ang MASTER USER ay na-program na.

Ibalik ang yunit sa Mga Default ng Pabrika

Matapos ma-program ang MASTER USER, ang mga setting ng yunit ay dapat itakda sa mga default ng pabrika.

  • Magpadala ng isang mensahe sa SMS na may MALIWAL lamang sa numero ng telepono ng yunit.
  • Kung natanggap, ang berde at pula na LED sa PC Board ay magkaka-flash nang kahalili isang beses sa isang segundo. Ang yunit ay naibalik sa mga setting ng default ng pabrika.
  • Ang lahat ng mga setting ay naibalik sa mga default ng pabrika.
  • Pindutin at bitawan ang pindutang I-reset upang i-reboot ang yunit.

Pag-format ng SIM Card

Ang huling hakbang ay burahin ang lahat ng impormasyong nakaimbak sa SIM card, at i-configure ito para magamit sa yunit na ito.

  • Pindutin at pakawalan ang pindutang I-reset, at hintaying patayin ang pulang LED sa PC Board.
  • Ang NET LED sa module ng GSM ay mabilis na mag-flash.
  • Handa na ang unit na tanggapin ang paunang mga utos ng pag-setup. Dapat itong isagawa sa loob ng 10 minuto.
  • Magpadala ng mensahe sa SMS na may ERASESIM lamang sa numero ng telepono ng unit.
  • Kung natanggap, ang berdeng LED sa PC Board ay mag-flash ng mga oras ng puno.

Ang yunit ay na-configure na ngayon, at handa nang gamitin.

Hakbang 16: Mga Utos ng SMS

Mga Utos ng SMS
Mga Utos ng SMS

Mayroong tatlong magkakaibang uri ng mga utos na ginamit ng yunit. Lahat ng mga utos ay ipinapadala sa pamamagitan ng SMS, at lahat ay nasa sumusunod na format:

Utos,,,,,

  • Lahat ng mga utos, maliban sa mga NORMAL NA USER na utos ay sensitibo sa kaso.
  • Ang mga parameter ay hindi sensitibo sa kaso.

Mga Paunang Utos ng Pag-setup

MASTER, pangalan

Ang numero ng telepono ng nagpadala ng SMS ay ginagamit bilang MASTER USER na numero ng telepono. isang Paglalarawan para sa yunit ay maaaring maidagdag dito.

ALISIN LAHAT

I-reset ang yunit sa mga default ng pabrika

MALINAWAN

Burahin ang lahat ng data mula sa SIM card

I-reset

I-reboot ang yunit

MASTER USER Nag-uutos para sa pag-configure ng unit

OUTMODE, c, m, t TANDAAN! ! ! HINDI PA IPINAPATUPAD

Itakda ang mga tukoy na channel na magkaroon ng PULSED, TIMED o LATCHING output. Ang tagal ng oras sa ilang minuto para sa TIMED output

PULSE, cccc

Itakda ang mga tukoy na channel sa PULSED output. Kung hindi nakatakda, ang mga channel ay maitatakda bilang mga LATCHING output.

PULSETIME, tSets ang pulsed output tagal ng ilang segundo (0.. 10s)

INPUTON, cccc

Magtakda ng mga channel na dapat magpalitaw, at magpadala ng isang mensahe ng SMS kapag nagbago ang estado mula OFF hanggang ON

INPUTOFF, cccc

Magtakda ng mga channel na dapat magpalitaw, at magpadala ng isang mensahe ng SMS kapag nagbago ang estado mula ON hanggang sa OFF

INTIME, c, t

Itinatakda ang oras ng pagkaantala ng pag-input para sa pagtuklas ng mga pagbabago sa katayuan sa segundo

INTEXT, ch, pangalan, on, off

Itakda ang pangalan ng bawat input channel, sa teksto at off na teksto

OUTTEXT, ch, pangalan, on, off

Itakda ang pangalan ng bawat output channel, sa teksto at off na teksto

Magdagdag, lokasyon, numero, Calloutput, SMSoutput, input

Idagdag ang gumagamit sa SIM card sa memorya ng 'lokasyon', na may mga output at input channel na nakatalaga sa gumagamit

Del, lokasyon

Tanggalin ang gumagamit mula sa 'lokasyon' ng memorya ng SIM card

Pangalan ng Channel

Ipapalabas ba ang pulso na may pangalang ChannelName

ChannelName, onText, o ChannelName, offTxt

I-o-off / i-off ang output na may pangalan ng ChannelName, at onTxt / offTxt

Mga Karaniwang Utos ng Gumagamit para sa pagkontrol sa yunit

???? Humiling ng pag-update ng katayuan ng I / O. Ang status SMS ay ipapadala sa nagmula.

Pangalan ng Channel

Ipapalabas ba ang pulso na may pangalang ChannelName

ChannelName, saTeksto

I-o-on ang output na may pangalan ng ChannelName, at teksto ng katayuan saTeksto

Ang ChannelName, offText Ay papatayin ang output na may pangalan ng ChannelName, at i-off ang teksto ng status naTeksto

Para sa isang karagdagang detalye ng paglalarawan ng mga utos, mangyaring mag-refer sa nakalakip na PDF na dokumento.

Inirerekumendang: