İnternet özellikli bir hava durumu ekranı için hangi mikrodenetleyici ve programlama dilini kullanmalıyım?


11

IoT'de yeniyim ve kariyerime IoT'de başlamak istiyorum. Google'da IoT'deki girişimleri ararken, birçok blog buldum. IoT'de kullanılan dilleri C #, Java, Node.js ve Arduino, Raspberry Pi, Intel, Netduino gibi mikrodenetleyiciler buldum.

IoT'de yeni olduğum için hangi dilin en iyi olduğunu ve başlangıç ​​için hangi mikrodenetleyiciyi kullandığımı bilmiyorum?

Diyorum ki temel başlangıç ​​için, cep telefonumdan verilen konumun hava durumunu gösteren ekrana sahip bir cihaz oluşturmak istiyorum. Bu nedenle, donanım, İnternet ve yazılımı kapsayan başlangıç ​​için iyi bir örnek olabilir.

Cihaz pille çalışan, küçük bir dijital ekran ve evet maliyet kısıtlaması olacak.

Hava durumunu göstermek için gereksinimlerimi karşılayan hangi mikrodenetleyici ve dili kullanmalıyım?


1
Bu bir öncekinden çok daha iyi bir soru gibi görünüyor; çok daha özel bir kullanım senaryosuna odaklanmıştır. Size iyi bir cevap verebiliriz, işte birkaç soru: Cihazınız şebeke elektriği veya pille çalışır mı? Ekranın ne kadar büyük olmasını istiyorsunuz? Maliyet kısıtlaması var mı?
Aurora0001

2
Ayrıca, mikrodenetleyiciyi seçmek için bu cevap gerçekten harika.
Aurora0001

1
Teşekkürler @ Aurora0001 Yorum yaptığınız için daha fazla ayrıntı ekledim lütfen kontrol edin.
Jigarb1992

1
Toplama filleri: Arduino bir mikrodenetleyicidir. Pi tam bir bilgisayardır, Pis ve Beaglebones ve Gumstix gibi şeylere genellikle "tek kartlı bilgisayarlar" (SBC'ler) veya "modüllerdeki bilgisayar" (COM'lar) denir. Pi'den farklı olarak, Arduino bir işletim sistemi çalıştırmaz - Arduino, uygun bir IDE ile birlikte gelen güzel, kullanımı kolay bir tahta üzerinde sadece bir Atmel ATmega ?? 8'dir. Pi, ARM Cortex-A53 mikroişlemci çekirdeğine sahip gerçek bir bilgisayardır. Diyelim ki, tüm ağ ve ekran çıkışını yapmak için bir Pi kullanabilirsiniz ve okuma düğmeleri, RFID etiketleri ya da bir şey gibi basit işleri yapmak için bir Arduino ile karmaşık kontrol yapabilirsiniz.
Jason C

1
Pille çalışan cihazlar: akıllı telefon / akıllı saat (Li pil, şarjlar arasında birkaç gün ömür) veya bir saat (AA şarj edilemez, birkaç ay ömür) gibi bir şey mi? Bu, tasarımınızı yönlendirecek ve ikincisini seçerseniz seçeneklerinizi ciddi şekilde kısıtlayacaktır.
pjc50

Yanıtlar:


5

Şahsen, muhtemelen ihtiyacınız olandan çok daha güçlü olmasına rağmen, bunun için bir Raspberry Pi 3B seçerdim . Bunu önermemin nedenleri:

  • Dahili 802.11 b / g / n Kablosuz LAN'a sahiptir, böylece Ethernet kablosu yerine bir Wi-Fi ağına bağlayabilirsiniz

  • Ayrıca Bluetooth'u da destekler, böylece telefona bu şekilde bağlanabilirsiniz.

Ayrıca bir ekran ünitesine ihtiyacınız olacak ve uygun olarak, bu 4DPI-32 dokunmatik ekran gibi Raspberry Pi için tasarlanmış birkaç ekran var . Ekranı doğrudan 40 pimli başlığa yerleştirebilmeniz gerekir:

40 Pin Raspberry Pi Vakfı , CC BY-SA 4.0 . Bunun teknik olarak bir Pi 2B olduğunu biliyorum, ancak GPIO 3B'de aynı.

