
NB-IoT, aynı zamanda Narrowband-IoT olarak da bilinir, düşük maliyet, düşük enerji tüketimi, geniş alan kapsama alanı ve uzun pil ömrü vaat eden yeni bir hücresel teknolojidir. Bu özellikler, “akıllı cihazlar”ın gerçeğe dönüşmesine yardımcı olur.
T-Mobile, Amerika Birleşik Devletleri’nde NB-IoT kapsama alanı sağlamıştır ve Twilio, bir NB-IoT geliştirici kiti sunan ilk şirkettir. Twilio’nun Alfa Geliştirici Kiti, Seeed Studio ile işbirliği içinde oluşturulmuş bir geliştirme kartı içerir. Geliştirme kartı, kit ile birlikte gelen Twilio Narrowband SIM kullanarak T-Mobile NB-IoT ağına erişebilir. Ağa bağlandıktan sonra, geliştiriciler birden fazla NB-IoT kiti arasında veri alışverişi yapabilirler; bu işlem için Twilio Breakout SDK kullanılmaktadır.
Bu yazı, Twilio’nun Geliştirici Kiti kullanarak T-Mobile’ın NB-IoT ağına nasıl bağlanacağınızı göstermektedir. Bağlandıktan sonra, Breakout SDK kullanarak ağa “merhaba dünya” mesajı göndereceğiz. Tamamlanmış projeyi GitHub‘da TwilioIoT altında bulabilirsiniz.
“Merhaba” demeye hazır mısınız? Hadi bağlanalım!

Narrowband’a Bağlanmak için Ön Gereksinimler
Başlamadan önce, ya yeni bir Twilio hesabı oluşturmanız ya da mevcut bir hesaba giriş yapmanız gerekecek. Yeni bir hesap için ücretsiz kaydolabilirsiniz.
Bir Twilio hesabının yanı sıra, bağlantı kurmak için gerekli olan tüm donanım ve yazılımı aşağıda bulabilirsiniz.
Donanım Gereksinimleri
- T-Mobile Narrowband için Twilio Geliştirici Kiti
- Twilio Narrowband SIM
- LTE Anteni
- Micro USB kablosu
- Lityum pil
Yazılım Gereksinimleri
Geliştirici Kitini Keşfedin
Geliştirici Kiti, T-Mobile’ın NB-IoT ağına bağlanmak için özel olarak tasarlanmış bir geliştirme kartı ile birlikte gelir. Ayrıca, NB-IoT “akıllı cihazı” geliştirmek için kullanılabilecek Seeed Studio tarafından sağlanan birkaç donanım parçası da dahildir.
Geliştirici Kiti kutusunu açın. Kit şunları içerir:
- Twilio Narrowband SIM (tam boy, mini, mikro ve nano)
- Geliştirme kartı
- LTE anteni
- GPS anteni
- Grove sensör seti
- Buton
- Ultrasonik
- Sıcaklık/Nem
- Lityum pil
- Micro-USB kablosu
- Ek kablolar

Twilio Narrowband SIM’i Ayarlayın

Geliştirici Kitinden Twilio Narrowband SIM’i çıkarın. Ardından, Narrowband SIM’inizi Twilio Konsolu’nda kaydedin ve etkinleştirin. Narrowband SIM için süreç, Twilio Programlanabilir Kablosuz SIM ile aynı prosedürü takip eder.
Parçaları Bağlamak
Twilio SIM kartından Nano SIM’i (en küçük boyut) çıkarın.

Geliştirme kartını Geliştirici Kitinden çıkarın.

Twilio Narrowband SIM’i kartın altındaki SIM yuvasına yerleştirin.

Sonra, LTE antenini karta takın.

Lityum pili takın. Lityum pilin her zaman takılı olması önerilir çünkü USB güç kaynağı, kartın maksimum seviyelerde yeterli güç sağlamaz.

