UART Nedir ve Nasıl Çalışır?

Daha önce Seri Haberleşme Protokolleri (UART, SPI, I2C) yazımda küçük bir değinme ile bahsettiğim haberleşme protokollerine biraz daha detaylı olarak girmeye başlayacağımız serimizin ilk yazısı olan “UART Nedir (USART Nedir) ve Nasıl Çalışır?” yazısı ile karşınızdayım.

UART (Universal Asynchronous Receiver Transmitter), bilgisayar ve mikrokontroller veya mikrokontroller ve çevre birimler arasında haberleşmeyi sağlayan haberleşme protokolüdür. Asenkron olarak çalıştığı için herhangi bir “clock” ihtiyacı duymaz. USART (Universal Synchronous Asynchronous Receiver Transmitter) ise hem senkron hem de asenkron olarak çalışabilir. UART’a göre daha gelişmiş bir protokoldür. Haberleşme mantıklı aynı şekilde çalışır ancak USART aynı zamanda senkron haberleşmeleri de gerçekleştirebilir. Yeni çıkan bir mikroişlemcinin datasheet’ine baktığınız zaman bu birimleri genelde USART birimi olarak görüyoruz çünkü USART aynı zamanda UART’ı da kapsayan bir birim olarak tasarlanmıştır.

USART, 5 ve 9 bit arası data uzunluğuna sahip veriyi taşıma özelliğine sahiptir. Ancak genel olarak 8 veya 9 bitlik kullanımlar tercih edilir.

UART – USART Haberleşmesi

UART haberleşmesini gerçekleştirirken ilk olarak baudrate (veri taşıma hızı) ayarlanması gerekir. Veri taşıma hızı çok çeşitli aralıklarda olabilir ancak piyasada yaygın olarak kullanılan baudrate’ler 4800, 9600, 57600, 115200 ve mikroişlemciler için çok fazla tercih edilmese de 921600. (921600 genelde hızlı işlem gerektiren yerlerde kullanılır.) Baudrate bizim verimizin saniyede ne kadarlık byte’ını taşıyacağını belirlememize yarar. Örneğin veri taşıma hızımızı 115200 seçersek bu bizim için saniyede yaklaşık olarak 11520 byte veri iletimi sağlayacaktır.

Veri iletimi için aşağıdaki görseldeki gibi bir yapı kullanılır. Yani haberleşme işlemimiz bir başlangıç bitinden sonra data bitleri, ardından parity biti ve son olarak da bitiş biti gönderilerek sonlandırılır. Bu işlem sırasında data uzunluğu ve parity biti opsiyonel olarak değişkenlik gösterebilir.

Bu haberleşme tipini kullanabilmemiz için alıcı ve vericinin veri taşıma hızlarının (baudrate) aynı olması gerekiyor (veya birbirine çok yakın değerler olması gerekiyor.) Bunun sebebi ise aktarım sırasında oluşabilecek hataları minimuma indirmek. Hata payları tolere edilebilir seviyede olması taktirde bir sorun yaratmayacaktır (~%1-3)

Yukarıdaki görselde gördüğünüz gibi haberleşme gerçekleşmesi için ilk önce verici tarafında logic 1 (HIGH) seviyesinde bulunan iletişim hattı iletişimin başlaması için logic 0 (LOW) seviyesine çekilir ve bu bizim Başlangıç Bit’imizi (Start Bit) temsil eder. Ardından göndermek istediğimiz verileri başlangıç bitinin arkasına ekleriz. Eğer parity bitine sahipsek onu da ekledikten sonra son olarak iletişime sonlandırmak için gerekli olan bitiş bitini (stop bit) HIGH seviyesine çekerek iletişimin sonlandığını alıcıya bildiririz. Biz verici kısmında bu işlemleri yaparken alıcı da aynı şekilde işlem yapar ve sadece bizim gönderdiğimiz dataları kendi UART Data Register’ına yazar.

Nasıl Kullanabiliriz?

