Ana Sayfa STM32F429 Discovery STM32F429 Discovery ile Restaurant Otomasyonu

STM32F429 Discovery ile Restaurant Otomasyonu

9 min read
3
0
2,205

Merhaba arkadaşlar.
Bu yazımda size sim900 modülü ile GPRS üzerinde nasıl veri aktarılır ve serverlara nasıl baglanılır konuları hakkında bilgi vereceğim. Sim900 simcom firmasının ürettiği bir sim kard okuma modülüdür. cep telefonlarımzda da aslında bunun benzerleri modüller bulunur. modülü temin ederken dikkat edilecek husus, nasıl yurt dışından aldığımız telefonların imei numaraları kayıt edilmediği için belli bir süre sonra kapanıyorsa bu modüllerinde imei numaralarının kayıtlı olması gerekir. Bazı yerli firmalar kayıtlı gsm modül satıyorlar. Ama çinden veya başka ülkelerden siparişle getirttiğimiz modüller şebekeye bağlandıktan sonra tesbit ediliyor ve 60 gün sonra kapatılıyor. Alırken dikkat etmek lazım. Modül üzerinde sim900 varsa hangi board olursa olsun komutlar değişmez.
Sim900 AT komut sistemiyle çalışır.Komutları usart üzerinden göndereceğiz.
im120417009_9_2
Biz icomsat ın boardını kullandık. Modülün varsayılan baund ratesi 9600.

Modülü aldığınızda test etmek isterseniz burada güzel bir test uygulaması var. Sim900 ile ilgili genel bilgi verdikten sonra gelelim şebeke üzerinden veri göndermeye.Veri gönderebilmemiz için önce TCP İP olayını bilmemiz gerekiyor.
TCP(Transmission Control Protocol) hedef ip ye verilerin paketlenerek gönderilmesini ve karşı taraftan ayrıştırılarak alınmasını sağlar. STM bordumuza bağlı sim900 üzerinden pc mize veri gönderebilmemiz için pc mizin server olması lazım. serverimize dışarıdan başka client lerin ulaşa bilmesi için ip mize tahsis edilmiş port olması gerekir. cmd ye “ipconfig” yazarak ip nizi öğrene bilirsiniz. Port açmak için ise ,modem arayüzüne girip nat ayarları kısmında kendi ip nize port atayabilirsiniz. SocketTest programıyla pc nizi server yapıp kolayca test edebilirsiniz.Bunun için programın server bölümünde ip yerine kendi ıp nizi ve port yerine modemden atadığınız portu yazmanız yeterlidir.
Biraz da client kısmından yani mcu kısmından bahsedelim.AT komutlarını Sim900 e nasıl göndereceğiz? MCU olarak STM32F429 DİSCO bordunu kullandık. Bordun usart1 modülünün Tx pini PA9 olduğu için PA9 pinini icomsatın Rx pinine bağlıyoruz.
SIM900-GSM-GPRS-Development-board-ICOMSAT-w-Transport-Antenna-for-Arduino
ilk olarak komutları char türünde sabit olarak tanımlıyoruz.

  const unsigned char At_test[] = " AT\r\n";
  const unsigned char Network_control[] = " AT+CREG?\r\n";
  const unsigned char PDP_ENABLE[] = " AT+CGACT?\r\n";
  const unsigned char Aga_baglanma[] = " AT+CMEE=1\r\n";
  const unsigned char TCPBaglantisi[] = " AT+CGATT=1\r\n";
  const unsigned char GPRSBaglantisi[] = " AT+CSTT=\"internet\"\r\n";
  const unsigned char BaglantiyiGetir[] = " AT+CIICR\r\n";
  const unsigned char YerelIP_ata[] = " AT+CIFSR\r\n";
  const unsigned char BaglantiAdresi[] = " at+cipstart=\"TCP\",\"85.104.162.208\",\"10\"\r\n";
  const unsigned char SendGPRS_Data[] = " AT+CIPSEND\r\n";
  const unsigned char Data[] = "Roboturka.com";

burada yaptığımız işlem sırayla şebeke kontrolü, ağ kontrolü, gprs i açma, uygun apn ile baglantı kurma diye gidiyor. Dikkat etmemiz gereken at+cipstart komutu ile gösterdiğimiz bağlanmak istedigimiz server ip sinin her internete bağlandığımızda değişmesidir.(server pc miz olduğu için pc mizin) güncel ip nize buradan bakabilirsiniz.
Bu tanımlanan degişkenleri usart tan gönderebilmemiz için bir fonksiyon oluşturmamız gerekiyor.

void UARTSend(const unsigned char *pucBuffer, unsigned long ulCount)
{
      while(ulCount--)
    {
        USART_SendData(USART1, *pucBuffer++);// Last Version USART_SendData(USART1,(uint16_t) *pucBuffer++);
        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
        {
        }
    }
}

Artık usart üzerinden gönderebiliriz.

    UARTSend(At_test,sizeof(At_test)); for (i=0;i<500000;i++);
    UARTSend(Network_control,sizeof(Network_control)); for (i=0;i<3000000;i++);
    UARTSend(PDP_ENABLE,sizeof(PDP_ENABLE)); for (i=0;i<3000000;i++);
    UARTSend(Aga_baglanma,sizeof(Aga_baglanma));for (i=0;i<3000000;i++);
    UARTSend(TCPBaglantisi,sizeof(TCPBaglantisi));for (i=0;i<3000000;i++);
    UARTSend(GPRSBaglantisi,sizeof(GPRSBaglantisi));for (i=0;i<3000000;i++);
    UARTSend(BaglantiyiGetir,sizeof(BaglantiyiGetir));for (i=0;i<30000000;i++);
    UARTSend(YerelIP_ata,sizeof(YerelIP_ata));for (i=0;i<3000000;i++);
    UARTSend(BaglantiAdresi,sizeof(BaglantiAdresi));for (i=0;i<30000000;i++);
    UARTSend(SendGPRS_Data,sizeof(SendGPRS_Data));for (i=0;i<3000000;i++);
    UARTSend(Data,sizeof(Data));for (i=0;i<10000;i++);
    USART_SendData(USART1,(uint16_t)0x1a);

En sonda gönderdigimiz 0x1a CTRL+Z dir. gönderecegimiz datanın sonunu gösterir. Gönderme işlemini başlatır.
bir test uygulaması:


gprs ile yapılmış b bir Restaurant sipariş otomasyonu:

 

Proje dosyalara buradan ulaşabilirsiniz.
Soket test programı

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Konuk Yazar
Daha Fazla Göster -  STM32F429 Discovery

3 Yorumlar

  1. ŞAKİR

    18 Aralık 2015 at 07:11

    merhaba, bahse konu devre herhangi bir şeyi kontrol etmek için UNO R3 ve ve GPRS modül ile yapılır mı?

    teşekkürler

    Reply

  2. Abdullah

    20 Aralık 2015 at 09:29

    Tabiki yapila bilir. Usart uzerinden AT komutlarini gondererek her turlu mcu da yapabilirsin.

    Reply

  3. emre

    2 Ocak 2016 at 15:40

    merhaba, sim900 ün imei kaydını nereden, nasıl yaptırabiliriz?

    Reply

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Egesim’de Yaşadığım Kötü Olaylar

Merhaba arkadaşlar , Bu yazıda Egesim adlı bir firmanın GOSB içerisinde bulunan fabrikasın…