İçindekiler:

Arduino Tabanlı GSM/SMS Uzaktan Kumanda Ünitesi: 16 Adım (Resimli)
Arduino Tabanlı GSM/SMS Uzaktan Kumanda Ünitesi: 16 Adım (Resimli)

Video: Arduino Tabanlı GSM/SMS Uzaktan Kumanda Ünitesi: 16 Adım (Resimli)

Video: Arduino Tabanlı GSM/SMS Uzaktan Kumanda Ünitesi: 16 Adım (Resimli)
Video: Bilgi iletişim ve Haberleşme Teknolojileri Panelleri 2024, Kasım
Anonim
Arduino Tabanlı GSM/SMS Uzaktan Kumanda Birimi
Arduino Tabanlı GSM/SMS Uzaktan Kumanda Birimi

! ! ! FARK ETME ! !

Bulunduğum bölgede yerel cep telefonu kulesi yükseltildiği için artık bu GSM modülünü kullanamıyorum. Yeni kule artık 2G cihazlarını desteklemiyor. Bu nedenle artık bu projeye destek veremiyorum.

Meraklılar için bu kadar geniş bir GSM modülü yelpazesi mevcutken, çoğumuz bir tane satın almayı bitirdik. Yerel olarak bir SIM800L modülü satın aldım ve modülün farklı komutlarıyla oynadım.

Arduino Uno ve Arduino IDE'yi kullanarak fikirlerimi gerçeğe dönüştürebildim. TEK BÜYÜK SORUN, yalnızca 2KB SRAM'ın sınırlaması olduğu için bu kolay olmadı. İnternette ve farklı forumlarda bir çok araştırma yaptıktan sonra bu sınırlamayı aşmayı başardım.

Farklı programlama teknikleri, Arduino derleyicisinin çok daha iyi anlaşılması ve ek bellek için SIM kart ve EEPROM kullanılması bu projeyi kurtardı. Kodda yapılan bazı değişikliklerden sonra, kararlı bir prototip oluşturuldu ve bir hafta boyunca test edildi.

Sınırlı SRAM'ın bir dezavantajı, ünitenin bir ekran ve kullanıcı tuşları ile donatılamamasıydı. Bu, kodun tamamen yeniden yazılmasına neden oldu. Kullanıcı arabirimi olmadan, projeye devam etmek için geriye kalan tek seçenek, üniteyi ve kullanıcıları yapılandırmak için SMS mesajlarını kullanmaktı.

Bunun heyecan verici bir proje olduğu ortaya çıktı ve geliştirme devam ettikçe daha fazla gelecek eklendi.

Asıl amacım Arduino Uno'ya veya bu durumda ATMEGA328p'ye bağlı kalmak ve herhangi bir yüzeye montaj bileşeni kullanmamaktı. Bu, genel halkın birimi kopyalamasını ve oluşturmasını kolaylaştıracaktır.

Ünitenin özellikleri:

  • Ünitede maksimum 250 kullanıcı programlanabilir
  • Dört dijital çıkış
  • Dört dijital giriş
  • Her çıkış bir PULSE veya ON/OFF çıkışı olarak yapılandırılabilir
  • Çıkış darbe süresi 0,5.. 10 saniye arasında ayarlanabilir
  • Her giriş, KAPALI ila AÇIK değişiklikleri tetikleyecek şekilde yapılandırılabilir.
  • Her giriş, AÇIK ila KAPALI değişiklikleri tetikleyecek şekilde yapılandırılabilir
  • Her giriş gecikme süresi 0 saniye ile 1 saat arasında ayarlanabilir
  • Girişlerdeki değişiklikler için SMS mesajları 5 farklı kullanıcıya gönderilebilir.
  • Her giriş için adlar ve durum metni kullanıcı tarafından ayarlanabilir
  • Her çıktı için adlar ve durum metni kullanıcı tarafından ayarlanabilir
  • Ünite, USSD mesajlaşma yoluyla SIM kart bakiyesi mesajlarını alacak şekilde yapılandırılabilir.
  • Tüm kullanıcılar, ünitenin G/Ç durum güncellemelerini talep edebilir
  • Tüm kullanıcılar SMS mesajları aracılığıyla bireysel çıkışları kontrol edebilir
  • Tüm kullanıcılar, üniteyi arayarak bireysel çıkışları kontrol edebilir

Güvenlik özellikleri

  • Ünitenin ilk kurulumu sadece ünitedeyken yapılabilir.
  • İlk kurulum yalnızca MASTER KULLANICI tarafından gerçekleştirilebilir.
  • İlk kurulum komutları on dakika sonra otomatik olarak devre dışı bırakılır.
  • Sadece bilinen kullanıcılardan gelen aramalar ve SMS mesajları üniteyi kontrol edebilir
  • Kullanıcılar sadece MASTER USER tarafından kendilerine atanan çıkışları çalıştırabilirler.