USART haberleşmesi yapabilmek için mikroişlemcimizdeki daha önceden tanımlanmış olan pinleri kullanarız. Bunun için ya USB-TTL dönüştürücü ya da RS232 modülü kullanırız. Her iki modülü de RX-TX pinleri mikroişlemcimizin RX-TX pinleri ile ters olarak bağlanacak şekilde bağlantısını yaptıktan sonra iletişimi başlatabiliriz. (Yani mikroişlemci TX —> Modül RX, mikroişlemci RX —> Modül TX). RS232 ile daha ayrıntılı bilgi için ilgili yazımı ( RS232 Nedir? ) inceleyebilirsiniz.

Kaynaklar:

http://enderunix.org/docs/hard_soft-uart.pdf

https://learn.sparkfun.com/tutorials/serial-communication/uarts

https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter

http s://www.slideshare.net/canezgiaydemir/uart-ve-seri-haberleme

http://www.mcu-turkey.com/wp-content/uploads/2012/11/maximsoftuartfig1.jpg

http://www.bb-elec.com/Images/whitepaper-images/DataByte.aspx

C dili BCD to Decimal – Decimal to BCD çevirimi

Yapmakta olduğumuz bir projede kullanacağımız RTC modülü için zaman verilerini decimal değerden BCD (Binary Coded Decimal) formatına çevirmemiz gerekiyordu. Bunun için araştırma yaparken değişik yöntemler gördüm. Bizim projemiz için en uygun yapıyı ise bulamadık. Biz de kalem kağıdı elimize alıp sıvadık kolları.

Bu işlemi itoa() fonksiyonunu kullarak da kolayca yapabiliyorsunuz, ama mikrokontroller ile çalıştığımız için bize en az boyuta sahip kod lazım oluyor. O yüzden bir arayış içerisine girdik.

Projede bize lazım olan yapı için 2 basamaklı sayıların dönüşümünün yapılması yeterli olacaktı. Biz de bu yüzden kodu şişirmeden, sadece işimize yarayacak kadar olan yapıyı oluşturduk. Eğer size kullanmak istediğiniz yerde 2’den fazla basamaklı sayılar için dönüşüm yapmak isterseniz küçük matematik hesaplamaları ile bunu yapabilirsiniz. Biz bu yapı için daha büyük sayılara göre denemelerimizi yaptık ve düzgün sonuçlar aldık.

Aşağıdaki kodu kullanarak Decimal to BCD (Binary Coded Decimal) dönüşümünü yapabilirsiniz.

https://gist.github.com/d72fdcf96426f1b235453513e71101ab

Aşağıdaki kodu kullanarak BCD to Decimal dönüşümünü yapabilirsiniz.

https://gist.github.com/adb3353092c3394d1c5217a05540f2d9

C ve C++ dillerini kullanarak Decimal to BCD ve BCD to Decimal dönüşümlerini yapmanız bu kadar kolay.

cJSON ile JSON Oluşturma

Staj gördüğüm yerde geliştirdiğimiz bir proje için çeşitli cihaz ve sensörlerden alınan verinin belirli bir JSON formatına çevrilerek şirketin Bulut’una (Cloud) aktarılarak oradan düzenlendikten sonra farklı bir şekilde çekilerek görselleştirme işlemi yapmam gerekiyor.

Ben şu an için işin biraz daha başında sayılırım. Ama 3 gündür üzerinde çalıştığım C dili üzerinde verileri JSON formatına çevirme kütüphanelerinden birisi olan cJSON ile yaptığım çalışmayı sizinle paylaşmak istedim. Kütüphane, DaveGamble isimli Github kullanıcısı tarafından paylaşılmış. Dokümantasyonu içerisinde neredeyse her şeye yanıt veriyor. Yanıt vermediği şeyleri de cJSON.h içerisinden rahatlıkla bulduğumu söylemek istiyorum.

Öncelikle yapacağımız işlem için birden fazla cihazımız olacak, bu cihazlara bağlı birden fazla sensörler olacak ve bu sensörler bize veri gönderecek. Genel yapımız bu şekilde olacak.

