La différence entre le développement d'une application avec un Pi peut être très différente ou quelque peu similaire au développement d'une application avec un microcontrôleur en raison de différences matérielles ainsi que des différences de la chaîne d'outils de développement logiciel.
Il existe une large gamme de microcontrôleurs disponibles allant de processeurs 8 bits à 64 bits et ayant de quelques K de RAM à quelques gigaoctets de RAM. Des microcontrôleurs plus performants offrent une expérience de type Pi. Les microcontrôleurs moins performants ne le font pas.
Et même avec le Pi, il existe de grandes différences entre le développement pour le système d'exploitation Windows 10 IoT et le développement pour Raspian, Mate ou un autre système d'exploitation basé sur Linux. Windows 10 IoT nécessite un PC de développement utilisant une chaîne d'outils Visual Studio avec un débogueur distant ciblant l'environnement Universal Windows Program (UWP). Le développement pour Raspian ou Mate peut en fait se faire sur un Pi avec les outils disponibles sur le Pi.
Le protocole d'application contraint est utilisé pour les petits appareils contraints utilisés avec l'environnement Internet des objets. Pour avoir une idée de la variété du matériel et des logiciels du microcontrôleur, cette page sur la mise en œuvre du protocole CoAP donne une idée de l'environnement qu'elle cible. Il mentionne le système d'exploitation Contiki dont j'ai vaguement entendu parler, ainsi que des systèmes d'exploitation mieux connus tels que iOS, OSX et Android. Les langages de programmation mentionnés sont Java, JavaScript, C, C #, Ruby, Go, Erlang, Rust et Python.
La chaîne d'outils utilisée pour le développement avec microcontrôleur varie selon le fabricant ainsi que les types de ressources disponibles auprès des communautés de développement et des initiatives open source. Dans certains cas, vous obtenez un assembleur croisé, dans d'autres cas, vous obtenez un compilateur C croisé, et dans d'autres cas, vous obtenez une belle chaîne d'outils avec toutes les cloches et les sifflets et les émulateurs et similaire à la chaîne d'outils Visual Studio pour Windows 10 IoT.
L'environnement de développement réel d'un microcontrôleur peut impliquer l'utilisation d'un programmeur EEPROM et des outils logiciels pour créer une nouvelle image et la pousser vers l'appareil ou l'appareil peut avoir la connectivité nécessaire pour permettre le téléchargement d'une nouvelle image via une connexion série ou via une connexion réseau.
Mon impression est que la plupart des microcontrôleurs ont un compilateur croisé C bien que le compilateur ne puisse prendre en charge que des normes plus anciennes telles que K&R ou peut-être C98. Les compilateurs croisés C ont souvent des mots clés non standard pour les fonctionnalités spécifiques au microprocesseur, par exemple les mots clés far
et near
pour les pointeurs avec les anciens processeurs 8080 et 8086 avec leur mémoire segmentée.
Il existe également des langages spécialisés qui ciblent les microcontrôleurs tels que le langage de programmation FORTH . Ces langages ont souvent une conception d'exécution qui cible le métal nu afin qu'il n'y ait pas de système d'exploitation autre que l'exécution de la langue.
Le système d'exploitation peut aller de pratiquement inexistant à un système d'exploitation Linux simple jusqu'à un système d'exploitation spécialisé tel que freeRTOS ou Windows Embedded ou un système d'exploitation Linux ou Microsoft Windows complet. Voir ce projet SourceForge MINIBIAN pour Raspberry Pi . Voir également cet eBook, Baking Pi: Développement de systèmes d'exploitation qui décrit le développement d'un OS rudimentaire pour Raspberry Pi en assembleur.
Cet article de Visual Studio Magazine, Programmation de l'Internet des objets avec Visual Studio , fournit une vue d'ensemble des nombreux périphériques disponibles, suivie d'une vue d'ensemble de l'utilisation de Visual Studio IDE pour le développement pour Linux ainsi que Windows.
Il existe un univers énorme et croissant de microcontrôleurs programmables en réseau, disponibles dans le commerce. À un niveau très bas, vous disposez d'une variété de simples appareils 16 et 32 bits d'une variété de fabricants de puces traditionnels comme Texas Instruments. (J'ai joué un peu avec le kit de développement SensorTag et c'est très amusant, ce qui me fait penser que le Watch DevPack pourrait également être un excellent ensemble d'outils d'apprentissage.)
Certains dispositifs de microcontrôleur plus connus incluent Arduino, BeagleBoard et Raspberry Pi. Ces environnements ont tous un support communautaire étendu et sont prêts à être connectés à un grand nombre de capteurs externes, moteurs, servos et tout ce que vous pourriez imaginer. Adafruit, la superstore d'apprentissage de l'électronique fondée par Limor "Ladyada" Fried, fournit toutes sortes de périphériques pour ces cartes, ainsi que sa propre gamme de cartes de développement Feather légères.
...
L'univers d'appareils le plus intéressant pour les développeurs familiarisés avec Microsoft .NET Framework et Visual Studio peut être les environnements compatibles avec Windows 10 IoT Core. Ce sont des appareils x86 et ARM qui prennent en charge les applications de la plateforme Windows universelle (UWP) écrites dans une variété de langues, notamment C #, Visual Basic, Python et Node.js / JavaScript. Le noyau Windows 10 IoT prend en charge des appareils tels que Raspberry Pi, Arrow DragonBoard 410C, Intel Joule et Compute Stick et MinnowBoard. Il existe également des plateformes de produits intéressantes, telles que le portable Askey TurboMate E1.
Un exemple spécifique d'une application de microcontrôleur
Il s'agit d'une image d'une carte microcontrôleur d'une cafetière automatisée. Cela semble être un composant standard pour les cafetières automatiques fabriquées en Chine. Le site Web du fabricant est imprimé sur le PCB.
L'image est composée de deux vues. La vue de gauche est l'arrière de la carte contenant le microcontrôleur et les circuits de support. La vue de droite est l'avant de la carte avec l'écran LCD et un ensemble de boutons qui sont utilisés pour régler l'heure actuelle et pour effectuer des actions telles que la programmation d'une heure de démarrage, etc.
La vue de droite s'insère dans un support qui s'insère ensuite dans une ouverture à l'avant de la cafetière. Les interrupteurs sur le PCB inférieur sont actionnés par des interrupteurs à culbuteur. L'écran LCD, qui semble être un objectif spécial, est utilisé pour afficher l'heure et l'état actuels ainsi que pour afficher l'interface utilisateur lors du changement des paramètres de la cafetière. La LED rouge est utilisée pour indiquer quand la cafetière est en train de faire du café et pour indiquer quand vous avez terminé en éteignant l'éclairage.
Le microcontrôleur est un ELAN Microelectronics Corp EM78P447NAM (fiche technique) qui est un microcontrôleur 8 bits. Certaines des statistiques de base montrent ce qu'est un appareil petit et minimal, mais il fonctionne bien pour son objectif. L'intention est de développer un logiciel qui est ensuite téléchargé dans la ROM à écriture unique dans le cadre de la fabrication.
• Faible consommation d'énergie:
* Less then 2.2 mA at 5V/4MHz
* Typically 35 µA, at 3V/32KHz
* Typically 2 µA, during sleep mode
• ROM 4K × 13 bits sur puce
• Trois bits de protection pour empêcher l'intrusion de codes mémoire OTP
• Un registre de configuration pour répondre aux besoins de l'utilisateur
• 148 × 8 bits sur registres à puce (SRAM, registre à usage général)