Diğer özellikler

  • Bu birime yapılan aramalar ücretsizdir, çünkü arama hiçbir zaman yanıtlanmaz.
  • Ünite arandığında, arama yalnızca 2 saniye sonra kesilir. Bu, arayan kişiye, birimin aramaya yanıt verdiğinin teyididir.
  • SIM kart servis sağlayıcı USSD mesajlarını destekliyorsa, MASTER KULLANICI tarafından bakiye sorgulaması yapılabilir. Bakiyeyi içeren USSD mesajı daha sonra MASTER KULLANICI'ya iletilecektir.

Adım 1: Güç Kaynağı

Güç kaynağı
Güç kaynağı

Ünitenin standart güvenlik sistemlerine (alarm sistemleri, elektrikli garaj kapıları, elektrikli kapı motorları) bağlanabilmesini sağlamak için ünite, normalde bu tür sistemlerde bulunan 12V DC'den güç alacaktır.

Güç, 12V IN ve 0V terminallerine uygulanır ve 1A sigorta ile korunur. Ek 12V OUT terminalleri mevcuttur ve ayrıca sigorta ile korunmaktadır.

Diyot D1, üniteyi 12V hatlarındaki ters polarite bağlantılarına karşı korur.

Kapasitörler C1 ve C2, 12V besleme hatlarında bulunan herhangi bir gürültüyü filtreler. 12V besleme ünitenin rölelerine güç sağlamak için kullanılır.

5V besleme, bir LM7805L voltaj regülatöründen oluşur ve SIM800L GSM modülü ile mikro işlemci için gereken kararlı bir +5V çıkışı verir. C3 ve C4 kapasitörleri, +5V besleme hattında bulunabilecek herhangi bir gürültüyü filtreler. SIM800L GSM modülü iletim sırasında oldukça fazla güç kullandığından, göreceli olarak büyük boyutlu elektrolitik kapasitörler kullanıldı.

Voltaj regülatöründe ısı emiciye gerek yoktur.

Adım 2: Dijital Girişler

Dijital Girişler
Dijital Girişler
Dijital Girişler
Dijital Girişler

Dijital giriş sinyallerinin tümü 12V'dir ve 5V mikro denetleyici ile arayüzlenmelidir. Bunun için 12V sinyallerini 5V sisteminden izole etmek için opto kuplörler kullanılır.

1K giriş direnci, opto kuplörün giriş akımını yaklaşık 10mA ile sınırlar.

Alan sınırlamaları nedeniyle, PC Kartında 5V pull-up dirençleri için yer yoktu. Mikro denetleyici, giriş pinlerinin zayıf pull-up'larını etkinleştirmek için ayarlanmıştır.

Opto kuplörün girişinde (LOW) sinyal olmadığında, opto kuplör LED'inden akım akmaz. Böylece opto kuplör transistörü kapatılır. Mikro denetleyicinin zayıf çekişi, toplayıcıyı neredeyse 5V'a çekecek ve mikro denetleyici tarafından YÜKSEK bir mantık olarak görülecektir.

Opto kuplörün girişine 12V uygulandığında (YÜKSEK), opto kuplör LED'inden yaklaşık 10mA akacaktır. Böylece opto kuplör transistörü açılacaktır. Bu, toplayıcıyı neredeyse 0V'a çekecek ve mikro denetleyici tarafından DÜŞÜK bir mantık olarak görülecektir.

Mikro denetleyici tarafından görülen girişin, 12V girişe kıyasla ters çevrildiğini unutmayın.

Giriş pinini okumak için normal kod aşağıdaki gibi görünür:

boole Girişi = digitalRead(inputpin);

Tersine çevrilmiş sinyali düzeltmek için aşağıdaki kodu kullanın:

boole Girişi = !digitalRead(inputpin); // NOT: ! okumanın önünde

Şimdi, mikro denetleyici tarafından görülen giriş, 12V girişindeki girişe karşılık gelecektir.

Son giriş devresi 4 dijital girişten oluşur. Her giriş, PC Kartı üzerindeki terminallere bağlanır.

Adım 3: Dijital Çıkışlar

Dijital Çıkışlar
Dijital Çıkışlar
Dijital Çıkışlar
Dijital Çıkışlar
Dijital Çıkışlar
Dijital Çıkışlar

Normalde, yalnızca minimum sayıda röle çalıştıran bir devre ile en iyi yol, gösterildiği gibi bir transistör sürücü devresi kullanmaktır. Basit, düşük maliyetli ve etkilidir.

