Quel microcontrôleur et langage de programmation dois-je utiliser pour un affichage météo sur Internet?

11

Je suis novice dans l'IoT et je veux commencer ma carrière dans l'IoT. En recherchant sur Google des startups dans l'IoT, j'ai trouvé de nombreux blogs. Et j'ai trouvé les langages utilisés dans l'IoT comme C #, Java, Node.js et les microcontrôleurs comme Arduino, Raspberry Pi, Intel, Netduino, etc.

Comme je suis nouveau sur l'IoT, je ne sais pas quelle langue est la meilleure et quel microcontrôleur j'utilise pour une startup?

Pour le démarrage de base, je dis, je veux créer un appareil qui a l'affichage qui montre la météo pour l'emplacement donné depuis mon mobile. Il peut donc s'agir d'un bon exemple de démarrage qui couvre le matériel, Internet et les logiciels.

L'appareil sera alimenté par batterie, un petit affichage numérique et oui, la restriction des coûts.

Quel microcontrôleur et quelle langue dois-je utiliser pour répondre à mes exigences d'affichage de la météo?

Jigarb1992
la source
1
Cela semble être une bien meilleure question que la précédente; beaucoup plus axé sur un cas d'utilisation spécifique. Afin que nous puissions vous donner une bonne réponse, voici quelques questions: votre appareil sera-t-il alimenté par le secteur ou par batterie? Quelle taille voulez-vous que l'écran soit? Y a-t-il une restriction des coûts?
Aurora0001
2
De plus, pour sélectionner le microcontrôleur, cette réponse est vraiment fantastique.
Aurora0001
1
Merci @ Aurora0001 J'ai ajouté plus de détails que vous avez commenté, veuillez vérifier.
Jigarb1992
1
Ramasser les lentes: L'Arduino est un microcontrôleur. Le Pi est un ordinateur complet, des choses comme Pis et Beaglebones et Gumstix sont généralement appelées «ordinateurs à carte unique» (SBC) ou «ordinateur sur modules» (COM). Contrairement au Pi, l'Arduino ne fonctionne pas sur un système d'exploitation - l'Arduino n'est qu'un Atmel ATmega ?? 8 sur une jolie petite carte facile à utiliser qui est livrée avec un IDE pratique. Le Pi est un véritable ordinateur avec un noyau de microprocesseur ARM Cortex-A53. Vous pouvez utiliser, par exemple, un Pi pour effectuer toutes les sorties réseau et d'affichage et un contrôle complexe avec un Arduino pour effectuer un travail simple comme des boutons de lecture, des étiquettes RFID ou quelque chose.
Jason C
1
Appareils alimentés par batterie: voulez-vous dire comme un smartphone / smartwatch (batterie Li, vie quelques jours entre les recharges), ou comme une horloge (AA non rechargeable, vie quelques mois)? Cela guidera votre conception et limitera considérablement vos options si vous choisissez cette dernière.
pjc50

Réponses:

5

Personnellement, je choisirais un Raspberry Pi 3B pour cela, bien qu'il soit probablement beaucoup plus puissant que ce dont vous avez vraiment besoin. Les raisons pour lesquelles je suggère ceci sont:

  • Il dispose d'un LAN sans fil 802.11 b / g / n intégré, vous pourrez donc le connecter à un réseau Wi-Fi plutôt que par un câble Ethernet

  • Il prend également en charge Bluetooth, de sorte que vous pourrez peut-être vous connecter au téléphone via cela.

Vous aurez également besoin d'une unité d'affichage et, de manière pratique, il existe plusieurs écrans conçus pour le Raspberry Pi, comme cet écran tactile 4DPI-32 . Vous devriez simplement pouvoir insérer l'écran directement sur l'en-tête à 40 broches:

40 broches Fondation Raspberry Pi , CC BY-SA 4.0 . Je sais que c'est techniquement un Pi 2B, mais le GPIO est le même sur le 3B.

