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?
Réponses:
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.
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).
Et je recommande fortement un chapeau de capteur. Celui-ci n'est qu'un exemple, mais il n'est pas cher et contient
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.
la source
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.
la source
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!
la source
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 smart-home , 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:
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.
la source