Dirençler, toprağa çekme ve transistör temel akım sınırlaması sağlar. Transistör, bir röleyi sürmek için mevcut akımı artırmak için kullanılır. Mikro denetleyici pininden çekilen sadece 1mA ile transistör 100mA'lık bir yükü değiştirebilir. Çoğu röle türü için fazlasıyla yeterli. Diyot, röle anahtarlaması sırasında devreyi yüksek voltaj yükselmelerinden koruyan bir geri dönüş diyotudur. Bu devreyi kullanmanın ek avantajı, röle çalışma voltajının mikro denetleyicinin voltajından farklı olabilmesidir. Böylece 5V röle kullanmak yerine 48V'a kadar herhangi bir DC voltajı kullanılabilir.

ULN2803 ile tanışın

Bir proje ne kadar çok röle gerektirirse, bileşen sayısı o kadar yüksek olur. Bu, PCB tasarımını daha zor hale getirecek ve değerli PCB alanını kullanabilir. Ancak ULN2803 gibi bir transistör dizisi kullanmak PCB boyutunu küçük tutmaya kesinlikle yardımcı olacaktır. ULN2803, bir mikro denetleyiciden 3.3V ve 5V girişler için idealdir ve 48V DC'ye kadar röleleri çalıştırabilir. Bu ULN2803, her biri bir röleyi değiştirmek için gerekli tüm bileşenlerle donatılmış 8 ayrı transistör devresine sahiptir.

Son çıkış devresi, 4 adet 12V DC çıkış rölesini çalıştıran bir ULN3803'ten oluşur. Rölenin her kontağı PC Kartı terminallerinde mevcuttur.

Adım 4: Mikro Denetleyici Osilatörü

Mikro Denetleyici Osilatörü
Mikro Denetleyici Osilatörü
Mikro Denetleyici Osilatörü
Mikro Denetleyici Osilatörü
Mikro Denetleyici Osilatörü
Mikro Denetleyici Osilatörü

Osilatör Devresi

Mikro denetleyicinin doğru çalışması için bir osilatöre ihtiyacı vardır. Arduino Uno tasarımına uymak için devre standart 16MHz osilatörü kullanacak. İki seçenek mevcuttur:

Kristal

Bu yöntem, iki yükleme kapasitörüne bağlı bir kristal kullanır. Bu en yaygın seçenektir.

rezonatör

Bir rezonatör, temelde bir kristal ve tek bir 3 pimli pakette iki yükleme kapasitörüdür. Bu, bileşenlerin miktarını azaltır ve PC Kartındaki kullanılabilir alanı artırır.

Bileşen sayısını olabildiğince düşük tutmak için 16MHz rezonatör kullanmayı seçtim.

Adım 5: Gösterge LED'leri

Gösterge LED'leri
Gösterge LED'leri
Gösterge LED'leri
Gösterge LED'leri

Bazı LED'ler olmadan herhangi bir devre ne olacak? 3mm LED'ler için PC Kartında provizyon yapıldı.

LED'den geçen akımı 5mA'dan daha düşük bir değerde sınırlamak için 1K dirençler kullanılır, 3mm yüksek parlak LED'ler kullanıldığında parlaklık mükemmeldir.

Durum LED'lerinin kolay yorumlanması için iki renk kullanılmıştır. İki LED'i yanıp sönen göstergelerle birleştirerek, sadece iki LED'den oldukça fazla bilgi elde edilebilir.

Kırmızı LED

Kırmızı LED, arıza koşullarını, uzun gecikmeleri, herhangi bir yanlış komutu belirtmek için kullanılır.

Yeşil LED

Yeşil LED, sağlıklı ve/veya doğru girişleri ve komutları belirtmek için kullanılır.

Adım 6: Mikro İşlemci Sıfırlama Devresi

Mikro İşlemci Sıfırlama Devresi
Mikro İşlemci Sıfırlama Devresi

Güvenlik nedeniyle, ünitenin bazı işlevleri, ünite açıldıktan sonraki ilk 10 dakika içinde kullanılabilir.

Bir sıfırlama düğmesi ile, üniteyi sıfırlamak için üniteye giden gücün kapatılması gerekmez.

Nasıl çalışır

10K direnç, RESET hattını 5V'a yakın tutacaktır. Butona basıldığında RESET hattı 0V'a çekilecek ve böylece mikro kontrolör resette tutulacaktır. Düğme bırakıldığında, SIFIRLAMA satırı mikro denetleyiciyi yeniden başlatarak %v'ye döner.

Adım 7: SIM800L Modülü

SIM800L Modülü
SIM800L Modülü
SIM800L Modülü
SIM800L Modülü
SIM800L Modülü
SIM800L Modülü

Ünitenin kalbi SIM800L GSM modülüdür. Bu modül, mikro denetleyicide yalnızca 3 I/O pini kullanır.

