Hack-wipy-pinout
Préambule
Dans cette section, nous allons collecter et recouper les informations concernant le brochage du WiPy (et leurs caractéristiques) de façon à en rendre la consultation aussi agréable que possible.
Vous pouvez vous permettre d'éluder cette page pour le moment et y revenir plus tard lorsque vous aurez besoin des informations qu'elle contient.
Fonction alternative, une notion importante
Dans ce document, vous allez remarquer qu'une broche peut être utilisée de différentes façons.
Par exemple, la broche GP10 peut également être utilisé comme broche PWM (sous le nom PWM_7).
PWM_7 est la fonction alternative de la broche GP10, cette fonction alternative est activée à l'aide d'une valeur entière nommée "alternate function", valeur qui est située entre crochets dans le diagramme des broches (la valeur 3 dans cet exemple).
SI vous voulez uniquement utiliser les broches en entrée/sortie ALORS c'est l'"alternate function" 0 qu'il faut utiliser.
Brochage du WiPy
Tension/courant max
Broches digitales
Les broches GPIO du WiPy ne sont PAS TOLERANTE à 5V.
Les brancher sur une tension supérieure à 3.6V provoquera des dommages irréparables à la carte.
En entrée : il est possible d'activer une résistance Pull/Up, Pull/Down ou de configurer une interruption. Voyez notre tutoriel Bouton et class Pin pour plus d'informations.
En sortie : voyez notre tutoriel LED pour plus d'informations.
Références:
- class Pin – control I/O pins
Contient de nombreuses informations pertinente
Broches analogiques
Les broches ADC configurée en mode analogique ne peuvent pas résister à une tension supérieure à 1.8V.
Garder ces considérations à l'esprit lorsque vous réalisez vos branchements électroniques.
Courant Max
Le CC3200 est capable d'offrir 6mA sur un GPIO (source).
6mA n'est pas un maximum absolu, il est visiblement possible d'obtenir un peu plus de 6mA sur un GPIO mais cela fera chuter la tension du GPIO.
Broches d'alimentations
Le WiPy peut être alimenté à l'aide d'une source de tension externe (ou à l'aide de pile).
Faites bien attention à connecter la source positive sur VIN et la masse sur GND. Il n'y a pas de protection contre l'inversion de polarité sur le WiPy, vous devez donc être très prudent lorsque vous connectez quelque-chose sur VIN. |
- GND : la masse commune
- VIN : Alimentation externe entre 3.6V et5.5V.
- 3v3: Sortie du régulateur 3.3V de votre WiPy (max 250mA max). Utilisé pour convertir la tension VIN en 3.3v pour faire fonctionner votre WiPy.
- Il est possible d'alimenter le WiPy directement via la broche 3V3: La tension d'alimentation doit être très exactement à 3V3, sans bruit..
Dans ce cas, l'alimentation doit être capable d'offrir un courant d'au moins 300mA.
- Il est possible d'alimenter le WiPy directement via la broche 3V3: La tension d'alimentation doit être très exactement à 3V3, sans bruit..
Entrées Analogiques
GP2, GP3, GP4 et GP5 peuvent être reconfigurés en entrée analogique.
Comme déjà précisé, les broches ADC configurées en mode analogique ne peuvent pas résister à une tension supérieure à 1.8V.. Lorsque ces broches sont utilisées en mode digital alors la tension max est de 3.6V.
Les broches GP2, GP3, GP4 et GP5 sont branchés sur le convertisseur ADC0, c'est en sélectionnant un canal (channel en anglais) que vous faite une lecture analogique sur une broche plutôt qu'une autre.
Broches PWM
Certaines broches sont capable de fournir un signal PWM en sortie.
Attention: que la production d'un signal PWM en micropython nécessite la sélection d'un timer et d'un channel (un canal) particulier.
Les broches suivantes sont capable de produite un signal PWM.
- GP24 : PWM_1[5]
- GP25 : PWM_3[9], également la LED heartbeat de la carte WiPy. Cette broche n'est pas accessible sur les connecteur mais cette information pourrait être utile.
- GP9 : PWM_6[3]
- GP10 : PWM_7[3]
- GP11 : PWM_8[3]
Revoici le tableau de correspondance entre les broches PWM, timer et channel.
Port séries/UART
voir machine.UART (voir ici) exemple provenant de micropython.org/wipy.
Sur le WiPy, vous avez l'opportunité de créer un port série avec deux broches (RX/TX) ou avec 4 broches (RX/TX donnée, CTS/RTS contrôle de flux)
from machine import UART
# Ouverture du port série 0 à 9600 bauds
# SANS controle de Flux
uart = UART(0, baudrate=9600)
# Ouverture du port série 0 à 115200 bauds
# AVEC contrôle de flux CTS/RTS comme sur la carte d'extension
# uart = UART(0, baudrate=115200, pins=('GP1', 'GP2', 'GP7', 'GP6')) # broches (TX, RX, RTS, CTS)
uart.write('hello')
uart.read(5) # Lecture de 5 bytes/octets
Si vous disposez de la carte d'extension WiPy, l'UART0 de votre WiPy est branché sur le convertisseur USB-Série (FTDI) de la carte d'extension -avec contrôle de flux- comme suit:
Convertisseur FTDI USB > Série |
Broche WiPy | Fonction Broche WiPy |
FT_TxD | GP2 | UART0_RX[3] |
FT_RxD | GP1 | UART0_TX[3] |
FT_RTS | GP6 | CTS[6] |
FT_CTS | GP7 | RTS[7] |
GND | GND | masse commune |
Vous noterez (entre crochet) le n° de fonction alternatif de la broche
Si vous disposez d'un FTDI Friend, vous pouvez le brancher comme indiqué ici (pensez à vous assurer que le FTDI Friend soit bien signal 3.3v).
Si vous utilisez un câble console, vous aurez besoin de créer le port série SANS contrôle de flux.
Les broches de l'UART1 sont les suivantes:
Broche WiPy | Fonction Broche WiPy |
GP4 | UART1_RX[6] |
GP3 | UART1_TX[6] |
GP6 | CTS[6] |
GP7 | RTS[7] |
GND | masse commune |
Vous noterez (entre crochet) le n° de fonction alternatif de la broche
Bus I2C (todo)
Si vous n'avez encore aucune connaissance concernant le bus I2C, nous pouvons vous proposer le tutoriel Arduino suivant qui explique, dessin à l'appui, le fonctionnement d'un bus I2C
Lors de nos tribulations, nous voulions utiliser un mcp9808 sur un WiPy. Nous voulions utiliser les broches GP24 & GP23 (respectivement sda & scl) pour le bus I2C.
Voici le code utilisé, avec une réponse du senseur lors du scan() (sur son adresse par défaut 0x24)
from machine import I2C
# Configurer le bus I2C 0 à très faible vitesse sur sda,scl = GP24,GP23.
i2c = I2C(0, baudrate=20000, pins=('GP24','GP23'))
# Scan du bus I2C
i2c.scan()
voir machine.I2C exemple provenant de micropython.org/wipy
from machine import I2C
# Configurer le bus I2C 0 à 1 Mhz.
# Le WiPy est le maître du bus
i2c = I2C(0, I2C.MASTER, baudrate=100000)
# Retourne une liste des adresses des esclaves
i2c.scan()
i2c.writeto(0x42, 'hello') # envoi 5 bytes/octets à l'esclave sur l'adresse 0x42
i2c.readfrom(0x42, 5) # Recevoir 5 bytes/octets depuis l'esclave
# Lire 2 bytes/octets depuis l'esclave 0x42, adresse mémoire 0x10 de l'esclave
i2c.readfrom_mem(0x42, 0x10, 2)
# Ecrire 2 bytes/octets sur l'esclave à l'adresse 0x42, adresse mémoire 0x10 de l'esclave
i2c.writeto_mem(0x42, 0x10, 'xy')
Bus SPI (todo)
TODO
voir machine.SPI exemple provenant de micropython.org/wipy
from machine import SPI
# configurer le bus SPI 0 en maître (master) et à la vitesse de 2MHz
spi = SPI(0, SPI.MASTER, baudrate=200000, polarity=0, phase=0)
spi.write('hello')
spi.read(5) # réception de 5 bytes/octets sur le bus
rbuf = bytearray(5)
spi.write_readinto('hello', rbuf) # envoyer et recevoir 5 bytes/octets
Si vous avez besoin d'exemple l'envoi et réception de donnée sur le bus SPI, vous pouvez consulter le projet de pyboard_drive (GitHub de Roman Podgaiski) et plus particulièrement le pilote concernant ILI9341 permettant de prendre le contrôle d'un écran TFT. La bibliothèque est certes écrite pour une carte MicroPython PyBoard mais c'est du MicroPython. Roman a été amené à faire des lectures dans la RAM de l'écran via le bus SPI. Ce projet est donc une excellente source d'information.
Port SD
Votre WiPy est capable d'utiliser une carte SD. Si vous disposez de la carte d'extension WiPy, cette dernière dispose d'un connecteur microSD (Molex 105027). Le FirmWare de votre WiPy sait comment piloter une carte SD.
Une carte SD peut s'interfacer à l'aide de 3 signaux:
- DATA: Ligne de donnée,
- CLOCK: Signal d'horloge - pour cadencer l'envoi des bits sur la ligne data
- COMMAND: Ligne data/command - un signal qui indique à la carte SD si l'on envoi une commande de gestion ou des données sur la ligne DATA
voir machine.SD exemple provenant de micropython.org/wipy
from machine import SD
import os
# Indiquer les broches dont les fonctions alternatives (''alternate function'')
# supportent respectivement clk cmd et dat0
sd = machine.SD(pins=('GP10', 'GP11', 'GP15'))
# Monter la carte SD
os.mount(sd, '/sd')
# Effectuer les opérations sur les fichiers
Si vous disposez de la carte d'extension WiPy, voici comment la carte SD est raccordée:
Carte microSD | Broche WiPy | Fonction Broche WiPy |
DATA | GP15 | SD0_DATA0[8] |
CLOCK | GP10 | SD0_CLK[6] |
CMD | GP11 | SD0_CMD[6] |
Vous noterez (entre crochet) le n° de fonction alternatif de la broche
Broches Spéciales
LED HeartBeat
- GP25 : Cette broche est branchée sur la LED heartbeat du WiPy. Cette broche n'est pas accessible sur le WiPy mais vous pouvez néanmoins en prendre le contrôle.
Voyez notre tutoriel
Safe Boot / Mode sans échec
- GP28 : Cette broche permet également de contrôler le mode sans échec de votre WiPy en la plaçant cette broche au niveau haut lors du démarrage de la carte WiPy.
Nous avons décrit cette procédure plus en détail ici
Tutoriel WiPy tutorials and examples & general information about WiPy sous copyright de Damien George et contributeurs en ce qui concerne MicroPython et/ou PyCom en ce qui concerne les informations relatives a WiPy et LoPy.
Tutoriel traduit par Meurisse D. pour MCHobby.be
Traduit avec l'autorisation de micropython.org - Translated with the authorisation of micropython.org également avec l'accord de Daniel Compara (créateur de WiPy).
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.