İnsanlar neden bir mikro denetleyicide web sunucusu oluşturuyor?


13

Mikrodenetleyiciler kullanarak web sunucuları oluşturan insanlarla karşılaştım, neden biri bunu yapsın ki? Uygulamaları nelerdir? Bu tür sunucular oluşturmak için C dilinden başka hangi beceri setine ihtiyaç vardır? Bu kadar küçük RAM'e sahip olan bu küçük sunucuları oldukça merak ediyorum.


Bu sorular çok geniştir, lütfen belirli bir teknik soruya odaklanmaya çalışın.
Kortuk

10
Yeniden açmak için oylama. Bu soru yeterince iyi.
Nick Alexeev

"Yanıtların gerçekler, referanslar veya özel uzmanlık tarafından desteklenmesini bekliyoruz, ancak bu soru muhtemelen tartışma, tartışma, oylama veya genişletilmiş tartışma talep edecektir."
Foton

Sonunda bu kavramın endüstride nasıl kullanıldığını görebildiğime sevindim. Ancak bundan yeni bir soru ortaya çıkıyor, bir uC'de bir sunucu uygulamanın ve bir internet tarayıcısında çalışan kullanıcı arayüzü oluşturmanın işleri kolaylaştırıyor, neden birçok insan hala USB gibi daha zor yollara başvuruyor?
quantum231

@ quantum231 Yeni bir sorunuz varsa lütfen yeni bir soru sorun. :-)
Anindo Ghosh

Yanıtlar:


15

Bunu birkaç üründe yaptım. Şimdiye kadar basit saha konfigürasyonuna izin vermekti. Her seferinde ürünün ana çalışması nedeniyle ethernet'e zaten bağlanması gerekiyordu. Bu nedenle web sunucusu sadece mikrodenetleyiciye kod eklenmiştir.

Bir HTTP sunucusunun en büyük avantajı, son kullanıcıya makul bir kullanıcı arabirimi sunmak için özel bir donanım veya yazılıma gerek olmamasıdır. Herkesin zaten bir web tarayıcısı var, bu yüzden bu müşteri için rahatsız edici değil. Diğer alternatifleri düşünün. Bir RS-232 portu sağlayabilirsiniz, ancak daha sonra özel bir uygulama sağlamanız veya birine doğru baud hızı, başlangıç ​​bitleri, durdurma bitleri ve parite ile bir terminal programının nasıl kurulacağını açıklamanız gerekir. Ayrıca bir kablo sağlamanız veya müşterinin bir kabloya sahip olmasını ve birisinin birime gitmesi ve fiziksel olarak kabloya bağlanması gerektiğini ummanız gerekir. USB aynı yapılandırma sorununa sahip değildir, ancak genellikle üründe tamamen ayrı bir mikro anlamına gelir ve orada müşterinin sahip olabileceği her platformda çalıştırmak için özel bir programa ihtiyacınız vardır.

RAM gelince, bu bir HTTP sunucusu için sorun değil. TCP protokol yığını bir miktar RAM'e ihtiyaç duyar, ancak ağ yığınından gerektirebilecek ekstra kaynaklar dışında HTTP sunucusu gerçekten gerekmez. Bir web sunucusu çoğunlukla ROM alanına ihtiyaç duyar, çünkü her sayfanın çoğu sabittir, genellikle birkaç değer metne dönüştürülür ve anında eklenir. Küçük mikrolar için web sunucuları, ROM dosya sistemleriyle çalışır ve önceden tanımlanmış birkaç yere eklemek için özelleştirilebilir dizeler oluşturmak üzere uygulama kodunuzun çağrılmasına neden olan bu dosyalarda kaçış dizileri oluşturur.

Şimdiye kadar tüm bu durumlarda PIC 18 kullandım. 4 kbayttan daha az RAM bir sınırlama olsa da, yapabileceğiniz çok şey var. ROM alanı bir soruna yakın bile değildi. PIC 18 için ağ yığınım ( www.embedinc.com/pic/dload.htm adresindeki PIC Geliştirme Araçları sürümümde mevcut), 18F67J60'ın ROM alanının yalnızca küçük bir kısmını alıyor. tam bir ethernet MAC / PHY yerleşik vardır. Bir durumda bu PIC 6 eşzamanlı TCP bağlantısı için bir sunucu var. İnsanların düşündüğü kadar ağır değil.


Birçok basit web sunucusunun, bir istek aldıklarında, isteğe yanıt olarak gönderecekleri her şeyi hemen göndereceklerini, bağlantıyı kapatacaklarını ve unutacaklarını belirtmek gerekir. Bu, TCP RAM gereksinimlerini azaltır, ancak web sayfasının karmaşıklığına bazı ciddi sınırlamalar getirir. Sınırsız sayıda bağlantıyı açık tutabilecek (yaptım) durumsuz bir TCP sunucusu tasarlamak mümkündür, ancak böyle bir şey özel bir istemci tarafı ön uç gerektirir. Durumsuz HTTP işlemine izin verecek kadar küçük şeyleri tutmak en basit yöntemdir.
supercat