İlk olarak gerekli kütüphaneleri dahil ederek başlıyoruz. <stdio.h> kütüphanesi standart giriş ve çıkışlar sağladığımız kütüphanemiz, <conio.h> kütüphanesi DOS destekli giriş çıkışları sağladığımız kütüphanemiz (biz sadece getch(); fonksiyonu ile işlem bittiğinden klavyeden bir tuşa basılmadıkça ekranın kapanmamasını sağlamak için kullanıyoruz.), <time.h> rastgele değerler üretirken, bu değerlerin programı çalıştırdığımız andaki zamana bağlı olarak değişmesi için kullanıyoruz ve son olarak <cJSON.h> bizim JSON olayımızı gerçekleştireceğimiz kütüphanemiz.

https://gist.github.com/abeab9281903dd97e2fb2fe5d74e87de

Yukarıdaki kod bloğunu kullanarak ortaya çıkarttığım çıktı şekli ise:

Gördüğünüz üzere kodumuz çoklu cihaz ve çoklu sensör destekler halde. Bunların sayısını istediğiniz kadar artırmak sizin elinizde. Bu projeme bitbucket üzerinden de ulaşabilir ve gerekli dosya ve dokümanları indirebilirsiniz.

C ve JSON ile Cihaz Veri İstasyonu

Kütüphanenin Github adresi

Arduino nRF24L01 ile Joystick Kontrollü Araba

Bir önceki yazımda, nRF24L01 modülünü nasıl daha kolay kullanırız ve nasıl toplu veri göndeririz onu anlatmıştım. O yazıyı yazarken aklıma, daha önce Bluetooth ile kontrol ettiğimiz aracımızı acaba nRF24L01 ve Joystick kullanarak kontrol etsem nasıl olur fikri geldi.

Aracım şase olarak zaten elimin altında duruyordu. O yüzden aracı nasıl yaptığımı bu yazıda anlatmayacağım. Aracın yapımına ve kodlara L298N Motor Sürücü Entegresi Kullanımı yazımdan ulaşabilirsiniz. Ben sadece aracın bağlı olduğu Arduino’ya bir adet modül ekledim. Diğer tarafta ise yine bir Arduino ve bir Joystick Shield kullandım. Joystick shield’in buton pinleri arka tarafında yazıyor, bu yüzden direk onları tanımlayarak başladım, ardından verilerini okuma işlemini gerçekleştirdim. Son olarak bu verileri göndereceğim dizi içerisine atarak gönderme işlemini yaptım.

Alıcı tarafında ise yapılan tek değişiklik motorların hızının gelen verilerdeki joystick verilerine göre değiştirilmesi oldu. O yüzden onu da kolaylıkla anlayacaksınızdır. Tabi joystick shield’den gelen verilerin tamamını okuyarak daha çok çeşitli şeyler yapılabilir ama ben şu an sadece örnek olması bakımından hız kontrolünü gerçekleştirdim.  Sorularınızı yorum olarak belirtirseniz elimden geldiği kadar yardımcı olmaya çalışacağım.

Kodların tamamına Github profilim üzerinden ulaşabilirsiniz.

Verici Modül Kodları:

https://gist.github.com/a74d2b6c892fc1356daa9e69db2d87b6

Alıcı Modül Kodları:

https://gist.github.com/f51be7950b2cc8187e4626151a7840bf

Arduino nRF24l01 Kablosuz Haberleşme

Arduino ile kablosuz haberleşme üzerine çalışmalar yapıyorum ve bir projemde her hangi bir ağa bağlanmadan, sadece 2 cihaz arasında (2 Arduino) haberleşmeyi sağlamam gerekti ve bunun için en uygun modülün nRF24l01 olduğuna karar verdim. Ama yaşadığım başka bir sıkıntı vardı, göndermem gereken verileri sadece karakter olarak gönderebiliyordum.

Bu sorunu çözmek için uzun araştırmalar yaptım. Ama modülün kendi örnekleri ve modül hakkında yazılan blog yazıları hem göndermem gereken mesajı bir ‘integer’ dizi olarak göndermiyor, hem de karmaşık yollar ile çözüme gitmeye çalışıyor ve bu benim işime yaramıyordu. O yüzden, okuması ve kullanması oldukça basit ve tek seferde birden fazla veriyi – tipi (int, float…) önemli değil – bir dizi halinde göndererek 2 modül arasında haberleşmeyi sağlayabileceğimiz bir hale getirdim.

