Quale microcontrollore e linguaggio di programmazione dovrei usare per un display meteo abilitato per Internet?


11

Sono un principiante in IoT e voglio iniziare la mia carriera in IoT. Mentre cerco su Google startup in IoT, ho trovato molti blog. E ho trovato i linguaggi utilizzati in IoT come C #, Java, Node.js e i microcontrollori come Arduino, Raspberry Pi, Intel, Netduino, ecc.

Dato che sono nuovo di IoT, non so quale sia la lingua migliore e quale microcontrollore utilizzo per una startup?

Per l'avvio di base che dico, voglio creare un dispositivo con il display che mostri il tempo per la posizione indicata dal mio cellulare. Quindi potrebbe essere un buon esempio per l'avvio che copre l'hardware, Internet e il software.

Il dispositivo sarà alimentato a batteria, un piccolo display digitale e sì una limitazione dei costi.

Quale microcontrollore e lingua dovrei usare che soddisfa i miei requisiti per mostrare il tempo?


1
Questa sembra una domanda molto migliore della tua precedente; molto più focalizzato su un caso d'uso specifico. Quindi possiamo darti una buona risposta, ecco alcune domande: il tuo dispositivo sarà alimentato a rete o a batteria? Quanto vuoi che sia grande il display? C'è una limitazione dei costi?
Aurora0001

2
Inoltre, per selezionare il microcontrollore, questa risposta è davvero fantastica.
Aurora0001

1
Grazie @ Aurora0001 Ho aggiunto maggiori dettagli mentre commentavi, controlla.
Jigarb1992,

1
Pick nits: Arduino è un microcontrollore. Il Pi è un computer completo, cose come Pis e Beaglebones e Gumstix sono in genere chiamati "computer a scheda singola" (SBC) o "computer-on-module" (COM). A differenza del Pi, l'Arduino non esegue un sistema operativo: l'Arduino è solo un Atmel ATmega ?? 8 su una piccola scheda di facile utilizzo fornita con un IDE conveniente. Il Pi è un vero computer con un core a microprocessore ARM Cortex-A53. Potresti usare, diciamo, un Pi per fare tutto il networking e visualizzare l'output e il controllo complesso con un Arduino per fare un lavoro semplice come pulsanti di lettura, tag RFID o qualcosa del genere.
Jason C,

1
Dispositivi alimentati a batteria: intendi come uno smartphone / smartwatch (batteria Li, durata alcuni giorni tra le ricariche) o come un orologio (AA non ricaricabile, durata alcuni mesi)? Ciò guiderà il tuo design e limiterà fortemente le tue opzioni se scegli quest'ultima.
pjc50,

Risposte:


5

Personalmente, selezionerei un Raspberry Pi 3B per questo, anche se probabilmente è molto più potente di quello di cui hai veramente bisogno. I motivi per cui suggerisco questo sono:

  • Ha una LAN wireless 802.11 b / g / n integrata, quindi sarai in grado di collegarlo a una rete Wi-Fi piuttosto che tramite cavo Ethernet

  • Supporta anche il Bluetooth, quindi potresti essere in grado di collegarti al telefono tramite quello.

Avrai anche bisogno di un'unità display e, convenientemente, ci sono diversi display progettati per Raspberry Pi, come questo touchscreen 4DPI-32 . Dovresti essere in grado di inserire il display direttamente nell'intestazione a 40 pin:

40 pin Fondazione Raspberry Pi , CC BY-SA 4.0 . Sono consapevole che questo è tecnicamente un Pi 2B, ma il GPIO è lo stesso sul 3B.

Per quanto riguarda l'aspetto della programmazione in questo caso, tutto ciò che dovresti fare è recuperare il tempo da un'API da qualche parte e visualizzarlo sullo schermo come un programma GUI. Il display funziona come qualsiasi uscita HDMI per il Pi, quindi non è necessario fare nulla di speciale. Per Python, potresti usare Tkinter per creare un'interfaccia utente di base o potresti persino scegliere di scrivere un'applicazione Web in HTML / CSS / JS, a seconda di ciò che ti piace. È possibile utilizzare l' API OpenWeatherMap gratuitamente; la documentazione è collegata per ciascun endpoint API.

A questo punto, dipende davvero da te. La migliore lingua qui è la lingua con cui ti senti più a tuo agio. Se ti piace AngularJS, basta creare una pagina HTML, recuperare il tempo con Angular (o utilizzare una libreria come questa per aiutarti) e visualizzarla utilizzando alcuni CSS per renderla piacevole.