DİKKAT: "install_picdev.exe" dosyasını indirmeyi denedim, ancak Firefox (veya Windows Security Essentials) kötü amaçlı yazılım olduğunu söyledi. Açmayacak.
ahogen

14

Mikrodenetleyicilerdeki web sunucularının popülaritesindeki son artışa önemli bir katkıda bulunan, fiziksel sensör bilgilerine (sıcaklık, nem, ışık seviyesi, karbon monoksit varlığı vb.) Uzaktan erişme ve fiziksel dünyada bir şeyler yapma arzusudur (geçiş bir LED'de, bir alarmı tetikleyin, bir acil durum egzoz fanını açın, bir soğutucu pompasını açın) uzaktan da. Bunlar uygulamalar.

Daha yaygın IP ağı üzerinden her yerde bulunan HTTP protokolünden genel, tutarlı, cihazdan bağımsız, tasarımcıdan bağımsız uzaktan erişim sağlamanın daha iyi bir yolu var mı? Fiziksel iletişim katmanı WiFi, kablolu Ethernet veya IP ağını destekleyen başka herhangi bir uygun seçenek olabilir. Bu nedenle gömülü aygıtlardaki web sunucuları yapılmaktadır.

Daha fazla bilgi için, " Nesnelerin İnterneti " ni arayabilir ve ortaya çıkan çok çeşitli düşünce süreçlerini görebilir.

" Bu kadar küçük RAM'e sahip küçük sunucular " ile ilgili olarak, HTTP protokolünün çok az işlem gücüne sahip çok az RAM'e uygulanabilecek kadar basit olduğunu belirtmek gerekir. Ayrıca, günümüzün mikro denetleyicileri, insanların sadece web'i uygulamadığı, aynı zamanda oyun oynadığı bile çeşitli etkileşimli görevleri gerçekleştirdiği erken kişisel bilgisayarlardaki işlemcilerle karşılaştırılabilir veya bazı durumlarda daha güçlüdür.


İyi cevap. Uygulamalar ile ilgili olarak, genellikle bir tarayıcı kullanılarak da erişilebilen ve yapılandırılabilen bazı yaygın tüketici elektroniği özelliklerinden bahsetmeyi özledim. Yazıcılar, TV setleri, ev sineması ses alıcıları, yönlendiriciler ... Hatta uzaktan erişilebilen kahve makineleri bile var :) DÜZENLEME: Bazılarının modern bir bilgisayarın işlem gücü var ve mikro denetleyici tabanlı değil.
Rev1.0

Bir cihaz gibi bir şeyin HTTP üzerinden iletişim kurması ile başka bir şeyin iletişim kurması arasındaki seçimin, cihazın kendisini biraz daha karmaşık hale getirmesi arasında bir seçim olduğunu ve kullanıcının onunla iletişim kurmak için bazı özel donanım veya yazılım satın almasını veya yüklemesini gerektirdiğini ekliyorum. USB dongle ile kablosuz olarak iletişim kurmak için özel bir RF şeması kullanan bir sıcaklık sensörü oluşturmak, sıcaklık sensörüne bir WiFi adaptörü dahil etmekten daha ucuz ve daha enerji tasarruflu olabilir, ancak ikinci yaklaşım dongle ihtiyacını önler.
supercat

4

Birçok ağa bağlı cihaz, yapılandırma parametrelerini incelemek ve ayarlamak, cihazın durumunu kontrol etmek vb. İçin bir web sunucusu sağlar. Örneğin, sistemimdeki yönlendiriciyi tarayıcımı http:///192.168.0.254(doğru hatırlarsam ...) işaretleyerek yapılandırabilirim .


3
  1. Çünkü yapabilirler.

  2. Çünkü çok düşük güç olabilirler. Bazı tepe çekimleri ile 1W altında olduğu gibi. Yarım amperin altında. Pil ve güneş enerjisi, daha büyük bilgisayarların aksine pratiktir.

  3. Fiziksel boyut. Mikrodenetleyici + wifi veya ethernet yongası başparmak sürücüsünün boyutu olabilir.

  4. Maliyet. Bunun için uygun bir mikrodenetleyici tek dolar aralığında olabilir. Ağ parçaları neredeyse ucuz.

  5. Tek kullanımlık. Onları bir kerelik projelere koyabilirsiniz ve eğer ölürlerse, pahalı bir bilgisayarın yaptığı kadar kötü değil.

  6. Sadece neden.