Geliştirme kartını sağlanan Micro-USB kablosu ile bilgisayara bağlayın. Ağa bağlanmaya hazır hale geldiniz.
NB-IoT Kiti Yazılımını Yapılandırın
Kartı programlamaya başlamadan önce, kartın yazılımını güncellemamız gerekiyor. Bunu bir Macintosh’ta yapmak için Homebrew yüklememiz gerekecek ve dfu-util yüklemek için kullanacağız. dfu-util’in Windows ve Linux için yükleme talimatlarını buradan bulabilirsiniz.
Eğer henüz yüklemediyseniz, bir terminal açın ve Homebrew’u yüklemek için aşağıdakini yapıştırın.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)
Yükleme tamamlandığında, dfu-util paketini yükleyin. Bu paket, USB ile bağlı cihazlara yazılım indirmek ve yüklemek için kullanılır. Mümkünse dfu-util 0.9 veya daha üstü tercih edilir.
brew install dfu-util libusb
Windows kullanıcıları için gerekli olan farklı bir USB Sürücüleri bulunmaktadır.
Yazılım ortamını ayarlayın

Geliştirme kartı, mikrodenetleyiciyi programlamak için Arduino IDE‘sini kullanır. Twilio, Breakout adında NB-IoT’ye özel bir yazılım geliştirme kiti geliştirmiştir. Bu SDK, cihazların T-Mobile NB-IoT ağı üzerinden M2M Komutları göndermesine olanak tanır. Breakout SDK’sı GitHub‘da bulunabilir.

Breakout_Arduino_Library.zip‘i GitHub’dan indirin. Arduino IDE’yi açın ve .zip dosyasını Arduino IDE Kütüphanesine ekleyin.
Sketch > Kütüphane Ekle > .ZIP kütüphanesini ekle seçeneğine gidin ve Breakout_Arduino_Library.zip‘i seçin.

.zip dosyası yüklendikten sonra bir dizi kart çekirdeği yüklememiz gerekiyor. Geliştirme kartı, STM32F4 yonga setine dayanmaktadır. Kartta geliştirme yapmak için Arduino IDE’de STM32F4 çekirdeklerini indirmemiz gerekiyor.
Arduino > Tercihler’e gidin. Aşağıdaki URL’yi Ekstra Kart Yöneticisi URL’leri alanına kopyalayın:
https://raw.githubusercontent.com/Seeed-Studio/Seeed_Platform/master/package_seeeduino_boards_index.json

Tamam’a tıklayın.
STM32F4 kartları artık Arduino IDE Kart Yöneticisi‘nde mevcut olacaktır. Ardından STM32F4 kart çekirdeklerini yüklemek için Kart Yöneticisi‘ni açın.

Kart Yöneticisi‘nde “Seeed” için arama yapın. “Seeed STM32F4 Kartları” sürüm “1.2.3+” bulup seçin ve yükle butonuna tıklayın.

Arduino IDE’yi yeniden başlatın.
STM32F4 çekirdekleri yüklendiğinde, geliştirme kartı artık programlanmaya hazırdır. Ardından kartı ve kart portunu seçin.
- Araçlar > Kartlar > Wio Tracker LTE’ye tıklayın

- Araçlar > Port > {Modem Portunuzu Buraya Yazın}
- OSX: /dev/{cu|tty}.usbmodem{XXXX}
- Linux: /dev/ttyACM{X}
- Windows: COM{X}

HelloWorld.ino dosyasını yapılandırma
Arduino IDE’de Breakout SDK tarafından sağlanan Hello World örneğini açın.
- Dosya > Örnekler > Breakout Arduino Kütüphanesi > HelloWorld’e tıklayın

HelloWorld.ino dosyasında, T-Mobile NB-IoT ağına bağlanabilmemiz için birkaç değişiklik yapmamız gerekiyor. “HelloWorld.ino” dosyasında psk_key‘i bulun.