Per ottenere effettivamente la posizione, sospetto che sarebbe più semplice consentire all'utente di digitare la propria posizione sul touchscreen del Pi. Inviare la posizione del telefono è probabilmente un po 'più difficile, anche se potresti essere in grado di trovare qualcosa se cerchi molto.

Per l'utilizzo della batteria, vale la pena leggere questa domanda su Raspberry Pi Stack Exchange .


1
Devo collegare i kit Vilros Pi , che funzionano immediatamente e risparmiano un sacco di fastidiose impostazioni iniziali. Anche off-topic ma per il debug ho trovato questo (e la sua versione rinforzata se cerchi nel sito) per essere incredibilmente utile. Costoso per uso singolo ma ne vale la pena se lo usi tutto il tempo. Funziona bene con un adattatore HDMI -> VGA.
Jason C,

1
No. In primo luogo a causa della dipendenza da una fragile scheda SD, in secondo luogo perché non si può davvero iniziare a produrre in quantità moderate. Un pi potrebbe darti una prova del concetto, ma poi dovrai riprogettare qualcosa che puoi effettivamente usare in un prodotto. Inoltre, è fondamentalmente un completo dispositivo di avviamento per l'alimentazione della batteria in qualsiasi uso serio.
Chris Stratton,

@ChrisStratton: Per un principiante come l'OP, un RPi sembra un'opzione praticabile secondo me. Sì, per la produzione su larga scala, questo non sarebbe l'ideale, ma mi sono concentrato sulla fornitura di un'idea accessibile e facile da modificare; un POC è esattamente ciò che è necessario qui. Non penso che la scheda SD sia davvero una grande preoccupazione sia per una configurazione hobbistica; nella produzione di massa la storia è diversa ma, per cominciare, penso che dovrebbe funzionare abbastanza bene. Sono aperto a qualsiasi suggerimento per un approccio migliore però.
Aurora0001

Anche a prescindere dal modo in cui tali problemi lo rendono non praticabile in un prodotto, il requisito di alimentazione della batteria del poster lo esclude dall'inizio. Poiché il pi è un'architettura set-to-box senza la gestione dell'alimentazione di un dispositivo mobile, non otterrai più di qualche ora da una batteria ragionevole.
Chris Stratton,

10

I Cipolla Omega 2 afferma di essere il più piccolo computer Linux in tutto il mondo. Questa affermazione potrebbe non essere del tutto vera (vedi il vocore2 di seguito, per esempio) ma nella mia esperienza deve essere nel più piccolo 3. Costa solo $ 5, wifi integrato, progettato pensando specificamente all'IoT. Ha alcuni scudi disponibili sul loro sito web . Prodotto nuovo di zecca, sembra avere una comunità forte e attiva. I sostenitori di Kickstarter ottengono il dispositivo. Vale la pena dare un'occhiata.

Inoltre, come sottolineato nei commenti, controlla il vocore2 , che in realtà sembra essere più piccolo della cipolla e più economico a $ 4. Attualmente è finanziato da IndieGoGo e le date di spedizione stimate sono febbraio 2017 (il mese prossimo al momento in cui scrivo). Sembra anche avere un assortimento di dock disponibili e ha un router wifi integrato, il che è abbastanza bello.

Ho incontrato quelli l'altro giorno e non ho esperienza con loro. Nota, tuttavia, a causa della loro novità, alcuni dei pacchetti Linux a cui potresti essere abituato potrebbero non essere ancora disponibili (ad esempio, so per certo che al momento della stesura di questo pacchetto un pacchetto gstreamer non è disponibile su Onion tuttavia, devi compilare dal sorgente, sebbene gstreamer non sia rilevante per te).

A parte quelli, come dice l'altra risposta, il Pi è un ottimo dispositivo a basso costo. Non dimenticare il Raspberry Pi Zero , un altro minuscolo computer da $ 5 lungo le linee della cipolla. Non ha tutte le porte a bordo che hanno i Pi più grandi ma se non ti dispiace, o se vuoi semplicemente usare un 3 per lo sviluppo e uno Zero per le sue dimensioni nei prodotti finali, è un'altra scelta che vale la pena considerare.