Onlarca dolar (100 $ 'a ücretsiz) tam üflemeli bilgisayarların ortaya çıkmasıyla (shrevaplugs, ahududu pi, akıllı telefonlar, linux başparmak sürücüler, android çubuklar, YÖNLENDİRİCİLER), gelecekte muhtemelen daha az mikrodenetleyici web sunucusu göreceksiniz, çünkü artık bir faktör olarak COST ve Boyut değil. 35 dolarlık Raspberry Pi veya 45 dolarlık Beaglebone, maliyet, performans ve kurulum kolaylığı açısından Arduino + Ethernet veya Wifi kalkanından daha iyi performans gösterebilir. Arduino'dan zar zor daha büyük. Arduino'nun üstesinden gelebileceği tek şey, güç verimliliği 0.1W (tam hesaplama gücüne 0.5mA ila 50 mA uyku [yalnızca ATMEGA tarafından 5v, 16mhz,% 100 cpu]), Ethernet / hdmi / usb içermeyen RPI için 4W'dir. boşta kullanım.

Böylece mikrodenetleyici web sunucuları düşük akım tüketimi nedeniyle pille çalıştırılabilir. O zaman bile, bir web sunucusuna sahip bir cep yönlendiricisi gibi daha yeni linux SoC'lerin bazıları onlara yakın olabilir.


Ayrıca Texas Instruments MSP430 mikrodenetleyiciler ailesini de düşünün: İnanılmaz düşük güç tüketimi ve web sunumu için yeterli kapasite. 16 bit işleme. Bazı seçenekler, kutusundan çıktığı gibi kablosuz ağ iletişimi içerir. Boyut: Kablosuz bağlantıya sahip eksiksiz bir kart, bir başparmak sürücüsüne sığabilir.
Anindo Ghosh

Bu cevaplar sorunun sadece bir kısmını cevaplıyor. Neden yapıyoruz? Bir sonraki bölüm ne olacak; Bunu nasıl yaparız? Hangi beceri setleri gereklidir?
Anshul

1
@Anshul http sunucusu belirtimine kod yazmanız ve seçtiğiniz ağ IC'sine bağlı olarak bir ağ yığınına (ip / tcp / udp) veya benzerine ihtiyacınız vardır.
Passerby

2

Olin'in cevabı, gömülü bir web sunucusu kullandığım her nedenden dolayı hemen hemen isabet ediyor. Endüstriyel kontroller geliştirmeye çalışıyorum ve ürettiğimiz hemen hemen her ürünün gömülü bir web sunucusu var.

Çoğu müşteri, çeşitli ekipmanlardan dolayı tüm ekipmanlarını zaten ağlarında bulundurur. Bu yüzden düzinelerce özel program yüklemek yerine bir web tarayıcısı üzerinden yapılandırabilir ve / veya kontrol edebilmek çok arzu edilir.

PROFINET gibi endüstriyel bir protokol kullanıyor olsalar bile , fiziksel katman Ethernet'lerinin geri kalanıyla aynıdır ve daha sonra düzinelerce makineyi kontrol etmek için tek bir yazılıma (PROFINET IO süpervizörü) ihtiyaç duyarlar. Deneyimlerime göre, bu kurulum birçok sektörde oldukça standarttır.

Kaynaklar (işlem gücü, RAM, ROM) ile ilgili olarak, temel bilgilere ulaşıldığında, bir web sayfasını başarılı bir şekilde sunmak için inanılmaz derecede minimum donanıma ihtiyaç vardır. webACE Bence en küçük web sunucusunun kaydını tutar. Barındırdığı sayfayı artık ziyaret edemeyeceğiniz bir utanç.

webACE çipi webACE kablosu

Yazılım

Orijinal yazılım için bazı kod istatistikleri. Başlangıçta yonga üzerinde 64 bayt "veri eeprom" toplamları dahil etmeyi unutmuştu, bu da TBTF'de belirtilen 1010 bayt rakamına yol açtı.

Startup       36 bytes
Serial       179
SLIP          91
IP           144
ICMP          47
TCP          188
Checksum     132
Application  257
Total       1074 bytes

Comprising:
  454 instructions
  912 instruction bytes
  162 data bytes
 2.01 bytes/instruction average

İhtiyaç duyulan diğer becerilere gelince, ağ oluşturma konusunda derin bir anlayış gerçekten gerekli değildir. Herhangi bir protokol için hiç bir yığın yazmadım çünkü akla gelebilecek her mimari için bağlanmak ve kullanılabilecek çok sayıda kütüphane var. Bazı temel ham HTML'leri bilmek, gerçek sayfayı tasarlamak ve yazmak için kullanışlıdır.

Bunun yanı sıra, Wireshark veya Fiddler'den (ağ analizörleri) bir günlüğü okuyabilmek ve anlayabilmeniz , muhtemelen herhangi bir sorunun hata ayıklanmasına büyük ölçüde yardımcı olacağı için en yararlı beceri olacaktır. Kullandığınız protokolün (TCP, IP, HTTP, UDP, PROFINET, vb.) Paket yapısıyla ilgili küçük bir okuma, ihtiyacınız olan her türlü bilgi için pakete nereden bakmanız gerektiğini söyleyecektir. Şu anda bu analizörlerden birini patlatabilir ve bunu hissetmek için bilgisayarınıza gelen ve giden trafiğe bakabilirsiniz.


2

Sebeplerden biri meydan okumadır. Daha çok mikrodenetleyici kartı geliştirirseniz ve / veya kendi yazılımınızı yazarsanız.


3
Bu zor bir iş değil. Dahili bir web sunucusu olan demoları indirebilirsiniz.
Olin Lathrop

1
Kendi TCP / IP
yığınızı
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.