Arduino geliştirme vs nRF51 geliştirme

Aslında, bir ATmega328P , bazı sensörler ve BLE radyo olarak nRF51822 kullanarak Arduino uyumlu bir proje geliştirmek için bir fikrim vardı. Ben ilerledikçe, ben Arduino uyumlu gereksinimi rahatlamış olsaydım, aslında daha iyi bir MCU (32-bit, daha fazla bellek, daha hızlı, daha fazla olduğu gibi, ATmega328P ile uzak ve nRF51822 doğrudan üzerine uygulama yazabilirsiniz SPI, I2C ve TTL dizileri, vs.) nRF51822 için yerel uygulamalar yazmayı bilmiyorum ama çok daha karmaşık görünüyor.

Her iki platformda da deneyime sahip biri için, radyo için uygulama için bir ATmega328P + nRF51822 kullanarak ve hem uygulama hem de radyo için nRF51822'yi kullanmanın bazı alışkanlıklarını listeleyebilir misiniz?

0
Bu bazen beni rahatsız ediyor. O anda "slave ethernet modülü" nin 256kb sram ile 88MHz x86 CPU üzerinde Linux çalıştırdığını anlıyorsunuz. Ve minik MCU'nuzun usta (ve 10x daha ucuz) olduğunu anlıyorsunuz.
katma yazar dotnetengineer, kaynak

1 cevap

İlk olarak, Arduino ortamının NRF51822'ye ait çeşitli portları var, ama bunu Nordic'in kod tabanı veya mbedisini kullanarak anı ve adresi bir kenara bırakacağım.

Genel olarak konuşursak, bu yollardan biri, ARM korteks parçalarının başrolü oynadığı profesyonel düzeyde gömülü gelişimin mevcut “gerçek dünyası” na daha fazla katkıda bulunacaktır. Arduino IDE'nin bir şeyler yapmak için geliştirdiği oldukça garip bir yoldan ziyade Makefile veya açık IDE yapılandırması gibi daha sıradan araçlar tarafından birbirine bağlanan geleneksel çoklu kaynak dosya projelerine sahip olacaksınız. Yazacağınız temel alt seviye API'lar çok daha geleneksel olacaktır - yani kodunuz setup() ve loop yerine main() içinde başlayacaktır.() , Arduino tipi print() / println yerine printf() veya benzer şekilde biçimlendirilmiş üye işleviyle hata ayıklama iletileri oluşturacaksınız() (elbette bazı kurulumlarla birlikte Arduino'da printf() komutunu kullanabilirsiniz. Bu, bu ve diğer gömülü sistemler arasında veya hatta gömülü bir sistemle ve onunla iletişim kurarak veya simüle eden bir telefon veya masaüstü arasında bağlantı kurmak veya paylaşmak için çok daha kolay hale gelir. Elbette bir Arduino'yu basit bir ATmega olarak ele alabilir ve bunu CPU ve hafızalarının sınırlarına kadar yapabilirsiniz.

İnsanlar, mbed seçeneğini belirli kartlar için bir çevrimiçi "oyuncak" olarak düşünmeye eğilimlidir, ancak genellikle aynı MCU'yu benzer bir şekilde kullanan bir tahta için ayarlayarak başkalarını da kullanabilirsiniz. Ve çoğu durumda, bir makefile ile bir projenin zip dosyasını indirebilirsin, bu da arm-gcc'i veya birkaç tane daha derleyici seçenini yönlendirecek. NRF51822, farklı yerleşik depolama boyutlarına sahip çeşitlerde gelir ve bu bazen linker komut dosyasına dikkat ve dikkat gerektirir - birkaç durumda çevrimiçi yapıya uyan bir projedir (görünüşte Keil derleme motoru ile desteklenir) yığın boyutunu azaltmak ya da belki de derleyici optimizasyon seviyelerini değiştirmek için linker komutunu ayarlamadıkça, indirilen GCC yapılandırmasını oluşturun.

I/O çevre birimlerine veya onun 5v I/O yeteneğine ihtiyacınız varsa, ATmega tutmaya neden olabilecek sayma nedenleri olurdu. Örneğin, NRF51822, bir ATmega ile karşılaştırıldığında sınırlı bir donanım PWM yeteneğine sahiptir, bu yüzden genellikle yazılımda yapılması gerekir.

Eğer gerçekten evinizde "Arduino Yolu" ile daha geleneksel olan bir şeye geçiyorsanız, bazı düşünce ve alışkanlıkların ayarlanması gerekebilir. Öte yandan, Arduino'nun faydalanabileceği çeşitlilikteki çalışmaların çeşitliliğine bakacak olursanız, bir projenin olasılığını araştırmak için kullanabileceğiniz kolayca değiştirilebilen örneklerdir, ancak genellikle kendinizin mirasından rahatsız olursunuz. uzun vadede sayısız tuhaflıkları ve atipik yaklaşımları, o zaman muhtemelen NRF51822'yi kullanmaya değecek bir uyarlamayı bulacaksınız.

0
katma
Bu işe yarayacak gibi görünüyor, evet. Zorluğunuzun çoğu, çevre birimlerine hizmet vermek için organize kodun belirlenmesinde ve bunun BLE ile nasıl bütünleştirildiği veya radyodan ne tür bir kullanım yaptığınız konusunda olacaktır.
katma yazar rossp, kaynak
Teşekkür ederim. Benim uygulamada en az bir GPS, bir IMU, bir microSD adaptörü ve belki sıcaklık/barometrik sensörler eklemek istiyorum. Bunlar tüm UART, I2C ve SPI arayüzlerini alır. PWM'ye gerek yok. Daha karmaşık bir kalkınma pahasına ekstra bir IC'ye olan ihtiyacı ortadan kaldırmak için makul bir yol olabilir mi?
katma yazar Will Phillips, kaynak