In che modo uno sviluppatore esperto inizia con l'IoT


10

Sono uno sviluppatore esperto che utilizza una varietà di tecnologie e in tempo reale. Voglio imparare a sviluppare per un dispositivo che non è un computer, un tablet o uno dei dispositivi familiari che tutti conoscono.

Ho notato che i siti di shopping globali offrono hardware IoT come modulo relè a 2 canali, scheda di sviluppo nodeMCU e altro hardware correlato a IoT. Non ho idea di cosa fare o iniziare .

Supponendo di sapere come programmare, come posso iniziare a sviluppare il mio primo dispositivo IoT?


Gli "altri" dispositivi hanno un processore o un microcontrollore e un computer generico, l'unica differenza è nelle loro prestazioni, memoria disponibile, ecc.
Bence Kaulics,

9
Mi sembra che ci sia una disconnessione tra le domande "sviluppatore esperto" e "come iniziare". È molto semplice. Trova un'applicazione che ti interessa oggi (riscaldamento, illuminazione, automazione) e implementala. Una volta che ci sono domande specifiche , dovresti ottenere buone risposte qui - molto probabilmente verranno da miglioramenti o iterazioni sul tuo prototipo originale. Come proposto, questa domanda richiede davvero opinioni, non esiste una risposta chiaramente giusta.
Sean Houlihane,

3
Ho fatto una modifica che cerca di arrivare al kernel della domanda, ma mantenendo parte del testo originale. Suggerisco che OP @TheUnreal chieda la seconda parte "Entrare nell'IoT richiede di essere una società intraprendente o un individuo può farlo anche in questo mondo?" come domanda separata, poiché ritengo che sia ancora pertinente.
Simon Munro,

Risposte:


14

Questa è una domanda molto ampia, ma cercherò di dare alcuni suggerimenti generali, speriamo utile sia agli altri che a voi (quindi, per favore, accettate le mie scuse se inserisco cose che già sapete).

Se stai chiedendo informazioni sulla lettura dei sensori, si tratta di telemetria e non necessariamente di IoT. Ho codificato molti progetti in cui un PC autonomo legge e visualizza alcune misurazioni.

Se vuoi anche controllare l'hardware collegato, questo è SCADA . Ancora una volta, non è necessario che sia necessariamente connesso a Internet.

Ecco un diagramma di SCADA, che dà un'ottima sensazione per l'IoT in generale. Si noti che i PLC sul diagramma sono sensori e controlli dei dispositivi abilitati IoT.

Architettura SCADA

È possibile richiedere raccomandazioni hardware per sensori e controller in Consigli hardware .

E, una volta che hai un po 'di codice, puoi ottenere consigli su problemi con StackTranslate.it .

