
Arduino’ya alternatif olarak güçlü bir mikrodenetleyici mi arıyorsunuz? Neden Arduino IDE ile programlanabilen ATSAMD21’i düşünmüyorsunuz?
SAMD21 Nedir?

Atmel’in ATSAMD21’i, düşük güç tüketimi ve yüksek performansa sahip Microchip’in ARM® Cortex®-M0+ tabanlı flaş mikrodenetleyicisidir. İşte özellikleri:
- 256KB flaş ve 32KB SRAM
- 48MHz Çalışma Frekansı
- Tam Hız USB cihazı ve gömülü ana bilgisayar
- 120’ye kadar dokunmatik kanal desteği
- 1.62V ile 3.63V güç kaynağı
- UART/USART, SPI veya I2C olarak yapılandırılabilen altı seri iletişim modülü (SERCOM), üç 16-bit zamanlayıcı/sayıcı, 32-bit Gerçek Zamanlı Saat ve takvim, 20 PWM kanalı, bir 14-kanallı 12-bit ADC, bir 10-bit DAC
Gördüğünüz gibi, bu, daha eski 8-bit/16MHz Arduino mikrodenetleyicilerine kıyasla çok güçlü bir mikrodenetleyici. Ne kadar güçlü olduklarını göstermek için, onları ATmega328P ile yan yana karşılaştırdık:

| Özellikler | ATSAMD21G18A | ATmega328p |
| Mimari | ARM® Cortex®-M0+ | AVR |
| Veri Yolu Boyutu | 32 Bit | 8 Bit |
| CPU Hızı | 48MHz | 20MHz |
| Flaş | 256KB | 32KB |
| SRAM | 32KB | 2KB |
| EEPROM | 32KB | 1KB |
| Voltaj Aralığı | 1.62V ile 3.63V | 1.8V ile 5.5V |
| GPIO Sayısı | 38 | 23 |
| ADC Kanalları | 14 | 8 |
| ADC Çözünürlüğü | 12 Bit | 10 Bit |
| USB Kontrolörü | ✔ | ✖ |
| Dijitalden Analoge Dönüştürücü (DAC) | ✔ | ✖ |
| Peripheral Touch Controller | ✔ | ✖ |
| Doğrudan Bellek Erişimi (DMA) | 12 Kanallar | ✖ |
Yukarıdaki tablodan, ATSAMD21’in hemen hemen her faktörde öne çıktığını görebilirsiniz. Ancak, bu ATmega328p’nin o kadar kötü olduğu anlamına gelmiyor! ATmega328p, sorun giderme için daha büyük bir topluluğa sahip olmak, iyi belgelenmiş olmak, daha basit kullanıma sahip olmak gibi birkaç avantaja da sahiptir ve 5V’da çalışabilmektedir.
Öte yandan, daha iyi bir mikrodenetleyici arıyorsanız, SAMD21 kesinlikle aynı fiyat aralığında iyi bir alternatif olacaktır!
İkna olmadınız mı? İşte SAMD21’i kullanmanız için birkaç neden daha:
Neden SAMD21 Kullanmalısınız?
Büyük Bellek ve Hızlı Çalışma Hızı
Arduino UNO’nuzdaki depolama sınırlarıyla mı kısıtlandınız? Ya da diğer mikrodenetleyicilerin çalışma hızlarının çok yavaş olduğunu mu hissediyorsunuz? SAMD21 tüm sorunlarınızı çözecektir.
SAMD21’in 256KB flaşı, yalnızca 32KB’lık bir alana sığdırmak zorunda kalmayacağınız anlamına gelir. Ayrıca, ekstra flaş depolama, mikrodenetleyicinizde büyük, kullanıcı tanımlı veri blokları depolamanıza da olanak tanır. Dinamik bellek yığın taşmalarından endişelenmenize gerek kalmadan 32KB SRAM’a sahip olduğunu da belirtmek gerekir.
Ayrıca, SAMD21’in maksimum CPU hızı 48MHz olduğundan, çalışma hızları artık bir endişe kaynağı olmayacak.
Duyarlı Voltaj Ölçümleri
SAMD21, ATmega328p’deki 10-bit’e kıyasla 12-bit çözünürlüğe sahip 14 ADC giriş pinine sahiptir. Artan çözünürlük, 0 ile 4095 arasındaki her bir bitin 3.3V’ta işlemci çalıştığında 0.806mV’yi temsil etmesi anlamına gelir, bu da daha duyarlı bir voltaj ölçümü sağlar.
Entegre USB Kontrolörü
ATSAMD21, bir USB cihazı veya ana bilgisayar olarak kullanılabilen entegre bir USB kontrolörü ile donatılmıştır.
Bir USB cihazı olarak, bir klavye, fare veya joystick vb. taklit edebilir. Kendini bir USB iletişim cihazı sınıfı olarak yapılandırabilir ve bir bilgisayara bağlayarak onunla seri port olarak iletişim kurabilirsiniz.
Öte yandan, bir USB ana bilgisayarı olarak, ATSAMD21 bir fare veya klavye bağlayabilir veya bir USB bellek sürücüsüne veri kaydedebilir.
RTC (Gerçek Zamanlı Saat) entegre
Dijital saatiniz veya PID döngünüz için hassas zaman tutma mı gerekiyor? ATmega328’in entegre bir RTC’si olmasına rağmen, zaman tutma için gereklidir. SAMD21’in de ayrı bir on-board kristal tarafından beslenen bir RTC’si vardır ve işlemciyi 48MHz’de çalıştırmaya devam eder.
Yapılandırılabilir Seri Arayüzler
Bu, SAMD’yi bu kadar özel kılan en benzersiz özelliklerden biridir. Altı yapılandırılabilir seri arayüze sahiptir ve bunlar UART, I2C ana, I2C köle, SPI ana veya SPI köle olarak dönüştürülebilir.
Bu özellik sayesinde, portlar çoklayıcı olarak kullanılabilir, bu da her pinin hangi görevi üstleneceği konusunda size çok fazla esneklik sağlar.
SAMD21 Arduino ile Başlarken
Öncelikle başlamanız için bir SAMD21 Kartına ihtiyacınız olacak. Seeed’de, maliyet açısından etkili 3 adet SAMD21 Arduino uyumlu kartımız var:
Seeeduino Cortex-M0+

