34
Java, Android ve Arduino ile Gömülü Programlama ve Robotik Uygulamaları BORA SAYINER

Java, android ve arduino ile gömülü programlama

Embed Size (px)

Citation preview

Page 1: Java, android ve arduino ile gömülü programlama

Java, Android ve Arduino ile Gömülü Programlama ve Robotik UygulamalarıBORA SAYINER

Page 2: Java, android ve arduino ile gömülü programlama

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)

Page 3: Java, android ve arduino ile gömülü programlama

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

Page 4: Java, android ve arduino ile gömülü programlama

Gerçek ZamanGerç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.

Page 5: Java, android ve arduino ile gömülü programlama

İş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)

Page 6: Java, android ve arduino ile gömülü programlama

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

Page 7: Java, android ve arduino ile gömülü programlama

Ö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.

Page 8: Java, android ve arduino ile gömülü programlama

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.

Page 9: Java, android ve arduino ile gömülü programlama

Gömülü Sistem (Embedded Systems) Nedir?

Page 10: Java, android ve arduino ile gömülü programlama

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

Page 11: Java, android ve arduino ile gömülü programlama

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

Page 12: Java, android ve arduino ile gömülü programlama

Gömülü Sistem Örnekleri

Page 13: Java, android ve arduino ile gömülü programlama

İşletim SistemiGö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.

Page 14: Java, android ve arduino ile gömülü programlama

Raspberry PiRaspberry 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ı

Page 15: Java, android ve arduino ile gömülü programlama

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

Page 16: Java, android ve arduino ile gömülü programlama

Raspberry Pi

Page 17: Java, android ve arduino ile gömülü programlama

ArduinoBir 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.

Page 18: Java, android ve arduino ile gömülü programlama

ArduinoArduino’ 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.

Page 19: Java, android ve arduino ile gömülü programlama

ArduinoArduino’ nun temel donanım elemanları;◦ ATmega8, ATmega168, ATmega328 mikroişlemci◦ 2. 5 voltluk regüle entegresi◦ 16MHz kristal osilator yada seramik rezonatör◦ Flash Memory◦ SRAM◦ EEPROM

Page 20: Java, android ve arduino ile gömülü programlama

ArduinoArduino çeşitli kartları;◦ Arduino Uno◦ Arduino Leonardo◦ Arduino Due◦ Arduino Yun◦ Arduino Tre◦ Arduino Micro◦ Arduino Robot◦ Arduino Esplora◦ Arduino Mega ADK◦ Arduino Ethernet◦ Arduino Mega 2560

Page 21: Java, android ve arduino ile gömülü programlama

ArduinoArduino çeşitli kartları;◦ Arduino Mini◦ LilyPad Arduino USB◦ LilyPad Arduino Simple◦ LilyPad Arduino SimpleSnap◦ LilyPad Arduino◦ Arduino Nano◦ Arduino Pro Mini◦ Arduino Pro◦ Arduino Fio

Page 22: Java, android ve arduino ile gömülü programlama

Arduino

Page 23: Java, android ve arduino ile gömülü programlama

Arduino

Page 24: Java, android ve arduino ile gömülü programlama

HaberleşmeBirden 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

Page 25: Java, android ve arduino ile gömülü programlama

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.

Page 26: Java, android ve arduino ile gömülü programlama

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.

Page 27: Java, android ve arduino ile gömülü programlama

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.

Page 28: Java, android ve arduino ile gömülü programlama

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ı

Page 29: Java, android ve arduino ile gömülü programlama

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ı

Page 30: Java, android ve arduino ile gömülü programlama

Haberleşme (ZigBee)

Page 31: Java, android ve arduino ile gömülü programlama

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.

Page 32: Java, android ve arduino ile gömülü programlama

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

Page 33: Java, android ve arduino ile gömülü programlama

Demo (ROBOTO)

Page 34: Java, android ve arduino ile gömülü programlama

Sorular?