Bu durumda programlama yönüne gelince, yapmanız gereken tek şey bir yerde bir API'den hava almak ve bir GUI programı olarak ekranda görüntülemek. Ekran sadece Pi için herhangi bir HDMI çıkışı gibi çalışır, bu nedenle özel bir şey yapmanız gerekmez. Python için, temel bir kullanıcı arayüzü oluşturmak için Tkinter'i kullanabilir veya neye razı olduğunuza bağlı olarak HTML / CSS / JS'de bir web uygulaması yazmayı bile seçebilirsiniz. Sen kullanabilirsiniz OpenWeatherMap API ücretsiz; dokümantasyon her bir API uç noktası için bağlıdır.

Bu noktada, gerçekten size kalmış. Buradaki en iyi dil, en rahat olduğunuz dildir. Eğer angularjs gibi sadece bir HTML sayfası oluşturursanız, açısal ile hava getirme (veya benzeri bir kütüphane kullanmak bu size yardımcı olmak için) ve güzel görünmesi için bazı CSS kullanarak göstermek.

Aslında konumu almak için , kullanıcının Pi'nin dokunmatik ekranındaki konumunu yazmasına izin vermenin daha kolay olacağını düşünüyorum . Telefonunuzun yerini göndermek muhtemelen biraz daha zordur, ancak çok fazla araştırma yaparsanız bir şeyler bulabilirsiniz.

Pil kullanımı için, Raspberry Pi Stack Exchange'deki bu soru okumaya değer.


1
Kutudan çıkar çıkmaz çalışan ve tonlarca can sıkıcı ilk kurulumdan tasarruf sağlayan Vilros Pi Kitlerini takmanız gerekiyor . Ayrıca konu dışı ama hata ayıklama için bu (ve sitede arama yaparsanız onun sağlamlaştırılmış sürümü) inanılmaz faydalı buldum . Tek kullanım için pahalıdır, ancak her zaman kullanırsanız buna değer. Bir HDMI -> VGA adaptörüyle iyi çalışır.
Jason C

1
Hayır. Birincisi, kırılgan bir SD karta güvenmesi nedeniyle, ikincisi, ılımlı miktarlarda üretime giremeyeceğiniz için. Bir pi size bir kavram kanıtı verebilir, ancak daha sonra bir üründe kullanabileceğiniz bir şeyi yeniden tasarlamanız gerekir. Ayrıca, temel olarak herhangi bir ciddi kullanımda pil gücü için tam bir marş motoru değil.
Chris Stratton

@ChrisStratton: OP gibi yeni başlayanlar için bir RPi bence geçerli bir seçenek gibi görünüyor. Evet, büyük ölçekli üretim için bu ideal olmazdı, ancak erişilebilir , değiştirilmesi kolay bir fikir sağlamaya odaklandım ; burada POC tam olarak ihtiyaç duyulan şeydir. SD kartın hobici bir kurulum için gerçekten büyük bir endişe olduğunu düşünmüyorum; seri üretimde hikaye farklı ama bir başlangıç ​​noktası için, bunun yeterince iyi çalışması gerektiğini düşünüyorum. Yine de daha iyi bir yaklaşım için herhangi bir öneriye açığım.
Aurora0001

Bu sorunların bir üründe yaşanmaz hale getirilmesinin yolları dışında bile, posterin pil gücü gereksinimi onu en başından çıkarır. Pi, mobil bir cihazın güç yönetimi olmadan kutudan çıktığı bir mimari olduğundan, makul bir pilden birkaç saatten fazla bir süre alamazsınız.
Chris Stratton

10

