Comment un développeur expérimenté commence-t-il avec l'IoT

10

Je suis un développeur expérimenté utilisant diverses technologies ainsi qu'en temps réel. Je veux apprendre à développer pour un appareil qui n'est pas un ordinateur, une tablette ou l'un des appareils familiers que tout le monde connaît.

J'ai remarqué que les sites commerciaux mondiaux proposent du matériel IoT tel qu'un module relais 2 canaux, une carte de développement nodeMCU et plus de matériel lié à l'IoT. Je ne sais pas quoi faire ni commencer .

En supposant que je sais coder, comment commencer à développer mon premier appareil IoT?

L'irréel
la source
Les "autres" appareils ont un processeur ou un microcontrôleur ainsi qu'un ordinateur général, la seule différence est dans leurs performances, la mémoire disponible, etc.
Bence Kaulics
9
Il me semble qu'il y a un décalage entre les questions «développeur expérimenté» et «comment démarrer». C'est très simple. Trouvez une application qui vous concerne aujourd'hui (chauffage, éclairage, automatisation) et mettez-la en œuvre. Une fois qu'il y a des questions spécifiques , vous devriez obtenir de bonnes réponses ici - elles proviendront probablement d'améliorations ou d'itérations sur votre prototype d'origine. Telle que posée, cette question demande vraiment des opinions, il n'y a pas de bonne réponse claire.
Sean Houlihane
3
J'ai fait une modification qui essaie d'accéder au noyau de la question, mais en gardant une partie du texte d'origine. Je suggère que OP @TheUnreal demande la deuxième partie "Est-ce que se lancer dans l'IoT nécessite d'être une entreprise ingénieuse ou un individu peut-il le faire aussi bien dans ce monde?" comme une question distincte, car je pense qu'elle est toujours pertinente.
Simon Munro

Réponses:

14

C'est une question très large, mais j'essaierai de donner quelques indications générales, si tout va bien utiles aux autres, ainsi qu'à vous (donc, veuillez accepter mes excuses si je poste des choses que vous connaissez déjà).

Si vous posez des questions sur la lecture des capteurs, il s'agit de télémétrie et pas nécessairement d'IoT. J'ai codé de nombreux projets où un PC autonome lit et affiche des mesures.

Si vous souhaitez également contrôler le matériel connecté, il s'agit de SCADA . Encore une fois, il ne doit pas nécessairement être connecté à Internet.

Voici un schéma de SCADA, qui donne une très bonne idée de l'IoT en général. Notez que les API sur le schéma sont des capteurs et des commandes d'appareils compatibles IoT.

Architecture SCADA

Vous pouvez demander des félicitations matérielles pour les capteurs et les contrôleurs dans Hardware Recommendations .

Et, une fois que vous avez du code, vous pouvez obtenir des conseils sur les problèmes sur Stack Overflow .

En général, l'IoT pour l'industrie implique le modèle client / serveur, le client mesurant / contrôlant les périphériques matériels et rapportant / recevant des commandes du serveur. Le serveur possède également généralement une base de données et permet de générer des rapports pour la gestion et les alarmes (et peut demander au matériel distant de reconfigurer / arrêter en fonction des données reçues).

Phew! Voilà l'intro à l'écart. Maintenant pour se salir les mains.

Si vous voulez entrer dans le vif du sujet du codage, regardez les sockets et comprenez la différence entre TCP et UDP .

Heureusement, les décennies ont enveloppé la plupart des choses les plus délicates dans les bibliothèques, et il est probablement préférable de lire les services RESTful. Il existe de nombreux tutoriels, cours et vidéos en ligne gratuits, selon votre langue; C est un langage embarqué traditionnel, certains utilisant C ++, mais bien sûr, utilisez tout ce que vous savez / vous sentez à l'aise. Python est extrêmement populaire et simple à apprendre, tout en étant le langage recommandé pour le Raspberry Pi.