Modülleri, alıcı ve verici için aynı şekilde bağlıyoruz.

Arduino nRF24L01 Modülü Bağlantısı
(Görsel: Turkcell Geleceği Yazanlar)

Bunu için öncelikle gerekli olan RF24 kütüphanesini kurmanız gerekiyor. (Kütüphaneye, Github sayfamdan ulaşabilirsiniz.)

Kodların içerisine gerekli olan açıklama satırlarını eklediğim için ayrıntılı olarak buradan açıklamayacağım.

Kodlara ve kütüphaneye Github profilim üzerinden ulaşabilirsiniz. Yaşadığınız sorunları yorum olarak belirtirseniz elimden geldiği kadar yardımcı olmaya çalışacağım.

Verici Modülünün Kodları:

https://gist.github.com/ea473be9404efc4b1b1eb7165926647a

Alıcı Modülünün Kodları:

https://gist.github.com/2aebd28bb2eda0ed538c02029565b8b3

Arduino ile Araba Kontrol Kütüphanesi

Daha önce L298N entegresinin nasıl kullanıldığını ve Arduino ve Android cihaz kullanarak arabamızı nasıl kontrol edeceğimize dair yazılar yazmıştım. Bu yazımda ise o projeleri biraz daha geliştirip herkesin hemen ve kolaylıkla kullanabileceği bir kütüphane yazdım ve paylaşmak istiyorum.

Kütüphane kullanmamızın avantajları ve dezavantajları olabilir. Avantajlarından bazıları, fonksiyonları tek tek elimizle yazmak yerine hazır olarak ulaşılabilir bir şekilde elde ederiz. Dökümantasyonlarını inceleyerek hangi fonksiyonların ne işe yaradığını öğrenebiliriz. Dezavantajları ise kullandığımız programda sadece bir fonksiyonu kullanmak varken, kütüphaneyi dahil ederek tüm fonksiyonları dosyamıza çağırmış oluruz ve bu da fazladan boyuta yol açar.

Kullanmaya Başlayalım

Benim bu kütüphaneyi yazmamdaki amaç, sadece motor pinlerinin girilmesi ile harekete hazır bir arabamızın olmasıdır. Bunun için kütüphanemizi dahil ettikten sonra bir Araba nesnesi oluşturmamız gerekiyor. Daha önce kütüphaneler kullandıysanız nesnelerin nasıl oluşturulacağını az çok biliyorsunuzdur. Kütüphane eklendikten sonra ilk eklemeniz gereken kod aşağıdaki gibidir.

Araba calistir(3, 4, 7, 8, 5, 6);

Bu kod artık kütüphane içerisindeki kodlarımızı “calistir” nesnesi ile birlikte kullanabileceğimizi ifade eder. Nesnemizin parametreleri ise şu şekilde.

Pin 3 ---->  Sol Motorun 1. Çıkışı
Pin 4 ---->  Sol Motorun 2. Çıkışı

Pin 7 ---->  Sağ Motorun 1. Çıkışı
Pin 8 ---->  Sağ Motorun 2. Çıkışı

Pin 5 ---->  Sol Motorun Enable (Hız Kontrolü Yapacağımız) Çıkışı
Pin 6 ---->  Sağ Motorun Enable (Hız Kontrolü Yapacağımız) Çıkışı

Burada dikkat etmemiz gereken nokta motorların enable (hız kontrol) pinlerinin PWM sinyali verebilecek pinler olmasıdır. PWM sinyali veren pinler Arduino Uno‘da 3, 5, 6, 9, 10, 11. pinlerdir. Çeşitli Arduino modelleri için farklılık gösterebilir.

Fonksiyonlar ve Kullanımları