En ce qui concerne l'aspect programmation dans ce cas, tout ce que vous avez à faire est de récupérer la météo d'une API quelque part et de l'afficher à l'écran en tant que programme GUI. L'écran fonctionne comme n'importe quelle sortie HDMI pour le Pi, vous n'avez donc rien à faire de spécial. Pour Python, vous pouvez utiliser Tkinter pour créer une interface utilisateur de base, ou vous pouvez même choisir d'écrire une application Web en HTML / CSS / JS, selon ce que vous maîtrisez. Vous pouvez utiliser l' API OpenWeatherMap gratuitement; la documentation est liée pour chaque point de terminaison API.

À ce stade, cela dépend vraiment de vous. La meilleure langue ici est la langue avec laquelle vous êtes le plus à l'aise. Si vous aimez AngularJS, créez simplement une page HTML, récupérez la météo avec Angular (ou utilisez une bibliothèque comme celle-ci pour vous aider) et affichez-la en utilisant du CSS pour la rendre belle.

Pour obtenir réellement l'emplacement, je soupçonne qu'il serait plus facile de simplement permettre à l'utilisateur de taper son emplacement sur l'écran tactile du Pi. L'envoi de l'emplacement de votre téléphone est probablement un peu plus difficile, bien que vous puissiez trouver quelque chose si vous recherchez beaucoup.

Pour l'utilisation de la batterie, cette question sur Raspberry Pi Stack Exchange mérite d'être lue.

Aurora0001
la source
1
Je dois brancher les kits Vilros Pi , qui fonctionnent immédiatement et économisent une tonne de configuration initiale ennuyeuse. Également hors sujet, mais pour le débogage, j'ai trouvé que cela (et sa version renforcée si vous recherchez sur le site) était incroyablement utile. Cher pour un usage unique mais ça vaut le coup si vous l'utilisez tout le temps. Fonctionne bien avec un adaptateur HDMI -> VGA.
Jason C
1
Non. D'abord à cause de la dépendance à l'égard d'une carte SD fragile, ensuite parce que vous ne pouvez pas vraiment vous lancer dans la fabrication en quantités modérées. Un pi peut vous obtenir une preuve de concept, mais vous devrez ensuite repenser quelque chose que vous pouvez réellement utiliser dans un produit. En outre, il s'agit essentiellement d'un non-démarreur complet pour l'alimentation de la batterie dans toute utilisation sérieuse.
Chris Stratton
@ChrisStratton: Pour un débutant comme l'OP, un RPi semble une option viable à mon avis. Oui, pour une production à grande échelle, ce ne serait pas idéal, mais je me suis concentré sur la fourniture d'une idée accessible et facile à modifier; un POC est exactement ce dont nous avons besoin ici. Je ne pense pas que la carte SD soit vraiment une grande préoccupation non plus pour une configuration amateur; dans la production de masse, l'histoire est différente mais pour un point de départ, je pense que cela devrait fonctionner assez bien. Je suis ouvert à toutes suggestions pour une meilleure approche.
Aurora0001
Même en dehors de la façon dont ces problèmes le rendent non viable dans un produit, la consommation d'énergie de la batterie de l'affiche l'exclut dès le départ. Parce que le pi est une architecture set-to-box sans la gestion de l'alimentation d'un mobile, vous n'obtiendrez pas plus de quelques heures avec une batterie raisonnable.
Chris Stratton
10

L' Oignon Omega 2 prétend être le plus petit ordinateur Linux au monde. Cette affirmation n'est peut-être pas tout à fait vraie (voir le vocore2 ci-dessous, par exemple), mais d'après mon expérience, elle doit être dans le plus petit 3. Ne coûte que 5 $, le wifi intégré, conçu avec l'IoT spécifiquement à l'esprit. A quelques boucliers disponibles sur leur site Web . Produit tout neuf, semble avoir une communauté forte et active. Les bailleurs de fonds Kickstarter obtiennent l'appareil. Vaut le détour.