Soğan Omega 2 iddialar dünyanın en küçük Linux bilgisayar olmak. Bu iddia tam olarak doğru olmayabilir (örneğin aşağıdaki vocore2'ye bakın), ancak benim deneyimime göre en küçük 3'te olması gerekiyor. Yalnızca 5 $, IoT özel olarak düşünülerek tasarlanmış yerleşik wifi maliyeti. Web sitelerinde birkaç kalkan var . Yepyeni bir ürün, güçlü ve aktif bir topluluğa sahip gibi görünüyor. Kickstarter destekçileri cihazı alır. Kontrol etmeye değer.

Ayrıca, yorumlarda belirtildiği gibi, aslında Soğan'dan daha küçük ve 4 $ daha ucuz gibi görünen vocore2'ye bakın . Şu anda IndieGoGo'da finanse edilmektedir ve tahmini gönderim tarihleri ​​Şubat 2017'dir (bu yazının geleceği ay). Ayrıca rıhtım bir ürün yelpazesine sahip görünüyor ve biraz serin yerleşik bir wifi yönlendirici vardır.

Geçen gün bunlara rastladım ve onlarla hiçbir deneyimim yok. Bununla birlikte, yenilikleri nedeniyle, kullanmaya alışkın olabileceğiniz bazı Linux paketleri henüz mevcut olmayabilir (örneğin, bu yazı yazıldığı sırada Soğan üzerinde bir gstreamer paketinin mevcut olmadığını biliyorum. yine de, gstreamer sizin için alakalı olmasa da kaynaktan oluşturmalısınız).

Bunlardan kısa, diğer yanıtın dediği gibi, Pi çok düşük maliyetli bir cihaz. Soğan hatları boyunca başka bir küçük 5 dolarlık bilgisayar olan Raspberry Pi Zero'yu unutmayın . Gemide daha büyük Pi'lerin sahip olduğu tüm portlar yok, ancak sakıncası yoksa veya sadece nihai ürünlerdeki boyutu için bir 3 ve geliştirme için bir Sıfır kullanmak istiyorsanız, düşünmeye değer başka bir seçenek.

Bazıları pahalı olan diğer cihazlar şunları içerir:

  • BeagleBone Black (düşük maliyeti nedeniyle ciddi olarak düşünebileceğim tek Pi alternatifidir).
  • Gumstix ($$$, ancak bunları her zaman boyutları için projelerde kullanıyoruz)
  • Udoo ($$$ ama yumruk atıyor )
  • Toradex Colibri (Çalışması biraz zor ama biz de bunu bir Gumstix'ten daha iyi özellikler kullanıyoruz ve bir Windows araç zincirini ve neredeyse sıfır önyükleme süresini tercih ederseniz Windows CE'yi anında önyükleme özelliği ile çalıştırma seçeneğine sahibiz. ).

Ayrıca Vilros'un bir işletim sistemi ile önceden paketlenmiş bazı harika Pi başlangıç ​​kitlerini (Amazon'da daha ucuz) yaptığını, Wifi, ısı emiciler, bir kasa, kutusundan çıkar çıkmaz çalıştığını ve bir ton grunt kurulum çalışmasını kaydettiğini unutmayın. Ayrıca Pi yolu giderseniz kontrol değer. Vilros ayrıca, artık sitelerinde bulunmayan ancak Newegg / Amazon / vb. hala kullanılabilir stok bulabilirsiniz.


Bu arada, bir Arduino (veya başka bir mikrodenetleyici, yukarıda listelenen tam gelişmiş tek kartlı bilgisayarlarla kontrast) tek başına muhtemelen burada istediğiniz şey değildir . Arduino sadece bir Atmel ATmega168 / 328'dir. Bir işletim sistemi çalıştırmaz ve tam olarak ne söylediğinizden başka bir şey yapmaz. Örneğin, ağ oluşturma için, TCP ve UDP yığını sağladığına inandığım tam bir ethernet kontrol kütüphanesi ile birlikte gelen ethernet kalkanına ihtiyacınız olacak (hiç kullanmadım, sadece sitelerine göz atıyorum) ve elbette çok sınırlı kod alanı.

Sonra hava durumu istemcinizi ve her şeyi bunun üzerine inşa etmeniz gerekir ve hepsini 32KB veya daha az bir sürede yapmanız gerekir. Pi / Beaglebone / Gumstix / Colibri / vs üzerinde Linux / Windows geliştirme yapmaktan farklı bir gelişim aromasıdır. Bu cevabın kapsamı dışında.

Arduino nedir olduğu iyi burada gelince bir eklenti üzerinde okuma basınç sensörleri, düğmeler, kontrol temel elektronik elemanların, bu tür şeyler gibi, donanım arayüzü şeyler yapmak için ana sisteme.

Gömülü sistem geliştirme, Pi'de yapacağınız masaüstü geliştirmeden tamamen farklı bir canavardır ve bunu özellikle Arduino ile, özellikle deneyimsiz yapmaya çalışmanızı tavsiye etmem.


