eScooter IOT ve yazılım geliştirme konusunun 2. Fazına hoşgeldiniz..
İlk fazda paylaştığım ve sistemin kavramsal dizaynını gösteren resmi tekrar daha net anlamanız için paylaşıyorum..
İlk fazda Raspberry pi Zero W ile Bluetooth BLE üzerinden Xiaomi m365 in tüm kontroller larına ulaşıp istediğimiz tüm bilgileri alabildiğimizi gördük.. O yazımda belirttiğim gibi 1. Ve 2. Faz aslında tek bir çözüm üretmek için yapıldı.. 2. Fazda WIFI yerine MQTT broker (server) a GSM GPRS ile bağlanma çözümünü yaptım.. Bunun için bir GSM modulune ihtiyacım vardı ve bu GSM/GPRS/GNSS i 2G olarak destekleyecekti.. Bu fazda da MQTT yi yazılım çözümü ile ilerleyeceğimizi anlatmıştım..
GSM modulu olarak bu fazda SIM808 seçtim… (IMEI si kayıtlı)
Raspberry Pi nin bana lazım olan pinleri Ground, Power, TX ve RX .. Buna göre Raspberry Pi de de TX i SIM808 in RX ine ve RX i de yine SIM808 in TX ine ve ground ile power i da doğru yere bağladım resimde olduğu gibi.. elimdeki sim kart nano olduğundan ve SIM808 de Standart SIM kart istediğinden gidip bir GSM bayisinden kesilmiş çeviriciler aldım ve kolayca kartımı standarda çevirdim ve SIM808 in arkasındaki yuvaya yerleştirdim..
Yukarıdaki resimlerde soldaki SIM808 ve sağdaki küçük olan ise Raspberry pi Zero W
Kullanım olarak kartın üzerinde bir küçük buton var ve buna 2 saniye basıp kaldırmanız gerekir ki çalışmaya başlasın. GPS ve Bluetooth antenleri arasında 3 LED var.. Bunlar NET, PPS ve STA dir.. Normalde bende NET ve STA yandı PPS hiç yanmadı.. Ancak bu led tamamen GPS/GNSS i AT komutlarıyla power on yapmadığımız içindir.. Bu aşamada GPS/GNSS ile ilgili işlem yapmayacağım..NET ışığı işleme göre ya flash yaparak yandı veya 3 saniye arayla yanıp söndü… Kullanımında biraz farklı anlatmışlar ama ben işin sonucuna bakarım..
İkisini özel bağlantı ile bağlayıp bu hale getirebilirsiniz.
Öncelikle bir test yapmak ve SMS göndermek istedim bunun icin SIM808 in AT komutlarını kullanmak istedim. Bunun için raspberry pi ye minicom yazılımını yükledim ve uygun parametrelerle :
sudo minicom –D /dev/ttyS00 –b 9600 –o
ile bağlandım ve :
AT+CMGF=1
AT+CMGS=”+90533xxxxxxx”
Test mesaj selcuk
Seklinde mesajımı da yolladım ve sorunsuz başarili oldum.
Hatta bu kart ve çip MQTT yi native olarak desteklemese dahi yine AT komutlarıyla ve hakikaten zor olan uygun veriyi uygun şekilde HEX olarak hazırlayarak da gönderip okuyabilirsiniz MQTT broker ı.. Dedim ya gerçekten zor oluyor ki ben denedim.. Ancak sonuçta minicom dan girip yapıyorsunuz ve sonra ya ben bunu kullanayım derseniz o zaman yine en iyisi c++ veya python ile minicom yerine siz direkt serial0 a bağlanıp AT komutları gönderebilir ve geri dönen cevap değerleri okuyabilirsiniz..
Şimdi esas olayımız olan internete bu kartı ve GPRS i kullanarak çıkmak.. Bunun için en anahtar nokta şu.. Biz o arada ya notebook umuza USB den bağlıyız veya direkt wifi dan ev veya işyeri network üne bağlıyız..Yani raspberry pi mizden bahsediyorum.. Orada SIM808 e ise UART dan yani ttyS0 dan yani serial0 dan bağlanacağız.. ve oradan güya internete çıkacağız.. Ne yapsanız olmaz.. Route a bakarsanız gateway iniz ev veya işyeri gateway i ve ya eth0 dır ya wlan0 veya wlan1 dir.. ifconfig yazın bakın.. sonra route -n yazın izlediği route a ve metric lere bakın…. Hatta sudo traceroute www.turkiye.gov.tr yazın rota da nereden çıktığını görürsünüz internete.. Demek ki biz de route mu tanımlayacağız acaba ?
Evet ama tanımlasak da IP numarası ile bu seri bağlantı üzerinden gitmez.. NE yapacağız?
PPP protokolu kullanmamız ve noktadan noktaya seri üzerinden bağlanmamız lazım. Bir nokta biziz diğeri ise SIM808..
PPP kuruyoruz… raspberry de nasıl kurulur araştırın.. Sonra bunu istediğimiz an ON veya Off yapabildiğimizi göreceksiniz.. Yaptık ama yetmeyecek.. Hala internete çıkarken bu yolu izlemeyeceğini göreceksiniz.. O halde PPP yi ON yapıp açtıktan sonra cat komutu ile syslog u okuyun.. içinde PPP ile bağlandığı yerin uç nokta IP si olur.. Tabii bir de SIM808 e verdiği 10.. ile başlayan bir IP de var..Bende bu gateway uç noktası 192.168.254.254 idi..
sudo /sbin/route add -net 0.0.0.0 gw 192.168.254.254 ppp0
ile bunu ekledim.. Veeee diğer Fiber internetimin kablosunu cihazdan çıkardım ki bakacağım internete çıkabiliyormu diye.. Evet çıktı.!
Ve sonra yurt dışında kendi Server larımdan birine kurduğum MOSQUITTO MQTT server ya da Broker ıma :
mosquitto_sub -h 213.XXX.XXX.XX -t test
girerek test isimli topic e üye oldum yani orayı dinle diyorum..
Sonra raspberry den bir session daha putty ile açıp 2. Kullanıcı gibi login oldum ve bu defa
mosquitto_pub -h 213.XXX.XXX.XX -t test -m “Merhaba” diye yazdım ve diğer açık ekrandan anında mesajı yakalayıp gösterdi..
İşte aynı şekilde eScooter IOT cihazı MQTT broker veya server ında ki bir topic yani konuya üye oluyor ve bu konuya gelen tüm mesjları da görüyor olay bu.. Orada her eScooter kendi ID sini bildiğinden kendi ID sini görür ve orada bana bilgi ver şunları gönder der ise o scooter da gönderir veya kilitle denirse emri anında uygular.. Diğer scooter lar da bu mesajı görür ancak kendilerine gelmediğinden bir işlem yapmaz..
Bu gibi kuralları ve veri protokol kural ve konvansiyonlarını biz yazılım mühendisleri kolayca koyabiliriz..
Şu ana kadar Raspberry Pi Zero W + GPS anten + SIM808 kartını kullanarak eScooter IOT unun yapabileceği her işlemi yapabildiğimizi gördük.. Arzu eden bu kartları özel kutu yaptırarak IP65 veya 67 standardında dayanıklı hale getirip cihaza takabilir.. Bir eksiğimiz kilit var ki onu da Almanya dan yakınım getirdi ancak elime ulaşmadığından test ve entegrasyon testlerini yapmadım henüz..
Burada yapılacak iş artık tamamen yazılıma odaklanmak.. Bu parçaları birleştirerek çözümün tamamına ulaşmak..
- MQTT Broker / Server kurulmalı..
- Raspberry Pi de python veya C veya C++ ile bluetooth BLE üzerinden escooter beynini okuyan yazılımla MQTT yi okuyan ve oraya veri de gönderen yazılımı komple yazmak.
- Ana merkezde bir SQL Server ki MYSQL olabilir kurmak ve MQTT den gelen verileri uygun şekilde işlemesini sağlayacak tablo vb yapmak
- Ana yönetim yazılımı kurarak MQTT ye bağlanıp veri gönderme alma ve veritabanına işleme ile diğer her türlü yönetimi yapacak kodların yazılması..
- Mobil yazılım için veritabanı ile haberleşecek ve/veya MQTT ile direkt konuşacak bir API ve direkt bluetooth BLE üzerinden escooter ile konuşacak yazılımı yapmak.
Belki bu yazı sonrası sistemin tüm bileşenleri ile birlikte tam bir entegrasyonunu resimli olarak ve detaylarıyla sizlerle paylaşabilirim..
Kalın sağlıcakla …
Selcuk Celik
Hocam merhabalar, scooter bloglarınızın sıkı bir takipçisiyim. Bölümün devamını yayınlamayı düşünüyor musunuz bayadır bekliyorum. Sağlıcakla kalın.
Yeni bölümler yayınlandı.. ARGE çok zor bir süreç.. Öyle sağdan soldan google dan bulup yazmıyorum.. Tamamen kendi deneyim ve kodlarım bunlar..
İyi günler hocam bir sorum olacak, ilk bölümde Neo 6m Gps Modülü yerine Sim808 kartı kullanılabilir mi?
Evet.. sim808 de gps destegi de var
Hocam sizinle nasıl iletişime geçebiliriz bu proje hakkında?
email adresim spytron@hotmail.com
Merhaba, M2M sim kart alırken dikkat edilmesi gereken bir yöntem var mı? API ve servislerin haberleşmesi için data sınırı kaç olmalı. En uygun 20MB M2M SIM kart fiyatı 7,14 TL bu proje için aylık yeterli olur mu sizce ne kadar data kullanımı yapar.
M2M kart olmasi gerekli degil..2g desteklemesi minimum gereklilik .. gprs ile veri gonderip alacaksiniz.. gprs i gps ile karistirmayin..