L'UDOO Neo est idéal pour les conceptions IIoT dans lesquelles de nombreux capteurs E/S et de puissantes ressources de calcul sont essentiels

Par Rédacteurs européens

Avec la contribution de Rédacteurs européens de DigiKey

L'Internet des objets (IoT) est considéré comme étant responsable de la croissance rapide des cartes de microcontrôleur compactes et sans affichage, conçues pour une vaste gamme de dispositifs de nœuds périphériques, comme les capteurs et les actionneurs. Avec un petit nombre d'E/S, un microcontrôleur sans fil et une faible consommation énergétique, les cartes et modules compacts constituent l'ensemble des dispositifs qui alimentent les données aux services d'analytique basés sur le cloud. De nombreuses applications nécessitent davantage de ressources de calcul ou d'options de connectivité, ou une interface opérateur plus développée.

Qu'il s'agisse d'exécuter une fonction de passerelle, d'agréger des données provenant de plusieurs capteurs ou d'initier une commande locale ou un mélange de fonctions, il est préférable d'avoir un ordinateur monocarte doté de plus de fonctionnalités et de ressources. Tandis que les fabricants d'équipements industriels cherchent à savoir comment construire un dispositif intégré capable de répondre à l'ensemble des divers besoins potentiels de chaque appareil, nombreux sont ceux qui adopteront une approche axée sur la plateforme, qui utilise une carte principale intégrée et des accessoires périphériques selon les besoins. Pour les volumes faibles à moyens, le mérite revient de plus en plus à ceux qui choisissent l'un des ordinateurs monocarte (SBC) open-source disponibles sur le marché, toujours plus populaires. Cette solution permet non seulement d'économiser des sommes considérables liées aux coûts d'ingénierie exceptionnels, à la certification sans fil et à l'activation du logiciel, mais elle permet également à l'équipe de développement de se concentrer très rapidement sur les aspects applicatifs de la conception au lieu de devoir évaluer les innombrables dispositifs à incorporer, les concevoir et fabriquer les prototypes.

Pour de nombreuses équipes d'ingénierie, l'une des conséquences notables de l'IoT réside dans le changement fondamental de la manière d'aborder les nouveaux projets. L'équipe peut tout à fait être capable de concevoir une carte intégrée de A à Z, mais l'objectif final consiste à mettre en place une conception opérationnelle dans des délais très courts. Pour ceux qui souhaitent accélérer leur conception à l'aide d'une plateforme SBC avant de créer leur propre carte, un accès à l'ensemble des fichiers mécaniques, configurations et nomenclatures est nécessaire.

UDOO Neo

Figure 1 : UDOO Neo

Les développeurs peuvent envisager par exemple la solution SBC UDOO Neo. Disponible dans trois versions différentes, Basic, Extended et Full (basique, étendue et intégrale), ce système à la fois complet et abordable est basé sur le processeur d'application Freescale i.MX6SoloX pour Android et Linux. Dans cet article, nous nous concentrerons sur la version Neo Full. Ce dispositif Freescale intègre sur une puce unique un puissant processeur monocœur ARM® Cortex®-A9 à 1 GHz et un coprocesseur E/S en temps réel ARM Cortex-M4 jusqu'à 200 MHz. Capable de partager et d'utiliser de nombreuses fonctionnalités matérielles (GPIO, UART, I2C, etc.), il est connecté par le biais d'un bus AXI haut débit. Grâce à un multiplexage modifiable, le développeur peut attribuer la configuration des fonctionnalités périphériques utilisées, en fonction du cœur.

La carte UDOO Neo Full dispose d'une mémoire Flash de 1 Go et offre une gamme complète de GPIO, d'interfaces série et d'une connectivité complète Wi-Fi 802.11 b/g/n et BLE. Équipée de capteurs de mouvement intégrés à 9 axes, d'un accéléromètre, d'un magnétomètre et d'un gyroscope à 3 axes, et d'interfaces LVDS, HDMI, caméra et audio, cette carte convient à de nombreuses conceptions industrielles.

En ce qui concerne le système d'exploitation, le cœur Cortex-A9 peut exécuter Android Lollipop ou UDOObuntu (14.04 LTS). Le coprocesseur Cortex-M4 a accès à un environnement Arduino de pile complète, y compris à des embases de shield Arduino, ce qui en fait une nouvelle fois une plateforme très flexible.

Principales fonctionnalités de la carte UDOO Neo Full

Figure 2 : Principales fonctionnalités de la carte UDOO Neo Full

Les broches externes, en rouge dans la Figure 2, sont assignées par défaut au processeur Cortex-A9 en mode GPIO. Ainsi, ces broches sont contrôlables directement depuis le système de fichiers (Linux, Android). Les broches internes, en vert, sont assignées et contrôlées par le coprocesseur Cortex-M4 avec les mêmes dimensions que le brochage Arduino UNO.

