Endüstri 4.0 ve Nesnelerin Interneti
Endüstri 4.0 ve Nesnelerin Interneti Endüstri 4.0, teknolojilerin ve değer zinciri organizasyonları kavramlarının kolektif bir bütünüdür. (http://www.endustri40.com/endustri-tarihine-kisa-bir-yolculuk) Nesnelerin interneti, fiziksel nesnelerin birbirleriyle veya daha büyük sistemlerle bağlantılı olduğu iletişim ağıdır. Bu kavram endüstri 4.0 ın bir parçası durumundadır.
Internet of Things
Günümüzde İşlemci Tasarımı
Intel İşlemciler
Algılayıcı (Sensör) Seçimi Sensör seçimi oldukça basit olmasına karşı gözönünde bulundurulması gereken bazı noktalar vardır: Maliyet (Cost) Tedarikçi (Supplier) Doğruluk ve Hassasiyet (Accuracy & Precision) Bulunabilirlik (Availability) Ölçüm Aralığı (Measurement Range) Güç Tüketimi (Power Comsumption)
Örnek Isı Sensörü Seçimi
IoT Geliştirme Board ları IoT geliştirme boardları geliştiricilerin fikirlerini uygulamaya geçirme fırsatı verir. Bu paketlerde farklı mikrokontrolcüler ve işlemciler kablolu/kablosuz algılayıcılarla bir araya gelerek programlanmaya hazır durumdadırlar. Board seçiminde dikkat edilecek hususlar ise: Maliyet (Cost) Özellikleri (Bellek kapasitesi, İşlemci türü, I/O kapasitesi) Programlama desteği ve seçenekleri Açık tasarım Tedarikçilerin güvenirliği Sensörler ve actuator lar ile olan uyumluluk
Farklı IoT Boardları Arduino Uno R3 Intel Edison Raspberry Pi ESP8266
Arduino Arduino donanımsal ve yazılımsal olarak kullanımı oldukça kolay olan açık kaynak kodlu (open-source) bir elektronik tabanlı platformdur. Arduino devre kartı (board) ışık, hız, düğme veya Twitter mesajı gibi çeşitli algılayıcılardan aldığı girdileri okuyarak dış ortamdaki bir motoru, ledi veya herhangi online cihazı kontrol edebilir. (https://www.arduino.cc/en/guide/introduction )
Arduino (devam) Arduino, mikrodenetleyici kart temelli açık kaynak kodlu fiziksel geliştirme platformudur. Geliştirme ortamı ile board için yazılım üretilir. Geliştirme kartları elle veya hazır olarak oluşturulurlar. Açık kaynak kodlu IDE ücretsiz olarak indirilebilir.
20 den fazla Arduino geliştirme kartı mevcuttur. Bazıları;
Neden tercih edilmektedir? Farklı platformlarda çalışabilme (Cross-platform): Arduino yazılımı n Windows, Macintosh OSX ve Linux işletim sistemleri üzerinde çalışabilmektedir. Sade ve temiz programlama ortamı (Simple, clear programming environment) : Arduino programlama ortamı yeni başlayanlar için oldukça esnektir. Ayrıca deneyimli kullanıcılar da bu platformun avantajlarını kullanabilmektedir.
Açık kaynak kodlu ve esnek yazılım (Open source and extensible software): Arduino yazılımı opensource araçları ile yayınlanmaktadır. Dil, C++ kütüphaneleri ile genişletilmektedir. Açık kaynak kodlu ve esnek donanım (Open source and extensible hardware) : Arduino Atmel in ATMEGA8 ve ATMEGA168 mikrokontrolcüleri üzerine şekillenmiştir. Bu modüllerin planları(çizimleri) Creative Commons Lisansı altında yayınlanmaktadır. Böylelikle deneyimli baskı devre tasarımcıları kendi modüllerini tasarlayıp geliştirebilirler.
Arduino Ekosistemi Bu ekosistem aşağıdaki bileşenlerden oluşmaktadır: Arduino Boardu Arduino IDE Temel Arduino Kütüphanesi Üçüncü parti yazılım kütüphaneleri Shield lar Kompenentler
Başlangıçta ortada tek bir geliştirme kartı bulunmaktaydı (2005). Günümüzde ise çok farklı çeşitlerde geliştirme kartı mevcuttur. Her bir board birbirinden giriş/çıkış pinlerinin dizilimi ve sayısı, boyut, güç tüketimi, fiyat ve daha birçok farklı parametreler açısından birbirinden farklılık gösterir. Orjinal Arduino board olduğu gibi clone olarak nitelendirilen boardlar da mevcuttur. Clone boardlar uyumluluk ve kalite garantisi sunmazlar.
UNO R3 Örnek
Arduino Mega 2560 Rev 3 Arduino LilyPad Arduino Mini Arduino Nano
Bahsedilenden çok daha fazla çeşitlilikte Arduino board bulunmaktadır. https://www.arduino.cc/en/products/compare adresinden tümünün karşılaştırılmasına ulaşmak mümkündür.
Arduino IDE Arduino IDE programcının kod yazabileceği ve Arduino board a yükleyebileceği bir ortamdır. Bir Arduino program sketch olarak isimlendirilir.
Java Runtime Environment (JRE) a gereksinimi vardır.
Arduino Dili Geliştirme ortamında kullanılan dil C/C++ dır. Kurulduktan sonra Arduino Core Library de bulunan birçok fonksiyon/metot yardımıyla boardın çeşitli özellikleri aktif bir şekilde kullanılabilir. Örn: - analogread(1); - digitalwrite(10,high); Ayrıca üçüncü parti kütüphaneler de istenirse kullanılabilir.
Donanım Eklentileri (Shields) Varolan Arduino boardların üzerine monte edilerek board belirli bir amaç için özelleştirilebilir. Birçok farklı donanım eklentileri mevcuttur.
Arduino Motor Shield Arduino Ethernet Shield Arduino RS232 Shield Arduino NFC Shield
Microcontroller Operating Voltage ATmega328P 5V Arduino Ethernet Input Voltage Plug (recommended) 7-12V Input Voltage Plug (limits) 6-20V Input Voltage PoE (limits) 36-57V Digital I/O Pins 14 (of which 4 provide PWM output) Arduino Pins reserved: Analog Input Pins 6 DC Current per I/O Pin 40 ma DC Current for 3.3V Pin Flash Memory SRAM EEPROM Clock Speed W5100 TCP/IP Embedded Ethernet Controller Power Over Ethernet ready Magnetic Jack Micro SD card, with active voltage translators Length Width Weight 10 to 13 used for SPI 4 used for SD card 2 W5100 interrupt (when bridged) 50 ma 32 KB (ATmega328P) of which 0.5 KB used by bootloader 2 KB (ATmega328P) 1 KB (ATmega328P) 16 MHz 68.6 mm 53.3 mm 28 gr
Arduino UNO R3 Giriş
Arduino Uno R3 Giriş http://arduino.cc/en/guide/homepage
Microcontroller Operating Voltage ATmega328P 5V Input Voltage (recommended) 7-12V Input Voltage (limit) 6-20V Digital I/O Pins PWM Digital I/O Pins 6 Analog Input Pins 6 DC Current per I/O Pin DC Current for 3.3V Pin Flash Memory SRAM EEPROM Clock Speed LED_BUILTIN 13 Length Width Weight 14 (of which 6 provide PWM output) 20 ma 50 ma 32 KB (ATmega328P) of which 0.5 KB used by bootloader 2 KB (ATmega328P) 1 KB (ATmega328P) 16 MHz 68.6 mm 53.4 mm 25 g 16 Mhz de çalışmaktadır.
ATmega328P bir mikrodenetleyici olup mikroişlemci değildir. Üzerinde herhangi bir OS barındırmaz. Dolayısıyla genel amaçlı PC lerden farklıdır. OS bulundurmadığından yazılan programlar mikrodenetletici tarafından direkt olarak çalıştırılır. Adanmış belirli bir görevi üzerinde bulunana GPIO (General Purpose IO) yardımıyla dış dünyayla haberleşerek gerçekleştirir.
DIP soket (Dual In-Line Package) SMD (Surface Mount Device)
Arduino UNO USB üzerinden programlanabileceği gibi ICSP (In-Circuit Serial Programming) üzerinden de programlanabilir. ICSP üzerinden programlanacağında ilave programlayıcı donanınıma gereksinim vardır. Cihaz üzerinde 2 adet ICSP arayüzü bulunmaktadır. Bir tanesi ATmega328p yi programlıyorken diğeri ATmega16U2 yi programlamak içindir.
I / O İşlemleri
Dış dünyadan alınan girdiler analog iken Arduino dijital olarak çalışmaktadır. Analog Sinyal Dijital Sinyal
Digital Output 13 No lu Pin LED HIGH ON LOW OFF
Digital Input Düğmeye basılmadığı durumda algılanacak olan verinin değeri nedir? ( 1 / 0) Düğmeye basılmadığı durumda girdinin d lojik değeri belli değildir. Bu duruma Hanging value veya floating value ismi verilir. Bu durumun oluşması arzu edilmez. Bu nedenledir ki Pull-up veya Pull-down dirençler kullanılır. Yandaki şekilde ise Pull-up direnç kullanılmıştır. Pull-up direnci
Buton Durumu Pin 5 Basılmadığında HIGH Basıldığında LOW
Analog Input Arduino UNO, dış dünyadan okunan analog değerleri 0-1023 arasında sayısal değerlere dönüştürür. Bu işlem için Arduino kütüphanesinin analogread() metodu kullanılır.
Analog Sinyal
Sayısala Dönüştürme
Yandaki şekilde 0 ile 5V arasındaki gerilim değerleri 0-1023 arasına dönüştürülmüş olur. int val = analogread (A0);
Analog Output Arduino Uno gerçek analog(true analog signals) sinyal üretemez. Sadece analog sinyale yakın değerleri üretir. Bu işlemi ise PWM (Pulse Width Modulation) ile yerine getirmeye çalışır.
PWM (Pulse Width Modulation) PWM, sayısal değerlerin ortalmasından analog sonuçlar elde eden bir tekniktir. Sayısal bir sinyal lojik 1 ve 0 arasında belirli zaman aralıklarında değişim göstererek 0 ile 5V arasındaki gerilim değerleri simüle edilebilir. Sayısal sinyalin lojik 1 de kaldığı süre (on time) pulse width olarak isimlendirilir. Farklı analog değerler elde edebilmek için pulse width değeri değiştirilir.
Arduino üzerinde PWM i kullanabilmek için dijital I/O bölümünde yer alan ve ~ sembolü ile belirtilmiş olan pinlerin kullanılması gerekmektedir. Bunun yanında Arduino IDE kütüphanesinde yer alan analogwrite() metodu kullanılır. Prototipi ; analogwrite(pin No, DutyCycle); - Duty Cycle değeri (0-255) arasında değerler alır.
5 Nolu Pin (Duty Cycle) LED in Parlaklık Seviyesi 0 Yanmaz 255 En parlak şekilde yanar 50 Biraz yanar 200 Parlak şekilde yanar