1. Giriş
Ne oluşturacaksınız?
Bu codelab'de, Arduino Nano 33 BLE üzerinde derin öğrenme modeli çalıştırmak için TensorFlow Lite For Microcontrollers'ı kullanmayı öğreneceğiz. Mikro denetleyici, kullanıcı tarafından çeşitli büyüler yapmak için kullanılan dijital bir "sihirli değneğe" dönüştürülür. Kullanıcı çubuğu hareket ettirdikçe, insan için anlaşılmaz olan bu karmaşık, çok boyutlu sensör verileri modele giriş olarak iletilir. Model, çeşitli hareketlerden biri gerçekleştiyse bizi uyaran basit bir sınıflandırma çıkarır.

Mikrodenetleyicilerde Makine Öğrenimi
Makine öğrenimi, kullanıcıların hayatını kolaylaştıran akıllı araçlar (ör. Google Asistan) oluşturmak için kullanılabilir. Ancak bu deneyimler genellikle güçlü bir bulut sunucusu veya masaüstü bilgisayar gibi çok fazla işlem ya da kaynak gerektirir. Ancak artık mikro denetleyiciler gibi küçük ve düşük güçlü donanımlarda makine öğrenimi çıkarımı çalıştırmak mümkün.
Mikro denetleyiciler son derece yaygın, ucuz, çok az enerji gerektirir ve çok güvenilirdir. Cihazlar, arabalar ve oyuncaklar gibi her türlü ev aletinde yer alırlar. Her yıl yaklaşık 30 milyar mikro denetleyici destekli cihaz üretiliyor.

Makine öğrenimini küçük mikro denetleyicilere taşıyarak, pahalı donanımlara veya güvenilir internet bağlantılarına ihtiyaç duymadan hayatımızda kullandığımız milyarlarca cihazın zekasını artırabiliriz. Günlük rutininize uyum sağlayabilen akıllı cihazlar, sorunlar ile normal çalışma arasındaki farkı anlayabilen akıllı endüstriyel sensörler ve çocukların eğlenceli ve keyifli bir şekilde öğrenmesine yardımcı olabilecek sihirli oyuncaklar hayal edin.
TensorFlow Lite For Microcontrollers (Yazılım)

TensorFlow, modelleri eğitmek ve çalıştırmak için Google'ın açık kaynaklı makine öğrenimi çerçevesidir. TensorFlow Lite, TensorFlow'un optimize edilmiş bir sürümü olan bir yazılım çerçevesidir. TensorFlow modellerini cep telefonları gibi küçük ve nispeten düşük güçlü cihazlarda çalıştırmak için tasarlanmıştır.
TensorFlow Lite For Microcontrollers, TensorFlow'un optimize edilmiş bir sürümü olan bir yazılım çerçevesidir. TensorFlow modellerini mikro denetleyiciler gibi küçük ve düşük güçlü donanımlarda çalıştırmayı hedefler. Bu yerleştirilmiş ortamlarda gerekli olan kısıtlamalara uyar.Örneğin, küçük bir ikili boyuta sahiptir, işletim sistemi desteği, herhangi bir standart C veya C++ kitaplığı ya da dinamik bellek ayırma gerektirmez.
Arduino Nano 33 BLE (Donanım)