- Seeeduino Cortex-M0+, 32-bit ARM® Cortex®-M0+ işlemcisine dayanan Atmel SAMD21 MCU’ya sahiptir.
- Bu güçlü çekirdek sayesinde, SAMD21 AVR’den çok daha güçlüdür ve AVR yongalarında uygulanamayan birçok işlev ve daha karmaşık hesaplamalar gerçekleştirebilir.
- Seeeduino Cortex-M0+, 14 dijital I/O (10 PWM çıkışı) ve 6 analog I/O dahil olmak üzere, Seeeduino Lotus Cortex-M0+ ile aynı başlık pin düzenine sahiptir. Bu arada, 2 I2C ve 1 UART olmak üzere 3 yerleşik Grove konektörü sağlar. Daha fazla grove portuna ihtiyacınız varsa, bu kartla çalışmak için bir Base Shield V2 kullanabilirsiniz.
- Üstelik, Seeeduino Cortex-M0+, USB tip C arayüzüne sahip ilk Seeeduino geliştirme kartıdır. USB Tip C, geleceğin trendidir: fişler ters çevrilebilir, daha yüksek veri transfer hızı ve daha ölçeklenebilir işlevler sunar.
- Seeeduino Cortex-M0+ pin düzeni ve donanım genel bakışı için Wiki’mizi buradan kontrol edebilirsiniz!
Seeeduino Lotus Cortex-M0+