Altri dispositivi, alcuni costosi, includono:

  • BeagleBone Black (questa è l'unica alternativa Pi che prenderei seriamente in considerazione a causa del suo basso costo).
  • Gumstix ($$$, ma li usiamo sempre nei progetti per le loro dimensioni)
  • Udoo ($$$ ma racchiude un pugno)
  • Toradex Colibri (Un po 'difficile da lavorare ma usiamo anche queste specifiche migliori rispetto a una Gumstix, e hai la possibilità di eseguire Windows CE con una funzione di avvio istantaneo se preferisci una toolchain di Windows e un tempo di avvio praticamente zero ).

Nota anche che Vilros realizza alcuni fantastici kit di avvio Pi (più economici su Amazon) preconfezionati con un sistema operativo, WiFi funzionante, dissipatori di calore, una custodia, funziona immediatamente e consente di risparmiare un sacco di lavoro di impostazione grugnito. Vale anche la pena dare un'occhiata se segui il percorso Pi. Vilros produceva anche kit di avvio Beaglebone, che non sembrano più essere disponibili sul loro sito ma se si cerca Newegg / Amazon / ecc. puoi ancora trovare lo stock disponibile.


A proposito, un Arduino (o un altro microcontrollore, in contrasto con i computer a scheda singola completamente elencati sopra) da solo probabilmente non è quello che vuoi qui. L'Arduino è solo un Atmel ATmega168 / 328. Non esegue un sistema operativo e non fa davvero nulla oltre a quello che gli dici di fare. Quindi, ad esempio, per il networking avresti bisogno dello shield ethernet, che viene fornito con una libreria di controllo Ethernet completa che credo fornisca uno stack TCP e UDP (non l'ho mai usato, solo navigando nel loro sito) e ovviamente occupa un molto spazio di codice limitato.

Quindi dovresti costruire il tuo client meteo e tutto il resto, e devi fare tutto in 32 KB o meno. È un diverso tipo di sviluppo rispetto allo sviluppo di Linux / Windows su Pi / Beaglebone / Gumstix / Colibri / ecc. Un po 'al di fuori dell'ambito di questa risposta.

A cosa serve Arduino qui è come un componente aggiuntivo del tuo sistema principale per fare cose di interfaccia hardware, come leggere sensori di pressione, pulsanti, controllare elementi elettronici di base, quel tipo di cose.

Lo sviluppo di sistemi integrati è una bestia completamente diversa rispetto allo sviluppo desktop che faresti sul Pi, e non consiglierei davvero di provare a farlo con un Arduino da solo, soprattutto senza esperienza.


1
vocore2 è più piccolo ed economico al momento ($ 4) su OpenWRT (Linux) funziona ancora
Matija Nalis

2
Qual è la storia open source con questa?
Sean Houlihane,

@SeanHoulihane Ottima domanda. Vedrò se riesco a scoprirlo, la loro pagina Kickstarter e la loro home page sono carenti sulla questione. In realtà sono un po 'seccato dall'affermazione "più piccola" della gente della cipolla dopo il commento di Matija sopra, ma forse possono riscattarsi (ai miei umili occhi) con un'architettura aperta.
Jason C,

3
Ricorda, le persone possono rivendicare qualsiasi cosa su Kickstarter ...
Sean Houlihane,

@SeanHoulihane Oh amico, non farmi iniziare sul mio odio di Kickstarter, eh. Resistere, resistere ... Tuttavia, Kickstarter sostiene e Open-ness a parte, sia l'Omega che il vocore sono nuovi dispositivi piuttosto belli. E abbiamo anche RPi Zero sul fronte a basso costo.
Jason C,

6

Suggerisco un approccio graduale per scoprire quale lingua e controller dovresti usare. Il microcontrollore necessario dipenderà dalle attività che si desidera svolgere. Teoricamente l'attività imposterà alcuni requisiti che un microcontrollore appropriato soddisferà, quindi dovresti scegliere il microcontrollore in base a questi requisiti.

  1. Definire una user story per il dispositivo. Cosa ti aspetti da questo? Di cosa vuoi che sia capace?

    Nel tuo caso è già definito da te:

    Un dispositivo alimentato a batteria che dovrebbe essere in grado di ricevere input da uno smartphone e visualizzare le informazioni meteorologiche delle posizioni richieste sul proprio display.

  2. Ora il passaggio 1. ti dà qualcosa per cominciare. È possibile decidere quale hardware è necessario a livello di diagramma a blocchi.

    Avrai sicuramente bisogno di un display e possibilmente di un modulo WiFi o Bluetooth per comunicare con il tuo cellulare. L'accesso ai database meteorologici globali richiederà probabilmente una connessione a Internet. Dovresti controllare entrambi con un MCU o il modulo WiFi (hai bisogno di Internet in modo da poter escludere il Bluetooth) dovrebbe essere in grado di controllare il display ed eseguire il tuo software.

  3. Puoi iniziare a cercare parti specifiche. Puoi iniziare a decidere quale batteria utilizzare, in modo da poter prendere in considerazione il consumo energetico delle parti potenziali. Ho riassunto un processo generale per la selezione di MCU in una delle mie risposte precedenti . Fondamentalmente lo stesso dovrebbe essere fatto qui. Trova un display economico, probabilmente utilizzerà un'interfaccia SPI o I2C per la comunicazione. Quindi puoi cercare un modulo Wifi con SPI / I2C e ha un MCU integrato o un MCU separato e un modulo WiFi. Il singolo modulo WiFi probabilmente utilizzerà UART per comunicare, quindi il singolo MCU dovrebbe averlo lungo l'SPI / I2C.

  4. Per quanto riguarda la lingua. La maggior parte dei microcontrollori limiterà le tue possibilità in questo campo. Nella maggior parte dei casi le tue scelte saranno C, C ++ o Assembly, a rigor di termini qui dei microcontrollori e non dei computer a scheda singola.

    Se decidi di utilizzare un BeagleBone o un Raspberry in grado di eseguire Linux o altri sistemi operativi potenti, allora dico che la lingua migliore sarà quella che conosci meglio, ovviamente dovrebbe essere in grado di gestire l'attività. ( Puoi eseguire Java su RPi se vuoi. )

    L'apertura di un socket a un servizio di dati meteorologici globali può essere eseguita anche in C, C # o Python. Sarebbe un po 'più difficile elaborare JSON con C ma sicuramente possibile.

Parlando di costi in generale. L'opzione migliore è quella di cercare dispositivi di visualizzazione abilitati WiFi, ci saranno molti risultati e la maggior parte utilizzerà lo stesso hardware, e probabilmente questo sarà il più economico.


È possibile utilizzare un modulo WiFi ESP8266 compatibile con Arduino per connettersi a Internet e interfacciare un display. Richiederà molto armeggiare rispetto a un Raspberry Pi, ma sarà più economico.

Ecco un progetto Hackaday su ESP8266 + display OLED .


2
Buona interruzione del processo. Micropython è disponibile per molte piccole schede, forse un fattore da considerare è l'ecosistema della scheda e se ci sono librerie open source (anche se i distributori MCU spesso forniscono anche buone librerie).
Sean Houlihane,

6

La creazione di una startup non riguarda ciò che puoi fare con la tecnologia e nemmeno il prodotto. Per una startup di successo in grado di affascinare i VC dovresti prima pensare al mercato che stai per servire. Ma pensare al mercato che servirai non è abbastanza. È necessario disporre di dati reali sul mercato. Non si tratta solo di qualcosa che ha senso per te. Creare un prodotto e quindi tentare di venderlo non è un approccio riuscito e questo è il modo in cui finiscono le startup più fallite. Un mercato è un VERO BISOGNO. Quando crei un prodotto, crealo per rivolgersi a un mercato specifico. Questo è ciò che rende un prodotto di successo, un prodotto che si vende da solo perché le persone lo stanno già cercando. VC investe solo su startup che hanno tali prodotti, specialmente se stanno già vendendo.

Per scegliere una tecnologia per sviluppare prima il tuo prodotto devi sapere cosa deve fare il tuo prodotto, ecco come risolverà il problema nel mercato selezionato. Quindi guarda ciò che i potenziali clienti sono disposti a pagare per questo. Quindi ha scelto la tecnologia che consente il time-to-market più veloce mantenendo i costi nel budget. Quindi esternalizzare lo sviluppo o ottenere un partner in grado di farlo ed è disposto a lavorare con te. Condividi i profitti 50/50 con il tuo partner. Quindi, quando hai un prototipo, inizia a preparare il tuo piano aziendale e ricorda che puoi catturare i VC solo se mostri loro come possono fare soldi.

Se è necessario ridurre i costi del prodotto per la produzione di massa, è possibile utilizzare linguaggi di livello inferiore e microcontroller meno intraprendenti come Microchip PIC o Silicon Labs EFM con ASM / C / C ++. Se il prodotto non è destinato alla produzione di massa (100k +) utilizzare un linguaggio di livello superiore e microcontrollori più pieni di risorse, come Micro Python o Lua con ARM32 MIPS o persino Linux con ARM32 / 64. Ciò consente di risparmiare sui costi di sviluppo ma aumenta il prezzo dell'hardware. Ricorda, il prezzo del prodotto non è solo un PCB con componenti; lo sviluppo, l'alloggiamento, l'imballaggio e tutto il resto necessario per vendere il prodotto dovrebbero andare nel suo costo. Mettilo nel business plan. E non andare in un VC con un Arduino o un Raspberry Pi o una cipolla o qualsiasi cosa che assomigli a un gadget per hobby,

Inizia su, non giù, e buona fortuna.


Ha davvero un completo senso del marketing. Grazie :)
Jigarb1992,
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.