Pille çalışan veri toplama projesi için mikrodenetleyici seçme


18

Su seviyesini yaklaşık 10 m derinliğinde ve maksimum su seviyesi 5 m'ye kadar olan bir kuyuda ölçmeyi planlıyorum. Planım derinliği ölçmek için ultrasonik sensör HC SR04 kullanmak , ZigBee aracılığıyla evimin içindeki bir Raspberry Pi'ye iletmek.

Benim de bahsedildiği gibi önceki soruya ben ultrason sensörü ve ZigBee modülü buluşmanızı bağlamak için bir mikro kontrolör seçmeniz gerekir.

Seçim parametreleri:

  1. Düşük güç: Bunu pille çalıştırmayı planlıyorum, bu nedenle düşük güç kullanımı bir önceliktir. Şu andan itibaren güç kullanımı için herhangi bir hedefim yok veya pil değişimleri arasında veya hatta hangi pili kullanacağım. Bu daha çok bir öğrenme projesi olduğundan ve evimde olduğundan, esnekim, ancak daha düşük güç kullanımı daha iyidir.

  2. Düşük maliyet: Bu benim için bir öğrenme projesidir ve buna aşırı miktarda para harcamak istemiyorum, bu yüzden daha düşük maliyet daha iyi.

  3. Bir kuyu içinde çalışma: Tüm proje bir kuyu içinden çalışacak ve sert güneş ışığına ve yağmura maruz kalacaktır. Yine de iyi bir dava ve koruma sağlayacağım.

  4. Kolay programlanabilir.

Basit olduğu için ZigBee'yi seçtim, kullanım durumumu ve düşük gücümü karşılar. Ama benim ihtiyacım sensör verisini taşımak ve diğer nakliyelere açıkım. Kuyudan Raspberry Pi'ye olan mesafe, aralarında bir duvar bulunan yaklaşık 6 metredir. Su pompası çalışırken (günde yaklaşık 20 dakika) su derinliğini her 10 dakikada bir ve iki kez ölçmeyi planlıyorum.


2
Bu oldukça geniş ya da belki konu dışı hissettiriyor. Karttaki küçük MCU'lar buna uygundur. Zigbee'ye karar vermediyseniz, BLE'de bulunan BBC micro: bit'e ve bir pil konektörüne bakmanızı öneririm.
Sean Houlihane

2
Bir zigbee radyosu istiyorsanız, en azından bunu bir MCU (tipik olarak ARM Cortex-M) CPU ile birleştiren parçaları değerlendirmelisiniz. Bu, o rotaya gitmeniz gerektiği anlamına gelmez, ancak buna karar vermeniz durumunda iyi bir sebep olmalıdır.
Chris Stratton

2
"Bir kuyunun içinde" ile ne demek istiyorsun? Dava su altında olacak mı? Su altında Xbee modüllerinden herhangi bir iletim veya alım beklemeyin. Birçoğu, su tarafından iyi emilen 2,4 GHz bandında çalışır; diğerleri 900 MHz civarında çalışır ve bu da muhtemelen suya çok iyi nüfuz edemez. Kasa su altında değilse, 6m + duvar xbees ile iyi olmalıdır.
Jonas Schäfer

"bir kuyunun içinde", cihazın kuyunun içine, ancak suyun üstüne yerleştirileceği anlamına gelir.
Raj

Yanıtlar:


20

Mikrodenetleyici seçiminin genel bir süreci.

  1. Mikrodenetleyiciye olan gereksinimlerinizi özetleyin. Örneğin bu durumda:

    • Tetikleyici ve yankı darbeleri arasındaki süreyi ölçmek için 1 donanım zamanlayıcısı .
    • Sensör Yankı ve Tetik pimlerini arayüzlemek için 2 GPIO pimi.
    • RF iletişim modülünü arayüzlemek için muhtemelen UART .
    • Akü voltajını izlemek için 1 ADC girişi .


    Bunun için 8 pinli bir kontrol cihazı ile birlikte çalışabilirsiniz, bu da programcı pinlerinin genel amaçlar için kullanılmasını gerektirebilir.

  2. Gerekli CPU performansını ve bellek gereksinimlerini belirleyin . 8 bit MCU kullanmak yeterli mi yoksa bunun yerine 32 bit mi gerekiyor? Hangi CPU saat hızları kabul edilebilir onlarca MHz veya 1 MHz yeterlidir? Ne kadar program belleği, RAM ve ROM gereklidir?

    Açıklanan uygulama göz önüne alındığında, yüksek bilgi işlem performansına ihtiyacınız yoktur. Muhtemelen 8 bitlik bir denetleyici yeterli olacaktır (ancak 32 bit olandan çok daha ucuz olmayacaktır, bu yüzden burada fiyata göre karar verebilirsiniz).

  3. Düşük güç . Çok önemli olmadığında, muhtemelen en düşük besleme voltajı ve sistem saat frekansı ile düşük güç modunu kullanarak hemen hemen her türlü kontrolörle anlaşabilirsiniz. Daha önemliyse, (ARM® Cortex®-M0 veya M0 + CPU çekirdekleri) gibi özel düşük güçlü MCU çekirdekleri ile başlayarak arama listenizi daraltmaya başlayabilirsiniz. Genellikle veri sayfaları, düşük güç modlarının çoğu için tablolar içerir / VCC / SysClk frekansı , daha iyileri her çevre biriminin tüketimini de listeler.

  4. Geliştirici araçları . Bunu çok önemli bir unsur olarak görüyorum. Özel donanım programcısı araçları servete mal olabilir, bu yüzden genellikle programcılarım olan MCU'lara bağlı kalırım. Başka bir aileye veya markaya geçtiğinizde, daha sonra özel kartlarınızı programlamak için kullanılabilecek yerleşik bir programlayıcıya sahip bir geliştirme kartına yatırım yapmak iyidir. Genel olarak her zaman ilk önce programları bir mikro denetleyiciye indirmenin maliyetinin ne kadar olacağını kontrol edin.

@Sean'ın yorumlarda belirttiği gibi, RF iletişim kısmını da tutarken ürün yazılımınızı çalıştırabilen entegre, programlanabilir bir uygulama MCU ile birlikte gelen bu tür RF modüllerini aramak olası ve uygun maliyetli bir çözüm olacaktır. Bu modüller BLE, WiFi ve ZigBee ve muhtemelen diğer birçok teknoloji için mevcuttur.

Ayrıca herhangi bir MCU kuyuda nasıl hayatta kalacaktır. Her şey cihaz için sağlayacağınız kasaya gelecek. Örneğin, muhafaza% 100 suya dayanıklı değilse hangi MCU'yu seçtiğiniz önemli değildir.


TL; DR; İşte ürüne özel kısım geliyor.

  1. Farnell'de 0.87 $ / 1 parçaya mal olan ATtiny25'i seçebilirsiniz . 8-bit, 8-pin çok fazla yer kaplamaz. Kapatma modunda devre dışı bekçi köpeği ile 0,2 μA, 3 V'de tüketir. Gözcü etkinse 2-4 μA. Öyle Arduino uyumlu çok size maliyeti (USBasp veya AVRdude programcı maliyetleri eBay'de 2 $ hakkında) olmaz programlama böylece. ( Unutmayın : Arduino Software Serial kütüphanesini bir RF iletişim modülünü arayüzlemek için kullanmalısınız, çünkü bu MCU'da yalnızca donanım tarafından SPI vardır.) Sonuçta küçük, ucuz, nispeten düşük güç tüketimi ile, ancak bit-UART olabilir olsa karmaşık . Sizin için yeterli olan 2 kB program belleğine sahiptir.

  2. Veya Bekleme modunda 2 μA ve Durdurma modunda 5 μA tüketen ARM Cortex M0 ile devam edin. Bu MCU, örneğin 1.09 $ / 1 parçaya mal olan STM32F030F4'tür . Maksimum 48 MHz sistem saat frekansına sahip daha güçlü bir 32 bit denetleyicidir, ancak yalnızca + 0,2 $ için görebilirsiniz. Bu basit görev için yeterli olan 16 kB program belleği ile birlikte gelir. SPI, UART, I2C ve diğer birçok çevre birimine sahiptir. Programlama daha pahalıya mal olacak, özel programcı Farnell'de 20 dolar. Bence buna değmez. Bunun yerine, yerleşik bir programcısı (ST-LINK) olan F0 ailesi için bir geliştirme kartına yatırım yapabilirsiniz . STM32F0Discovery kurulu maliyetleri ~ 10 $. Bu pano ile prototip oluşturmaya başlayabilir ve daha sonra programcı olarak kullanabilirsiniz.


3
Keşif ve nükleo kartların ST-LINK'lerinin genellikle kartın kendisinden başka MCU'lar için kullanılabileceğini unutmayın. Bu özel karttan emin değilim, ancak görünüşe göre SWD kullanıyor ve sağdaki jumper'lar kullanılarak çıkarılabilir. Bununla ilgili iyi olan şey, ST-LINK'in sadece programcılar değil, aynı zamanda devre içi hata ayıklayıcıları olması ve gelişmeyi çok kolaylaştırmasıdır .
Jonas Schäfer

3
Ayrıca, XBEE'nin yanıtlarını önemsemiyorsanız, ATtiny'nin Evrensel Seri Arabirimini kullanarak bit-bang yazılım uygulamasından daha hızlı bir UART elde edebilirsiniz.
Jonas Schäfer

3
Radyo modüllerinin sıklıkla adanmamış MCU kaynağı ile geldiğini belirtmek gerekir (ve tür onayını basitleştirmek için modüller mevcuttur). CPU tipik olarak RF yığını ile paylaşılır, bu nedenle periyodik kesintileri vb. Kabul etmeniz gerekir.
Sean Houlihane

3
ULPBENCH , düşük güçte çalışma (pil) önemli olduğunda iyi bir kaynaktır.
neonzeon

5

Programlama kolaylığı ve düşük maliyetle, muhtemelen bir çeşit Arduino modülü (veya düşük maliyetli klon) ile başlardım. Ultrasonik sensörünüzün kodu, örneğin Digi XBee modüllerini kullanarak ZigBee için örnek kod zaten var. İkincisinde, XBee'yi bir seri bağlantı noktasına bağlarsınız ve saygıdeğer eski "AT" komut arayüzüyle bağlantı kurduktan sonra, herhangi bir metni (Raspberry Pi'nize) gönderebileceğiniz bir noktadan noktaya kanalınız olur. ). ZigBee, kısa menzilli en ucuz iletişim türü değildir, ancak XBee modülleri son 5 yılda gerçek anlamda fiyatlarda düşmüştür.

Bazı insanların Arduino'da kullanılan C / C ++ tabanlı dil ile ilgili bir sorunu olduğunu biliyorum, ancak bu durumda büyük ölçüde diğer kullanıcıların zaten mevcut komut dosyalarını birleştiriyorsunuz.

"Arduino uyku modu" için Google'daysanız, Arduino'yu düşük güç moduna nasıl geçirebileceğinize dair örnekler bulacaksınız ve bir okuma almak, iletişim kurmak ve ardından uyku moduna tekrar girmek için ara sıra uyanabilirsiniz.


1
ATmega çipiyle iyi bir güç yönetimi mümkün olsa da, tipik bir Arduino kartı , pil ömrünü keskin bir şekilde sınırlandıracak parazit güç drenajlarına sahiptir.
Chris Stratton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.