- Seeeduino Lotus Cortex-M0+, SAMD21 mikrodenetleyici geliştirme kartıdır. Atmel® | SMART™ SAM D21, 256KB Flash ve 32KB SRAM ile 32-bit ARM® Cortex®-M0+ işlemcisini kullanan düşük güç tüketimli mikrodenetleyiciler serisidir. Seeeduino Lotus Cortex-M0+’ı Seeeduino ve Base Shield’in bir kombinasyonu olarak düşünebilirsiniz.
- Seeeduino Lotus Cortex-M0+, 14 dijital giriş/çıkış (10’u PWM destekler) ve 6 analog giriş/çıkış, 3 Seri İletişim Arayüzü, bir mikro USB konektörü, bir JST2.0 Li-Po konektörü, bir ICSP başlığı, 12 Grove konektörü ve bir reset düğmesi içerir.
- Seeeduino Lotus Cortex-M0+, Seeeduino Lotus V1.1‘in geliştirilmiş bir versiyonudur, daha güçlü bir çip ile değiştirilmiş, devre düzeni optimize edilmiş ve güç kaynağı daha stabil hale getirilmiştir. Bu çip doğrudan USB seviye çıkışını desteklediği için, CP2102N gibi bir seri porttan USB çip kullanmaya gerek yoktur. Bu nedenle, kullanıcıya bir tane daha donanım seri portu sunulmaktadır.
- Seeeduino Lotus Cortex-M0+ donanım genel bakışı ve pin düzeni için wiki’mizi buradan kontrol edebilirsiniz!
Wio Lite MG126 – ATSAMD21 Cortex-M0 Mavi Kablosuz Geliştirme Kartı

- Wio Lite MG126, yerleşik MG126 Bluetooth Modülü ile maliyet etkin bir SAMD21 tabanlı geliştirme kartıdır. SAM D21, ARM Cortex-M0+ tabanlı bir mikrodenetleyici olup, MG126 ise 2.4GHz tek modlu Bluetooth alıcı-verici modülüdür.
- Ayrıca, bu kart Arduino Zero ile uyumludur ve Adafruit Feather serisi ile aynı uyumlu form faktörüne sahiptir.
- SAM D21’in 3.3V I/O pinlerini çıkardık, SAM D21 çipi zengin I/O kaynaklarına sahiptir; 14 dijital pin, 6 analog pin, 1 UART portu, 1 I2C portu ve 1 ICSP portu içerir.
- Bir JST2.0 Li-Po pil portu vardır, bu kartı beslemek için 3.5V veya 4.2V Li-Po pili kullanabilirsiniz.
- Şimdi, Bluetooth Çekirdeği olan MG126’dan bahsedelim. MG126, yazılım ile yapılandırılabilir kayıtları, gömülü paket işleme motoru ile 2.4GHz BLE RF alıcı-verici modülüdür.
- Ultra düşük güçle çalışabilir. MG126’nın Bluetooth hava veri hızı 1Mbps’dir ve MG126, SPI arayüzü üzerinden Arduino çekirdeği ile 4Mbps hızında iletişim kurabilir.
Seeeduino Kartları için Adım Adım Talimatlar
Seeeduino Cortex-M0+ veya Seeeduino Lotus Cortex-M0+ kullanmaya karar verirseniz, bu eğitim sizin için! Değilse, Wio Lite MG126 için eğitimi görmek için aşağı kaydırın!
Adım 1: Gerekli malzemeleri hazırlayın
Şunlara ihtiyacınız olacak:
- Seeeduino Cortex-M0+ / Seeeduino Lotus Cortex-M0+
- Tip C kablosu (Seeeduino Cortex M0+ için) / Mikro USB Kablosu (Seeeduino Lotus Cortex M0+ için)
- Bilgisayar
Adım 2: Arduino IDE’yi indirin
Başlamadan önce, kartı programlamak için bir Arduino Yazılımına ihtiyacınız olacak. İndirmeyi tamamladıktan sonra uygulamayı başlatın.
Adım 3: Seeeduino’nuzu bağlayın
Seeeduino’nuzu USB kablosu ile bilgisayarınıza bağlayın. Başarıyla bağlandığında mavi güç LED’i (PWR olarak etiketlenmiş) yanmalıdır.

Adım 4: Arduino IDE’de Blink Örneğini açın
Arduino IDE’nizde LED blink örnek taslağını açın: Dosya > Örnekler > 01. Temel > Blink

Adım 5: Seeed kartınızı ekleyin
Lütfen Seeed Kartı Kurulum Kılavuzu takip edin ve samd_zero / lotus M0 anahtar kelimesini arayarak Seeeduino Cortex-M0+ / Seeeduino Lotus Cortex-M0+ Arduino IDE’nize ekleyin.


Adım 6: Kartınızı ve portunuzu seçin
’Arduino’nuzla ilişkili olan Araçlar > Kart menüsündeki girişi seçmeniz gerekecek. Seeeduino Cortex-M0+ veya Seeeduino Lotus Cortex-M0+ seçin.

