Deneyimli bir geliştirici IoT'ye nasıl başlar?


10

Gerçek zamanlı olmanın yanı sıra çeşitli teknolojileri kullanan deneyimli bir geliştiriciyim. Bilgisayar, tablet veya herkesin bildiği tanıdık cihazlardan herhangi biri olmayan bir cihaz için nasıl geliştirileceğini öğrenmek istiyorum.

Global alışveriş sitelerinin 2 kanal röle modülü, nodeMCU geliştirme kartı ve IoT ile ilgili daha fazla donanım gibi IoT donanımı sunduğunu fark ettim. Ben hiçbir fikri ile ilgisi ya da ne Başlamak .

Kod yazmayı bildiğimi varsayarsak, ilk IoT cihazımı geliştirmeye nasıl başlarım?


De genel bir bilgisayar olarak, tek fark vb performansları, mevcut bellek, olduğu gibi "diğer" cihazlar bir işlemci veya mikro denetleyici sahip
Bence Kaulics

9
Bana 'deneyimli geliştirici' ve 'nasıl başlamalı' soruları arasında bir kopukluk var gibi görünüyor. Çok basit. Bugün sizinle ilgili bir uygulama bulun (ısıtma, aydınlatma, otomasyon) ve uygulayın. Olmaması koşuluyla belirli sorular, buradan iyi cevap almak gerekir - büyük olasılıkla onlar orijinal prototip üzerinde iyileştirmeler veya yineleme gelecektir. Sorulduğu gibi, bu soru gerçekten fikir istiyor, açıkça doğru bir cevap yok.
Sean Houlihane

3
Sorunun çekirdeğine ulaşmaya çalışan, ancak orijinal metnin bir kısmını koruyan bir düzenleme yaptım. OP @TheUnreal'ın ikinci kısmı "IoT'ye girmek becerikli bir şirket olmayı gerektiriyor mu yoksa bir birey bu dünyada da yapabilir mi?" Diye sormasını öneririm. ayrı bir soru olarak, bunun hala alakalı bir soru olduğunu düşünüyorum.
Simon Munro

Yanıtlar:


14

Bu çok geniş bir soru, ama umarım diğerlerine ve sizin için faydalı birkaç genel işaretçi vermeye çalışacağım (bu yüzden, zaten bildiğiniz şeyleri gönderirsem özürlerimi kabul edin).

Eğer sensörleri okumak istiyorsanız, bu telemetri ve mutlaka IoT değil. Bağımsız bir bilgisayarın bazı ölçümleri okuduğu ve görüntülediği birçok projeyi kodladım.

Bağlı donanımı da denetlemek istiyorsanız, bu SCADA'dır . Yine, mutlaka internete bağlı olması gerekmez.

İşte genel olarak IoT için çok iyi bir his veren SCADA'nın bir diyagramı. Not PLC s şemasında sensörleri ve IOT kontrollerdir cihazlar.

SCADA mimarisi

Donanım Önerileri bölümünden sensörler ve denetleyici için donanım değerlendirmeleri isteyebilirsiniz .

Ve, bir kez kodunuz olduğunda, Stack Overflow'daki sorunlar için tavsiye alabilirsiniz .

Genel olarak endüstri için IoT, istemci donanım cihazlarını ölçen / kontrol eden ve sunucudan komutları alan / sunucudan alan istemci / sunucu modelini içerir. Sunucu ayrıca genellikle bir veritabanına sahiptir ve yönetim ve alarmlar için raporların oluşturulmasına izin verir (ve uzak donanıma alınan verilere göre yeniden yapılandırma / kapatma talimatı verebilir).

Uf! Bu yoldan giriş. Şimdi ellerimizi kirletmek için.

Eğer kodlamadan bahsetmek istiyorsanız, soketlere bakın ve TCP ile UDP arasındaki farkı anlayın .

Neyse ki, onlarca yıl kütüphanelerde daha zorlayıcı şeylerin çoğunu tamamladı ve muhtemelen en iyi RESTful hizmetlerini okumanız tavsiye edilir. Dilinize bağlı olarak çok sayıda ücretsiz çevrimiçi öğretici, kurs ve video bulunmaktadır; C, bazıları C ++ kullanan geleneksel bir gömülü dildir, ancak elbette bildiğiniz / rahat hissettiğiniz her şeyi kullanın. Python, Raspberry Pi için önerilen dil olmasının yanı sıra oldukça popüler ve öğrenmesi basittir.