Personnellement, je préfère les langages compilés à interprétés, car il est plus facile de supprimer les bogues, mais le choix vous appartient entièrement. Assurez-vous simplement qu'il a un bon support pour accéder aux périphériques via USB, Ethernet et - toujours très courant dans l'industrie - le port série.

Côté serveur, plus de 90% des serveurs mondiaux fonctionnent toujours en PHP. Cependant, il y a une adoption de l'utilisation de NodeJS, principalement par des personnes qui codent des applications de navigateur, qui ne peuvent actuellement être effectuées qu'en JavaScript et ne veulent pas apprendre deux langues. Je ne recommande pas de développer des applications IoT basées sur un navigateur, en raison des restrictions sur le code du navigateur accédant au système de fichiers et aux périphériques (bien que, je mentionnerais les goûts de Cordova , si vous souhaitez développer pour smartphone).

Pour commencer, je recommanderais un Raspberry Pi (codage en Python ou C).

Carte Raspberry Pi

Et je recommande fortement un chapeau de capteur. Celui-ci n'est qu'un exemple, mais il n'est pas cher et contient

  • Gyroscope - capteur de vitesse angulaire: +/- 245/500 / 2000dps Accéléromètre
  • Capteur d'accélération linéaire: +/- 2/4/8/16 g
  • Magnétomètre - Capteur magnétique: +/- 4/8/12/16
  • Baromètre Gauss: plage absolue de 260 à 1260 hPa (la précision dépend de la température et de la pression, +/- 0,1 hPa dans des conditions normales)
  • Capteur de température (température précise à +/- 2 ° C dans la plage de 0 à 65 ° C)
  • Capteur d'humidité relative (précis à +/- 4,5% dans la gamme 20-80% rH, précis à +/- 0,5 degC dans la gamme 15-40 degC)
  • Affichage matriciel LED 8x8 RGB
  • Petit joystick à 5 boutons

carte de capteur

Cela vous permettra de collecter des données et de les rapporter à votre serveur. Vous pourrez peut-être trouver un service gratuit en ligne pour recevoir et afficher vos données. J'en ai vu sur d'autres sites SO, mais oubliez où.

Mais, vous voulez probablement coder votre propre serveur. Je recommanderais PHP comme langage de programmation. Pour Linux, vous êtes bien fourni avec LAMP (Linux, Apache, Mysql et PHP). Pour Windows, vous devez installer un WAMP (Windows… etc).

