fbpixel
Les différents protocoles de communication

Les différents protocoles de communication

Quelques soit votre projet d’électronique, de programmation ou de domotique, vous allez certainement utiliser un protocole de communication. Que ce soit pour programmer le microcontrôleur ou communiquer avec un capteur. Cet article présente différents protocoles de communication couramment utilisés notamment sur Arduino, Raspberry Pi, ESP8266/ESP32.

Bus de communication Série

Le port Série

USB

L’USB (Universal Serial Bus) est une norme de bus de communication qui sert à échanger des données entre des périphériques informatiques. La particularité de cette norme est qu’elle permet la connexion des appareils en fonctionnement et permet la reconnaissance automatique du périphérique.)

UART

UART (Universal Asynchronous Receiver Transmitter) est la norme qui spécifie comment sont envoyées les données sur le port Série.

RS-232

Le protocole RS-232 est un protocle de communication qui définie la connectique et qui permet une communication asynchrone et duplex entre deux équipements. La particularité de ce protocole est qu’elle utilise des tension de 3 à 25V pour transmettre les données.Ce qui en fait un bus moins sensible au interférence et au bruit.

(RS232/RS422/RS485)

I2C

Le bus de communication I2C est un protocole qui permet de connecter plusieurs appareils « Maîtres » à plusieurs appareils « Esclaves » et de faire communiquer jusqu’à 128 appareils. Elle permet des connexions asynchrones entre plusieurs composants pour partager des informations via un « bus commun ». Ce protocole est généralement utilisé pour des échanges carte à carte mais peut être utilisé sur de plus longue distance.

SPI

Liaison SPI (Serial Peripheral Interface) est un bus de données série qui opère en mode full-duplex, c’est à dire qu’il peut émettre et recevoir des données en même temps. Il utilise une architecture Maitre-Esclaves et la sélection de l’esclave se fait à l’aide d’une ligne dédiée

CAN

Le bus CAN (Controller Area Network) est un bus de communication série très utilisé dans l’industrie de l’automobile. Il permet de faire du multiplexage sur différents appareils et leur permet de communiquer à l’aide d’un même bus. Cela réduit la quantité et la complexité du câblage.

Ethernet

Ethernet est un protocole de communication filaire qui échange des données par paquets à haute vitesse.

(I2S)

MIDI

Le MIDI (Musical Instrument Digital Interface) est un protocole de communication entre instruments électroniques, contrôleurs et logiciel de musique. Il consiste à envoyer une série d’octets pour spécifier le type de message et les informations associées (note, longueur de note, instrument, etc.)

Les protocoles de communication Sans fil

Bluetooth

Communication Bluetooth classique couramment utilisée sur les téléphones, ordinateur, etc.

BLE

Le réseau BLE (Bluetooth Low Energy) est un réseau Bluetooth à faible consommation d’énergie.

Wifi

ESP-NOW

Un protocole de communication basse puissance développé par Espressif et utilisant les ondes 2.4GHz.

RF 433MHz

Protocole décrivant la communication à travers un signal radio de fréquence 433 MHz

RF 2.4GHz

Un protocole de communication radio utilisant la fréquence 2.4 GHz

(Zigbee)

LoRaWAN

Le réseau Lora (Long Range Wide-area network) est un réseau radio qui permet à des appareils à basse consommation de communiqué à bas débit. Cela permet d’avoir des objets connectés avec une autonomie importante.

Vous avez maintenant un aperçu complet des protocoles de communication filaires et sans fil les plus couramment utilisés en électronique et en informatique.

Programmer une carte Teensy avec Teensyduino

Programmer une carte Teensy avec Teensyduino

Dans ce tutoriel, nous allons voir comment programmer une carte teensy avec Teensyduino et l’IDE d’Arduino. Les microcontrôleurs Teensy sont des cartes de développement possédant une architecture ARM. Ils possèdent une forte puissance de calcul, un grand nombre d’entrée sorties et d’interface de communication. Ils sont idéaux pour développer des périphérique USB comme des contrôleur HID ou des modules MIDI.

Matériel

  • Ordinateur
  • Microcontrôleur Teensy
  • Câble USB A Mâle vers USB Mini B Mâle

Installation du logiciel Teensyduino

Pour que le logiciel Arduino IDE puisse communiquer et programmer le microcontrôleur Teensy, il a besoin de certaines fonctionnalités et librairies. Tout cela est contenu dans le logiciel Teensyduino qui sert d’extension.

Télécharger et installer le logiciel Teensyduino. Il vous suffit de suivre le guide d’installation.

Une fois Teensyduino installé, vous devriez voir la section Teensy apparaitre dans la sélection des cartes dans Arduino.

Code

const int ledPin=13;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin,OUTPUT);
  delay(1000);
  Serial.println(F("Teensy intialized"));
}

