PcDuino, comment utiliser les entrées et sorties

Petites explications sur l’utilisation des entrées et sorties de présentes sur le PcDuino 3B afin d’utiliser au mieux toutes les caractéristiques de notre petite bête.

Nous continuons avec notre carte de développement PcDuino 3B (qui est présente sur le site boutique.3sigma.fr) qui dispose comme toutes ce genre de carte de broches d’entrées et de sorties avec d’interagir avec l’extérieur.

Dans cet article, nous allons voir quelles sont les broches et le meilleur moyen (à mon gout de les utiliser)

Broches disponibles sur le PcDuino 3B

Même si vous avez lu la présentation de la carte (voir l’article), je tiens à faire un petit rappel sur les broches présentes.

Tout d’abord, je ne vous parlerais que de la PcDuino 3B dont la disposition des broches sont identiques (enfin à quelques broches prêtes) aux cartes Arduino Uno.

PcDuino, broche de la carte PcDuino 3B
PcDuino, broche de la carte PcDuino 3B

ATTENTION, si vous ne voulez pas griller votre belle carte, ne connectez pas une tension supérieur à 5V sur le Vin (J9-8)

ATTENTION Bis,  les broches fournissent 3,3 V (ce qui n’est pas forcément gênant) et elle accepte très mal des tensions supérieures, vous pouvez utiliser ce genre de convertisseur, disponible sur Amazon.fr :

Les Entrées / sorties numériques du PcDuino

Les I/O numérique (D0 à D13), il n’y a pas de modification par rapport à un arduino (J11-1/8 et J8-1/8). Vous avez également 4 GPIO supplémentaires sur le connecteur P10.

Je répète, faites attention aux tensions

Les entrées analogiques

Même combat, elles sont au nombre de 6 (A0 -> A5) et se situe sur le J12. Cela est un net avantage par rapport au Raspberry.

Entrées A0 et A1

Elles sont sur 6 bites et offre un pas de 1/63 sur une tension maximale de 2V

Entrées A2 à A5

Elles sont codées sur 10 et offre un pas de  1/4095 sur une tension maximale de 3,3V.

Les sorties PWM (Pulse Width Modulation)

La modulation de largeur d’impulsion est disponible, il y a 6 broches différentes qui sont disponible sur les GPIO3, GPIO5, GPIO6, GPIO9, GPIO10 et GPIO11. Deux d’entre elles sont dites rapide (GPIO3 et GPIO5), les autres sont dites lentes.

Dans les faits et avec la librairie que je vais vous fournir, à la programmation, cela se passera bien.

Communication série

Vous disposez de deux possibilité de communication série, la première sur le les GPIO0(Rx) et GPIO1(Tx) avec UART2 et le selon sur le connecteur  P3.

Communication I2C

A la différence de l’arduino, les broches liées à l’I2C ne sont pas sur les les entrées analogique A4 et A5, elles sont à part sur le connecteur J8 en position 9 (SDA) et 10 (SCL).

Communication SPI

Idem que pour les l’I2C, il y a deux connecteurs à part pour la communication SPI (oui, vous avez deux jeux de connecteurs SPI) sur les connecteurs P6 et P7.

Petite conclusion

Pour en finir avec les connecteurs, si vous avez l’habitude de l’arduino, vous ne devriez pas être perdu mais gardez à l’esprit les limitations en tension pour ne pas avoir à racheter cette carte. Même si l’on dispose de la disposition de shield arduino, tous ceux qui fonctionnera en I2C et SPI ne pourrons pas fonctionner directement, avant d’acheter un shield, vérifiez toujours.

Vu qu’il s’agit d’un mini-PC, bon nombre de shield ne sont plus nécessaire, pour ceux qui en ont besoin d’un, chaque shield peut être remplacé par un petit câblage et coutera en général moins cher.

Comment programmer le PcDuino 3B

Comme tout mini-PC de ce type, vous avez un large choix de langage de programmation, libre à vous de le choisir en fonction de vos affinités.

L’OS Ubuntu officiel dispose d’un IDE Arduino spécialement fait pour le PcDuino même si cela peut paraître attrayant, je vous déconseille de l’utiliser, il est lourd (fonctionnement en java) et surtout vous n’allez pas pouvoir bénéficier des avantages de la carte (accès au wifi, à la cam si installée, aux fonctions proposées par l’OS).

La manipulation des GPIO peut se faire avec des commandes sheel Unix (personnellement, je ne m’imagine pas développer quoi que ce soit comme ça)

Personnellement, je préfère utiliser le langage Python qui dispose de nombreuses librairies pour l’utilisation de capteurs, actionneurs, interfaçage avec le système. Après vous pouvez choisir l’éditeur de texte que vous souhaitez, j’ai opté pour Geany.

J’ai pas mal cherché notamment sur le site officiel de Sparkfun, sur mon-club-elec.fr et bien d’autre pour obtenir le maximum d’informations (d’ailleur sur le second, vous pourrez trouver une librairie PyDuino qui permet de gérer de manière simple beaucoup de point).

Pour faire simple, j’ai fait ma librairie, celle proposée par mon-club-elec.fr est fonctionnel mais je voulais quelques-choses entièrement en python, pour l’instant, y est présente la gestions des différents type d’I/O, ce qui est bien suffisant pour commencer vu que toutes les autres fonctions sotn facilement accessible).

Voici le lien de le lien vers la libraire arduino_like.py pour PcDuino => lien

Vous pouvez placer le fichier arduino_like.py soit dans le dossier qui contient votre script qui en fait appel soit dans les librairies de Python (par exemple pour Linux dans /usr/lib/python2.7/dist-packages.

Utilisation d’arduino_like.py

Voici un petit mémo pour utiliser ma libraire.

Commencez par l’importer :

from arduino_like import *
# ou
import arduino_like

Les entrées numériques

Fonction pinMode(numero_gpio, mode)

Elle permet d’initialiser le mode de la broche (de 0 à 17).

Les modes disponibles :

  • INPUT
  • OUTPUT
  • PULLUP
  • PWM
  • SERIAL

Fonction digitalWrite(n_gpio,etat)

Elle permet de modifier l’état du GPIO, les états disponibles :

  • LOW ou False
  • HIGH ou True

Fonction digitalRead(n_gpio)

Elle permet de lire l’état du GPIO, elle retourne un entier (0 ou 1)

Fonctions communes

Fonction delay(tps_ms)

Place une pause en milliseconde

Fonction delayS(tps_s)

Place une pause en seconde

Fonction reset_tout()

Permet simplement de remettre à zéro tout.

Les entrées analogiques

Fonction analogRead(n_gpio)

Lit la valeur sur la pin analogique, valeur entre 0 et 5. Elle retourne un entier.

Fonction analogReadmV(n_gpio)

pareil que précédemment mais retourne un entier représentant la tension en mV.

Les PWM

Fonction desactivationPWM(n_pwm)

Permet de désactiver la PWM choisie (nécessaire pour la modification, elle est appelé en interne). Les valeurs sont 3, 5, 6, 9, 10 et 11.

Fonction activationPWM(n_pwm)

Le contraire de la précédente, elle permet l’activation.

Fonction setFrequency(n_pwm,frequence)

La fonction permet de remplacer la fréquence d’une PWM, celle-ci est automatiquement comparé à celle tolérer par le système pour chaque PWM.

Fonction setDutyCycle(n_pwm, level)

Elle permet de régler la largeur d’impulsion avec un nombre en fonction du level max toléré par la broche.

Fonction setDutyCyclePercent(n_pwm, percent)

Idem mais le regélage se fait en poucentage de 0 à 100.

Fonction analogWrite(n_pwm,level)

Active le PWM avec une valeur de réglage du cycle équivaut à setDutyCycle et activationPWM.

Fonction analogWritePercent(n_pwm,percent)

Idem que précédemment mais le réglage se fait en pourcentage.

Communication série

Il s’agit d’une classe, pour l’appeler :  maConnexion = comSerie(), l’initialisation se fera avec les valeurs par défaut :

  • BAUDRATE = 115200
  • TIMEOUT = 10
  • OCTET = 10 (initialise le nombre d’octet attendu à 10)

les broches utilisées sont GPIO0 et GPIO1, le debug n’est toujours pas activé.

Envoyer sur le port série

Pour envoyer, faire maConnexion.ecriture(monMessage)

Pour recevoir sur le port série

Pour lire ce qui vient sur le port série, maConnexion.lecture(), elle retourne un string.

Pour modifier le nombre d’octet attendu

Par défaut le nombre d’octet est de 10, pour le modifier : maConnexion.modifierOctetRecu(octet)

Pour fermer la connexion

Enfin pour fermer la connexion : maConnexion.fermeture()

Petite conclusion

Si vous avez des commentaires, n’hésitez pas à les faires, en relisant le script, j’ai vu plein de petits trucs qui n’allait pas notamment sur le le type des variables. Pour l’ulisation de capteurs via des librairies Python, elles sont seront fonctionnelles (par exemple celle d’adafruit en python).

Conclusion

Voilà, libre à vous de vous y mettre. Il y a peu de tutoriels sur l’utilisation du PcDuino qui est pourtant une carte de très bonne qualité avec de bonne performance mais une communauté faible sur le PcDuino mais avec cette librairie et toutes les librairies présentes sur le net, vous ne devriez plus avoir de soucis insurmontables.

Laisser un commentaire