Motor tanımlamamızı yaptıktan sonra kullanabileceğimiz fonksiyonlara geçebiliriz. Kütüphane içerisinde şu an kullanıma hazır 8 fonksiyon bulunuyor. Fonksiyonların listesi ve kullanım talimatları aşağıdaki gibidir.
https://gist.github.com/f1fce472f8ba5423f2009601c01d4ed3

Örnek kullanım dosyası

Fonksiyonların kullanımları bu şekilde. İsterseniz örnek bir kodla nasıl kullanıldıklarını görelim.
https://gist.github.com/91a9aeb15da291b720be41f83e709d9e

Bağlantılarınızı yaptıktan sonra fonksiyonları test ederken Seri Monitörü kullanarak fonksiyonların çalışıp çalışmadığını kontrol edebilirsiniz. Her fonksiyon kendine özgü değerleri ekrana bastırıyor.

Her şeyi uygun yaptığınızı düşünüyorsanız ama yine de araçtan bir tepki alamıyorsanız ilk önce bağlantınızı, daha sonra da kod içerisinde nesne oluştururken belirtmiş olduğunuz pinlerin doğru şekilde olup olmadığını tekrar kontrol edin. Yine çözemezseniz, yorum bölümünden ve ya iletişim sayfamdan benimle iletişime geçebilirsiniz.

Projedeki gelişmeleri takip etmek için: Github — Arduino Araba Kontrol Kütüphanesi

ESP8266 ile Server üzerinde RGB Led Kontrolü

ESP8266 RGB Led Server

Bir önceki NodeMCU ile DHT11 Kullanımı yazımda da belirttiğim gibi ESP8266 kullanarak bir şeyler öğrenmeye devam ediyorum. Bu yazımda ise Arduino‘muza bağlı olan ESP8266 modülü ile server üzerinden, bizim vermiş olduğumuz değerler ile yanacak bir RGB led kontrolü yapacağız.

İnternetteki bir çok kaynaktan bulabileceğiniz server kurma kodlarını yazarak vakit kaybetmek istemiyorum. Ben öncelikle RGB ledim için küçük bir renk fonksiyonu yazarak başlamak istiyorum.

https://gist.github.com/erenkeskin/5ad3207a1ee6db9bb609123233d29951

Bu kodları gerekli yerlere yerleştirdikten sonra geriye sadece RGB led’imiz için değer göndermek kalıyor. Unutmayın! RGB bacaklarınızı PWM sinyali veren pinlere takmalısınız.

Serverdan değerleri almamız için ben GET methodunu kullandım. Sanırım POST methodu ile de yapılabiliyor ama henüz o konuda net bir bilgiye ulaşamadığım için GET methodunu kullandım. Bunun için öncelikle bir HTML formu içerisinde değerler ile göndermemiz gerekli. Gönderme işleminin ardından sayfa adresi “/kirmizi=90&yesil=130&mavi=240” gibi bir hal alıyor. Bizim yapmamız gereken ise bu satırdan sayısal verileri alarak integer’a çevirmek ve ardından bu integer değerleri renkAyarla() fonksiyonuna göndererek ledi yakmak.

C’de URL parçalamak için çok kolay bir yol bulamadım. O yüzden kısmen uzun bir yol izleyerek tek tek parçaladım ve stabil sonuç elde edebildim. Eğer siz daha kısa ve kolay bir yol biliyorsanız benimle paylaşırsanız sevinirim.

Aşağıdaki kodlar ile HTML sayfanızı oluşturup RGB ledinizi kontrol edebilirsiniz.

Loop fonksiyonu içerisinde HTML olarak server yapısı oluşturduğum kod:

https://gist.github.com/e9ded39eaaf7e80900876f5c8650f59b

URL’yi parçalamak (split) ve Led’i yakmak için ise aşağıdaki kodu kullanıyorum.

https://gist.github.com/e3409dd51e52052324916a5d201086b4

Herhangi bir soru ve sorununuz olursa elimden geldiği kadar yardımcı olmaya çalışırım, yorum olarak belirtmeniz yeterli.

NodeMCU ile DHT11 Kullanımı

NodeMCU DHT11

Arduino üzerine 1-2 çalışma yapmıştım ve artık kablosuz haberleşme üzerine farklı şeyler yapmaya çalışıyorum. Bunun içinde en büyük yardımcım ESP8266 modülü oluyor.