1
vocore2 şu anda daha küçük ve daha ucuz (4 $) hala OpenWRT (Linux) çalıştırıyor
Matija Nalis

2
Bununla ilgili açık kaynaklı hikaye nedir?
Sean Houlihane

@SeanHoulihane Harika bir soru. Bunu öğrenip öğrenemeyeceğimi göreceğim, Kickstarter sayfası ve ana sayfası bu konuda eksik. Matija'nın yukarıdaki vocore2 yorumundan sonra Soğan milletinin "dünyanın en küçük" iddiasına biraz şaşırdım, ama belki de kendilerini (mütevazi gözlerimde) açık bir mimariyle kullanabilirler.
Jason C

3
Unutmayın, insanlar Kickstarter'da her şeyi talep edebilirler ...
Sean Houlihane

@SeanHoulihane Ah dostum, do not beni heh benim Kickstarter nefret rant başlamak. Direnmek, direnmek ... Yine de, Kickstarter iddiaları ve Open-ness bir yana, hem Omega hem de vocore yeni cihazlar görünümlü oldukça havalı. Ve düşük maliyetli cephede de RPi Zero var.
Jason C

6

Hangi dili ve denetleyiciyi kullanmanız gerektiğini öğrenmek için adım adım bir yaklaşım öneriyorum. İhtiyacınız olan mikrodenetleyici, yapmasını istediğiniz görevlere bağlı olacaktır. Teorik olarak görev, uygun bir mikrodenetleyicinin yerine getireceği bazı gereksinimleri ayarlayacaktır, bu nedenle mikrodenetleyiciyi bu gereksinimlerle seçmelisiniz.

  1. Cihaz için bir kullanıcı hikayesi tanımlayın. Ondan ne bekliyorsun? Ne yapabilmesini istiyorsun?

    Sizin durumunuzda zaten sizin tarafınızdan tanımlanmıştır:

    Bir akıllı telefondan giriş alabilecek ve istenen konumların hava bilgilerini kendi ekranında görüntüleyebilecek, pille çalışan bir cihaz.

  2. Şimdi 1. adım size başlamak için bir şey verir. İhtiyacınız olan donanıma blok diyagram düzeyinde karar verebilirsiniz.

    Cep telefonunuzla iletişim kurmak için kesinlikle bir ekrana ve muhtemelen bir WiFi veya Bluetooth modülüne ihtiyacınız olacaktır. Küresel hava durumu veritabanlarına erişmek için muhtemelen İnternet bağlantısı gerekir. Her ikisini de bir MCU veya WiFi modülü ile kontrol etmelisiniz (İnternet'e ihtiyacınız var, böylece Bluetooth'u hariç tutabilirsiniz) ekranı kontrol edebilmeli ve yazılımınızı çalıştırabilmelidir.

  3. Belirli parçaları aramaya başlayabilirsiniz. Hangi pili kullanacağınıza karar vererek işe başlayabilirsiniz, böylece potansiyel parçalarınızın güç tüketimini dikkate alabilirsiniz. Önceki yanıtımdan birinde MCU'ları seçmek için genel bir süreci özetledim . Temelde aynı şey burada yapılmalıdır. Ucuz bir ekran bulun, muhtemelen iletişim için bir SPI veya I2C arayüzü kullanacaktır. Ardından, SPI / I2C'ye sahip bir Wifi modülü arayabilir ve entegre bir MCU veya ayrı bir MCU ve bir WiFi modülü vardır. Bireysel WiFi modülü iletişim kurmak için muhtemelen UART'ı kullanır, böylece bireysel MCU'nun SPI / I2C boyunca buna sahip olması gerekir.

  4. Dil gelince. Çoğu mikrodenetleyici bu alandaki olasılıklarınızı sınırlayacaktır. Çoğu durumda seçimleriniz ya C, C ++ ya da Assembly olacaktır, burada mikrodenetleyicilerden bahsediyoruz ve tek kartlı bilgisayarlar değil.

    Linux veya diğer güçlü işletim sistemlerini çalıştırabilecek bir BeagleBone veya Ahududu ile gitmeye karar verirseniz, en iyi dilin en iyi bildiğiniz dil olacağını söyleyebilirim, elbette görevi yerine getirebilmelidir. ( İsterseniz RPi üzerinde Java'yı çalıştırabilirsiniz. )

    Küresel hava durumu veri servisine bir soket açmak C, C # veya Python'da da yapılabilir. C ile JSON işlemek biraz daha zor olurdu ama kesinlikle mümkün.

Genel olarak maliyetler hakkında konuşmak. En iyi seçenek, WiFi özellikli ekran cihazlarını aramaktır, çok fazla sonuç olacaktır ve çoğu aynı donanımı kullanacaktır ve muhtemelen bu en ucuz olacaktır.


İnternete bağlanmak ve bir ekranı bağlamak için Arduino uyumlu bir ESP8266 WiFi modülü kullanabilirsiniz . Bir Raspberry Pi'den daha fazla tamir gerektirecek, ancak daha ucuz olacak.

İşte ESP8266 + OLED ekranı hakkında bir Hackaday projesi .


2
Sürecin iyi dağılımı. Micropython birçok küçük kart için kullanılabilir, belki de dikkate alınması gereken bir faktör, kartın ekosistemidir ve herhangi bir açık kaynak kütüphanesi varsa (MCU satıcıları da genellikle iyi kütüphaneler sağlar).
Sean Houlihane

6

Bir başlangıç ​​oluşturmak, teknolojiyle ne yapabileceğinizle ilgili değildir, ürünle bile ilgili değildir. VC'leri büyüleyebilecek başarılı bir başlangıç ​​için öncelikle hizmet edeceğiniz pazarı düşünmelisiniz. Ancak hizmet edeceğiniz pazarı düşünmek yeterli değildir. Pazar hakkında gerçek verilere sahip olmanız gerekir. Bu sadece sizin için anlamlı olan bir şey değil. Bir ürün yaratmak ve daha sonra satmak için bağlamak başarılı bir yaklaşım değildir ve çoğu başarısız girişimin sona ermesi budur. Bir pazar GERÇEK BİR GEREKİR. Bir ürünü sandığınızda, belirli bir Pazara hitap etmek için oluşturun. Bu başarılı bir ürün, kendini satan bir üründür, çünkü insanlar zaten onu arıyor. VC'ler, özellikle zaten satıyorlarsa, bu tür ürünleri içeren girişimlere yatırım yaparlar.

Ürününüzü geliştirmek için bir teknoloji seçmek için öncelikle ürününüzün ne yapması gerektiğini bilmeniz gerekir; bu, seçilen Pazardaki sorunu nasıl çözeceğinizdir. Ardından, potansiyel müşterilerin bunun için ne ödemek istediğine bakın. Ardından, maliyeti bütçe dahilinde tutarken pazara en hızlı süreyi sağlayan teknolojiyi seçin. Daha sonra geliştirmeyi dış kaynaklardan sağlayın veya bunu yapabilen ve sizinle çalışmaya istekli bir ortak edinin. Karınızı 50/50 partnerinizle paylaşın. Bir prototipiniz olduğunda, iş planınızı düzenlemeye başlayın ve VC'leri yalnızca nasıl para kazanabileceklerini gösterirseniz büyüleyebileceğinizi unutmayın.

Seri üretim için ürününüzün maliyetini düşürmeniz gerekiyorsa, ASM / C / C ++ ile Microchip PIC veya Silicon Labs EFM gibi daha düşük seviyeli diller ve daha az kaynak sağlayan mikro denetleyiciler kullanabilirsiniz. Ürün seri üretime (100k +) gitmiyorsa, daha üst düzey bir dil ve ARM32 MIPS'li Micro Python veya Lua veya ARM32 / 64 içeren Linux gibi daha becerikli mikro denetleyiciler kullanın. Bu geliştirme maliyetlerinden tasarruf sağlar, ancak donanımın fiyatını artırır. Unutmayın, ürünün fiyatı sadece bileşenleri olan bir PCB değildir; geliştirme, konut, paketleme ve ürünü satmak için gerekli olan her şey maliyetine girmelidir. Bunu iş planına koy. Ve bir Arduino veya Ahududu pi veya Soğan ile bir VC'ye ya da hobi aleti gibi görünen herhangi bir şeye gitmeyin,

Başlayın, aşağı değil ve en iyi şanslar.


Gerçekten tam bir pazarlama anlayışı var. Teşekkür ederim :)
Jigarb1992
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.