Şahsen, hataları çıkarmak daha kolay olduğu için derlenmiş dilleri yorumlamayı tercih ederim, ancak seçim tamamen size bağlıdır. Sadece çevre birimlerine USB, Ethernet üzerinden erişim sağladığından ve sektörde seri bağlantı noktasında oldukça yaygın olduğundan emin olun.

Sunucu tarafı için, dünya sunucusunun% 90'ı + hala PHP'de çalışıyor. Ancak, NodeJS kullanımında, özellikle tarayıcı uygulamalarını kodlayan ve şu anda yalnızca JavaScript'te yapılabilen ve iki dil öğrenmek istemeyen kişilerden bir alım söz konusudur. Dosya sistemine ve çevre birimlerine erişen tarayıcı kodundaki kısıtlamalar nedeniyle tarayıcı tabanlı IoT uygulamaları geliştirmenizi önermiyorum ( akıllı telefon için geliştirmek istiyorsanız Cordova'nın beğenilerinden bahsederim ).

Başlamak için bir Ahududu Pi (Python veya C kodlama) tavsiye ederim .

Raspberry Pi kartı

Ve * yüksek * Bir sensör şapka önerilir. Bu sadece bir örnek, ama pahalı değil ve

  • Jiroskop - açısal hız sensörü: +/- 245/500 / 2000dps İvmeölçer
  • Doğrusal hızlanma sensörü: +/- 2/4/8/16 g
  • Manyetometre - Manyetik Sensör: +/- 4/8/12/16
  • Gauss Barometre: 260 - 1260 hPa mutlak aralık (doğruluk sıcaklığa ve basınca bağlıdır, normal koşullar altında +/- 0.1 hPa)
  • Sıcaklık sensörü (0-65 ° C aralığında sıcaklık +/- 2 ° C'ye kadar hassas)
  • Bağıl Nem sensörü (% 20-80 rH aralığında +/-% 4,5'e kadar, 15-40 ° C aralığında +/- 0,5 ° C'ye kadar)
  • 8x8 RGB LED matris ekran
  • Küçük 5 düğmeli kumanda kolu

sensör kartı

Bu, bazı verileri toplamanıza ve sunucunuza bildirmenize olanak tanır. Verilerinizi almak ve görüntülemek için çevrimiçi olarak ücretsiz bir hizmet bulabilirsiniz. Diğer SO sitesinde bazı gördüm, ama nerede unut.

Ancak, muhtemelen kendi sunucunuzu kodlamak istiyorsunuz. Programlama dili olarak PHP'yi tavsiye ederim. Linux için LAMP (Linux, Apache, Mysql ve PHP) ile iyi bir şekilde donatılmıştır. Windows için bir WAMP (Windows… vb.) Yüklemeniz gerekir .

Seçiminizi yapabilirsiniz. On yıldan fazla bir süredir endüstriyel uygulamalarda XAMPP kullandım . Mysql kullanmak zorunda değilsiniz , Sqlite de aynı şekilde hizmet edebilir (6 yıl önceki kendi SO sorum için, “ Sqlite veya MySql? Nasıl karar verilir? ” İçin shaless fiş ). CRUD hakkında da bilgi edinmeniz gerekecek .

İstemciden / sensörden alınan verilere dayanarak, sadece basit bir komut bile geri göndermek isteyebilirsiniz (ekran: "sıcaklık çok yüksek", bu da endüstriyel bir sistemdeki bir vananın kapatılmasına dönüşebilir).

Alarmları gerçek zamanlı olarak yükseltmek isteyebilirsiniz (sıcaklığın çok yüksek olduğunu belirten bir e-posta gönderin).

Ayrıca, rapor oluşturma hakkında da düşünmek isteyebilirsiniz. Alınan verileri gösteren bir tabloyla başlayın. Bir grafik veya daha meraklı bir şey düşünün. Son kullanıcının verileri daha fazla analiz ve manipülasyon için bir e-tabloya aktarmasına olanak tanıyan Virgülle Ayrılmış Değerlere (CSV) dışa aktarma seçeneği ekleyin .

Eğer varsa do süslü raporlama istediğinize karar, sen yapabilirsiniz şimdi tarayıcıda, rapor şeyler istemci tarafında çok yapıyor taşınmış Bunun birkaç on yıl sonra, PHP bunu ancak.

Genel prensipler için, Tek Sayfalı Uygulamalar ve AJAX hakkında genel bilgi edinin . Şahsen, çok fazla araştırma yaptım ve Google'ın AngularJS'sini programlama dilim olarak seçtim (çok sayıda öğretici ve büyük destek var), ancak istediğiniz gibi düz JS, Jquery, vb.

Tarayıcı öğelerini de kodlamaya karar verirseniz ve sunucu tarafında NodeJ'leri kullanmak için de iyi olabilirsiniz , böylece sadece bir yeni programlama dili öğrenmeniz gerekir.

Çok fazla seçenek var mı? Afedersiniz :-(

Umarım bu size bazı tavsiyeler verir, ancak soru sormaktan çekinmeyin ve burada eksik genel bir tavsiye olup olmadığını bana bildirin.


1
Teşekkürler Mawg, zaten söylediklerinizin çoğunu zaten biliyorum ve sorunun pert değildi, ben yıllarca PHP ve Javascript yanı sıra corodva ile çalışıyorum. Sanırım UNO R3'ü satın almaya başlayacağım ve oradan nasıl ilerleyebileceğimi göreceğim.
TheUnreal

1
Yazmaya başladım ve durduramadım :-) Umarım başkalarına yardımcı olur. Cordova'yı yeterince iyi tanımıyorum. Telefon donanımına, kireç kamerasına, SIM'e, eğim sensörüne erişmek için iyidir, ancak seri bağlantı noktasına erişebilir mi? Çünkü bu sanayide çok kullanılıyor ; USB'den seri dönüştürücüye geçebilirsiniz, bu da dizüstü bilgisayarlar için kullandığımız şeydir, ancak Cordova USB üzerinden veri gönderebilir mi? Ya Ethernet? devamı ...
Mawg, Monica'nın

1
... JS'yi biliyorsunuz, ancak bunu gömülü işlemcide kullanmanızı önermem. Sen can , ama kesinlikle normal değil. Belki biraz Python veya C almak için? Ya da belki UNO R3 <--> sunucu <--> tarayıcısı mı demek istediniz? Zaten biliyorsan, Arduino ile sopa. R Pi'ye geçiyorum, ama bu sadece benim kişisel tercihim. . Aklınızda bir öğrenme projeniz var mı? İpucu, ipucu… iot.stackexchange.com/questions/675/… :-)
Mawg, Monica'nın