En outre, comme indiqué dans les commentaires, consultez le vocore2 , qui semble en fait plus petit que l'Oignon, et moins cher à 4 $. Il est actuellement financé par IndieGoGo et les dates d'expédition estimées sont février 2017 (le mois prochain au moment d'écrire ces lignes). Semble également avoir un assortiment de quais disponibles, et dispose d'un routeur wifi intégré, ce qui est plutôt cool.

Je viens de les rencontrer l'autre jour et je n'ai aucune expérience avec eux. Notez, cependant, en raison de leur nouveauté, certains des packages Linux que vous pouvez utiliser ne sont pas encore disponibles (par exemple, je sais pertinemment qu'au moment de la rédaction de ce document, un package gstreamer n'est pas disponible sur l'Oignon pourtant, vous devez construire à partir des sources, bien que gstreamer ne vous concerne pas).

Bref, comme le dit l'autre réponse, le Pi est un excellent appareil à faible coût. N'oubliez pas le Raspberry Pi Zero , un autre petit ordinateur à 5 $ dans le style de l'Oignon. Il n'a pas tous les ports à bord que les plus gros Pi ont, mais si cela ne vous dérange pas, ou si vous voulez simplement utiliser un 3 pour le développement et un Zero pour sa taille dans les produits finaux, c'est un autre choix à considérer.

D'autres appareils, certains coûteux, comprennent:

  • BeagleBone Black (c'est la seule alternative Pi que j'envisage sérieusement en raison de son faible coût).
  • Gumstix ($$$, mais nous les utilisons tout le temps dans les projets pour leur taille)
  • Udoo ($$$ mais a du punch)
  • Toradex Colibri (Un peu difficile à travailler, mais nous les utilisons aussi beaucoup, de meilleures spécifications qu'un Gumstix, et avons la possibilité d'exécuter Windows CE avec une fonction de démarrage instantané si vous préférez une chaîne d'outils Windows et un temps de démarrage pratiquement nul ).

Notez également que Vilros fabrique de superbes kits de démarrage Pi (moins chers sur Amazon) pré-emballés avec un système d'exploitation, fonctionnant en Wifi, des dissipateurs de chaleur, un boîtier, fonctionne immédiatement et économise une tonne de travail de configuration. Il vaut également la peine de vérifier si vous empruntez la route Pi. Vilros fabriquait également des kits de démarrage Beaglebone, qui ne semblent plus être disponibles sur leur site mais si vous recherchez Newegg / Amazon / etc. vous pouvez toujours trouver le stock disponible.


Soit dit en passant, un Arduino (ou un autre microcontrôleur, contrairement aux ordinateurs à carte unique à part entière énumérés ci-dessus) à lui seul n'est probablement pas ce que vous voulez ici. L'Arduino n'est qu'un Atmel ATmega168 / 328. Il n'exécute pas de système d'exploitation et ne fait rien d'autre que ce que vous lui demandez de faire. Ainsi, par exemple, pour la mise en réseau, vous auriez besoin du bouclier Ethernet, qui est livré avec une bibliothèque de contrôle Ethernet complète qui, je crois, fournit une pile TCP et UDP (je ne l'ai jamais utilisée, juste en parcourant leur site) et prend bien sûr un beaucoup d'espace de code limité.

Ensuite, vous devez créer votre client météo et tout le reste, et vous devez tout faire en 32 Ko ou moins. C'est une saveur de développement différente de celle du développement Linux / Windows sur Pi / Beaglebone / Gumstix / Colibri / etc. Un peu en dehors de la portée de cette réponse.

Ce que l'Arduino est bon ici, c'est comme un complément à votre système principal pour faire des choses d'interface matérielle, comme lire des capteurs de pression, des boutons, contrôler des éléments électroniques de base, ce genre de chose.

Le développement de systèmes embarqués est une tout autre bête que le développement de bureau que vous feriez sur le Pi, et je ne recommanderais vraiment pas d'essayer de le faire avec un Arduino seul, surtout sans expérience.

Jason C
la source
1
vocore2 est plus petit et moins cher en ce moment (4 $) et tourne toujours OpenWRT (Linux)
Matija Nalis
2
Quelle est l'histoire open source avec celui-ci?
Sean Houlihane
@SeanHoulihane Grande question. Je vais voir si je peux le découvrir, leur page Kickstarter et leur page d'accueil manquent à ce sujet. Je suis en fait un peu vexé par la revendication la plus petite des gens d'Oignon après le commentaire vocore2 de Matija ci-dessus, mais peut-être qu'ils peuvent se racheter (à mes humbles yeux) avec une architecture ouverte.
Jason C
3
Rappelez-vous, les gens peuvent réclamer n'importe quoi sur Kickstarter ...
Sean Houlihane
@SeanHoulihane homme Oh, ne pas me lance sur mon coup de gueule de haine Kickstarter, heh. Résistez, résistez ... Pourtant, Kickstarter prétend et Open-ness mis à part, l'Omega et le vocore sont de nouveaux appareils plutôt cool. Et nous avons aussi le RPi Zero sur le front à faible coût.
Jason C
6

Je suggère une approche étape par étape pour découvrir la langue et le contrôleur à utiliser. Le microcontrôleur dont vous avez besoin dépendra des tâches que vous souhaitez effectuer. Théoriquement, la tâche définira certaines exigences qu'un microcontrôleur approprié remplira, vous devez donc choisir le microcontrôleur en fonction de ces exigences.

  1. Définissez une user story pour l'appareil. Qu'en attendez-vous? De quoi voulez-vous qu'il soit capable?

    Dans votre cas, il est déjà défini par vous:

    Un appareil alimenté par batterie qui devrait être capable de recevoir des entrées d'un téléphone intelligent et d'afficher les informations météorologiques des emplacements demandés sur son propre écran.

  2. Maintenant, l'étape 1. vous donne quelque chose pour commencer. Vous pouvez décider du matériel dont vous avez besoin au niveau du diagramme.

    Vous aurez certainement besoin d'un écran et éventuellement d'un module WiFi ou Bluetooth pour communiquer avec votre mobile. L'accès aux bases de données météorologiques mondiales nécessitera éventuellement une connexion Internet. Vous devriez contrôler les deux avec un MCU ou le module WiFi (vous avez besoin d'Internet pour pouvoir exclure Bluetooth) devrait être capable de contrôler l'affichage et d'exécuter votre logiciel.

  3. Vous pouvez commencer à chercher des pièces spécifiques. Vous pouvez commencer par décider de la batterie que vous utiliserez, afin de prendre en compte la consommation d'énergie de vos pièces potentielles. J'ai résumé un processus général de sélection de MCU dans l'une de mes réponses précédentes . Fondamentalement, la même chose devrait être faite ici. Trouvez un écran bon marché, il utilisera probablement une interface SPI ou I2C pour la communication. Ensuite, vous pouvez rechercher soit un module Wifi avec SPI / I2C et dispose d'un MCU intégré ou d'un MCU séparé et d'un module WiFi. Le module WiFi individuel utilisera probablement UART pour communiquer, de sorte que le MCU individuel devrait l'avoir le long du SPI / I2C.

  4. Quant à la langue. La plupart des microcontrôleurs limiteront vos possibilités dans ce domaine. Dans la plupart des cas, vos choix seront soit C, C ++ ou Assembly, à proprement parler des microcontrôleurs ici et non des ordinateurs à carte unique.

    Si vous décidez d'aller avec un BeagleBone ou Raspberry qui peut exécuter Linux ou un autre système d'exploitation puissant, je dis que la meilleure langue sera celle que vous connaissez le mieux, bien sûr, elle devrait être capable de gérer la tâche. ( Vous pouvez exécuter Java sur le RPi si vous le souhaitez. )

    L'ouverture d'une socket à un service de données météorologiques mondiales peut également se faire en C, C # ou Python. Ce serait un peu plus difficile de traiter JSON avec C mais certainement possible.

Parlant des coûts en général. La meilleure option est de rechercher des périphériques d'affichage compatibles WiFi, il y aura beaucoup de résultats et la plupart d'entre eux utiliseront le même matériel, et ce sera probablement le moins cher.


Vous pouvez utiliser un module WiFi ESP8266 qui est compatible Arduino pour se connecter à Internet et interfacer un écran. Cela nécessitera beaucoup de bricolage qu'un Raspberry Pi, mais sera moins cher.

Voici un projet Hackaday sur l'écran ESP8266 + OLED .

Bence Kaulics
la source
2
Bonne ventilation du processus. Micropython est disponible pour de nombreuses petites cartes, peut-être un facteur à considérer est l'écosystème de la carte, et s'il existe des bibliothèques open source (bien que les fournisseurs de MCU fournissent souvent de bonnes bibliothèques aussi).
Sean Houlihane
6

Créer une startup ne concerne pas ce que vous pouvez faire avec la technologie ni même le produit. Pour une startup réussie qui peut captiver les VC, vous devez d'abord penser au marché que vous allez servir. Mais penser au marché que vous desservirez ne suffit pas. Vous devez disposer de données réelles sur le marché. Il ne s'agit pas seulement de quelque chose qui a du sens pour vous. Créer un produit et ensuite tenter de le vendre n'est pas une approche réussie et c'est ainsi que finissent les startups les plus infructueuses. Un marché est un VRAI BESOIN. Lorsque vous créez un produit, créez-le pour répondre à un marché spécifique. C'est ce qui fait un produit réussi, un produit qui se vend parce que les gens le recherchent déjà. Les VC investissent uniquement dans les startups qui ont de tels produits, surtout si elles vendent déjà.

Pour choisir une technologie pour développer votre produit, vous devez d'abord savoir ce que votre produit doit faire, voici comment cela va résoudre le problème sur le marché sélectionné. Ensuite, regardez ce que les clients potentiels sont prêts à payer pour cela. Ensuite, choisissez la technologie qui permet le délai de mise sur le marché le plus rapide tout en respectant le coût dans le budget. Ensuite, externalisez le développement ou obtenez un partenaire qui peut le faire et qui est prêt à travailler avec vous. Partagez les bénéfices 50/50 avec votre partenaire. Ensuite, lorsque vous avez un prototype, commencez à élaborer votre plan d'affaires et n'oubliez pas que vous ne pouvez captiver les VC que si vous leur montrez comment ils peuvent gagner de l'argent.

Si vous avez besoin de réduire le coût de votre produit pour la production de masse, vous pouvez utiliser des langages de niveau inférieur et des micro-contrôleurs moins ingénieux comme Microchip PIC ou Silicon Labs EFM avec ASM / C / C ++. Si le produit ne va pas en production de masse (100k +), utilisez un langage de niveau supérieur et des micro-contrôleurs plus ingénieux, comme Micro Python ou Lua avec ARM32 MIPS, ou même Linux avec ARM32 / 64. Cela permet d'économiser sur les coûts de développement mais augmente le prix du matériel. N'oubliez pas que le prix du produit n'est pas seulement un PCB avec des composants; le développement, le logement, l'emballage et tout le reste nécessaire pour vendre le produit devraient entrer dans son coût. Mettez cela dans le plan d'affaires. Et n'allez pas à un VC avec un Arduino ou un Raspberry pi ou un Oignon ou quelque chose qui ressemble à un gadget amateur,

Démarrez, pas en bas, et bonne chance.

555
la source
Cela donne vraiment un sens complet du marketing. Merci :)
Jigarb1992