Arduino kartının seri cihazını Araçlar | Seri Port menüsünden seçin. Bu muhtemelen COM3 veya daha yüksek olacaktır (COM1 ve COM2 genellikle donanım seri portları için ayrılmıştır). Bunu öğrenmek için, Arduino kartınızı çıkarabilir ve menüyü yeniden açabilirsiniz; kaybolan giriş, Arduino kartı olmalıdır. Kartı yeniden bağlayın ve o seri portu seçin.

Adım 7: Programı yükleyin
Şimdi, ortamda “Yükle” butonuna tıklayın. Birkaç saniye bekleyin ve yükleme başarılı olursa, durum çubuğunda “Yükleme tamamlandı.” mesajı görünecektir.

Yükleme tamamlandıktan birkaç saniye sonra, karttaki pin 13 (L) LED’inin yanıp sönmeye başladığını görmelisiniz. Eğer öyleyse, tebrikler! Arduino’yu çalıştırmayı başardınız.
Wio Lite MG126 için Adım Adım Talimatlar
Bu, Wio Lite MG126 – ATSAMD21 Cortex-M0 Mavi Kablosuz Geliştirme Kartı için adım adım bir öğreticidir!
Adım 1: Gerekli malzemeleri hazırlayın
Şunlara ihtiyacınız olacak:
- Wio Lite MG126
- Type C kablosu
- Bilgisayar
- Jumper
Adım 2: İlgili malzemeleri indirin
Başlamadan önce, lütfen Google/Apple Store’dan nRF Connect uygulamasını indirin. nRF Connect, standart Bluetooth protokolü işlevleri ile uyumludur, tüm örnekler bu uygulama temelinde test edilmiştir.
Ayrıca, kartı programlamak için bir Arduino Yazılımına ihtiyacınız olacak. İndirmeyi tamamladıktan sonra uygulamayı başlatın.
Adım 3: Wio Lite MG126 Kartını Arduino IDE’ye ekleyin
Arduino IDE’nizi açın, Dosya > Tercihler üzerine tıklayın ve aşağıdaki URL’yi Ekstra Kart Yöneticisi URL’lerine kopyalayın.
https://raw.githubusercontent.com/Seeed-Studio/Seeed_Platform/master/package_seeeduino_boards_index.json

Araçlar > Kart > Kart Yöneticisi üzerine tıklayın. Kartı adıyla arayın, sadece Seeeduino_Wio_Lite_MG126 anahtar kelimesini arayın ve ilgili kartı yükleyin.

Adım 4: Kartınızı ve portunuzu seçin
Arduino’nuzla ilgili olan Araçlar > Kart menüsündeki girişi seçmeniz gerekecek ve Wio Lite MG126‘yı seçin.

Arduino kartının seri cihazını Araçlar | Seri Port menüsünden seçin. Bu muhtemelen COM3 veya daha yüksek olacaktır (COM1 ve COM2 genellikle donanım seri portları için ayrılmıştır). Bunu öğrenmek için, Arduino kartınızı çıkarabilir ve menüyü yeniden açabilirsiniz; kaybolan giriş Arduino kartı olmalıdır. Kartı yeniden bağlayın ve o seri portu seçin.
Wio Lite MG126 kartını seçmeden önce MG126 örneklerini Dosya > Örnekler sekmesinde bulamayabilirsiniz. Kartı seçtiğinizde, örnekler burada görünecektir.
Adım 5: Demo’yu açın
Dosya > Örnekler > Seeeduino Wio Lite MG126 için Örnekler > wio_lite_ble > örnek > analog_output üzerine tıklayın.

