Différences entre versions de « MICROPYTHON-MOD-IO »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 172 : Ligne 172 :
 
Si vous voulez utiliser plusieurs cartes, il faudra configurer une adresse I2C différente pour chacune d'entre-elles (adresse qu'il fait configurer en connectant une seule carte à la fois).
 
Si vous voulez utiliser plusieurs cartes, il faudra configurer une adresse I2C différente pour chacune d'entre-elles (adresse qu'il fait configurer en connectant une seule carte à la fois).
  
{{ambox|stop=
+
{{ambox|stop=Il faut maintenir le bouton BUT enfoncé pendant l'exécution de la commande {{fname|change_address()}} .}}
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
# Modifier l'adresse de MOD-IO d'Olimex vers 0x22
+
# Modifier l'adresse de MOD-IO d'Olimex vers 0x58
 
#
 
#
 
# Shop: http://shop.mchobby.be/product.php?id_product=1408
 
# Shop: http://shop.mchobby.be/product.php?id_product=1408
Ligne 184 : Ligne 184 :
  
 
i2c = I2C( sda=Pin(2), scl=Pin(4) )
 
i2c = I2C( sda=Pin(2), scl=Pin(4) )
brd = MODIO( i2c, addr=0x58 )
+
brd = MODIO( i2c, addr=0x22 )
brd.change_address( 0x22 )
+
brd.change_address( 0x58 )
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Version du 10 octobre 2018 à 12:54

Introduction

MICROPYTHON-MOD-IO-01.jpg

MOD-IO is a stackable development board which adds analog and digital inputs and outputs to any of our development boards with UEXT. If you work with any of our development boards with a UEXT connector and you need more digital and analog inputs and outputs, you can add these by connecting MOD-IO to your development board. This board allows easy interfacing to 4 relays, 4 optoisolated digital inputs, 4 analog inputs. MOD-IO is stackable and addressable, what does this mean? It means that these boards can plug together so that you can add as many inputs and outputs as you want! E.g. 2-4-6-8 etc.! The MOD-IO has an ATmega16 microcontroller and the firmware is available for modification.

MICROPYTHON-MOD-IO-02.png

It features:

  • Open source hardware board with ATmega16L-8AU microcontroller à 8 MHz.
  • EXT extension connector
  • Status LED
  • Reset IC ZM33064 to protect the board againt low voltage running.
  • Power plug-in jack, DC-DC with input voltage 8-30VDC (compatible avec les alimentations industrielles 24V)
  • 4-optocoupler isolated inputs with screw terminals with Input status LEDs
  • 4-relay outputs with 5A/250VAC contacts with screw terminals with Output status LEDs
  • Dimensions 80x100 mm

Voyez notre fiche produit pour plus d'informations, schéma, utilisation OlinuXino, etc.

Matériel utilisé

Pour réaliser ce test, nous avons utilisé:

  Description Quantité
ESP8266-EVB
ESP8266-EVB.png
ESP8266 Evaluation Board d'Olimex
disponible ici chez MCHobby
1
MOD-IO
MOD-IO.png
Carte MOD-IO d'Olimex
disponible ici chez MCHobby
1
UEXT-SPLITTER
UEXT-SPLITTER.png
Multiplicateur de port UEXT. Permettra de brancher la carte + Interface USB-Serie
disponible ici chez MCHobby
1
USB-SERIE-TTL
USB-SERIE-TTL.png
Un cable console pour pouvoir communiquer avec l'ESP8266
disponible ici chez MCHobby
1

Raccordements

Les raccordements sont effectués comme suit:

MICROPYTHON-MOD-IO-20.png

  • L'opto-coupleur IN3 est activé à l'aide d'une tension de 16V (choisi arbitrairement entre 5 et 24V DC)
  • Un potentiomètre de 10K est branché sur l'entrée analogique 2 (AIN-2) avec une tension fixée à 1.129v
  • Les relais 1 et 3 (sur les 4 relais à disposition) sont activés par le code Python.

Le raccordement du convertisseur USB-Série est identique à celui décrit dans le tutoriel ESP8266-DEV sous MicroPython.

Etant donné que le l'ESP8266-DEV (et donc ESP8266-EVB) ne disposent pas de convertisseur USB-Série, il sera donc nécessaire d'utiliser un câble console (USB-Série-TTL) pour communiquer avec la carte ESP8266.

UEXT-SERIAL-wiring.jpg

Flasher MicroPython

Pour flasher MicroPython sur l'ESP8266-DEV (module ESP8266) qui équipe la carte d'évaluation d'Olimex (ESP8266-EVB), nous vous proposons les lectures suivantes:

Utiliser MicroPython sur ESP8266 nécessite de Flasher le MicroContrôleur avec le Firmware et d'utiliser des outils appropriés pour communiquer avec lui. Vous trouverez ci-dessous une sélection de tutoriel pour vous préparer. Nous recommandons vivement l'usage de RSHell, même si Ampy reste une solution plus simpliste (mais aussi nettement plus limitée).

Charger MicroPython

Tlogo-feather-load-upy.jpg

Apprenez comment charger le Firmware MicroPython sur une carte Pyboard, ESP8266 (Feather, Wemos, NodeMcu), etc.

RShell

Tlogo-micropython-RShell.jpg

Transférez des fichiers et contrôlez votre carte depuis une simple connexion série. ESP8266 compatible.

Ampy

Tlogo-micropython-Debugger.jpg

Outil simplifié de transfert de fichiers et de contrôlez de carte depuis une connexion série. ESP8266 compatible.

 

RShell sur ESP8266

Une petite pointe de rappel pour l'utilisation des ESP8266 avec RShell...

rshell --port /dev/ttyUSB0 --baud 115200 --buffer-size 128 --editor nano

Nous avons également un petit script shell rsheel-esp8266.sh pour faciliter faciliter le démarrage de rshell pour un esp8266.

Bibliothèque modio

Avant d'utiliser le script d'exemple, il est nécessaire de transférer la bibliothèque modio sur votre carte MicroPython.

La bibliothèque modio et sa documentation sont disponibles dans le GitHub esp8266-uPy.

  • Copiez le fichier modio.py sur la carte micropython.

Vous pouvez également transférer le script de test test.py sur la carte MicroPython.

Code

BUS I2C

La carte MOD-IO utilise le bus I2C (adresse par défaut est 0x22) pour communiquer avec le MicroContrôleur.

Ce bus I2C est disponible sur le connecteur UEXT de notre ESP8266-EVB comme le montre le tableau suivant.

ESP8266-DEV-12.jpg

En adaptant le code (et les raccordements du bus I2C), vous pourriez tout aussi facilement faire fonctionner des cartes ESP8266 comme Feather ESP8266 Huzza ou Wemos D1.

Fonctionnalités du MOD-IO

# Utilisation du MOD-IO d'Olimex avec un ESP8266 sous MicroPython
#
# Shop: http://shop.mchobby.be/product.php?id_product=1408
# GitHub: https://github.com/mchobby/esp8266-upy/tree/master/modio

from machine import I2C, Pin
from time import sleep_ms
from modio import MODIO

# Bus I2C sur le connecteur UEXT
i2c = I2C( sda=Pin(2), scl=Pin(4) )
brd = MODIO( i2c ) # Adresse par défaut=0x58

# === Lire les entrées analogiques ===========================
for input_index in range( 4 ):
    print( 'Analogique %s : %s Volts' %( input_index,brd.analogs[input_index] ) ) 

brd.analogs.raw = True
for input_index in range( 4 ):
    print( 'Analogique %s : %s of 1023' %( input_index,brd.analogs[input_index] ) ) 

print( 'Lire toutes les entrées analogiques, mode RAW, en une seule opération' )
print( brd.analogs.states )

print( 'Lire les tensions, en VOLTS, de toutes les entrée analogiques en une seule opération' )
brd.analogs.raw = False # Réactiver la conversion en tension 
print( brd.analogs.states )

# === Lire les entrées Opto-Isolées =========================
print( 'Lire toutes les entrées Opto-Isolées' )
print( brd.inputs.states )
print( 'Lire la 3ieme entrée Opto-Isolée' )
# Python donc indexé à partir de 0!
print( brd.inputs[2] )

# === RELAIS ======================================
# Activer les relais REL1 et REL3 (Python donc indexé à 0)
print( 'Modifier les relais par index' )
brd.relais[0] = True
brd.relais[2] = True
print( 'Etat des Relais[0..3] : %s' % brd.relais.states ) 
sleep_ms( 2000 )
# Eteindre tous les relais
brd.relais.states = False 

print( 'Commander un relais à la fois')
for irelay in range( 4 ):
    print( '   relais %s' % (irelay+1) )
    brd.relais[irelay] = True # Activer
    sleep_ms( 1000 )
    brd.relais[irelay] = False # Désactiver
    sleep_ms( 500 )

print( 'Mettre tous les relais à jour en une seule opération' )
brd.relais.states = [True, True, False, True]
sleep_ms( 2000 )
print( 'Activer tous les relais' )
brd.relais.states = True
sleep_ms( 2000 )
print( 'Désactiver tous les relais' )
brd.relais.states = False

print( "That's the end folks")

Changer l'adresse I2C de la carte

Les cartes MOD-IO sont conçue pour être chaînable. Il faut donc que chacune d'entre-elles aient une adresse différente sur le bus I2C.

Si vous voulez utiliser plusieurs cartes, il faudra configurer une adresse I2C différente pour chacune d'entre-elles (adresse qu'il fait configurer en connectant une seule carte à la fois).

# Modifier l'adresse de MOD-IO d'Olimex vers 0x58
#
# Shop: http://shop.mchobby.be/product.php?id_product=1408
# GitHub: https://github.com/mchobby/esp8266-upy/tree/master/modio 

from machine import I2C, Pin
from modio import MODIO

i2c = I2C( sda=Pin(2), scl=Pin(4) )
brd = MODIO( i2c, addr=0x22 )
brd.change_address( 0x58 )

Où acheter


Tutoriel réaliser par Meurisse D. pour MC Hobby SPRL

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.