Her geliştirme kartının benzersiz bir SIM ICCID’si ve Önceden Paylaşılan Anahtarı (psk) vardır. Kullandığımız kart için psk, HelloWorld.ino şemasına kopyalanmalıdır. Bu anahtar, T-Mobile Dar Bant ağına bağlanmak için gereklidir.
- Twilio Konsolu’nda Programmable Wireless’a gidin
- SIM’lere tıklayın
- Daha önce kaydedilen Dar Bant SIM’i bulun
- Breakout SDK sekmesinin altında Kimlik Bilgilerini bulun
- Önceden Paylaşılan Anahtar (psk) yazan yerde anahtarı göstermek için göz logosuna tıklayın
- psk’yi kopyalayın
- psk’nizi yukarıdaki kodda HelloWorld.ino dosyasına yapıştırın

psk ayarlandıktan sonra setPollingInterval‘i değiştirelim. Bu, Breakout SDK’nın yeni bir Komut için ne sıklıkla sorgulama yapacağını belirler. breakout->setPollingInterval satırını bulun.

‘setPollingInterval’ aralığını 10‘dan 1‘e değiştirin. Bu, sorgulama süresini 10 dakikadan 1 dakikaya değiştirecektir.
breakout->setPollingInterval(1 * 60);
Aşağıda tam Arduino şeması bulunmaktadır. Breakout SDK hakkında daha fazla ayrıntı GitHub‘da bulunabilir.
#include <Seeed_ws2812.h> #include <BreakoutSDK.h> static const char *device_purpose = "Geliştirici Kiti"; static const char *psk_key = "YOUR_PSK"; Breakout *breakout = &Breakout::getInstance(); WS2812 strip = WS2812(1, RGB_LED_PIN); void enableLed() { pinMode(RGB_LED_PWR_PIN, OUTPUT); digitalWrite(RGB_LED_PWR_PIN, HIGH); strip.begin(); strip.brightness = 5; } void setup() { owl_log_set_level(L_INFO); LOG(L_WARN, "Arduino setup() başlatılıyor\r\n"); enableLed(); strip.WS2812SetRGB(0, 0x20, 0x20, 0x00); strip.WS2812Send(); breakout->setPurpose(device_purpose); breakout->setPSKKey(psk_key); breakout->setPollingInterval(1 * 60); // Opsiyonel, 1 dakika olarak ayarla // Modemi açma ve SDK'yı başlatma LOG(L_WARN, "Modülü açma ve kaydetme..."); breakout->powerModuleOn(); const char command[] = "BreakoutSDK test uygulamasından Merhaba Dünya"; if (breakout->sendTextCommand(command) == COMMAND_STATUS_OK) { LOG(L_INFO, "Tx-Komut [%s]\r\n", command); } else { LOG(L_INFO, "Tx-Komut HATASI"\r\n"); } // RGB-LED'i yeşil yap strip.WS2812SetRGB(0, 0x00, 0x40, 0x00); strip.WS2812Send(); LOG(L_WARN, "... açma ve kaydetme işlemi tamamlandı."\r\n"); LOG(L_WARN, "Arduino loop() başlatılıyor"\r\n"); } void your_application_example() { if (breakout->hasWaitingCommand()) { char command[141]; size_t commandLen = 0; bool isBinary = false; command_status_code_e code = breakout->receiveCommand(140, command, &commandLen, &isBinary); switch (code) { case COMMAND_STATUS_OK: LOG(L_INFO, "Rx-Komut [%.*s]\r\n", commandLen, command); break; case COMMAND_STATUS_ERROR: LOG(L_INFO, "Rx-Komut HATASI"\r\n"); break; case COMMAND_STATUS_BUFFER_TOO_SMALL: LOG(L_INFO, "Rx-Komut BUFFER_TOO_SMALL"\r\n"); break; case COMMAND_STATUS_NO_COMMAND_WAITING: LOG(L_INFO, "Rx-Komut NO_COMMAND_WAITING"\r\n"); break; default: LOG(L_INFO, "Rx-Komut HATASI %d"\r\n", code); } } } void loop() { your_application_example(); breakout->spin(); delay(50); }
Bootloader Moduna Girin
Geliştirme kartına kod yüklemek için birimin Bootloader moduna alınması gerekir.
Geliştirici Kartı’nın altındaki BOOT0 butonuna basılı tutun.