La carte est alimentée par une seule alimentation de 6 à 15 VCC et toutes les opérations GPIO se font à 3,3 VCC. Un schéma fonctionnel (Figure 3) met en avant les principaux composants et les principales interfaces associés au processeur d'applications i.MX.

La carte Neo peut être utilisée en tant que plateforme de calcul sans affichage ou en tant que plateforme pour le contrôle utilisateur, en ajoutant un écran tactile LVDS ou une sortie HDMI. Si votre application prévue n'a pas besoin des capteurs de mouvements ou d'autant de mémoire, vous pouvez opter pour les versions Basic ou Extended de la carte Neo et ainsi faire des économies. Pour de nombreuses applications à distance, il est préférable d'utiliser une configuration sans affichage. La communication se fait alors au moyen d'un terminal SSH à distance ou d'un autre système similaire.

Schéma fonctionnel i.MX6 de la carte UDOO Neo

Figure 3 : Schéma fonctionnel i.MX6 de la carte UDOO Neo

Les premiers pas avec la carte UDOO Neo sont vraiment très faciles. Toutes les informations nécessaires pour faire fonctionner la carte, ainsi qu'une configuration complète, des échantillons de code, etc. sont disponibles sur un site wiki. Ce site fournit également tous les fichiers de configuration mécanique ainsi que la nomenclature, en cas de besoin.

À la livraison, aucun système d'exploitation n'est installé sur la carte. Que vous choisissiez Linux ou Android, vous devez avoir accès à une carte microSD d'une capacité de 8 Go minimum. Sur le site de documentation Neo, téléchargez le système d'exploitation de votre choix sur votre PC ou votre ordinateur portable, et dézippez-le. Vous devez ensuite insérer votre carte microSD dans un port de carte ou un adaptateur USB. Accédez à la ligne de commande de votre ordinateur (vous trouverez tous les détails ici), et suivez les instructions pour démonter la carte et toutes les partitions avant de transférer le système d'exploitation. Lorsque le transfert est terminé, n'oubliez pas de synchroniser ou d'éjecter la carte afin de fermer convenablement l'écriture.

Insérez ensuite la carte microSD dans la carte Neo, connectez une souris et un clavier (généralement via USB), un moniteur HDMI (recommandé lors de la première utilisation pour vérifier que tout fonctionne correctement), et mettez le système sous tension. Vous devriez rapidement voir fonctionner les DEL verte et jaune sur la carte et si vous avez choisi Linux, Tux (le pingouin Linux) devrait apparaître à l'écran avant le bureau UDOO Ubuntu. Ce bureau familier vous donne accès à l'ensemble des fonctionnalités et des programmes normaux de Linux. Un IDE Arduino configuré pour Neo est également préchargé dans la distribution Linux et prêt à l'emploi depuis le bureau. L'étape suivante consiste à connecter le panneau de commande Neo basé Web. Vous pouvez le faire de différentes manières : en indiquant au navigateur Neo son serveur Web udooneo.local ou l'adresse IP de la carte, si vous la connaissez. Reportez-vous à la Figure 4.

Panneau de commande Web UDOO Neo

Figure 4 : Panneau de commande Web UDOO Neo

Ce panneau de commande vous donne un très bon aperçu de ce qui se passe à l'intérieur du système Neo. Outre les informations concernant le statut de connexion câblée ou sans fil, les capteurs et la carte, il offre également des options de configuration pour paramétrer des points d'accès sans fil et s'y connecter, définir des paramètres régionaux et changer la sortie d'affichage. Vous avez également accès à des données concernant les axes et les modules de l'accéléromètre, du gyroscope et du magnétomètre, et vous pouvez tester leur fonctionnement en faisant bouger la carte tout doucement.

À partir du panneau de commande Web, vous pouvez aussi tester des schémas Arduino et en écrire des simples (voir Figure 5). Les utilisateurs habitués aux cartes comme Arduino UNO reconnaîtront l'exemple 'Blink' simple dans l'application d'exemple présentée dans la Figure 5, qui active et désactive la broche 13. La DEL rouge de la carte NEO est connectée à cette broche. Le chargement de ce schéma la fera donc clignoter. Notez que parmi les applications de programmation, vous trouvez l'application Ardublocky, qui permet de créer des schémas Arduino à l'aide de blocs logiques graphiques interconnectés.

IDE Web Arduino et exemples de schémas

Figure 5 : IDE Web Arduino et exemples de schémas

Comme indiqué précédemment, la carte Neo est équipée de deux ensembles de GPIO (entrées/sorties à usage général). Certaines sont accessibles depuis un schéma Arduino : il s'agit des GPIO internes, l'ensemble d'embases le plus profond. D'autres sont accessibles par le biais de Linux : il s'agit des GPIO externes. Toutes présentent une configuration d'entrée par défaut, mais peuvent être configurées en tant qu'entrées ou sorties, et peuvent fournir des interruptions du cœur si nécessaire. Le multiplexage des broches permet au microprocesseur d'affecter des tâches plus spécialisées à ces broches externes.