Modül, standart bir seri bağlantı noktası aracılığıyla mikro denetleyiciye arabirim sağlar.

  • Üniteye verilen tüm komutlar, standart AT komutları kullanılarak seri port üzerinden gönderilir.
  • Gelen bir arama ile veya bir SMS alındığında, bilgiler ASCII metin kullanılarak seri port üzerinden mikro denetleyiciye gönderilir.

Yerden tasarruf etmek için, GSM modülü PC Kartına 7 pinli bir başlık üzerinden bağlanır. Bu, GSM modülünün çıkarılmasını kolaylaştırır. Bu aynı zamanda kullanıcının modülün altındaki SIM kartı kolayca takmasını/çıkarmasını sağlar.

Etkin bir SIM kart gereklidir ve SIM kartın SMS mesajları gönderip alabilmesi gerekir.

SIM800L GSM modülünün kurulumu

Üniteyi açarken, GSM modülü sıfırlama pimi bir saniyeliğine aşağı çekilir. Bu, GSM modülünün ancak güç kaynağı stabilize olduktan sonra başlamasını sağlar. GSM modülünün yeniden başlatılması birkaç saniye sürer, bu nedenle modüle herhangi bir AT komutu göndermeden önce 5 saniye bekleyin.

GSM modülünün mikro denetleyici ile doğru iletişim kuracak şekilde yapılandırıldığından emin olmak için başlatma sırasında aşağıdaki AT komutları kullanılır:

NS

bir GSM modülünün mevcut olup olmadığını belirlemek için kullanılır

AT+CREG?

GSM modülü cep telefonu şebekesinde kayıtlı olana kadar bu komutu sorgulama

AT+CMGF=1

SMS mesaj modunu ASCII olarak ayarlayın

AT+CNMI=1, 2, 0, 0, 0

SMS mevcutsa, SMS detaylarını GSM modülü seri portuna gönderin

AT+CMGD=1, 4

SIM kartta saklanan tüm SMS mesajlarını silin

AT+CPBS=\"SM

GSM modülünün telefon rehberini SIM karta ayarlayın

AT+COPS=2, sonra AT+CLTS=1, sonra AT+COPS=0

GSM modül saatini cep telefonu şebeke saatine ayarlayın

Sürenin ayarlanması için 5 saniye bekleyin

AT+CUSD=1

USSD mesajlaşma işlevini etkinleştir

Adım 8: Mikro Denetleyici

Mikro Denetleyici
Mikro Denetleyici
Mikro Denetleyici
Mikro Denetleyici
Mikro Denetleyici
Mikro Denetleyici

Mikro denetleyici, Arduino Uno'da kullanılanla aynı standart bir AtMega328p'dir. Bu nedenle kod her ikisiyle de karşılaştırılabilir. Kolay yerleşik programlamaya izin vermek için, PC Kartında 6 pinli bir programlama başlığı mevcuttur.

Ünitenin farklı bölümleri mikro işlemciye bağlıdır ve aşağıdakileri içerir:

  • Dört dijital giriş
  • Dört dijital çıkış
  • osilatör
  • İki gösterge LED'i
  • Devreyi sıfırla
  • SIM800L GSM modülü

GSM modülüne gelen ve giden tüm iletişimler SoftwareSerial() işlevi kullanılarak yapılır. Bu yöntem, geliştirme aşamasında Arduino IDE için ana seri bağlantı noktasını boşaltmak için kullanıldı.

Yalnızca 2KB SRAM ve 1KB EEPROM ile, birime bağlanabilecek birkaç kullanıcıdan fazlasını depolamak için yeterli bellek yoktur. SRAM'ı boşaltmak için tüm kullanıcı bilgileri GSM modülündeki SIM kartta saklanır. Bu düzenleme ile ünite 250 farklı kullanıcıya kadar hizmet verebilir.

Ünitenin konfigürasyon verileri EEPROM'da saklanır, böylece kullanıcı verileri ve sistem verileri birbirinden ayrılır.

Hala birkaç yedek G/Ç pini mevcuttur, Ancak, SoftWareSerial() alma ve gönderme arabellekleri tarafından kullanılan büyük miktarda SRAM nedeniyle bir LCD ekran ve/veya klavye ekleme seçeneği mümkün değildi, Ünite üzerinde herhangi bir kullanıcı arayüzü olmaması nedeniyle tüm ayarlar ve kullanıcılar SMS mesajları kullanılarak programlanır.

9. Adım: SRAM Belleğini Optimize Etme

SRAM Belleğini Optimize Etme
SRAM Belleğini Optimize Etme

Geliştirme aşamasında oldukça erken, Arduino IDE, kodu derlerken düşük SRAM belleği bildirdi. Bunu aşmak için çeşitli yöntemler kullanıldı.

Seri bağlantı noktasında alınan verileri sınırlayın

