Bilge Adam İzmir - Gokhan Sipahi - Robotic Programming with Netduino
Java, android ve arduino ile gömülü programlama
1. Java, Android ve Arduino
ile Gömülü Programlama
ve Robotik Uygulamaları
BORA SAYINER
2. Gündem
◦ Gerçek zamanlı işletim sistemi (RTOS) nedir?
◦ Gömülü sistem (Embedded System) nedir, ne işe yarar?
◦ Farklı platformlar birbirleri ile nasıl haberleşirler? (Android, Arduino, Raspberry Pi …)
◦ Demo (ROBOTO)
3. Gerçek Zamanlı İşletim Sistemi (RTOS)
Nedir?
Gerçek zamanlı uygulamalar için tasarlanmış, çoklu görev icra edebilen bir işletim sistemidir. RTOS
günümüzde askeri alandan kişisel cihazlara kadar yaygı bir kullanım alanına sahiptir. RTOS iki
bileşenden oluşur. Bunlar;
◦ Gerçek Zaman (Real - Time)
◦ İşletim sistemi
4. Gerçek Zaman
Gerçek zaman yürütülen işlemlerin cevap verme süresinin belli bir değer arasında olmasıdır. Bu
değer özellikle gömülü sitemlerde önemlidir. Hatta bazı sistemlerde çok kritik bile olabilir. Bu
yüzden bu sistemlerde gerçek zamanı garanti altına alacak bazı mekanizmaların kullanılması
gerekir. Bu açıdan bakıldığında RTOS gerçek zamanı garanti eden bir mekanizmadır.
5. İşletim Sistemi
İşletim sistemi donanım ile uygulama programları arasında arayüz oluşturan bir sistem programıdır. Bu
programın oluşturduğu soyutlama katmanı ile kullanıcının donanımıma günümüzde kullanılan popüler
yazılım dillerini kullanarak daha kolay ulaşmasını sağlar. RTOS özünde bir işletim sistemi olması
hasebiyle gömülü sistemlerde kullanıldığı zaman tasarımcılara işletim sisteminin sağladığı kolaylıkları
kullanmasına olanak sağlar.
OS birincil görevi uygulama programlarının ihtiyaçlarını karşılamak için donanım kaynaklarının
yönetimini sağlamaktır. Bunu ise aşağıdaki özellikleri sayesinde sağlarlar.
◦ Çoklu Görev (Multitasking)
◦ Senkronizasyon
◦ Kesme ve Olay Yönetimi(Interrupt and Event Handling)
◦ Giriş/Çıkış (Input/Output)
◦ İç Görev iletişimi (Inter Task Communication)
◦ Zamanlama ve saat ( Timers ve Clocks )
◦ Bellek Yönetimi(Memory Management)
6. Dağıtımlar
Şu anda piyasada bulunan ve en çok kullanılan RTOS dağıtımları aşağıda listelenmiştir
◦ Green Hills Software INTEGRITY
◦ Wind River VxWorks
◦ QNX Neutrino
◦ FreeRTOS
◦ Micrium µC/OS-II, III
◦ Windows CE
◦ TI-RTOS Kernel
7. Özet (RTOS)
Kısaca özetlemek gerekirse RTOS gerekli bir süre içerisinde mantıksal olarak doğru sonuç elde
edilmesi gereken gerçek zaman uygulamalarında ve gömülü sistemlerde kullanılır. RTOS’un
zamanlama davranışı ve sınırlı kaynak kullanımı niteliğini bu sistemlerde kullanılmasında tercih
sebebidir.
8. Gömülü Sistem (Embedded Systems)
Nedir?
Gömülü sistem, bilgisayarın kendisini kontrol eden cihaz tarafından içerildiği özel amaçlı bir
sistemdir. Genel maksatlı, örneğin kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir
sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir. Sistem belirli bir
amaca yönelik olduğu için tasarım mühendisleri ürünün boyutunu ve maliyetini azaltarak sistemi
uygunlaştırabilirler. Gömülü sistemler genellikle büyük miktarlarda üretildiği için maliyetin
düşürülmesinden elde edilecek kazanç, milyonlarca ürünün katları olarak elde edilebilir.
Gömülü bir sistemin çekirdeğini, belirli bir sayıda görevi yerine getirmek için programlanan
mikroişlemciler ya da mikrodenetleyiciler oluşturur. Kullanıcıların üzerinde istediği yazılımları
çalıştırabildiği genel maksatlı bilgisayarlardan farklı olarak, gömülü sistemlerdeki yazılımlar yarı
kalıcıdırlar ve firmware ismiyle anılırlar.
10. Gömülü Sistem Örnekleri
◦ Banka ATM’leri
◦ Uçak kontrol donanım/yazılımı ve uçak ve füzelerdeki havacılık elektroniği parçaları
◦ Cep telefonları
◦ Yönlendirici (router), timeserver ve güvenlik duvarı (firewall), bilgisayar yazıcıları
◦ Fotokopi makineleri
◦ Disket sürücüler (floppy disket sürücüler ve sabit disk sürücüler)
◦ Termostat, klima ve güvenlik izleme sistemleri gibi ev otomasyonu ürünleri
◦ Hesap makineleri
◦ Mikro dalga fırınlar, çamaşır makinesi, televizyon setleri ve DVD oynatıcı/kaydedici gibi ev
elektroniği ürünleri
◦ Tıbbi ekipmanlar
◦ Çok işlevli kol saatleri
11. Gömülü Sistem Örnekleri
◦ İnternet radyo alıcıları, TV set top box, ve dijital uydu alıcılar gibi çoklu ortam uygulamaları
◦ Çok işlevli yazıcılar
◦ PDA’lar gibi küçük avuç içi bilgisayarlar
◦ PDA ve Java destekli gelişmiş cep telefonları
◦ Endüstriyel otomasyon ve izleme için PLC'ler
◦ Video oyun konsolları ve avuç içi oyun konsolları
◦ Taşınabilir bilgisayarlar
13. İşletim Sistemi
Gömülü sistemlerde işletim sistemi olmayabildiği gibi (Örn: PIC, Atmel), Embedded (gömülü) Linux,
WinCE, Android, IOS gibi gelişmiş ya da özelleştirilmiş gömülü işletim sistemleri de kullanılabilir.
14. Raspberry Pi
Raspberry Pi, Raspberry Pi Foundation tarafından 2009’da geliştirilmeye başlanmış kredi kartı
büyüklüğündeki tek board’dan oluşmuş tam donanımlı bir mini-bilgisayardır.
Teknik Özellikleri:
◦ İşlemci: Broadcom BCM2835 (700MHz, ARM1176JZF-S tabanlı)
◦ Grafik İşlemcisi: Broadcom VideoCore IV (OpenGL ES 2.0, 1080p destekli)
◦ 256MB RAM Yeni modellerde 512MB Ram
◦ 1 adet USB 2.0 (Model B’de 2 tane var)
◦ HDMI yuvası
◦ SD Kart Okuyucu,
◦ 3.5mm ses jakı,
◦ RCA Video Çıkışı,
◦ CSI Bağlantısı
15. Raspberry Pi
◦ Ethernet (Sadece Model B’de)
◦ İşletim sistemi: Debian GNU/Linux, Fedora, Arch Linux ve türevleri
◦ Düşük Seviye Çevre Birimleri: 8 adet GPIO, UART, I²C bus, SPI bus’la birlikte iki Chip Select, +3.3 V,
+5 V, ground
17. Arduino
Bir giriş çıkış kartı ve Processing/Wiring dilinin bir uygulamasını içeren geliştirme ortamından, İtalyan
elektronik mühendisleri tarafından açık kaynak kodlu geliştirilen ve isteyen herkesin baskı devreleri
indirerek kendi devrelerini basabilecekleri dilerlerse şık bir görüntüye sahip hazır basılmış ve
bileşenleri yerleştirilmiş halde alabilecekleri, esnek, kolay kullanımlı donanım ve yazılım tabanlı bir
fiziksel programlama platformudur.
Arduino tek başına çalışan interaktif nesneler geliştirmek için kullanılabileceği gibi bilgisayar üzerinde
çalışan yazılımlara da bağlanabilir. Hazır üretilmiş kartlar satın alınabilir veya kendileri üretmek
isteyenler için donanım tasarımı ile ilgili bilgiler mevcuttur.
Arduino geliştirme kartı üzerindeki mikroişlemci Arduino programlama dili (wiring tabanlı) ile
programlanır ve bu program Processing tabanlı Arduino Yazılım Geliştirme Ortamı (IDE) yardımı ile
karta yüklenir.
18. Arduino
Arduino’ nun özellikleri;
◦ Kolay bir şekilde çevresiyle etkileşime girebilen sistemler tasarlayabilirsiniz
◦ Açık kaynaklı bir geliştirme platformudur.
◦ Arduino kartları üzerinde Atmega firmasının 8 ve 32 bit mikrodenetleyicileri bulunur
◦ Arduino kütüphaneleri ile mikrodenetleyicileri kolaylıkla programlayabilirsiniz
◦ Analog ve dijital girişleri sayesinde analog ve dijital verileri işleyebilirsiniz
◦ Sensörlerden gelen verileri kullanabilirsiniz,
◦ Dış dünyaya çıktılar (ses, ışık, hareket vs…) üretebilirsiniz.
24. Haberleşme
Birden fazla elektronik aygıtın haberleşmesi günümüzde protocol denilen bir alt yapı üzerinden
kontrol edilir. Protokol demek haberleşecek olan aygıtların aynı dili konuşması için öngörülen bir
şartname anlamına gelir. Günümüzde birden fazla haberleşme protokolü bulunmaktadır. En çok
kullanılanları;
◦ Ethernet
◦ Wireless LAN
◦ Internet Protocol Suite
◦ SONET/SDH
◦ Asynchronous Transfer Mode (ATM)
◦ Serial Communications
25. Haberleşme (Serial Communication)
RS-232, Electronic Industries Association tarafından geliştirilmiş ve standart hale getirilmiş bir
konektördür. -15 V ile +15 Voltluk iki voltaj seviyesi arasında bir değer belirleyerek 15 metreyi bulan
bir haberleşme olanağı sunmaktadır. Ayrıca modem, klavye ve fare gibi kısa mesafeli araçlar için de
sayısal veri aktarımı olanağı sunmaktadır.
26. Haberleşme (Serial Communication)
RS-232 konektöründe veriler ASCII karakterlerinin 8 bitlik tanımlanmaları nedeniyle 8 bitlik
karakterler halinde iletilmektedir. Bu iletim birbiri ardına seri olarak gönderilir. İletim standart olarak
hem senkron hem de asenkron olarak tanımlanmıştır. Gönderici RS-232 konektörü aracılığıyla
gönderilecek olan veriyi belirli bir formatta hazırlar, bu sırada alıcı devamlı olarak hattı dinlemektedir.
Verinin geleceğini belirten bir işaret ile alıcı veriyi depolar ve karakterlere dönüştürür.
RS-232 konektöründe eksi voltaj birimi 1, artı voltaj birimi ise 0 olarak standart hale getirilmiştir.
(Negative Logic) Ayrıca hattın boş olması durumu da 1 ile ifade edilir. Voltajın artı haline geçmesi veri
gönderileceğinin işaretidir. Bu durum başlangıç biti olarak ifade edilir. Ardından gönderilen karakter
dizilimi alıcı tarafından depolanır ve yorumlanarak karakter setleri haline dökülür. Her karakterin
sonuna ise bir bitiş biti olan 0 eklenir.
27. Haberleşme (ZigBee)
ZigBee, kişisel alan ağları için kullanılan bir IEEE 802 standardına göre küçük, düşük güçlü dijital
radyolar kullanılarak oluşturulan yüksek düzeyde iletişim protokollerinin özelleştirilmesidir.
Uygulamalarda, kablosuz ışık anahtarları, ev-içi-ekranlar ile elektrik sayaçları ve diğer tüketicinin ve
endüstriyel ekipmanın düşük oranlarda veriyi kısa menzilli kablosuz transferi bulunmaktadır.
ZigBee özelleştirmesi tarafından tanımlanan teknoloji, diğer WPANs'lardan (Bluetooth gibi) daha
basit ve daha ucuz olmasına yöneliktir. ZigBee radyo frekansı(RF), düşük veri hızı, uzun pil ömrü ve
güvenli ağ gerektiren uygulamalar hedeflemiştir. ZigBee'nin 250 kbps tanımlanmış hızı, iyi bir sensör
veya giriş cihazından, periyodik veya aralıklı ,veri veya tek bir sinyal iletimi için uygundur. ZigBee
tabanlı trafik yönetimi sistemi de uygulamaya konulmuştur. Adını, bal arılarının arı kovanı etrafında
sallanarak dönüşlerinden almıştır.
28. Haberleşme (ZigBee)
◦ Temel Uygulamalar
◦ ZigBee ev otomasyonu
◦ ZigBee Akıllı Enerji 1.0
◦ ZigBee Telekomünikasyon Hizmetleri
◦ ZigBee Sağlık
◦ ZigBee RF4CE-Uzaktan Kumanda
◦ ZigBee Akıllı Enerji 2.0
◦ ZigBee Bina Otomasyonu
◦ ZigBee Perakende Hizmetler
◦ ZigBee Işık Bağlantı
29. Haberleşme (ZigBee)
◦ Temel Uygulamalar
◦ ZigBee ev otomasyonu
◦ ZigBee Akıllı Enerji 1.0
◦ ZigBee Telekomünikasyon Hizmetleri
◦ ZigBee Sağlık
◦ ZigBee RF4CE-Uzaktan Kumanda
◦ ZigBee Akıllı Enerji 2.0
◦ ZigBee Bina Otomasyonu
◦ ZigBee Perakende Hizmetler
◦ ZigBee Işık Bağlantı
31. Demo (ROBOTO)
◦ ROBOTO Arduino, Android ve ZigBee teknolojileri kullanılarak geliştirilmiş bir robottur.
◦ ZigBee modülü sayesinde farklı elektronik aygıtlar ile haberleşebilir.
◦ Ultra-sonic mesafe bulucu sensor ile önündeki cisimlerin uzaklığını mobil aygıtlara gönderebilir.
◦ Sıcaklık ve Nem sensöründen okunan bilgiler ZigBee üzerinden diğer cihazlar ile paylaşılabilir.
32. Demo (ROBOTO)
ROBOTO’ da kullanılan donanım listesi aşağıda olduğu gibidir
◦ Arduino UNO R3
◦ Arduino Motor Shield Rev3
◦ Arduino Wireless Proto - XBee SD Shield
◦ XBee 1mW (Wire Antenna) (x2)
◦ XBee Explorer Dongle
◦ Tower Pro SG90 RC Mini Servo Motor
◦ HC-SR04 Ultrasonik Mesafe Sensörü
◦ Micro Usb OTG Kablo
◦ 4WD Robot Akıllı Araç Şasi