Ama Arduino kullanırken şöyle bir sıkıntı çekiyorum. Uno’nun ve Nano’nun hafızaları bazı şeyler için küçük geliyor ve Mega’nın da boyutu yaptığım işler için büyük geliyor. Bunun için hem boyut hem hafızadan kazanç, hem de ESP8266 bağlantısındaki kablo kalabalığından kurtulmak için NodeMCU‘ya geçiş yaptım ve projelerimde onu da kullanmaya çalışıyorum.

Bu yazımda DHT11 Sıcaklık ve Nem sensörünün kullanımı hakkında bilgi vereceğim.

Sensörün özelliği, havanın sıcaklığını ve nemini ölçerek bize ulaştırıyor. Bu verileri belirli aralıklarla yaparak daha net bilgiye ulaşmamıza yardımcı oluyor.

Github sayfama eklediğim repo’da sensörün kullanımına ait detayları anlatmaya çalıştım. Gerekli olan kütüphane dosyası için ve kodu indirmek için aşağıdaki adrese gitmeniz yeterli.

https://github.com/erenkeskin/nodemcu-dht11-nem-sicaklik-sensoru-kullanimi

https://gist.github.com/d5d00dc0d31867e7a63ef8f9c6ed5aa5

Bir sonraki yazımda, DHT11 ile alınmış olan, odamdaki verileri nasıl internet üzerine taşıyarak değerlerini kontrol edebildiğimi anlatacağım.

Arduino ve Android Telefon ile Bluetooth Kontrollü Araba Yapımı


Bir önceki yazımda yazmış olduğum MIT: App Inventor ile geliştirdiğim bir Android uygulaması ile Arduino kullanarak hazırlamış olduğum arabamı kontrol etmeyi başardım. Yazının içerisinde arabanın çalışma mantığından ve yazılım kısmından elimden geldiğince ayrıntılı olarak bahsetmeye çalışacağım. Arabamız, ileri, geri, sağ, sol, durma, sağ sinyal, sol sinyal, dörtlü yakma ve korna özelliklerine sahip. Bu özelliklerin hepsini bluetooth ile telefonumuz üzerinden kontrol edebiliyoruz.

Daha önceki yazımda sadece entegre olarak elinizde bulunan L288N sürücüsünü nasıl kullanacağınızı anlatmıştım.

2 tekeri Eskişehir’de unuttuğum için şuan fotoğraf ve video ekleyemiyorum. Ama en kısa sürede ekleyeceğim.

Kullandığım komponentler:

  • Arduino Uno
  • HC-06 Bluetooth modülü
  • L298N Motor Sürücüsü
  • 4 adet DC Motor
  • Harici Güç Kaynağı (Pil)
  • Led’ler
  • Jumper kablolar

İlk olarak aracımızın devre şeması ile başlayalım. Benim oluşturduğum aracın devre şeması tamamen aşağıdaki gibidir. Eğer daha çok özellik ekleyerek geliştirmek isterseniz Arduino Mega 2560‘da kullanabilirsiniz. Devre şeması biraz karışık gelebilir, ilk defa Fritzing üzerinden devre çizdim. Bunun hakkındaki sorularınızı yorum olarak belirtebilirsiniz.

Arduino-Android-Telefon-ile-Bluetooth-Kontrollü-Araba-Devre-Çizimi

Arduino Kodumuzu İnceleyelim

Devremizi sıkıntısız şekilde kurduysak aşağıdaki arduino içerisine atarak küçük bir deneme yapalım. Eğer benim gibi motor sürücü kartı değil de motor sürücü modülü kullanırsanız devreniz biraz karışık görünebilir. O yüzden çalışma sırasında küçük sorunlar ortaya çıkabilir, bu deneme kodunu o yüzden çalıştırıp denemeniz sorunlar çözmek için en kolay yoldur. Kodları burada paylaşınca yazılımsal bir sıkıntı ile karşılaştığım için Github Linkleri üzerinden erişim sağlayabilirsiniz.