GSM modülü, tüm mesajları mikro denetleyiciye seri bağlantı noktasına rapor edecektir. Bazı SMS mesajları alırken, alınan mesajın toplam uzunluğu 200 karakterden fazla olabilir. Bu, AtMega çipinde bulunan tüm SRAM'ı hızla tüketebilir ve kararlılık sorunlarına neden olur.

Bunu önlemek için GSM modülünden alınan HERHANGİ bir mesajın sadece ilk 200 karakteri kullanılacaktır. Aşağıdaki örnek, Counter değişkeninde alınan karakterleri sayarak bunun nasıl yapıldığını gösterir.

// yazılım seri bağlantı noktasından veri taraması

//------------------------------------------------------ RxString = ""; Sayaç = 0; while(SSerial.available()){ gecikme(1); // yeni verilerin ara belleğe yerleştirilmesi için zaman vermek için kısa gecikme // yeni karakter al RxChar = char(SSerial.read()); // stringe ilk 200 karakteri ekle if (Counter < 200) { RxString.concat(RxChar); Sayaç = Sayaç + 1; } }

Serial.print() kodunun azaltılması

Geliştirme sırasında kullanışlı olmasına rağmen, Arduino Seri Monitör çok fazla SRAM kullanabilir. Kod, mümkün olduğunca az Serial.print() kodu kullanılarak geliştirildi. Kodun bir bölümünün çalışması test edildi, tüm Serial.print() kodu, kodun o bölümünden kaldırıldı.