9

Deneyimli bir geliştirici olarak mantığı anlama, kodu okuma ve yazma, bazı şeyleri çözme ve diğer bazı önemli becerileri kazanma yeteneğine sahipsiniz. Muhtemelen sahip olmadığınız temel elektronik ve küçük bir cihazda çalışan masaüstünüzden kod alma sanatı.

Yanlış karmaşıklık düzeyine atlamak göz korkutucu olabilir ve çok erken vazgeçtiğiniz anlamına gelebilir. Örneğin, insanlar doğru olanı almanız gerektiğini düşünmeden ESP8266 ve NodeMCU'yu öneriyor, bir geliştirme kartına monte edilmiş çipe ihtiyacınız var, yazılımınızı üzerine almanız gerekiyor, bir şeye bağlamanız gerekiyor ve sadece JavaScript çalıştırabilirsiniz. Bu, ihtiyacınız olan birçok farklı beceridir ve bu aşamalardan herhangi birini bırakabilirsiniz.

Benim tavsiyem Arduino ile başlamak. Arduino'nun yapımcı topluluğunda bir fark yarattığı yerde, bir Arduino'yu bir USB bağlantı noktasına takmanın ne kadar kolay olduğu ve derleme, oluşturma, dağıtma zinciri sizin için sıralanmıştır. Bazı kodlar yazabilir ve bazı LED'leri çok hızlı bir şekilde yanıp sönebilirsiniz.

