Modifications

Sauter à la navigation Sauter à la recherche
10 982 octets ajoutés ,  16 novembre 2016 à 22:06
Ligne 3 : Ligne 3 :  
== Préambule ==
 
== 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.
 
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).
 +
 +
[[Fichier:Hack-wipy-pinout-alternate-function.jpg]]
 +
 +
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 ==
 
== Brochage du WiPy ==
Ligne 13 : Ligne 26 :     
Les brancher sur une tension supérieure à 3.6V provoquera des dommages irréparables à la carte.
 
Les brancher sur une tension supérieure à 3.6V provoquera des dommages irréparables à la carte.
 +
 +
{{underline|'''En entrée'''}} : il est possible d'activer une résistance Pull/Up, Pull/Down ou de configurer une interruption. Voyez notre [[hack-wipy-button|tutoriel Bouton]] et [https://micropython.org/resources/docs/en/latest/wipy/library/machine.Pin.html class Pin] pour plus d'informations.
 +
 +
{{underline|'''En sortie'''}} : voyez notre [[hack-wipy-led|tutoriel LED]] pour plus d'informations.
 +
 +
Références:
 +
* [https://micropython.org/resources/docs/en/latest/wipy/library/machine.Pin.html class Pin – control I/O pins]<br />''Contient de nombreuses informations pertinente
    
=== Broches analogiques ===
 
=== Broches analogiques ===
Ligne 18 : Ligne 38 :     
Garder ces considérations à l'esprit lorsque vous réalisez vos branchements électroniques.
 
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 ([https://e2e.ti.com/support/wireless_connectivity/simplelink_wifi_cc31xx_cc32xx/f/968/p/418581/1490622 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 ==
 
== Broches d'alimentations ==
Ligne 26 : Ligne 51 :  
* '''GND''' : la masse commune  
 
* '''GND''' : la masse commune  
 
* '''VIN''' : Alimentation externe <font color="red">'''entre 3.6V et5.5V'''</font>.
 
* '''VIN''' : Alimentation externe <font color="red">'''entre 3.6V et5.5V'''</font>.
* '''3v3''':  
+
* '''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.
** 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''': <font color="red">'''La tension d'alimentation doit être {{underline|très exactement à 3V3}}, sans bruit.</font>.<br />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''': <font color="red">'''La tension d'alimentation doit être {{underline|très exactement à 3V3}}, sans bruit.</font>.<br />Dans ce cas, l'alimentation doit être capable d'offrir un courant d'au moins 300mA'''.
    +
== Entrées Analogiques ==
 +
GP2, GP3, GP4 et GP5 peuvent être reconfigurés en entrée analogique.
 +
 +
Comme déjà précisé, <font color="red">'''les broches ADC configurées en mode analogique ne peuvent pas résister à une tension supérieure à 1.8V.'''</font>. 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.
 +
 +
[[Fichier:Hack-wipy-pinout-pmw.jpg]]
 +
 +
== Port séries/UART ==
 +
voir {{fname|machine.UART}} ([http://docs.micropython.org/en/latest/wipy/library/machine.UART.html voir ici]) exemple provenant de [http://docs.micropython.org/en/latest/wipy/wipy/quickref.html#uart-serial-bus 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)
 +
 +
<syntaxhighlight lang="python">
 +
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
 +
</syntaxhighlight>
 +
 +
Si vous disposez de {{pl|736|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:
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
| align="center" | Convertisseur FTDI<br />USB > Série
 +
| align="center" | Broche WiPy
 +
| align="center" | Fonction Broche WiPy
 +
|- style="font-size: 90%"
 +
| align="left" | FT_TxD
 +
| align="left" | GP2
 +
| align="left" | UART0_RX[3]
 +
|- style="font-size: 90%"
 +
| align="left" | FT_RxD
 +
| align="left" | GP1
 +
| align="left" | UART0_TX[3]
 +
|- style="font-size: 90%"
 +
| align="left" | FT_RTS
 +
| align="left" | GP6
 +
| align="left" | CTS[6]
 +
|- style="font-size: 90%"
 +
| align="left" | FT_CTS
 +
| align="left" | GP7
 +
| align="left" | RTS[7]
 +
|- style="font-size: 90%"
 +
| align="left" | GND
 +
| align="left" | GND
 +
| align="left" | masse commune
 +
|}<small>Vous noterez (entre crochet) le n° de fonction alternatif de la broche</small>
 +
 +
[[Fichier:wipy-pinout-FTDI-to-UART0.png]]
 +
 +
Si vous disposez d'un {{pl|77|FTDI Friend}}, vous pouvez le brancher comme indiqué ici (pensez à vous assurer que le FTDI Friend soit bien signal 3.3v).
 +
 +
Si vous utilisez {{pl|144|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:
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
| align="center" | Broche WiPy
 +
| align="center" | Fonction Broche WiPy
 +
|- style="font-size: 90%"
 +
| align="left" | GP4
 +
| align="left" | UART1_RX[6]
 +
|- style="font-size: 90%"
 +
| align="left" | GP3
 +
| align="left" | UART1_TX[6]
 +
|- style="font-size: 90%"
 +
| align="left" | GP6
 +
| align="left" | CTS[6]
 +
|- style="font-size: 90%"
 +
| align="left" | GP7
 +
| align="left" | RTS[7]
 +
|- style="font-size: 90%"
 +
| align="left" | GND
 +
| align="left" | masse commune
 +
|}<small>Vous noterez (entre crochet) le n° de fonction alternatif de la broche</small>
 +
 +
[[Fichier:wipy-pinout-FTDI-to-UART1.png]]
 +
 +
== 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
 +
{{ttuto-begin}}
 +
 +
{{ttuto
 +
  |label=Introduction à I2C
 +
  |descr=Qu'est ce que I2C, sa mise en oeuvre sur Arduino, code source, etc
 +
  |img=tlogo-I2C.jpg
 +
  |link=Arduino I2C Intro
 +
}}
 +
 +
{{ttuto-end}}
 +
 +
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)
 +
 +
<syntaxhighlight lang="python">
 +
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()
 +
</syntaxhighlight>
 +
 +
voir {{fname|machine.I2C}} exemple provenant de [http://docs.micropython.org/en/latest/wipy/wipy/quickref.html#i2c-bus micropython.org/wipy]
 +
 +
<syntaxhighlight lang="python">
 +
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')
 +
</syntaxhighlight>
 +
 +
== Bus SPI (todo) ==
 +
 +
TODO
 +
 +
voir {{fname|machine.SPI}} exemple provenant de [http://docs.micropython.org/en/latest/wipy/wipy/quickref.html#spi-bus micropython.org/wipy]
 +
 +
<syntaxhighlight lang="python">
 +
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
 +
</syntaxhighlight>
 +
 +
Si vous avez besoin d'exemple l'envoi {{underline|et réception}} de donnée sur le bus SPI, vous pouvez consulter le projet de [https://github.com/ropod7/pyboard_drive 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 {{pl|736|la carte d'extension WiPy}}, cette dernière dispose d'un connecteur microSD ([http://www.molex.com/molex/products/datasheet.jsp?part=active/1050270001_MEMORY_CARD_SOCKET.xml&channel=Products&Lang=en-US 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 {{fname|machine.SD}} exemple provenant de [https://micropython.org/resources/docs/en/latest/wipy/library/machine.SD.htmls micropython.org/wipy]
 +
 +
<syntaxhighlight lang="python">
 +
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
 +
</syntaxhighlight>
 +
 +
Si vous disposez de {{pl|736|la carte d'extension WiPy}}, voici comment la carte SD est raccordée:
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
| align="center" | Carte microSD
 +
| align="center" | Broche WiPy
 +
| align="center" | Fonction Broche WiPy
 +
|- style="font-size: 90%"
 +
| align="left" | DATA
 +
| align="left" | GP15
 +
| align="left" | SD0_DATA0[8]
 +
|- style="font-size: 90%"
 +
| align="left" | CLOCK
 +
| align="left" | GP10
 +
| align="left" | SD0_CLK[6]
 +
|- style="font-size: 90%"
 +
| align="left" | CMD
 +
| align="left" | GP11
 +
| align="left" | SD0_CMD[6]
 +
|}<small>Vous noterez (entre crochet) le n° de fonction alternatif de la broche</small>
 +
 +
[[Fichier:wipy-pinout-SD.png]]
 +
 +
== 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.<br />[[Hack-wipy-heartbeat|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.<br />[[Hack-wipy-generalite#Boot_Modes_et_Safe_boot|Nous avons décrit cette procédure plus en détail ici]]
    
{{WIPY-TRAILER}}
 
{{WIPY-TRAILER}}
29 917

modifications

Menu de navigation