In generale, l'IoT per l'industria coinvolge il modello client / server, con il client che misura / controlla i dispositivi hardware e riporta / riceve comandi dal server. Il server generalmente ha anche un database e consente la generazione di report per la gestione e gli allarmi (e può indicare all'hardware remoto di riconfigurare / arrestare in base ai dati ricevuti).

Accidenti! Questa è l'introduzione fuori mano. Ora per sporcarci le mani.

Se vuoi entrare nel nocciolo della codifica, guarda i socket e comprendi la differenza tra TCP e UDP .

Fortunatamente, i decenni hanno avvolto la maggior parte delle cose più complicate nelle biblioteche, e probabilmente è meglio che tu ti informi sui servizi RESTful. Esistono numerosi tutorial, corsi e video online gratuiti, a seconda della tua lingua; C è un linguaggio incorporato tradizionale, con alcuni che usano il C ++, ma ovviamente usa qualunque cosa tu sappia / ti senta a tuo agio. Python è estremamente popolare e semplice da imparare, oltre ad essere la lingua consigliata per Raspberry Pi.

Personalmente, preferisco interpretare le lingue compilate, in quanto è più facile eliminare i bug, ma la scelta dipende interamente da te. Assicurati solo che abbia un buon supporto per l'accesso alle periferiche tramite USB, Ethernet e - ancora estremamente comune nel settore - porta seriale.

Per il lato server, il 90% + del server mondiale è ancora in esecuzione su PHP. Tuttavia, c'è un assorbimento nell'uso di NodeJS, principalmente da parte di persone che codificano app per browser, che attualmente può essere fatto solo in JavaScript e non vogliono imparare due lingue. Non consiglio di sviluppare app IoT basate su browser, a causa delle restrizioni sul codice del browser che accedono al file system e alle periferiche (sebbene, vorrei citare artisti del calibro di Cordova , se si desidera sviluppare per smartphone).

Per iniziare, consiglierei un Raspberry Pi (codifica in Python o C).

Scheda Raspberry Pi

E * consiglio vivamente * un cappello sensore. Questo è solo un esempio, ma non è costoso e contiene

  • Giroscopio - sensore di frequenza angolare: +/- 245/500 / 2000dps Accelerometro
  • Sensore di accelerazione lineare: +/- 2/4/8/16 g
  • Magnetometro - Sensore magnetico: +/- 4/8/12/16
  • Barometro di Gauss: intervallo assoluto da 260 a 1260 hPa (la precisione dipende dalla temperatura e dalla pressione, +/- 0,1 hPa in condizioni normali)
  • Sensore di temperatura (temperatura accurata a +/- 2 ° C nell'intervallo 0-65 ° C)
  • Sensore di umidità relativa (preciso a +/- 4,5% nell'intervallo 20-80% UR, preciso a +/- 0,5 ° C nell'intervallo 15-40 ° C)
  • Display matrice LED RGB 8x8
  • Piccolo joystick a 5 pulsanti

scheda sensore

Ciò ti consentirà di raccogliere alcuni dati e segnalarli al tuo server. Potresti essere in grado di trovare un servizio gratuito online per ricevere e visualizzare i tuoi dati. Ho visto alcuni su altri siti SO, ma dimentica dove.

Ma probabilmente vuoi codificare il tuo server. Consiglierei PHP come linguaggio di programmazione. Per Linux, sei ben fornito con LAMP (Linux, Apache, Mysql e PHP). Per Windows, devi installare un WAMP (Windows ... ecc.).

Puoi fare la tua scelta. Ho usato XAMPP in applicazioni industriali per oltre un decennio. Non è necessario utilizzare Mysql, Sqlite può servire altrettanto bene (spina shaless per la mia domanda SO di 6 anni fa, " Sqlite o MySql? Come decidere? "). Dovrai anche conoscere CRUD .

Sulla base dei dati ricevuti dal client / sensore, potresti voler inviare un comando indietro, anche solo un semplice (display: "temperatura troppo alta", che potrebbe tradursi in chiusura di una valvola in un sistema industriale).

Potresti voler generare allarmi in tempo reale (invia un'e-mail dicendo che la temperatura è troppo alta).

E potresti anche voler pensare a generare rapporti. Inizia con una tabella che mostra i dati ricevuti. Considerare un grafico o qualcosa di più elaborato. Aggiungi un'opzione per esportare in valori separati da virgola (CSV) che consente all'utente finale di importare i dati in un foglio di calcolo per ulteriori analisi e manipolazioni.

Se non decide che si desidera la segnalazione di fantasia, è possibile farlo in PHP, ma, dopo alcuni decenni di che ho ora spostato a fare gran parte del lato client roba rapporto, nel browser.

Per i principi generali, ottenere una panoramica delle applicazioni a pagina singola e AJAX . Personalmente, ho fatto molte ricerche e ho scelto AngularJS di Google come mio linguaggio di programmazione (ci sono molti tutorial e un ottimo supporto), ma sei libero di usare JS, Jquery, ecc. Come preferisci.

Se decidi di codificare anche i contenuti del browser e potresti utilizzare NodeJs sul lato server, in modo da imparare solo un nuovo linguaggio di programmazione.

Troppe scelte? Scusate :-(

Spero che questo ti abbia dato qualche consiglio, ma sentiti libero di fare domande e fammi sapere se manca qualche consiglio generale qui.


1
Grazie Mawg, la maggior parte di quello che hai detto lo so già e non era un problema della domanda, sto lavorando con PHP e Javascript e con la corodva da anni. Penso che inizierò ad acquistare UNO R3 e vedrò come procedere da lì.
TheUnreal

1
Ho iniziato a scrivere e non riuscivo a smettere :-) Spero che possa aiutare gli altri. Non conosco abbastanza bene Cordova. È buono per accedere all 'hardware del telefono, fotocamera lime, SIM, sensore di inclinazione, ma può accedere alla porta seriale? A causa che viene utilizzato molto nel settore industriale; puoi cavartela da USB a convertitore seriale, che è quello che usiamo per i laptop, ma Cordova può inviare dati tramite USB? Ed Ethernet? continua ...
Mawg dice di ripristinare Monica il

1
... Conosci JS, ma non consiglierei di usarlo su un processore incorporato. È possibile , ma non è certamente normale. Forse è ora di prendere un po 'di Python o C? O forse intendi UNO R3 <--> server <--> browser? Resta con Arduino se lo conosci già, sicuramente. Passo a R Pi, ma questa è solo la mia preferenza personale. . Hai in mente un progetto di apprendimento? Suggerimento, suggerimento ... iot.stackexchange.com/questions/675/… :-)
Mawg dice di ripristinare Monica

9

Come sviluppatore esperto hai la capacità di comprendere la logica, leggere e scrivere codice, capire le cose e alcune altre abilità importanti. Quello che probabilmente non hai è una comprensione dell'elettronica di base e l'arte di ottenere il codice dal desktop in esecuzione su un piccolo dispositivo.

Saltare al livello sbagliato di complessità può essere scoraggiante e può significare che ti arrendi troppo presto. Ad esempio, le persone raccomandano ESP8266 e NodeMCU senza pensare che è necessario ottenere quello giusto, è necessario il chip montato su una scheda di sviluppo, è necessario disporre del software su di esso, è necessario collegarlo a qualcosa e solo allora sei in grado di eseguire JavaScript. Sono molte le competenze di cui hai bisogno e potresti rinunciare a una di quelle fasi.

La mia raccomandazione è di iniziare con un Arduino. Laddove Arduino ha fatto la differenza nella community dei maker è stato quanto è facile collegare un Arduino in una porta USB e la catena di compilazione, creazione e distribuzione è tutta ordinata per te. Puoi scrivere del codice e far lampeggiare alcuni LED molto rapidamente.

Ti suggerisco anche di iniziare con lo starter kit ufficiale di Arduino . Sebbene sia molto semplice, le istruzioni sono facili e ottieni un sacco di utili pezzi elettronici (breadboard, ponticelli, LED, ecc.) Che rimangono utili.

Non lasciarti scoraggiare da quanto sia essenziale Arduino. Ottieni prima l'entusiasmo per l'elettronica e la parte pratica prima di provare qualcosa di troppo complesso. Se trovi l'elettronica interessante e vuoi fare di più, resta con Arduino e ottieni un kit più complesso. Ho comprato il robot BOE Shield-Bot . Potrebbe non essere il robot migliore o più economico, ma ha un ottimo tutorial che spiega in dettaglio come controllare i servi e simili. Si arriva anche a bit molto più utili.

Se riesci a superarlo, o ti arrenderai e tornerai al software lato server, oppure comprerai più bit, saldatori, più schede e componenti. Molto presto finirai con un cassetto di sogni infranti come tutti noi.

Non consiglierei di usare il Pi troppo presto. È più un computer che una cosa e non ha caratteristiche importanti che sono necessarie all'inizio del tuo viaggio di comprensione (come l'input analogico). Arduino supererà molto rapidamente (non si connette facilmente a Internet), ma è un buon posto per vedere se questo sarà qualcosa che ti piace.


1
Questa è la risposta più vicina alle mie domande. Grazie.
TheUnreal

6

Procederò per rispondere alla tua prima domanda.

Se vuoi solo imparare, posso consigliarti alcuni libri sull'IoT, ma immagino che tu possa cercarli da solo. Se questo è chiaro, ti consiglierei di iniziare a lavorare sul tuo piccolo progetto, è così che impari il meglio, affrontando i problemi della vita reale.

Dovrai decidere qual è ciò che vuoi creare. Ecco alcune idee e idee fantastiche per iniziare:

Progetti Arduino -> Microcontroller

Progetti Raspberry Pi -> Microprocessore (più potente)

hackaday.com -> Componenti misti

Una volta che hai idea di cosa vuoi fare, allora devi elaborare i requisiti per il tuo progetto. Il microcontrollore, i sensori, gli attuatori, i protocolli di comunicazione, ecc.

Come puoi vedere i dispositivi più popolari sono Arduino , Raspberrypi e tutti gli altri parenti, beaglebone nero , cipolla , ecc. Ci sono molti altri, le differenze sono il prezzo, la compatibilità con altri sensori e la popolarità. I più popolari sono più compatibili e hanno più supporto nei forum.

Ti possiamo aiutare con i requisiti in base al tuo progetto. In bocca al lupo!


Ho già un'idea, ma voglio sperimentare questo mondo prima di tuffarmi in questo. Penso che inizierò ad acquistare Uno R3 e invierò domande non appena vado.
TheUnreal

1
Un Arduino Uno è buono per il controllo di oggetti fisici, ma è costoso adattarsi ai protocolli di rete, poiché in pratica devi aggiungere un altro microcontrollore o computer migliore per farlo. A volte puoi trovare una parte che fa entrambe le cose, altre volte hai un sistema di rete che delega l'attività di controllo elettrico a qualcosa come un Arduino
Chris Stratton,

2

Altri si sono concentrati sul primo aspetto della tua domanda; Mi concentrerò su quest'ultimo. Hai chiesto se solo chiunque può entrare nell'IoT o se devi essere una grande azienda con molte risorse.

Se sfogli il tag , vedrai che ci sono dispositivi IoT che hanno già fatto tutto il lato server. Ci sono molti dispositivi IoT che "solo chiunque" può acquistare, inclusi la videocamera Nest, il termostato, ecc., Amazon Echo, Google Home, forni intelligenti, frigoriferi, ecc.

Anche molte nuove auto si qualificano come oggetti da rilevare o controllare da remoto ... anche se forse non sono ancora la parte controllata. :)

Questo porta alla risposta della tua prima domanda:

Come posso iniziare a esercitarmi nello sviluppo del mio primo dispositivo IoT?

Non devi necessariamente iniziare sviluppando: puoi iniziare con qualcosa di più semplice. Se si desidera ottenere nel lato in via di sviluppo di esso, si potrebbe semplicemente fare il grande passo, come qualcuno ha suggerito, ma si ha la possibilità a vostra disposizione per iniziare semplice e spostare gradualmente nel regno del più complesso.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.