Arduino IDE’nin geçici olarak statik kütüphanelerle uyumsuz olduğunu belirtmek önemlidir (Bluetooth protokol yığınımız bir statik kütüphane olarak derlenmiştir), örnek Bluetooth kütüphanesini kullandığında aşağıdaki yapılandırmanın değiştirilmesi gerekmektedir.
- Şu klasördeki
platform.txtdosyasını açın:
C:\Users\$(USER_NAME)\AppData\Local\Arduino15\packages\Seeeduino\hardware\Seeeduino_Wio_Lite_BLE\1.0.0\platform.txt
- 75. ve 76. satıra gidin.
##recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nano.specs --specs=nosys.specs {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} -Wl,--start-group {compiler.arm.cmsis.ldflags} -lm "{build.path}/{archive_file}" -Wl,--end-group
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nano.specs --specs=nosys.specs {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} {compiler.libraries.ldflags} -Wl,--start-group {compiler.arm.cmsis.ldflags} -lm "{build.path}/{archive_file}" -Wl,--end-group
- Örnek programda bir Bluetooth kütüphanesi çağrılıyorsa, 75. satırın önüne
##eklemeniz gerekir (yani, satırı yorumlayın), aynı zamanda 76. satırın önündeki##‘yı silmeniz gerekir (yani, yorumdan çıkarın). Tersine, eğer Bluetooth kütüphanesi çağrılmıyorsa, ancak SAM D21 geliştirme kartının temel işlevi kullanılıyorsa, işlem tersine çevrilir.
Bu klasörde 7 demo bulabilirsiniz. button/get_bat_vol demoları Bluetooth kütüphanesini kullanmaz, geri kalanları kullanır.

| Demo Adı | Fonksiyon | Cihaz Bilgisi |
|---|---|---|
| analog_output | Geliştirme kartındaki analog değer Bluetooth üzerinden alınır ve mobil uygulamada görüntülenir. | Wio_BLE_Analog |
| button | Kullanıcı düğmesine basın ve seri monitörde yazdırın. | |
| echo_ble | Bluetooth echo sunucusu, yani mobil telefon geliştirme kartı tarafından gönderilen verileri alır. | Wio_Lite_BLE |
| get_bat_vol | Harici batarya voltajını alın | |
| rgb_led_matrix_control | Grove – RGB LED Matrisini kontrol edin ve görüntüleyin | Wio_Led_matrix |
| serial_transparent_transmission | Seri port verileri şeffaf bir şekilde iletilir, yani mobil telefon tarafından gönderilen veriler geliştirme kartının seri portundan gönderilir ve geliştirme kartının seri portuna gönderilen veriler mobil telefona iletilir. | Wio_Lite_Serial |
| temp_humidity | Grove – I2C Yüksek Hassasiyetli Sıcaklık ve Nem Sensöründen (SHT35) bilgileri alın ve telefonunuza gönderin. | Wio_BLE_T&H |
Adım 6: Programı yükleyin
Şimdi, ortamda “Yükle” butonuna tıklayın. Birkaç saniye bekleyin ve yükleme başarılı olursa, durum çubuğunda “Yükleme tamamlandı.” mesajı görünecektir.

İşlem tamamlandığında Yükleme Tamamlandı bilgisi Arduino IDE’nin sol alt köşesinde belirecektir.
Adım 7: Telefonu kullanarak MG126’ya bağlanın
nRF Connect uygulamasını açın, SCANNER üzerine tıklayın ve sayfadaki Cihaz Bilgisi adını arayın. Farklı demoların farklı Cihaz Bilgileri vardır, ve analog_output’un karşılık gelen Cihaz Bilgisi Wio_BLE_Analog‘dır.
Bu nedenle, lütfen Bluetooth cihaz listesinde Wio_BLE_Analog‘ı seçin. BAĞLAN üzerine dokunun, ardından Otomasyon IO > Analog üzerine tıklayın ve A0 pininin değeri görüntülenecektir.

Bluetooth’un önbellekleme işlevi nedeniyle, Bluetooth’un özellik değerini her değiştirdiğinizde (yani, farklı Bluetooth işlevlerini kullanan örneği indirdiğinizde), uygulamanın önbelleğini bir kez temizlemeniz gerekir, ayrıca telefonu yeniden başlatmanız gerekir.
Ve işte bu kadar! Aşağıda işlev arayüzü bulunmaktadır:
WiFi işlev arayüzü
- Bluetooth paket sınıfı
MG126_Ble
- Bluetooth protokol yığınını başlatın ve Bluetooth’u açın
MG126_Ble .ble_init();
- Bluetooth üzerinden mesaj raporlama
sconn_notifydata();
Bunlar sadece birkaç yaygın arayüz! Diğer arayüzleri görmek isterseniz, örneklere göz atabilirsiniz.
Özet
SAMD21 ile Arduino ve ARM’lerin birlikte çalışmasıyla çok daha fazlasını yapabilirsiniz! SAMD21 hakkında ne düşünüyorsunuz? Aşağıdaki yorumlarda bize bildirin!