GPIO accessibles à partir de Linux

Figure 6 : GPIO accessibles à partir de Linux. Cliquez ici pour agrandir l'image.

Le contrôle d'une broche GPIO peut s'effectuer à partir de la ligne de commande à l'aide de commandes simples, comme :

echo out > /gpio/pin19/direction – Pour définir la broche en tant que broche de sortie ou,

echo in > /gpio/pin19/direction – Pour définir la broche en tant que broche d'entrée

Une broche désignée comme broche de sortie peut être configurée à l'état bas, 0 V, avec echo 0 > /gpio/pin19/value

ou à l'état haut, +3,3 VCC, avec echo 1 > /gpio/pin19/value

Les valeurs des broches d'entrée peuvent être lues en utilisant la commande cat /gpio/pin19/value

Le pack udoo-gpio-export, préinstallé dans Linux UDOObuntu, se charge de l'exportation de toutes les GPIO en tant qu'entrées, en plus de la création des liens à partir du répertoire /sys/class/gpio. Vous trouverez plus d'informations sur les exigences avancées dans la documentation UDOO.

La communication entre les cœurs Cortex-A9 et Cortex-M4 se fait par le biais d'une broche série bidirectionnelle virtualisée qui utilise une mémoire partagée pour échanger des données. Ces données sont lisibles à partir de Linux en utilisant /dev/ttyMMC, par exemple minicom –D /ttyMCC, ou dans un schéma Arduino en utilisant l'objet Serial0.

La carte UDOO Neo Full est doté de trois capteurs de mouvement. Un accéléromètre de 14 bits et un magnétomètre de 16 bits se trouvent dans le même boîtier : un dispositif Freescale FXOS8700CQ. L'accéléromètre dispose de trois plages pleine échelle sélectionnables de manière dynamique : +/-2 g, +/-4 g ou +/-8 g.

Le gyroscope triaxial est un dispositif Freescale FXAS21002C.

Ils sont reliés au bus I2C (voir Figure 7) et sont accessibles par les deux cœurs.

Bus I2C présentant les configurations des capteurs et des dispositifs

Figure 7 : Bus I2C présentant les configurations des capteurs et des dispositifs

À partir de la ligne de commande, ils peuvent être activés à l'aide des commandes

echo 1 > /sensors/accelerometer/enable ou echo 1 > /sensors/gyroscope/enable et lorsqu'ils sont désactivés, les valeurs peuvent être lues à l'aide de la commande cat /sensors/magnetometer/data.

Les applications embarquées peuvent évidemment lire les valeurs directement via les registres I2C appropriés. L'accéléromètre et le magnétomètre utilisent l'adresse 0x1E tandis que le gyroscope utilise l'adresse 0x20.

L'accès aux capteurs peut également se faire par le biais d'un langage de niveau supérieur, comme Python. Lors des premières étapes de l'utilisation d'une nouvelle carte, la nature open-source et communautaire de sa conception est appréciable. Citons par exemple la bibliothèque Python Neo.GPIO, disponible sur GitHub, qui offre les codes d'interface de capteur depuis une application Python exécutée sur le système Cortex-A9. Python est déjà inclus dans la distribution UDOObuntu, ce qui en fait une option facile à développer sur la carte Neo. Avant de pouvoir l'utiliser, vous devez télécharger le fichier .ZIP sur GitHub, puis l'extraire dans le répertoire dans lequel vous créerez votre application Python. Plusieurs exemples de codes sont inclus dans le fichier .ZIP, dont une version simplifiée est présentée à la Figure 8.

Le programme Python lit et affiche les données du gyroscope

Figure 8 : Le programme Python lit et affiche les données du gyroscope

Pour exécuter le code Python montré à la Figure 8 à partir de la ligne de commande, l'exécution doit se faire en tant que racine. Si vous utilisez la carte UDOO Neo comme indiqué ci-dessus, votre compte d'utilisateur est udooer. Vous devez inclure le programme GyroExample.py de la manière suivante. Reportez-vous à la Figure 9.

echo udooer | sudo –S su –c ‘python GyroExample.py'

Capture d'écran de l'exécution du code GyroExample.py

Figure 9 : Capture d'écran de l'exécution du code GyroExample.py

La carte UDOO Neo offre un ordinateur monocarte (SBC) complet et puissant qui constitue une plateforme de développement idéale pour une application IIoT. Avec Neo, vous pouvez exécuter votre application initiale très rapidement et commercialiser votre produit de manière aussi efficace et rentable que possible.

DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Rédacteurs européens

À propos de l'éditeur

Rédacteurs européens de DigiKey