Serial.print(F(("")) kodunu kullanma

Arduino Seri Monitöründe normalde görüntülenen birçok bilgi, açıklamalar eklendiğinde daha anlamlı hale gelir. Aşağıdaki örneği alın:

Serial.println("Belirli işlemler bekleniyor");

"Belirli eylemler bekleniyor" dizesi sabittir ve değiştirilemez.

Kodun derlenmesi sırasında, derleyici FLASH belleğinde "Belirli eylemler bekleniyor" dizesini içerecektir.

Ayrıca derleyici, dizenin "Serial.print" veya "Serial.println" komutu tarafından kullanılan bir sabit olduğunu görür. Mikro önyükleme sırasında, bu sabit de SRAM belleğine yerleştirilir.

Serial.print() işlevlerinde "F" önekini kullanarak, derleyiciye bu dizenin yalnızca FLASH bellekte mevcut olduğunu söyler. Bu örnek için, dize 28 karakter içeriyor. Bu, SRAM'de serbest bırakılabilen 28 bayttır.

Serial.println(F("Belirli işlemler bekleniyor"));

Bu yöntem, SoftwareSerial.print() komutları için de geçerlidir. GSM modülü AT komutları üzerinde çalıştığından, kod çok sayıda SoftwareSerial.print("xxxx") komutu içerir. "F" önekini kullanmak, neredeyse 300 bayt SRAM'ı serbest bıraktı.

Donanım seri bağlantı noktasını kullanmayın

Kod hata ayıklamasından sonra, TÜM Serial.print() komutları kaldırılarak donanım seri bağlantı noktası devre dışı bırakıldı. Bu, birkaç ekstra bayt SRAM serbest bıraktı.

Kodda herhangi bir Serial.print() komutu kalmadığında, ek bir 128 bayt SRAM kullanıma sunuldu. Bu, donanım seri bağlantı noktasını koddan kaldırarak yapıldı. Bu, 64 baytlık iletim ve 64 baytlık alma arabelleklerini hızlandırdı.

// Serial.başlangıç(9600); // donanım seri bağlantı noktası devre dışı

Dizeler için EEPROM kullanma

Her giriş ve çıkış için üç dizenin kaydedilmesi gerekiyordu. Bunlar kanal adı, kanal açıkken dizi ve kanal kapalıyken dizidir.

Toplam 8 I/O kanalı ile

  • Her biri 10 karakter uzunluğunda kanal adlarını içeren 8 dize
  • Her biri 10 karakter uzunluğunda, kanal açıklaması içeren 8 dize
  • Her biri 10 karakter uzunluğunda, kanal Kapalı açıklamasını içeren 8 dize

Bu, 240 bayta kadar SRAM reklamı yapar. Bu dizileri SRAM'de saklamak yerine EEPROM'da depolanırlar. Bu, ek 240 bayt SRAM'ı serbest bıraktı.

Doğru uzunluklarda dize bildirme

Değişken normalde kodun başında bildirilir. Bir dize değişkeni bildirirken yapılan yaygın bir hata, dizeyi doğru sayıda karakterle bildirmememizdir.

Dize GSM_Nr = "";

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

Başlatma sırasında, mikro denetleyici bu değişkenler için SRAM'de bellek ayırmaz. Bu, daha sonra bu dizeler kullanıldığında kararsızlığa neden olabilir.

Bunu önlemek için, dizelerin yazılımda kullanacağı doğru sayıda karakterle dizeleri bildirin.

Dize GSM_Nr = "1000000000";

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

Aynı karakterlerle dizeleri nasıl bildirmediğime dikkat edin. Bu dizelerin tümünü "1234567890" diyerek bildirirseniz, derleyici üç değişkende aynı dizeyi görecek ve dizelerden biri için SRAM'de yalnızca yeterli bellek ayıracaktır.

Adım 10: Yazılım Seri Arabellek Boyutu

Yazılım Seri Arabellek Boyutu
Yazılım Seri Arabellek Boyutu

Aşağıdaki kodda, yazılımın seri bağlantı noktasından 200 karaktere kadar okunabildiğini fark edeceksiniz.

// yazılım seri bağlantı noktasından veri taraması

//------------------------------------------------------ RxString = ""; Sayaç = 0; while(SSerial.available()){ gecikme(1); // yeni verilerin ara belleğe yerleştirilmesi için zaman vermek için kısa gecikme // yeni karakter al RxChar = char(SSerial.read()); // stringe ilk 200 karakteri ekle if (Counter < 200) { RxString.concat(RxChar); Sayaç = Sayaç + 1; } }

Bu, yazılım seri bağlantı noktası için de en az 200 baytlık bir arabellek gerektirir. varsayılan olarak, yazılımın seri bağlantı noktası arabelleği yalnızca 64 bayttır. Bu arabelleği artırmak için aşağıdaki dosyayı arayın:

SoftwareSerial.h

Dosyayı bir metin düzenleyiciyle açın ve arabellek boyutunu 200 olarak değiştirin.

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

* Tanımlar ************************************************ ******************************/ #ifndef _SS_MAX_RX_BUFF #define _SS_MAX_RX_BUFF 200 // RX arabellek boyutu #endif

Adım 11: PC Kartının Yapılması

PC Kartının Yapılması
PC Kartının Yapılması

PC Kartı, Cadsoft Eagle'ın ücretsiz sürümü kullanılarak tasarlandı (adın değiştiğine inanıyorum).

  • PC Kartı tek taraflı bir tasarımdır.
  • Yüzeye montaj bileşenleri kullanılmaz.
  • SIM800L modülü de dahil olmak üzere tüm bileşenler PC kartına monte edilmiştir.
  • Harici bileşen veya bağlantı gerekmez
  • Tel köprüler, daha temiz bir görünüm için bileşenlerin altına gizlenmiştir.

PC Kartları yapmak için aşağıdaki yöntemi kullanıyorum:

  • PC Kartı görüntüsü, bir lazer yazıcı kullanılarak Press-n-Peel üzerine yazdırılır.
  • Press-n-Peel daha sonra temiz bir PC Kartı parçasının üzerine yerleştirilir ve bir miktar bantla sabitlenir.
  • PC Kartı görüntüsü daha sonra, kart bir laminatörden geçirilerek Press-n-Peel'den boş PC Kartına aktarılır. Benim için 10 geçiş en iyi sonuç verir.
  • PC Kartı oda sıcaklığına soğuduktan sonra Press-n-Peel karttan yavaşça kaldırılır.
  • PC Kartı daha sonra sıcak suda çözülmüş Amonyum Persülfat kristalleri kullanılarak dağlanır.
  • Dağlama işleminden sonra, kazınmış PC Kartı bir miktar aseton ile temizlenerek mavi Bas-Çıkar ve siyah toner çıkarılır.
  • Tahta daha sonra bir Dremel ile boyutuna göre kesilir
  • Tüm açık delik bileşenleri için delikler 1 mm'lik bir matkap ucu kullanılarak delinir.
  • Terminal vidalı konektörler, 1,2 mm'lik bir matkap ucu kullanılarak delinir.

Adım 12: PC Kartının Montajı

PC Kartının Montajı
PC Kartının Montajı
PC Kartının Montajı
PC Kartının Montajı
PC Kartının Montajı
PC Kartının Montajı
PC Kartının Montajı
PC Kartının Montajı

Montaj, önce en küçük bileşenler eklenerek ve en büyük bileşenlere kadar çalışılarak yapılır.

SIM800 modülü hariç, bu Eğitilebilir Kitapta kullanılan tüm bileşenler yerel tedarikçimden temin edilmiştir. Her zaman stokları olduğu için onlara düşünür. Lütfen Güney Afrika web sitelerine bir göz atın:

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

NOT! İlk önce ATMEGA328p IC'nin altında bulunan iki jumper'ı lehimleyin

Sipariş aşağıdaki gibidir:

  • Dirençler ve diyot
  • Yeniden başlatma tuşu
  • IC Soketleri
  • Voltaj regülatörü
  • Başlık pimleri
  • Küçük kapasitörler
  • LED'ler
  • Sigorta tutucu
  • Terminal blokları
  • Röleler
  • Elektrolitik kapasitörler

IC'leri takmadan önce üniteyi 12V'a bağlayın ve tüm voltajların doğru olduğunu test edin.

Son olarak, bir miktar şeffaf vernik kullanarak, PC Kartının bakır tarafını elementlerden korumak için kaplayın.

Cila kuruduğunda, IC'leri takın, ancak GSM modülünü AtMega programlanana kadar bırakın.

Adım 13: AtMega328p'nin Programlanması

AtMega328p'yi Programlama
AtMega328p'yi Programlama
AtMega328p'yi Programlama
AtMega328p'yi Programlama
AtMega328p'yi Programlama
AtMega328p'yi Programlama

# # Sürüm 3.02'ye Donanım Yazılımı Yükseltmesi # #

Cihaza elektrik geldiğinde MASTER KULLANICI'ya SMS gönderilmesi etkinleştirildi

Üniteyi programlamak için programlama kalkanlı bir Arduino Uno kullanıyorum. Arduino Uno'nun programcı olarak nasıl kullanılacağı hakkında daha fazla bilgi için bu Eğitilebilir Tabloya bakın:

AtMega328P Programcısı Olarak Arduino UNO

Programlama başlığına erişim sağlamak için GSM modülünün PC Kartından çıkarılması gerekir. GSM modülünü çıkarırken anten kablosuna zarar vermemeye dikkat edin.

Programlama kablosunu PC Kartı üzerindeki programlama başlığını kullanarak programlayıcı ile ünite arasına bağlayın ve çizimi üniteye yükleyin.

Üniteyi programlamak için harici 12V beslemeye gerek yoktur. PC Kartı, programlama kablosu aracılığıyla Arduino'dan güç alacaktır.

Ekli dosyayı Arduino IDE'de açın ve üniteye programlayın.

Programlamadan sonra programlama kablosunu çıkarın ve GSM modülünü takın.

Ünite artık kullanıma hazırdır.

Adım 14: Ünitenin Bağlanması

Ünitenin Bağlanması
Ünitenin Bağlanması
Ünitenin Bağlanması
Ünitenin Bağlanması
Ünitenin Bağlanması
Ünitenin Bağlanması

Üniteye tüm bağlantılar vidalı terminaller aracılığıyla yapılır.

Üniteye Güç Verme

GSM modülüne kayıtlı bir SIM kart taktığınızdan ve SIM kartın SMS mesajları gönderip alabildiğinden emin olun.

12V IN ve 0V terminallerinden herhangi birine 12V DC güç kaynağı bağlayın. Güç verildiğinde, PC Kartındaki kırmızı LED yanacaktır. Yaklaşık bir dakika içinde, GSM modülü cep telefonu şebekesine bağlanmış olmalıdır. Kırmızı LED sönecek ve GSM modülündeki kırmızı LED hızla yanıp sönecektir.

Bu aşamaya ulaşıldığında, ünite yapılandırılmaya hazırdır.

Giriş Bağlantıları

Dijital girişler 12V ile çalışır. Bir girişi açmak için girişe 12V uygulanmalıdır. 12V'nin çıkarılması girişi kapatacaktır.

Çıkış Bağlantıları

Her çıkış bir değiştirme kontağından oluşur. Her kontağı gerektiği gibi bağlayın.

Adım 15: İlk Kurulum

İlk kurulum
İlk kurulum

Ünitenin ilk kurulumu, tüm parametrelerin fabrika varsayılanlarına ayarlandığından ve SIM kartın kullanıcı bilgilerini doğru biçimde kabul edecek şekilde yapılandırıldığından emin olmak için gerçekleştirilmelidir.

Tüm komutlar SMS tabanlı olduğundan, kurulumu gerçekleştirmek için başka bir telefona ihtiyacınız olacaktır.

İlk kurulum için ünitede olmanız gerekir.

MASTER KULLANICI telefon numarasını ayarlayın

Üniteyi yalnızca MASTER KULLANICI yapılandırabileceğinden, önce bu adım gerçekleştirilmelidir.

  • Üniteye güç sağlanmalıdır.
  • Sıfırlama düğmesine basıp bırakın ve PC Kartı üzerindeki kırmızı LED'in sönmesini bekleyin.
  • GSM modülü üzerindeki NET LED'i hızla yanıp sönecektir.
  • Ünite şimdi ilk kurulum komutlarını kabul etmeye hazırdır. Bu 10 dakika içinde yapılmalıdır.
  • Ünite telefon numarasına MASTER, açıklama içeren bir SMS mesajı gönderin.
  • Alınırsa, PC Kartındaki yeşil LED iki kez yanıp söner.
  • MASTER KULLANICI şimdi programlanmıştır.

Üniteyi Fabrika Varsayılanlarına Geri Yükleyin

MASTER USER programlandıktan sonra ünitenin ayarları fabrika varsayılanlarına ayarlanmalıdır.

  • Ünite telefon numarasına sadece CLEARALL ile bir SMS mesajı gönderin.
  • Alınırsa, PC Kartındaki yeşil ve kırmızı LED dönüşümlü olarak saniyede bir kez yanıp söner. Ünite varsayılan fabrika ayarlarıyla geri yüklendi.
  • Tüm ayarlar fabrika varsayılanlarına geri yüklendi.
  • Üniteyi yeniden başlatmak için Sıfırla düğmesine basın ve bırakın.

SIM Kartı Biçimlendirme

Son adım, SIM kartta saklanan tüm bilgileri silmek ve bu ünitede kullanım için yapılandırmaktır.

  • Sıfırlama düğmesine basıp bırakın ve PC Kartı üzerindeki kırmızı LED'in sönmesini bekleyin.
  • GSM modülü üzerindeki NET LED'i hızla yanıp sönecektir.
  • Ünite şimdi ilk kurulum komutlarını kabul etmeye hazırdır. Bu 10 dakika içinde yapılmalıdır.
  • Birim telefon numarasına sadece ERASESIM ile SMS mesajı gönderin.
  • Alınırsa, PC Kartındaki yeşil LED ağaç kez yanıp söner.

Ünite şimdi yapılandırılmıştır ve kullanıma hazırdır.

Adım 16: SMS Komutları

SMS Komutları
SMS Komutları

Ünite tarafından kullanılan üç farklı komut türü vardır. Tüm komutlar SMS yoluyla gönderilir ve tümü aşağıdaki biçimdedir:

EMRETMEK,,,,,

  • NORMAL KULLANICI komutları dışındaki tüm komutlar büyük/küçük harf duyarlıdır.
  • Parametreler büyük/küçük harfe duyarlı değildir.

İlk Kurulum Komutları

MASTER, isim

SMS gönderenin telefon numarası ANA KULLANICI telefon numarası olarak kullanılır. Ünite için bir Açıklama buraya eklenebilir.

HEPSİNİ TEMİZLE

Üniteyi fabrika varsayılanlarına sıfırlayın

TEMİZLİK

SIM karttaki tüm verileri silin

SIFIRLA

Üniteyi yeniden başlatın

Birimi yapılandırmak için MASTER USER Komutları

OUTMODE, c, m, t NOT ! ! ! HENÜZ UYGULANMADI

PULSED, TIMED veya KİLİTLİ çıkışlara sahip olmak için belirli kanalları ayarlayın. t, ZAMANLI çıktılar için dakika cinsinden süredir

nabız, cccc

Belirli kanalları PULSED çıkışlara ayarlayın. Ayarlanmazsa, kanallar KİLİTLEME çıkışları olarak ayarlanacaktır.

PULSETIME, tDarbe çıkış süresini saniye cinsinden ayarlar (0.. 10s)

GİRİŞ, cccc

Tetiklenmesi gereken kanalları ayarlayın ve durum KAPALI'dan AÇIK'a değiştiğinde bir SMS mesajı gönderin

GİRİŞ KAPALI, cccc

Durum AÇIK'tan KAPALI'ya değiştiğinde tetiklenmesi ve bir SMS mesajı göndermesi gereken kanalları ayarlayın

INTIME, c, t

Durum değişikliklerini algılamak için giriş gecikme süresini saniye cinsinden ayarlar

INTEXT, ch, isim, açık, kapalı

Her bir giriş kanalının adını metin üzerinde ve metin dışında ayarlayın

OUTTEXT, ch, isim, açık, kapalı

Her çıkış kanalının adını metin üzerinde ve metin dışında ayarlayın

Ekleme, konum, numara, Calloutputs, SMSoutputs, girişler

Kullanıcıya atanmış çıkış ve giriş kanallarıyla, hafıza 'konumuna' SIM karta kullanıcı ekleyin

Del, konum

Kullanıcıyı SIM kart hafızasından 'konumdan' sil

Kanal ismi

KanalAdı adıyla çıkış darbesi yapacak

KanalAdı, onText veya KanalAdı, offText

Çıktıyı KanalAdı ve onText/offText adıyla Açık/Kapalı yapacak

Üniteyi kontrol etmek için Normal Kullanıcı Komutları

????G/Ç durum güncellemesi isteyin. Durum SMS'i gönderene gönderilecektir.

Kanal ismi

KanalAdı adıyla çıkış darbesi yapacak

KanalAdı, onText

Çıkışı, KanalAdı adı ve metin üzerindeki durum metni ile Açık hale getirecektir.

KanalAdı, kapalı Metin KanalAdı adı ve durum metni kapalı Metin ile çıktıyı Kapalı duruma getirir

Komutların daha ayrıntılı açıklaması için lütfen ekteki PDF belgesine bakın.

Önerilen: