N mikrodenetleyiciden (N> = 2 MCU) oluşan bir sistem uygulamaya başlamak istiyorum, ancak bir diğeriyle iletişim kurmalarına olanak tanımak istiyorum.
İdeal olarak, (N-1) mikrodenetleyicileri evin içinde istemci olarak görev yaparken, sonuncusu ("sunucu") USB ile bir PC'ye bağlanır. Şu anda sahip olduğum problemler bu (N-1) mikrodenetleyicileri "sunucu" ya nasıl bağlayacağım. İstemciler MCU'ları çok basit görevler yerine getirir, bu nedenle sadece CAN / PHY-MAC sağladıkları için böyle basit işler yapmak için ARM'leri kullanmak iyi bir çözüm olmayabilir .
İletişim, çoğu cihaz için birkaç dakikada bir defadan fazla ve başkaları için talep üzerine gerçekleşmeyecektir. Hız çok kritik değil (mesaj kısa): 1 Mbit / s Sanırım benim için WAY overkill.
Kullanmayı planladığım MCU'lar şunlardır.
- Atmel AVR Küçük / Mega
- TI MSP430
- ARM Cortex M3 / M4
- (Muhtemelen Atmel AVR UC3 - 32 bit)
Mümkünse PIC'lerden kaçınmak istiyorum (kişisel seçim), çünkü bunları programlamak için daha az olasılık vardır (yukarıdakilerin hepsinin az ya da çok açık kaynak aracı ve bazı resmi araçları vardır).
Bazı ARM'lerin CAN işlevi sağladığını biliyorum ve diğerleri hakkında o kadar emin değilim.
Şu anda bu olasılıkları buldum:
- Veri göndermek için basit GPIO (mesajın başlangıcını belirtmek için YÜKSEK> 16 bit, mesajın sonunu belirtmek için DÜŞÜK> 16 bit). Bununla birlikte, tüm bitleri algılayabilmek için standart bir frekansta << (frekans_sayı, frekans_server) olmalıdır. İstemci MCU'su başına yalnızca bir kablo gerekir.
- RS-232 : Bunun en yaygın kullanılan iletişim protokolü olduğunu düşünüyorum, ancak ne kadar iyi ölçeklendiğini bilmiyorum. Şu anda en fazla 64 müşteri MCU'sunu düşünüyorum (muhtemelen daha sonra)
- USB: AFAIK bu çoğunlukla RS-232'ye benziyor, ancak bu durumda çok iyi ölçeklendiğini sanmıyorum (USB birçok cihazı desteklese de - doğru hatırlıyorsam 255 - bu uygulama için aşırı karmaşık olabilir)
- RJ45 / Ethernet: Gerçekten kullanmak istediğim şey bu, çünkü uzun mesafelerde sorunsuz bir şekilde iletime izin veriyor (en azından korumalı> Cat 6 kablosu ile). Sorun maliyettir (PHY, MAC, transformatör, ...). Gerçi evde iyi lehimleme yapabiliyor musunuz bilmiyorum. Bu şekilde bir müşteri MCU'suna ihtiyacım olmaz
- Kablosuz / ZigBee : modüller çok pahalıdır, ancak masanın arkasında "spagetti" den kaçınmanın yolu olabilir
- RF modülleri / alıcı-vericiler: 300 MHz - 1 GHz bandındakilerden bahsediyorum, bu yüzden evde lehimlemek zor olmalı. Modüllerin hepsi yerleşiktir, ancak ZigBee kadar pahalıdırlar (en azından RF'in Mouser'daki modülleri, Sparkfun'da daha ucuz olanları var gibi görünüyor).
- YAPABİLMEK? Çok sağlam görünüyor. Otomotiv uygulamalarında kullanmayı düşünmeme rağmen, yine de iyi bir alternatif olabilir.
- I²C / SPI / UART ? Yine - mümkünse kablolarla "spagetti" den kaçının
- PLC'ler gerçekten bir seçenek değildir. Uzunluk arttıkça ve güç şebekesinin kapasitans yüküne bağlı olarak performans oldukça hızlı düşer. Fiyat açısından Ethernet ile aynı olduğunu düşünüyorum.
Ayrıca, eşzamanlı iletim durumunda hangi protokol "daha iyi" olacaktır (diyelim ki aynı anda iki cihazın iletimine başlaması nadirdir: hangi protokol en iyi "çatışma yönetim sistemi" / "çarpışma yönetim sistemini" sağlar?
Özetlemek gerekirse : Hem esnekliği (maksimum cihaz sayısı, çakışma / çarpışma yönetim sistemi, ...) hem de fiyatı göz önünde bulundurarak çok hafif veri iletişimi yapan dağıtılmış bir istemci sistemi için en iyi çözümün ne olabileceğini duymak isterim , evde yapmak kolay (lehimleme), ... Ben sadece iletişim modülü üzerinde 20 $ harcamaktan kaçınmak istiyorum, ama aynı zamanda masanın arkasında 30 tel olması emmek olacaktır.
Şu anda görüntülediğim çözüm, GPIO veya RS-232 ile yakın MCU'lar arasında temel iletişim ( ucuz !) Yapmak ve sunucu ile iletişim kurmak için "bölge" başına bir MCU'da Ethernet / ZigBee / Wi-Fi kullanmak ( pahalı) olacaktır. ancak yine de her istemci MCU'su başına bir Ethernet modülünden çok daha ucuzdur).
Kablolar yerine fiber optik / optik fiberler kullanmak da mümkün olabilir. Ek dönüşümler gerekli olsa da ve bu durumda en iyi çözüm olup olmadığından emin değilim. Onlar hakkında ek ayrıntılar duymak istiyorum.