Entrer dans Embedded

J’essaie de me familiariser avec le domaine intégré, mais je dispose également de ressources limitées en termes de temps et d’équipement à acheter.

Vous devez connaître C (mais chaque programmeur a besoin de connaître C!)

La plupart de ces plates-formes ont un simulateur / émulateur, mais comme il s’agit d’apprendre de vraies applications et de vrais problèmes (qui sont tous liés à des problèmes de synchronisation du monde réel), vous voulez un vrai tableau.

Vous voulez probablement aussi un oscilloscope (un oscilloscope analogique lent à très bon marché va suffire) et vous avez une idée de son utilisation.

Le moyen le plus simple est probablement Arduino , peut-être plus professionnel mais un peu plus difficile est le tableau de bord MSP430

Il y a quelques leçons de programmation intégrées qui vont d’une plate-forme et d’un style à un autre, mais c’est vraiment un vaste domaine. Différents processeurs peuvent nécessiter des tactiques très différentes et différentes applications peuvent dicter des tactiques de conception de microprogrammes différentes et des microcontrôleurs différents. Voici quelques trucs pour vous aider à démarrer ….

msp430

Texas Instruments propose plusieurs kits de développement USB très économiques, appelés EZ430, basés sur la famille de micro-contrôleurs MSP430. Le plus simple a un msp430 f2013, qui a 2K d’espace de programme flash, 3×128 octets d’utilisateur flash utilisable (une autre page de 128 octets existe, mais c’est spécial), 128 octets de RAM (oui, 128 octets mais c’est suffisant pour beaucoup de choses ), et 16 registres de la CPU (certains d’entre eux ont une fonction spéciale, comme le pointeur d’emstackment, le pointeur d’instructions, le registre d’état et peut-être un ou deux autres). Les MSP430 possèdent également plusieurs registres de fonctions spéciales mappés en mémoire, utilisés pour la configuration et le contrôle des périphériques intégrés. Les MSP430 sont des processeurs von Newman, de sorte que tout se trouve dans un seul espace adresse. Celles-ci coûtent environ 20 $ US pour le programmeur et une languette amovible (carte PC) contenant le msp430 f2013. Pour environ 10 $ US, vous pouvez obtenir 3 étiquettes de remplacement avec msp430 2012, qui est compatible avec les broches de 2013 (pour la plupart) et comporte quelques périphériques différents. Ces tabs comportent une DEL, un bouton et plusieurs grandes vias (trous dans le tableau de circuits imprimés) qui sont connectés à la broche du processeur. Ces vias sont faciles à souder, même si vous n’avez jamais soudé auparavant. En raison de la capillarité, les vias aspirent la soudure en fusion et, même s’il fait chaud, vous pouvez y enfoncer le bout de votre fil.

Ils ont aussi quelques kits similaires avec des radios 802.15.4. Même si cela ne vous intéresse pas à la radio, cela pourrait également vous intéresser, car leur programmeur a également un UART extrait de l’onglet amovible et est compatible avec les tabs utilisés dans les autres kits mentionnés ci-dessus. Ces kits contiennent également au moins une carte programmable supplémentaire et une batterie pour celle-ci. (Un de ces kits peut en contenir plus, mais je n’ai pas le mien avec moi pour le moment, et je ne vais pas le regarder).

Ils ont également un kit qui comprend une montre programmable comme plate-forme cible. Je n’en ai jamais eu, mais ils ont un écran d’affichage, des accéléromètres et plusieurs autres fonctionnalités intéressantes, mais cela peut vous submerger pour votre premier projet. Je suggérerais l’un des kits précédents pour vous aider à utiliser les MSP430.

Vous pouvez obtenir gratuitement des compilateurs C et des environnements de développement pour les MSP430 sous la forme de Kickstart Embedded Workbench d’IAR (espace de programme limité à 4 kb), IDE, Code Composer Studio (taille du programme également limitée, mais limite supérieure, je pense), et gcc / gdb pour le MSP430. Le kickstart de l’IRA est assez facile à démarrer rapidement, bien que ce ne soit pas parfait. Vous constaterez peut-être que vous devez l’éteindre, détwigr votre USB EZ430, redémarrer l’IRA, puis le retwigr pour le remettre en marche. Ou peut-être qu’un ordre différent fonctionnera mieux pour vous.

TI fournit également de nombreux exemples dans des fichiers mal nommés (tous leurs fichiers téléchargeables font tout pour être mal nommés). Attention, les MSP430 similaires peuvent avoir des interfaces de registre de contrôle de périphérique différentes pour des périphériques similaires, ce qui peut prêter à confusion. Assurez-vous que tous les documents ou exemples que vous lisez s’appliquent vraiment au microcontrôleur que vous utilisez.

autres petits systèmes

Il existe de nombreuses autres familles de processeurs et kits que vous pouvez utiliser, et vous devriez probablement au moins en savoir un peu plus à leur sujet.

AVR – Architecture Harvard 8/16 bits d’Atmel. Harvard fait référence à des espaces d’adresse séparés pour le code et la mémoire de travail. Il possède 32 registres de 8 bits, dont certains peuvent être utilisés par paires en tant que registres de 16 bits. C’est un processeur très populaire et plutôt cool. Certains des plus petits n’ont que des registres sans RAM supplémentaire, ce qui est effrayant. Atmel possède également un AVR32 qui n’est pas du tout identique à l’AVR. Sauf si vous utilisez un chargeur de démarrage existant capable de charger votre nouveau code, vous devrez vous procurer une unité JTAG pour ces derniers.

8051 – Ceci est vieux comme les collines et une douleur dans les fesses à utiliser jusqu’à ce que vous compreniez enfin. Il s’agit d’un processeur 8/16 bits, avec beaucoup plus de limites quant à la façon de faire des calculs en 16 bits et n’ayant qu’une paire de registres pouvant servir de pointeur. Il dispose de 3 espaces d’adressage distincts (stack, mémoire globale et code) et de nombreuses fonctionnalités impaires (par rapport à d’autres architectures). Les éléments de bas niveau risquent de ne pas signifier grand chose si vous programmez en C, si ce n’est que des opérations C très simples peuvent se transformer en beaucoup plus de code que ce que vous pensiez. Vous ne voulez probablement pas commencer par celui-ci.

hélice – Le processeur multicœur très intéressant de Parallax, qui est très différent des autres processeurs. Il comporte plusieurs cœurs qui agissent généralement de manière indépendante et peuvent être utilisés pour simuler des périphériques ou effectuer des tâches de calcul plus traditionnelles. Je n’en ai jamais utilisé, bien que j’aimerais bien. Juste jamais eu une tâche qui semblait correspondre à cela. Ils ont leur propre langage de haut niveau pour les programmer ainsi que le langage d’assemblage du processeur.

systèmes plus grands

Une fois sortis des processeurs 8/16/24 bits, vous commencez à brouiller les lignes entre la programmation intégrée et la programmation au niveau du bureau, même si elle est techniquement intégrée.

AVR32 – Il existe 2 versions principales de celles-ci. L’une est une architecture de Harvard et l’autre est von Newman. La version de von Newman est essentiellement un meilleur ARM que l’ARM, mais elle n’est pas aussi populaire que l’ARM. Autant que je sache, il a été conçu pour “exécuter Linux”, sans y être lié de manière folle. Auparavant, vous pouviez obtenir des cartes de développement peu coûteuses et le code est souvent presque aussi facile à charger que la copie de fichiers d’un PC à un autre, bien que vous utilisiez probablement uboot et tftp pour effectuer certains travaux. JTAG n’est nécessaire que lorsque vous bousillez le chargeur de démarrage. Je pense que tout cela prend en charge l’accélération native JAVA. http://www.AVR32.org

ARM – Le processeur embarqué le plus populaire. Il existe de nombreuses versions de ceux-ci. Certains n’ont pas de MMU (unité de gestion de la mémoire) et d’autres en ont. Il y a trop à dire à leur sujet. Certaines versions ont une accélération JAVA native, bien que je pense que les seigneurs ARM ne donnent pas librement tous les détails de son utilisation, vous devez donc trouver une machine virtuelle qui sait comment l’utiliser. De nombreux fournisseurs en fabriquent, notamment Atmel, Freescale, Intel et bien d’autres.

MIPS – Un processeur très RISC. Le RISCiest.

Il y en a beaucoup d’autres.

Styles de programmation

Je pourrais écrire 3 livres à ce sujet mais la règle générale est de rendre les choses aussi simples que l’application peut vous le permettre. Une exception à cette règle est que si vous pouvez facilement utiliser un système d’exploitation, vous pouvez en faire usage si cela simplifie votre tâche.

La première chose à savoir pour répondre à cette question est “QU’EST-CE QUE C’EST” un système embarqué? Une définition GÉNÉRALE serait un système informatique dédié à un seul objective spécifique. Cela ne limite pas le type de matériel que vous pouvez utiliser, car les “PC intégrés” sont utilisés depuis des années. Le système d’exploitation temps réel QNX existe depuis le début des années 80 et est utilisé depuis des années dans les PC indussortingels pour les applications intégrées. J’ai personnellement utilisé des systèmes de contrôle pour les jauges d’épaisseur XRAY des aciéries. D’autre part, j’utilise actuellement les DSP TI sans aucun support d’exploitation et n’utilisant que 256 Ko de RAM. Un autre exemple serait le porte-clés de votre voiture. Les anciens utilisaient un microcontrôleur PIC de Microchip. (C’est en fait le nom de l’entreprise.)

Certaines personnes considèrent l’IPhone comme un système intégré, mais comme il est possible de charger des applications pour faire à peu près tout ce que j’ai tendance à dire, c’est un ordinateur de poche doté de capacités téléphoniques. Un ancien téléphone cellulaire DUMB qui est simplement un téléphone et non un PDA est un système intégré. C’est juste un peu de philosophie.

En règle générale, vous devez comprendre une poignée de concepts pour la programmation de systèmes embarqués, et la plupart d’entre eux peuvent être explorés sur un PC.

EDIT: La raison pour laquelle C ou C ++ est recommandé est que C lui-même a été conçu pour faire de la programmation système. C ++ conserve tous ses avantages mais ajoute des fonctionnalités pour la programmation POO. Certains ASM peuvent être requirejs dans certains systèmes. Cependant, de nombreux fournisseurs de puces, tels que TI, fournissent des outils qui permettent fondamentalement d’effectuer l’ensemble du système en C ++. : FIN ÉDITER

Beaucoup de systèmes embarqués simples ressemblent plus ou moins à ceci:

While(true) // LOOP FOREVER... There is no command prompt { // Typically you want I/O to occur on fixed "timebase." wait(timerTick); readDigitalIO(&dioStruct); readAnalogIO(&aioStruct); // Combine current system state with input values // and do some useful calculations. (ie Analog input to temperature calc) Process(dioStruct,aioStruct,&CurrentState); // This can be a serial output/audio buzzer/leds/motor controller // or Whatever the system REQUIREMENT call for. driveOutputs(CurrentState); // The watchdog timer resets your system if it gets stuck. petWatchDogTimer(); } 

Il n’y a rien ici que vous ne pouvez pas utiliser avec le PC. (Et bien un PC qui a toujours un port parallèle de toute façon. Ce qui est un port plus ou moins juste un port DIO.) Sur un système simple sans OS, cela pourrait être tout ce qu’il y a. Sur un système basé sur le RTOS, vous pouvez avoir plusieurs tâches qui ressemblent toutes à cela, mais qui transfèrent les données entre les tâches.

Les parties intéressantes viennent lorsque vous devez vous connecter au matériel que vous possédez, le premier travail que j’avais à l’université était d’écrire un pilote de périphérique pour une carte d’acquisition de données sous QNX.

Notions de base sur le traitement du matériel ou des pilotes de périphérique (que vous pouvez expérimenter en piratant le code de lecteur de périphérique Linux librement disponible). La plupart des matériels considèrent le programmeur comme une simple adresse mémoire. Cela s’appelle “E / S mappées en mémoire”. Qu’est-ce que ça veut dire? Utilisons un port série comme exemple:

 // Serial port registers definition: typedef struct { unsigned int control; // Control bits for the port. unsigned int baudDiv; // Baud rate divider. unsigned int status; // READ Status bits/ Write resets fifos; char TXdata; // The head of the hardware TX fifo. char RXdata; // The tail of the hardware RX filo. } serRegs; // Using the volatile keyword to indicate the hardware can change the value // independantly from the software. volatile serRegs *Ser1 = (serRegs *)0x8000; // Hardware exists at a specific location in memory. volatile serRegs *Ser2 = (serRegs *)0x8010; // Hardware exists at a specific location in memory. // Bits bits 15-12 enable interupts and select interupt vector, // bits 11-8 enable,bits 7-4 parity,bits 3-0 stop bits. Ser1->status = 1; // Reset fifos. Ser1->baudDiv = CLOCKVALUE / 9600; // Set the baudrate 9600; Ser1->control = 0x1801; // Enable, 8 data, no parity, 1 stop bit. // Write out a "OK\r\n" message; (Normally this would be a loop.) Ser1->Txdata = 'O'; // First byte in fifo Transmission starts. Ser1->Txdata = 'K'; // Second byte in fifo still transmitting first byte Ser1->Txdata = '\r'; // Third byte in fifo still transmitting first byte Ser1->Txdata = '\n'; // Fouth byte in fifo still transmitting first byte 

Normalement, vous disposeriez d’une fonction ou d’un gestionnaire d’interruption pour gérer la transmission des données, mais par exemple, je voulais signaler que le matériel fonctionne pendant que le logiciel continue à fonctionner. Fondamentalement, le matériel fonctionne comme si j’écrivais une valeur dans une adresse et que “STUFF” se produisait indépendamment du logiciel. C’est peut-être l’un des concepts clés de la programmation intégrée: comment faire de l’informatique un changement dans le monde réel.

MODIFIER:

Si vous voulez réellement obtenir un tableau économique, la tendance actuelle des développeurs Micro est de mettre un kit de développement sur une clé USB. Cette page a des informations sur plusieurs, allant de 8 bits jusqu’aux architectures ARM: http://dev.emcelettronica.com/microcontrollers-usb-stick-tool

Le PSOC de Cypress a été l’un des premiers à le faire avec le “FirstTouch Starter Kit”. Le PSOC est un composant unique en son genre, car il possède un microcontrôleur et des “blocs analogiques et numériques configurables” qui vous permettent de connecter un ADC, un port série ou une E / S numérique à l’aide d’un GUI et de configurer automatiquement l’application C pour l’utiliser. Les PSOC sont également disponibles dans les packages DIP, ce qui les rend faciles à utiliser sur la carte du prototypage.

Imaginez votre contrôleur intégré assis dans un circuit éteint …

  1. La tension Vcc est appliquée et le circuit de reset génère reset signal de reset .

  2. Les horloges ont atteint leur vitesse de fonctionnement et les tensions se sont stabilisées. La reset est donc désactivée.

  3. Votre contrôleur place maintenant son pointeur d’instruction sur le “vecteur de réinitialisation”, qui correspond à l’adresse physique 0xE0000000 sur cette puce. Le contrôleur va chercher l’instruction à cet endroit.

  4. Les interruptions sont désactivées et la première tâche consiste à initialiser des registres tels que le pointeur de stack. Sur certaines puces, il y a des bits de drapeau (par exemple, drapeau de direction x86) qui doivent être effacés ou définis.

  5. Une fois que les registres et les bits de drapeau sont configurés correctement, l’exécution des routines de service d’interruption devient possible. A présent, nous devons avoir exécuté le code à l’emplacement 0xE0000072 environ lorsque nous obtenons le code qui active les interruptions en basculant d’abord certaines broches GPIO sur le contrôleur d’interruption externe, puis active le masque d’interruptions de la CPU.

  6. À ce stade, l’équivalent de “pilotes de périphérique” s’exécute sous la forme de routines de service d’interruption. En supposant que l’environnement C dispose d’une bibliothèque qui correspond aux interfaces des structures de données de ces routines, notre code de chargeur de démarrage peut maintenant passer à la fonction main() de certains codes d’object C.

En d’autres termes, le code qui nous a amené de power-on à main() , et qui gère les E / S de bas niveau, est écrit dans l’assembleur propre à la puce choisie. Cela signifie que si vous voulez être polyvalent en programmation intégrée, vous devez savoir comment implémenter le code assembleur à partir du vecteur de réinitialisation.

La réalité est que la programmation intégrée pour les amateurs ne laisse pas le temps nécessaire pour implémenter tous les ISR et le code du chargeur de démarrage. Pour cette raison, de nombreuses personnes utilisent des structures logicielles standard disponibles pour des puces spécifiques. D’autres utilisent des puces à langage personnalisé telles que le BASICstamp. Le BASICstamp est une puce intégrée qui héberge un interpréteur de langage BASIC à bord. L’interprète et tous les ISR sont pré-écrits pour vous. L’environnement BASIC vous permet de contrôler les broches d’E / S, de lire les tensions et de tout ce que vous pouvez faire depuis l’assemblage avec un contrôleur intégré, mais un peu plus lentement.

En ce qui concerne la langue, C est probablement la langue la plus importante à connaître. A partir de Java, vous devriez être capable de vous adapter, mais souvenez-vous que beaucoup de Java de haut niveau ne seront pas disponibles. Beaucoup de manuels scolaires, mais je recommanderais le livre de programmation C original de Kernighan et Ritchie http://en.wikipedia.org/wiki/The_C_Programming_Language_(book)

Pour une bonne introduction à C intégré, vous pouvez essayer un livre de Michael J Pont:

http://www.amazon.com/Embedded-C-Michael-J-Pont/dp/020179523X

Pour ce qui est du côté intégré des choses que vous pourriez commencer avec Microchip, l’IDE ​​est acceptable pour un simulateur raisonnable, et les compilateurs c sont gratuits pour les compilateurs légèrement limités des éditions étudiantes, c18 et c30, l’installateur de l’IDE ​​demandera également si vous voulez installer un compilateur HI-TECH C tiers que vous pourriez utiliser. En ce qui concerne le processeur, je vous conseillerais de choisir un PIC standard de la série 18, tel que le PIC18F4520.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002

Quel que soit le fabricant de puces, vous devez apprendre à connaître les fiches techniques. Vous n’avez pas à tout apprendre en même temps, mais vous en aurez besoin!

Embedded, comme la plupart des programmes, a tendance à tourner autour de:

1) initialiser une ressource, dans ce cas, plutôt que des données provenant d’un magasin de données, il s’agit de registres de l’ordinateur. Incluez simplement le fichier d’en-tête du processeur (.h) et il vous permettra d’y accéder en tant que ports (octets en général) ou broches (bits). Les microprocesseurs disposent également de ressources utiles sur la puce, telles que des timers, des convertisseurs analogique-numérique (ADC) et des systèmes de communication série (UART). Rappelez-vous que la puce elle-même est une ressource et doit être initialisée avant toute autre chose.

2) utiliser la ressource. C vous permettra de rendre les données aussi globales que possible et tout peut accéder à tout à tout moment! Évitez cette tentation et gardez-la modulaire, comme Java vous l’aura encouragé (bien que pour des raisons de rapidité, il vous faudra peut-être un peu plus souple sur ces règles).

Mais ils ont une arme supplémentaire appelée interruptions qui peut être utilisée pour fournir un comportement en temps réel. Ceux-ci peuvent être considérés un peu comme des événements OnClick (). Les interruptions peuvent être générées par des événements externes (par exemple, des boutons ou la réception d’un octet par un autre appareil) et internes (timers, transmissions terminées, conversions ADC terminées). Gardez les routines de service d’interruption (ISR) courtes et pratiques, utilisez-les pour gérer les événements en temps réel (par exemple, prenez un octet reçu et stockez-le dans une mémoire tampon, puis déclenchez un indicateur), mais laissez le code d’arrière-plan pour le gérer (par exemple, vérifier un octet reçu). flag, si défini puis lire l’octet reçu). Et souvenez-vous de l’importante volatilité des variables utilisées par les routines ISR et d’arrière-plan!

Quoi qu’il en soit, je recommande http://www.ganssle.com pour obtenir des conseils en général.

Bonne chance!

  1. La scope de l’informatique embarquée est devenue très large, aussi les réponses dépendent-elles du type d’appareil que vous visez. À une extrémité, il y a des contrôleurs 8 bits avec seulement quelques Ko de mémoire, généralement entièrement programmés en assembleur ou en C. À l’autre extrémité, les processeurs tels que ceux de votre routeur sont assez puissants (200 MHz et quelques Mo de RAM). n’est pas rare) et utilise souvent un système d’exploitation comme Linux, ce qui signifie que vous pouvez utiliser à peu près n’importe quel langage, bien que C et Java soient les plus courants.

  2. Il vaut mieux acheter une vraie puce et expérimenter. La plupart des tâches impliquées consistent généralement à apprendre à connaître un appareil et à établir une interface avec celui-ci; utiliser un simulateur va donc à l’encontre du but recherché.

Qu’est-ce qu’un bon langage pour comprendre l’esprit intégré, sans investir trop de temps à se pencher sur un langage spécifique?

Comme tout le monde le suggérera: C. Maintenant, en fonction de la profondeur à laquelle vous allez creuser dans la plate-forme de votre choix, vous aurez peut-être besoin d’assemblage, mais n’ayez pas peur de cela: vous en utiliserez généralement un peu.

Si vous apprenez le C, ma suggestion personnelle est la suivante: travaillez comme vous le feriez en assemblée; le langage de programmation ne vous donnera pas beaucoup d’abstractions, pensez donc à la gestion de la mémoire. Lorsque vous avez appris à le faire, avancez vers les abstractions et vivez heureux.

Le C ++ est également populaire sur les plates-formes intégrées, mais IMHO est difficile, à moins de savoir programmer efficacement en C, vous pouvez également comprendre ce qui se cache sous son capot.

Lorsque vous vous sentez à l’aise avec C / C ++, vous pouvez commencer à bousiller avec les systèmes d’exploitation intégrés. Vous remarquerez qu’ils peuvent être totalement différents de votre système d’exploitation choisi (par exemple, tous les systèmes d’exploitation ne disposent pas d’une bibliothèque standard C , de processus et d’une division entre l’espace utilisateur et l’espace kernel).

Vous apprendrez à construire un compilateur croisé, à manipuler des scripts d’éditeur de liens, à manipuler des formats binarys et à beaucoup d’autres choses intéressantes.

Du sharepoint vue théorique, il y a aussi beaucoup de choses: si vous étudiez en informatique, vous pouvez obtenir une maîsortingse en systèmes embarqués.

Peut-on apprendre sans avoir à acheter des jetons, etc. via des simulateurs ou autres?

Oui: de nombreux systèmes d’exploitation peuvent être exécutés sur des simulateurs tels que qemu .

Quelqu’un peut-il recommander une feuille de route simplifiée pour montrer comment se faire péter les plombs? Je ne sais pas trop par où commencer.

Essayez d’obtenir un système d’exploitation simple qui puisse être exécuté sur des émulateurs, piratez-le et suivez votre curiosité. Ne pas avoir peur de jouer avec le code noueux.

1) La plupart du temps, pour la plupart et généralement le système embarqué de bas de gamme, vous devez connaître C.

Et je vous recommanderai quand même de vous procurer une carte de développement vanille pour vous familiariser avec le stream de travail et les aspects difficiles du travail avec des systèmes embarqués tels que le débogage et la compilation croisée. Vous aurez des problèmes si vous ne comptez que sur l’émulateur.

Vous pouvez essayer le tampon Linux, il n’est pas cher et convient aux débutants, mais vous avez besoin de connaissances préalables sur Linux.

2) Pour les systèmes embarqués haut de gamme, un bon exemple est le Smartphone de HTC (la vitesse du processeur peut atteindre 1 GHz) ou un autre téléphone Android, il tourne vite et vous pouvez même coder Java dessus.

  • C et l’assemblage spécifique à votre puce.

  • Non, vous avez vraiment besoin d’une vraie puce. Les simulateurs ne sont pas la vraie chose. Vous devez être capable de gérer la gigue de la pression sur le clavier, le funkyness de tension, etc.

  • L’Arduino est la mode actuelle pour les amateurs embarqués. Personnellement, je ne suis pas un grand fan de l’architecture de Harvard. Mais vous y trouverez une foule d’aide. J’utilise un XCore pour mon travail de thèse et je trouve très facile de programmer des fichiers multicœurs. Je suggérerais de commencer avec un AVR32 et de partir de là.

Comme tout le monde le dit, vous devez connaître C.

Jetez un coup d’œil à AVR butterfly pour un tableau de développement économique.

Smileymicros propose un kit simple avec tableau de développement et livre: http://www.smileymicros.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=41

La carte Raspberry Pi, qui sera bientôt livrée, semble être un moyen extrêmement économique d’entrer dans ce domaine.

Eh oui, Arduino serait la voie à suivre. Convenu .. Pas cher (environ 20 $ pour commencer) et a une excellente API pour débuter avec des fonctions de haut niveau. C est un must cependant, ne peut pas l’éviter. Mais si vous pouvez programmer dans d’autres langues, tout ira bien.

Ma recommandation est de commencer à magasiner sur http://www.sparkfun.com avec de nombreux exemples et astuces utiles sur les appareils à acheter.