Arduino, elektronik projeler oluşturmak için kullanılan popüler bir açık kaynak platformudur. Şunlardan oluşur:
- Bu kod laboratuvarında kullanılan Arduino Nano 33 BLE gibi fiziksel bir programlanabilir devre kartı (genellikle bir mikro denetleyici).
- Arduino IDE (Entegre Geliştirme Ortamı), bilgisayar kodunu fiziksel karta yazmak ve yüklemek için kullanılan yazılım.
Arduino Nano 33 BLE, tek bir devre kartı üzerinde küçük bir bilgisayar olan mikro denetleyici tabanlı bir platformdur. Diğer cihazlara dijital sinyaller gönderip almasını sağlayan bir işlemci, bellek ve G/Ç donanımı vardır. Mikro denetleyiciler, bilgisayarların aksine güçlü değildir ve genellikle işletim sistemi çalıştırmaz. Bunun yerine, küçük işlemcileri, fazla belleği yoktur ve yazdığınız programlar doğrudan donanım üzerinde çalışır. Ancak mümkün olduğunca basit olacak şekilde tasarlandıkları için mikrodenetleyiciler çok az enerji kullanabilir.
Yapacaklarınız
- Arduino Nano 33 BLE mikro denetleyiciyi kurun ve dijital bir "sihirli değneğe" dönüştürün.
- Arduino IDE'yi kurun ve gerekli kitaplıkları yükleyin.
- Programı cihaza dağıtma
- Sihirli değneği sallayarak çeşitli büyüler yapın ve tahminleri görüntüleyin.
Gerekenler
- Linux, MacOS veya Windows dizüstü bilgisayar
- Arduino Nano BLE Sense 33 (başlıklar olmadan)
- Mikro USB kablosu (USB-C bağlantı noktalı bir dizüstü bilgisayar kullanıyorsanız bunun yerine USB-C - mikro USB kablosu edinin.)
- (isteğe bağlı) Yaklaşık 30 cm uzunluğunda çubuk
- (isteğe bağlı) Yapışkan bant
2. Arduino mikro denetleyicisini kurma
Arduino'nuzu kutusundan çıkarma
Kutudan çıkarın ve ambalaj köpüğünden çekerek alın. İletkendir ve aksi takdirde sorunlara neden olabilir.

Dizüstü bilgisayarınıza takın
- MicroUSB kablosunu çipteki sokete takın.
- Kablonun diğer ucunu dizüstü bilgisayarınızdaki bir USB soketine takın.
- Arduino'daki sol alttaki LED (aşağıdaki resimde sol üstte) yanmalıdır.

İş akışını tanıyın

Yukarıdaki şemada gösterildiği gibi, Arduino'daki TFLite yorumlayıcısı model üzerinde düzenli olarak çıkarım yürütür. Model, işlenmiş ivmeölçer verilerini giriş olarak kullanır ve en olası hareketi öneren bir tahmin çıkışı verir. Ayrıca, istenen çıktı yazdırılır ve doğru LED'ler yanar.
3. Arduino IDE'yi kurma
1. Arduino IDE'yi indirme
Programı Arduino mikro denetleyicisine dağıtmak için Arduino IDE'yi kullanırız.
İndirdikten sonra, simgesi
olan uygulamayı tıklayarak Arduino IDE'yi yükleyin ve açın.
İlk açılış sayfası aşağıdaki gibi açılır:

2. Board Yöneticisi'ni kurma
- Arduino menüsünden
Tools -> Board: "Arduino .." —> Boards Managerseçeneğini belirleyin. "Arduino Nano 33 BLE"eklentisini arayın veArduino nRF528x Boards (Mbed OS)eklentisini yükleyin. Bu işlem, Arduino Nano 33 BLE mikro denetleyicimizin Arduino IDE tarafından desteklenmesini sağlar.
- Arduino menüsünden
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"seçeneğini belirleyin.

- Son olarak, IDE'nin sağ alt kısmında seçtiğiniz kartın "Arduino Nano 33 BLE" olduğunu doğrulayın.

3. Bağlantı noktasını ayarlama
Arduino menüsünden Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) simgesini seçin. Aşağıdakine benzer bir ifade görürsünüz:

4. Kart Bağlantısını Kontrol Etme
Arduino menüsünden Tools -> Get Board Info simgesini seçin. Aşağıdakine benzer bir ifade görürsünüz:

4. Kitaplıkları yükleme
1. TensorFlow Arduino Kitaplığı
Bu kitaplıkta, bu codelab için gerekli olan sihirli değnek kaynak kodu da dahil olmak üzere tüm TensorFlow Lite for Microcontrollers örnekleri yer alır.
- Arduino menüsünden
Sketch -> Include Library -> Add .ZIP Library...seçeneğini belirleyin. - İndirdiğiniz TensorFlow Arduino Kitaplığı'nı
.zipekleyin.
2. LSM9DS1 Arduino Kitaplığı
Bu kitaplık, Arduino Nano 33 BLE Sense'inizdeki LSM9DS1 IMU'dan ivme ölçer, manyetometre ve jiroskop değerlerini okumanıza olanak tanır.
- Arduino menüsünden
Sketch -> Include -> Manage Libraries...seçeneğini belirleyin. "Arduino_LSM9DS1"uygulamasını arayıp yükleyin.
5. Örneği yükleme ve oluşturma
1. Örneği yükleyin
Örnek kodu yüklemek için Arduino menüsünden File -> Examples -> Arduino_TensorFlowLite -> magic_wand simgesini seçin.

Bu işlem, sihirli değnek kaynak kodunu yükler.

2. Örneği oluşturma
Taslak penceresinde Upload düğmesini tıklayın.

Birkaç dakika sonra, yükleme işleminin tamamlandığını belirten kırmızı bir metin görürsünüz. Yükleme sırasında sağ LED parlayıp söner ve sonunda kararır.

6. Demo
Sihirli değnek şu anda aşağıda gösterildiği gibi 3 hareketi algılayabilir: 
- Kanat: Sol üst köşeden başlayarak "W" harfini iki saniye boyunca dikkatlice çizin.
- Halka: Dikey olarak başlayın, asayı bir saniye boyunca saat yönünde daire şeklinde hareket ettirin.
- Eğim: Değneği LED'leri size bakacak şekilde yukarı doğru tutarak başlayın. Çubuğu eğimli bir şekilde sola doğru, ardından bir saniye boyunca yatay olarak sağa doğru hareket ettirin.
Aşağıdaki resimde iki hareket gösterilmektedir. Önce bir eğim, ardından bir kanat (bunu demoda referans olarak kullanın).

Demoyu çalıştırmak için aşağıdaki talimatları uygulayın:
- USB takılıyken Arduino menüsünden
Tools -> Serial Monitorsimgesini seçin. Başlangıçta çıktı içermeyen boş bir ekran açılır.

- Yukarıdaki şekillerin her birini dikkatlice izlemek için Arduino mikro denetleyiciyi hareket ettirin ve seri monitörün hareketi algılayıp algılamadığını kontrol edin.

- Seri monitördeki çıkıştan, sihirli değneğin gerçekten de tüm şekilleri algıladığını görüyoruz. Ayrıca sağdaki LED'in yandığını da fark edeceksiniz.
7. Sonraki Adımlar
Tebrikler, Arduino mikrodenetleyicisinde ilk hareket tanıma özellikli "sihirli değneğinizi" başarıyla oluşturdunuz.
Mikro denetleyiciler için TensorFlow Lite ile geliştirme konusundaki bu kısa girişten keyif aldığınızı umuyoruz. Mikro denetleyicilerde derin öğrenme fikri yeni ve heyecan verici. Bu nedenle, denemeler yapmanızı öneririz.
Referans belgeler
- Temel programla çalışma deneyimi kazandığınıza göre kendi modelinizi eğitebilirsiniz.
- Mikro denetleyiciler için TensorFlow Lite hakkında daha fazla bilgi edinin ( Web sitesi, GitHub).
- Diğer örnekleri deneyin ve destekleniyorsa Arduino'da çalıştırmayı deneyin.
- Diğer codelab'i deneyin: TensorFlow Lite ve SparkFun Edge ile mikro denetleyicide yapay zeka
- Küçük cihazlarda makine öğrenimini tanıtan ve çeşitli eğlenceli projeleri adım adım açıklayan TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low Power Micro-Controllers adlı O'Reilly kitabına göz atın. Bu codelab, söz konusu kitabın 11. Bölümüne dayanmaktadır.

Teşekkürler, keyifli bir şekilde içerik üretmeye devam etmeniz dileğiyle.