Ayrıca resmi Arduino başlangıç ​​kitiyle başlamanızı öneririm . Çok basit olsa da, talimatlar kolaydır ve kullanışlı kalan bir dizi yararlı elektronik uç ve parça (breadboard, jumper kabloları, LED'ler, vb.)

Arduino'nun ne kadar temel olduğu konusunda ertelemeyin. Çok karmaşık bir şey denemeden önce elektronik ve uygulamalı kısım için ilk önce biraz heveslenin. Elektroniği ilginç bulursanız ve daha fazlasını yapmak istiyorsanız, Arduino'ya sadık kalın ve daha karmaşık bir kit edinin. BOE Shield-Bot robotunu satın aldım . En iyi veya en ucuz robot olmayabilir, ancak servoları ve benzerlerini nasıl kontrol edeceğinize dair ayrıntılara giren gerçekten iyi bir öğreticiye sahiptir. Ayrıca çok daha kullanışlı bitlerle de iniyorsunuz.

Bunu geçerseniz, ya vazgeçip sunucu tarafı yazılımlara geri dönersiniz ya da daha fazla bit, lehim havyası, daha fazla pano ve bileşen satın alırsınız. Çok yakında, geri kalanımız gibi kırık rüyalardan oluşan bir çekmeceye ineceksiniz.

Pi çok yakında kullanmanızı tavsiye etmem. Bir şeyden çok bir bilgisayardır ve anlayış yolculuğunuzun başlangıcında gerekli olan önemli özelliklere (analog giriş gibi) sahip değildir. Arduino'yu çok hızlı bir şekilde aşacaksınız (internete çok kolay bağlanmaz), ancak bunun hoşunuza giden bir şey olup olmayacağını görmek için iyi bir yer.


1
Sorularıma en yakın cevap bu. Teşekkür ederim.
TheUnreal

6

İlk sorunuza cevap vermeye devam edeceğim.

Sadece öğrenmek istiyorsanız, size IoT hakkında bazı kitaplar önerebilirim ama sanırım bunları kendiniz arayabilirsiniz. Bu açıksa, kendi küçük projeniz üzerinde çalışmaya başlamanızı tavsiye ederim, bu şekilde en iyi öğrenirsiniz, gerçek yaşam sorunları ile karşı karşıya kalırsınız.

Ne oluşturmak istediğinize karar vermeniz gerekecek. Başlamak için bazı ilham ve harika fikirler:

Arduino Projeleri -> Mikrodenetleyici

Raspberry Pi projeleri -> Mikroişlemci (daha güçlü)

hackaday.com -> Karışık bileşenler

Ne yapmak istediğinize dair bir fikriniz olduğunda, projeniz için gereksinimler bulmanız gerekir. Mikrodenetleyici, sensörler, aktüatörler, iletişim protokolleri, vb.

Gördüğünüz gibi en popüler cihazlar Arduino , Raspberrypi ve diğer tüm akrabalar, beaglebone siyah , soğan , vb., Çok daha fazlası var, farklılıklar fiyat, diğer sensörlerle uyumluluk ve popülerlik. Popüler olanlar daha uyumludur ve forumlarda daha fazla desteğe sahiptir.

Projenize bağlı olarak size yardımcı olabiliriz. İyi şanslar!


Zaten bir fikrim var, ama buna girmeden önce bu dünyayı deneyimlemek istiyorum. Sanırım Uno R3'ü satın almaya başlayacağım ve en kısa sürede soru göndereceğim.
TheUnreal

1
Bir Arduino Uno fiziksel öğeleri kontrol etmek için iyidir, ancak temel olarak daha iyi bir mikrodenetleyici veya bilgisayar eklemeniz gerektiğinden ağ protokollerine uyum sağlamak pahalıdır. Bazen ikisi, diğer zamanlarda bir ağ bakan sistemine sahip işlevlerinden biri bulabileceği delegelerin bir Arduino gibi bir şey elektrik kumanda görevi
Chris Stratton

2

Diğerleri sorunuzun ilk yönüne odaklandı; Ben ikincisine odaklanacağım. Yalnızca herkesin IoT'ye girip giremeyeceğini veya birçok kaynağa sahip büyük bir şirket olup olmayacağınızı sordunuz.

etiketine göz atarsanız, sunucu tarafının sizin için zaten yapılmış olan IoT cihazlarının olduğunu görürsünüz. Nest kam, termostat vb., Amazon Yankı, Google Ana Sayfası, akıllı fırınlar, buzdolapları vb.

Birçok yeni otomobil bile uzaktan algılanacak veya kontrol edilecek nesneler olarak nitelendirilebilir ... belki de henüz kontrol edilen kısım değil. :)

Bu ilk sorunuzun yanıtına yol açar:

İlk IoT cihazımı geliştirmek için uygulamaya nasıl başlayabilirim?

Gelişerek başlamak zorunda değilsiniz: daha basit bir şeyle başlayabilirsiniz. Bunun gelişmekte tarafına girmek istiyorsanız, olabilir gibi bazı ileri sürmüşlerdir basitçe, dalma almak, ancak basit başlamak ve daha karmaşık dünyasına yavaş yavaş hareket etmeye size sunulan seçenek var.


1
Ve başlamak için iot.stackexchange.com/questions/675/… ' dan daha iyi ?
Mawg, Monica'nın
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.