void loop() {
  Serial.println(F("Teensy running !"));
  digitalWrite(ledPin,HIGH);
  delay(500);
  digitalWrite(ledPin,LOW);
  delay(500);
}

Pour téléverser le code la première fois, il vous faut:

  • vérifier le code
  • appuyer sur le bouton sur la carte Teensy pour entrer en mode programmation
  • puis téléverser le code

Une fois cette procédure effectuée une fois, vous pouvez téléverser le programme normalement.

Résultat

Le code ci-dessus permet simplement de vérifier que la carte a bien été flashée en faisant clignoter la LED embarquée et en affichant un message sur le moniteur série.

Sources

Vue d’ensemble du microcontrôleur Teensy 3.5

Vue d’ensemble du microcontrôleur Teensy 3.5

La carte Teensy 3.5 est une carte de développement équipé d’un processeur ARM 32-bits. Elle possède un grand nombre d’interface et une grande puissance de calcul, ce qui permet de l’utiliser dans bon nombre d’application. Elle permet notamment d’émuler des dispositif USB, elle est donc souvent utiliser pour développer des périphérique HID ou MIDI.

Caractéristiques du microcontrôleur

Le microcontrôleur Teensy 3.5 utilise le microprocesseur ARM Cortex-M4. Ce processeur fonctionne à une fréquence d’horloge de 120 MHz. Il possède une mémoire RAM de 256 kB, EEPROM de 4 kB et aussi une mémoire Flash de 512 kB (pour la programmation et l’enregistrement de données).

  • CPU ARM Cortex-M4
  • Voltage : 5V
  • Flash : 512 kB
  • RAM : 256 kB
  • EEPROM : 4 kB
  • Clock speed : 120MHz
  • WiFi : No
  • Bluetooth : No
  • SD : Yes

Le microcontrôleur Teensy 3.5 possède en plus un emplacement pour carte SD qui lui permet de stocker des fichiers pour un site web, par exemple..

Alimentation électrique

Le microcontrôleur Teensy 3.5 fonctionne sur une plage de tension de 3.6-6V grâce à son régulateur de tension embarqué.Le microprocesseur, quant à lui, fonctionne avec une tension de 3.3V. Le microcontrôleur consomme, en fonctionnement normal, jusqu’à 50mA (s’il n’alimente rien) et peut accepter sur chacune des broches IO un courant maximum de NCmA.

Pinout

  • Analog I/O : 27 (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26)
  • Digital I/O : 40 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
  • Broches PWM : 20 (2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 20, 21, 22, 23, 29, 30, 35, 36, 37, 38)
  • Communication Serial: 6 ((0, 1), (9, 10), (7, 8), (31, 32), (34, 33), (47, 48))
  • Communication I2C : 3 ((’18’, ’19’), (’38’, ’37’), (‘4’, ‘3’))
  • Communication SPI : 3 ((’10’, ’13’, ’12’, ’11’), (’31’, ’32’, ‘1’, ‘0’), (’43’, ’46’, ’45’, ’44’))
  • Communication I2S: 1 ((’26’, ’25’, ’33’))
  • Interrupt : 40 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)

Code de base et identification des broches

Pour utiliser les broches d’entrée-sortie dans le code, il suffit d’utiliser les labels présents sur la carte soit 0-57 pour les broches digitales et A0-A26 (ou 0-26) pour les broches analogiques.

const int analogPin=A0; // broches A0-A26
const int digitalInPin=2; // broches 0-57
const int digitalOutPin=4; 
const int pwmPin=3; //2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 20, 21, 22, 23, 29, 30, 35, 36, 37, 38

int analogVal=0;
int digitalState=LOW;
int pwmVal=250;

void setup() {
  Serial.begin(9600);
  
  pinMode(analogPin,INPUT_PULLUP); // Argument OUTPUT, INPUT, INPUT_PULLUP
  pinMode(digitalInPin,INPUT);
  pinMode(digitalOutPin,OUTPUT);
  pinMode(pwmPin,OUTPUT);
}

void loop() {
 analogVal=analogRead(analogPin); // return int
 digitalState=digitalRead(digitalInPin); // return boolean
 digitalWrite(digitalOutPin,HIGH); // valeur LOW(0) ou HIGH(1)
 analogWrite(pwmPin,pwmVal);// valeur 0-255 en fonction de analogWriteResolution();
}

Résumé des caractéristiques

Microcontrôleur
Nom: Teensy 3.5
Marque: PJRC
Caractéristiques
CPU: ARM Cortex-M4
Tension d’alimentation : 3.6-6V
Tension logique: 5V
E/S digitales: 64
Entrées analogiques: 27
Flash: 512kB
SRAM: 256kB
EEPROM: 4kB
Fréquence d’horloge: 120 MHz
Wifi: No
Bluetooth: No
SD card: Yes
Touch: No
UART/SPI/I2C/I2S: Yes/Yes/Yes/Yes

Par où commencer

Sources