Archives par mot-clé : PIC

Programmer un micro-contrôleur PIC comme un Arduino [MAJ]

ChipKIT Max32 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/09/chipKIT-Max32-obl-500 NULL.jpg)Après Energia pour la plateforme LaunchPad à MSP430 de Texas Instruments (http://xv4y NULL.radioclub NULL.asia/2012/04/27/les-micro-controleurs-msp430-de-texas-instruments/), voici une autre alternative sérieuse à Arduino. Sérieuse d’une part parce qu’elle est 100% fonctionnelle et disponible facilement, et d’autre part parce qu’elle offre des spécificités intéressantes par rapport à Arduino ou LaunchPad.

Il s’agit de l’initiative ChipKIT (http://chipkit NULL.org/wiki/index NULL.php?title=Main_Page) de Microchip (le créateur de la famille de micro-contrôleurs PIC). Cette plateforme est composée d’un côté de circuits reprenant volontairement le format des Arduino UNO, Mega et consorts, et qui sont vendus par Digilent sous le nom de ChipKIT Uno32, ChipKIT Max32, etc (http://www NULL.digilentinc NULL.com/Products/Catalog NULL.cfm?NavPath=2,892&Cat=18), et d’un autre côté d’un environnement de développement (IDE) appelé MPIDE et basé sur Arduino mais produisant du code pour les PIC.

ChipKIT-WiFi (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/09/chipKIT-WiFi-Shield-obl-600 NULL.jpg)Je ne rentrerais pas dans le débat de savoir quelle architecture est supérieure à l’autre entre AVR, PIC ou   MSP430, car tout dépend de vos besoins. Il est toutefois intéressant de noter que ces cartes intègrent des microprocesseurs PIC32 qui bien qu’ils portent le même nom utilisent une architecture interne toute différente des PIC16 traditionnels. Les PIC32 sont des processeurs 32bits de type MIPS32 et qui sont cadencés à 80MHz sur les cartes ChipKIT. La mémoire Flash embarquée va de 128Ko à 512Ko et la RAM de 16Ko à 128Ko. Contrairement aux AVR les PIC32 ne contiennent pas d’EEPROM, mais la carte ChipKIT MAX32 inclue un circuit EEPROM accessible par I2C. Comparer les performances entre deux architectures différentes est très difficile et il ne faut pas se fier aux chiffres. Toutefois il est fort probable que pour un prix équivalent les ChipKIT offrent des performances et des fonctionnalités supérieures aux Arduino, sans égaler le rapport qualité / prix du LaunchPad (http://www NULL.ti NULL.com/tool/msp-exp430g2) bien entendu.

MAJ : J’ai eu le temps de me documenter un peu plus sur l’architecture PIC32 (http://www NULL.microchip NULL.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en542879 NULL.pdf) et c’est vraiment une architecture plus avancée que l’AVR d’Atmel. Elle offre des performances plus grandes (1,5 Drystone MIPS / MHz), un système de bus matriciel à haute vitesse, un cache à anticipation pour l’accès à la Flash et un mécanisme pour améliorer la compacité code (mélange d’instructions 16 et 32 bits apportant une réduction de 40% du code). L’architecture comparable chez Atmel s’appelle AVR32 (http://en NULL.wikipedia NULL.org/wiki/AVR32) et possède d’autre arguments en sa faveur (instructions SIMD et DSP, machine virtuelle JAVA par exemple). Actuellement aucun projet comparable à Arduino n’est disponible pour AVR32. Après tout cela, même si PIC32 est plus puissante que AVR, cela ne veut pas dire que vous en tirerez parti. Pour faire clignoter une LED, faire un manipulateur électronique ou même piloter un DDS, les Arduino actuels sont plus que largement suffisants.

Il est intéressant de noter que Microchip fait ouvertement référence à Arduino et vante la compatibilité physique et la portabilité du code entre les deux. Les shields proposés par Digilent sont aussi très intéressants et l’idée d’accéder à un Arduino par WiFi me trotte toujours dans la tête (le problème c’est que je n’ai pas trouvé d’application pratique et concrète!). A noter que comme le MSP430, le PIC32 utilise des tensions de 3,3V là où les ATMega sont en 5V. En pratique ça ne pose pas de problèmes, mais c’est à prendre en compte quand vous concevez vos circuits ou adaptez un circuit existant venant du monde Arduino.

On entend souvent la remarque suivante : ” Pour le même prix qu’un Arduino Mega (ou un ChipKIT MAX32) on peut avoir un Rapsberry PI ou une platine de développement à base (http://www NULL.arm9board NULL.net/sel/prddetail NULL.aspx?id=337&pid=199)Carte ARM9 OK6410 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/09/OK6410_itf NULL.jpg)d’ARM (http://www NULL.arm9board NULL.net/sel/prddetail NULL.aspx?id=337&pid=199) qui sera beaucoup plus puissante! “. C’est à la fois vrai et faux. C’est vrai qu’en terme de puissance brute, de mémoire et de fonctionnalités, une carte à base d’ARM9 fait beaucoup mieux qu’un Arduino Mega. Toutefois, en terme de facilité d’accès aux périphériques et de robustesse, le micro-contrôleur l’emporte haut la main. Sur un “PC embarqué”, le système d’exploitation rajoute une couche non négligeable et le temps de développement pour un petit projet sera multiplié par 10. L’autre avantage net du micro-contrôleur c’est qu’une fois votre code rodé, vous pouvez très facilement concevoir vos circuits indépendants utilisant le micro-contrôleur sans la carte autour. Si vous voulez concevoir des petites séries, la réduction des coûts et la simplification du matériel sont très importantes. Là encore, tout dépend de vos besoins, mais pour le bricoleur occasionnel comme moi, le micro-contrôleur est ce qui offre le plus d’avantages.

Convertisseur port USB vers port parallèle Centronics

Convertisseur USB parallèle - dos PCB (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/ul-16i2 NULL.jpg)Au passage, pour ceux qui utilisent encore des interface de programmation à port parallèle pour leurs PIC, AVR ou autres micro-contrôleurs, voici un petit convertisseur à réaliser soit même pour un coût tout à fait modique (http://www-user NULL.tu-chemnitz NULL.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/ul-16 NULL.en NULL.htm). Attention, il semblerait qu’il soit trop lent pour une imprimante par contre…

Balise WSPR autonome avec Arduino chez W3PM

Hier j’ai laissé tourné WSPR sur 30 mètres pour voir si la propagation était revenue à un niveau correct sur cette bande. Cela m’a aussi permis de valider les performances de l’OCF Dipole sur le 30 mètres où en principe elle ne devrait pas fonctionner…

Réception WSPR 19 mars 2012 sur 30m (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/03/WSPR_19mars2012_30m NULL.jpg)En lisant la partie “blog” du site WSPRnet.org (http://wsprnet NULL.org/) je suis tombé sur un OM qui parlait d’une balise autonome WSPR autour d’un Arduino. Intéressé, j’ai creusé un peu et j’ai trouvé une mine d’information sur le site de W3PM (http://www NULL.knology NULL.net/~gmarcus/). Cet OM a fait un excellent travail autour de WSPR en concevant des émetteur-récepteur mais aussi en utilisant des Arduino Uno et Arduino MEGA pour piloter un DDS. Il a aussi conçu le même style de générateur WSPR pour la platine QRSS de G0UPL/G0XAR (http://xv4y NULL.radioclub NULL.asia/2010/08/16/kit-balise-qrss/) mais sur un micro-contrôleur PIC. C’est cette dernière qui m’intéresse le plus mais je n’ai pas de PIC.

J’avoue que pour l’instant je n’ai pas encore eu l’occasion de regarder en détails comment me servir de toutes ces infos. Je me pencherai sur ce projet courant mai. Générer une séquence WSPR “manuellement” est possible car K1JT fournit le petit programme adéquat. Il faut ensuite moduler correctement la fréquence pour un shift de 1 à 3 Hz (positif et négatif, 4 symboles en tout). La difficulté pour les transmissions de séquences WSPR étant de devoir être calé à la seconde près sur les minutes paires sinon aucune trame n’est décodée… Une horloge asservie à un GPS résout le problème, mais je n’en ai pas. W3PM semble utiliser aussi un récepteur de signaux WWBV (disponible à bas prix) mais ça ne marchera pas très bien hors des USA.

A noter que F4GKA (http://www NULL.itsrainingelephants NULL.com/2012/03/04/fabrication-dun-mept/) s’intéresse aussi à ce problème et utilise lui une échelle de 4 résistance comme DAC pour piloter la varicap (une LED sur la balise de G0UPL).

Dernière chose, voici k6HX qui a construit une balise SSTV à partir d’un Arduino (http://brainwagon NULL.org/2009/07/23/success-robot36-encoder-works/). Bon, en fait il génère un fichier son (WAV) sur PC et l’Arduino en déclenche la lecture sur l’AudioShield… mais il y a de l’idée.