Vous pouvez faire votre choix. J'utilise XAMPP dans des applications industrielles depuis plus d'une décennie. Vous n'avez pas besoin d'utiliser Mysql, Sqlite peut tout aussi bien servir (prise shaless pour ma propre question SO d'il y a 6 ans, " Sqlite ou MySql? Comment décider? "). Vous devrez également vous renseigner sur CRUD .

Sur la base des données reçues du client / capteur, vous souhaiterez peut-être renvoyer une commande, même simple (affichage: "température trop élevée", ce qui peut se traduire par la fermeture d'une vanne dans un système industriel).

Vous voudrez peut-être déclencher des alarmes en temps réel (envoyez un e-mail disant que la température est trop élevée).

Et, vous pouvez également penser à générer des rapports. Commencez avec un tableau montrant les données reçues. Considérez un tableau ou quelque chose de plus sophistiqué. Ajoutez une option d'exportation vers des valeurs séparées par des virgules (CSV) qui permet à l'utilisateur final d'importer les données dans une feuille de calcul pour une analyse et une manipulation supplémentaires.

Si vous ne décidez que vous voulez rapports de fantaisie, vous pouvez le faire en PHP, mais, après quelques décennies de ce que j'ai déménagé à faire une grande partie du côté client stuff rapport, dans le navigateur.

Pour les principes généraux, obtenez un aperçu des applications à page unique et AJAX . Personnellement, j'ai fait beaucoup de recherches et j'ai choisi AngularJS de Google comme langage de programmation (il y a beaucoup de tutoriels et un excellent support), mais vous êtes libre d'utiliser JS, Jquery, etc., comme vous le souhaitez.

Si vous décidez également de coder des éléments du navigateur, et vous pourriez aussi bien utiliser NodeJs côté serveur, de sorte que vous n'avez qu'à apprendre un nouveau langage de programmation.

Trop de choix? Pardon :-(

J'espère que cela vous a donné quelques conseils, mais n'hésitez pas à poser des questions et faites-moi savoir s'il manque des conseils généraux ici.

Mawg dit réintégrer Monica
la source
1
Merci Mawg, la plupart de ce que vous avez dit, je le sais déjà et ce n'était pas un problème, je travaille avec PHP et Javascript ainsi que corodva depuis des années. Je pense que je vais commencer à acheter UNO R3 et voir comment je peux procéder à partir de là.
TheUnreal
1
J'ai commencé à écrire et je n'ai pas pu m'arrêter :-) J'espère que cela aidera les autres. Je ne connais pas assez Cordova. Il est bon pour accéder au matériel téléphonique, à la caméra à la chaux, à la carte SIM, au capteur d'inclinaison, mais peut-il accéder au port série? Parce que cela est beaucoup utilisé dans l'industrie; vous pouvez vous en tirer avec le convertisseur USB vers série, ce que nous utilisons pour les ordinateurs portables, mais Cordova peut-elle envoyer des données via USB? Et Ethernet? suite ...
Mawg dit réintégrer Monica le
1
... Vous connaissez JS, mais je ne recommanderais pas de l'utiliser sur un processeur intégré. Vous pouvez , mais ce n'est certainement pas normal. Peut-être le temps de ramasser du Python ou du C? Ou, peut-être voulez-vous dire UNO R3 <--> serveur <--> navigateur? Restez avec Arduino si vous le savez déjà, par tous les moyens. Je passe à R Pi, mais c'est juste ma préférence personnelle. . Vous avez un projet d'apprentissage en tête? Conseil, conseil… iot.stackexchange.com/questions/675/… :-)
Mawg dit de réintégrer Monica le
9

En tant que développeur expérimenté, vous avez la capacité de comprendre la logique, de lire et d'écrire du code, de comprendre les choses et d'autres compétences importantes. Ce que vous n'avez probablement pas, c'est une compréhension de l'électronique de base et de l'art d'obtenir du code à partir de votre bureau sur un petit appareil.

Sauter au mauvais niveau de complexité peut être intimidant et peut signifier que vous abandonnez trop tôt. Par exemple, les gens recommandent l'ESP8266 et le NodeMCU sans penser que vous devez obtenir le bon, vous avez besoin de la puce montée sur une carte de développement, vous devez y installer votre logiciel, vous devez le connecter à quelque chose, et seulement alors pouvez-vous exécuter JavaScript. C'est beaucoup de compétences différentes dont vous avez besoin, et vous pouvez abandonner l'une de ces étapes.

Ma recommandation est de commencer avec un Arduino. Là où Arduino a fait la différence dans la communauté des fabricants, c'est à quel point il est facile de brancher un Arduino sur un port USB, et la chaîne de compilation, de construction et de déploiement est triée pour vous. Vous pouvez écrire du code et faire clignoter certaines LED très rapidement.

Je vous suggère également de commencer avec le kit de démarrage Arduino officiel . Bien que cela soit très simple, les instructions sont faciles et vous obtenez un tas de morceaux électroniques utiles (planche à pain, câbles de démarrage, LED, etc.) qui restent utiles.

Ne soyez pas découragé par la base de l'Arduino. Obtenez de l'enthousiasme en commençant par l'électronique et la partie pratique avant d'essayer quelque chose de trop complexe. Si vous trouvez l'électronique intéressante et que vous voulez en faire plus, restez avec l'Arduino et obtenez un kit plus complexe. J'ai acheté le robot BOE Shield-Bot . Ce n'est peut-être pas le robot le meilleur ou le moins cher, mais il a un très bon tutoriel qui explique en détail comment contrôler les servos et autres. Vous obtenez également beaucoup plus de bits utiles.

Si vous réussissez, vous abandonnerez et reviendrez au logiciel côté serveur, ou vous achèterez plus de bits, de fers à souder, plus de cartes et de composants. Très bientôt, vous atterrirez avec un tiroir de rêves brisés comme le reste d'entre nous.

Je ne recommanderais pas d'utiliser le Pi trop tôt. C'est plus un ordinateur qu'une chose, et n'a pas de fonctionnalités importantes qui sont nécessaires au début de votre voyage de compréhension (comme l'entrée analogique). Vous dépasserez très rapidement l'Arduino (il ne se connecte pas très facilement à Internet), mais c'est un bon endroit pour voir si ce sera quelque chose que vous apprécierez.

Simon Munro
la source
1
Ceci est la réponse la plus proche de mes questions. Je vous remercie.
TheUnreal
6

Je vais répondre à votre première question.

Si vous voulez simplement apprendre, je peux vous recommander quelques livres sur l'IoT mais je suppose que vous pouvez les rechercher par vous-même. Si cela est clair, je vous recommanderais de commencer à travailler sur votre propre petit projet, c'est ainsi que vous apprenez le mieux, face à des problèmes réels.

Vous devrez décider ce que vous voulez créer. Voici quelques idées et idées intéressantes pour commencer:

Projets Arduino -> Microcontrôleur

Projets Raspberry Pi -> Microprocesseur (plus puissant)

hackaday.com -> Composants mixtes

Une fois que vous avez une idée de ce que vous voulez faire, vous devez définir les exigences de votre projet. Le microcontrôleur, les capteurs, les actionneurs, les protocoles de communication, etc.

Comme vous pouvez le voir, les appareils les plus populaires sont Arduino , Raspberrypi et tous les autres parents, le beaglebone noir , l' oignon , etc., il y en a beaucoup plus, les différences sont le prix, la compatibilité avec d'autres capteurs et la popularité. Les plus populaires sont plus compatibles et ont plus de support sur les forums.

Nous pouvons vous aider avec l'exigence basée sur votre projet. Bonne chance!

Ponceuses de serpent
la source
J'ai déjà une idée, mais je veux faire l'expérience de ce monde avant de me lancer. Je pense que je vais commencer à acheter Uno R3 et publier des questions dès que je partirai.
TheUnreal
1
Un Arduino Uno est bon pour contrôler les éléments physiques, mais il est coûteux de s'adapter aux protocoles réseau, car vous devez essentiellement ajouter un autre meilleur microcontrôleur ou ordinateur pour le faire. Parfois, vous pouvez trouver une partie qui fait les deux, d'autres fois, vous avez un système face au réseau qui délègue la tâche de contrôle électrique à quelque chose comme un Arduino
Chris Stratton
2

D'autres se sont concentrés sur la première facette de votre question; Je vais me concentrer sur ce dernier. Vous avez demandé si n'importe qui pouvait entrer dans l'IoT ou si vous devez être une grande entreprise avec de nombreuses ressources.

Si vous parcourez la balise , vous verrez qu'il existe déjà des appareils IoT pour lesquels tout le côté serveur est déjà fait pour vous. Il existe de nombreux appareils IoT que "n'importe qui" peut acheter, y compris la Nest cam, le thermostat, etc., l'Amazon Echo, le Google Home, les fours intelligents, les réfrigérateurs, etc.

Même de nombreuses voitures neuves sont considérées comme des objets à détecter ou à contrôler à distance ... mais peut-être pas encore la partie contrôlée. :)

Cela conduit à la réponse à votre première question:

Comment puis-je commencer à pratiquer le développement de mon premier appareil IoT?

Vous ne devez pas nécessairement commencer par développer: vous pouvez commencer avec quelque chose de plus simple. Si vous souhaitez vous lancer dans le développement, vous pouvez simplement franchir le pas, comme certains l'ont suggéré, mais vous avez la possibilité de commencer simplement et de vous déplacer progressivement dans le domaine du plus complexe.

anonyme2
la source
1
Et où mieux commencer que iot.stackexchange.com/questions/675/… ?
Mawg dit réintégrer Monica le