Github: Araba Motor Sürücü Deneme Kodu

Denedik ve çalışıyor ise artık arabamızı araba yapan kodları içerisine atabiliriz. Benim arabam için kullandığım Pin yapısı devre şemasındakinin aynısıdır, o yüzden kodlar benim devre şemama göre yazılmıştır. Eğer siz pinlerde değişiklik yaparsanız kodların en üst kısmında yer alan kısımdan düzeltebilirsiniz.

Github: Araba Kontrol Dosyası

Son olarak MIT: App Inventor ile oluşturduğum Android uygulamasını telefona kurmanız gerekmektedir. Bu yazıda uygulamanın nasıl yazıldığı hakkında ayrıntılı bilgi vermeyeceğim. Dosyalar içerisinde uygulamanın App Inventor dosyasını da paylaşacağım, incelemek isteyenler o dosyayı import ederek inceleyebilirler. Uygulama hakkındaki her türlü soru ve geliştirme önerilerinizi bana iletebilirsiniz.

Arduino-Android-Telefon-ile-Bluetooth-Kontrollü-Araba-Telefon-Uygulaması

Uygulamanın tüm dosyalarına ulaşmak için aşağıdaki linki kullanabilirsiniz.

Uygulamaya gelen geri dönüşler ile birlikte güncellemeler gelecektir. Lütfen hatalı veya daha iyi olmasını istediniz kısımları yorum olarak belirtiniz.

Github: Arduino ve Android telefon ile bluetooth kontrollü araba yapımı

Gelecek Güncellemeler:

  • Uygulama ile Motorların Hız Kontrolü Yapılacak.
  • Kullandığımız kod daha tutarlı hale getirilecek. Kod içerisinde yapılandırmalar olacak.

MIT: App Inventor

Artık elektroniğe biraz daha yönelmemden dolayı bazı şeylere ihtiyacım oldu. Bunlar arasında – özellikle kablosuz haberleşme için – mobil uygulamalar da yer alıyordu. Şuan sıfırdan bir Android uygulama yazma için bilgim olmadığı için hazır olarak uygulama oluşturmama yardımcı olacak araçlar arayışına girdim. MIT: App Inventor ile karşılaştım.

Önce, App Inventor hakkında internetteki yorumları okuyunca biraz şaşırdım ve çok basit olduğunu düşündüm. Çünkü o yorumlar arasında, “Çocuklar bile yapabilir. Sürükle-bırak ile istediğiniz uygulamayı yazabiliyorsunuz. Hiç kod bilginiz olmasına gerek yok.” gibi yorumlar görmüştüm. Bu aslında bende hem merak uyandırdı hem de uygulamadan uzaklaştırdı ama merakım daha ağır bastı ve araştırıp öğrenmeye karar verdim.

Yorumlarda bahsedildiği gibi sürükle bırak yöntemiyle uygulamanızı tasarlayıp programlıyorsunuz. Ama öyle hiç programlama bilmeden de yapılabilecek bir şey değil. En basitinden kod bloklarının ne işe yaradığını bilmeniz gerekiyor. Ama eğer programalama mantığına hakimseniz gerçekten de tek bir kod yazmadan sadece sürükle bırak ile uygulamanızı oluşturuyorsunuz.

Ben şuan için başlangıç seviyesinde sayılırım, kendimi geliştiriyorum. Çok yakın zamanda oluşturacağım uygulama ile telefonum ile yaptığımız arabayı kontrol etmeyi planlıyorum. Uygulamayı yaptıktan sonra buradan paylaşacağım.

Şuan Bluetooth ile ilk kontrolümü gerçekleştirdim. Uygulamaya aşağıdaki linkten ulaşabilirsiniz. Uygulamayı HC-06 modülü ile birlikte kullanıyorum. Uygulama içerisinden modüle bağlanıp led yakıp söndürüyorsunuz. Oldukça basit, başlangıç seviyesi bir uygulama ama oldukça kullanışlı olduğunu söyleyebilirim. Bunu yakın zaman içerisinde geliştireceğim.

App Inventor – Bluetooth ile Led Yakma