Geliştirici Kartı’nın üstündeki RST butonuna basılı tutun.

Geliştirici Kartı’nın üstündeki RST butonunu bırakın.
Bootloader modunu etkinleştirmek için BOOT0 butonunu bırakın.

Arduino IDE’de Yükle butonuna basın.

Kod geliştirme kartına yüklendikten sonra RST butonuna basın. Bu, kartı Bootloader modundan çıkaracaktır. Tamamlanmış kodu TwilioIoT GitHub‘da bulabilirsiniz.
Ağa bağlanma ve Komut gönderme
Kartı sıfırladıktan sonra NB-IoT ağ kayıt sürecini başlatın. Bu, kartı ağda kaydedecek ve cihaz için bant genişliği tahsis edecektir. Bu süreçte Ağ Bağlantı LED’i turuncu yanacaktır.

Seri Monitörü açarak kartın ağa kaydolmasını ve bağlanmasını gözlemleyin.

Geliştirme kartı NB-IoT ağına başarıyla kaydolduğunda, Ağ Bağlantı LED’i mavi yanacaktır. Bağlantı stabil olduğunda Arduino Seri Monitöründe aşağıdaki mesaj görüntülenecektir:


Kart NB-IoT ağına başarıyla bağlandığında, Breakout SDK başlatılacaktır.

Bu, Breakout SDK’nin Twilio’ya bir Komut gönderdiğinde Seri Monitör çıktısıdır.

Breakout SDK tarafından gönderilen ve alınan her Komut kaydedilir. NB-IoT ağı üzerinden gönderilen Komutlar, Twilio Konsolu’nda Programlanabilir Kablosuz altında bulunabilir.
- Twilio Konsolu’nda Programlanabilir Kablosuz’a gidin
- SIM’lere tıklayın
- Daha önce kaydedilen Dar Bant SIM’i bulun
- Komutlar sekmesine tıklayın

Breakout SDK ile Komut Alma
Breakout SDK, her dakika yeni bir Komut için sorgulama yapacaktır. cURL kullanarak, Sim’in benzersiz adını kullanarak NB-IoT kartına bir Komut gönderebilirsiniz.
curl -X POST https://wireless.twilio.com/v1/Commands \ --data-urlencode "Sim=Breakout" \ --data-urlencode "Command=this is a test" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token
Komut alındığında Arduino IDE Seri Monitörünü izleyin:

NB-IoT’nin öncülerinden biri olmanın nasıl bir his olduğunu merak ediyor musunuz?

NB-IoT Kullanarak “şeylerin” geleceği
Hem donanım hem de yazılım tarafında IoT geliştirme için özel bir zaman. Birçok süreç optimize ediliyor… ve birçok süreç hala gizemini koruyor.
Bu “şeyler” günlük hayatımızı etkiliyor – çoğu zaman bunun farkında bile olmadan. Scooter’lardan ev otomasyonuna kadar her segment artık bir bağlantı unsuru içeriyor.
NB-IoT bunu bir adım daha ileri taşıyor. Düşük maliyet, düşük enerji tüketimi, geniş alan kapsama alanı ve uzun pil ömrü, Dar Bant’ı “Akıllı Cihazlar” için daha akıllı hale getiriyor. Twilio Dar Bant ile bir IoT öncüsü olun. Hayalleri birlikte inşa edelim.
IoT, donanım veya modüler sentezleyiciler hakkında sohbet etmek isterseniz, Twitter’da veya e-posta ile istediğiniz zaman bana ulaşabilirsiniz. Bağlantı kuralım.
- E-posta: ckonopka@twilio.com
- Github: cskonopka
- Twitter: @cskonopka
