Page 1 sur 1

Transmission sans fil longue portée avec APC230 433MHz USB

MessagePosté: Dim 25 Aoû 2013 21:36
par tiptop
Tutoriel de transmission sans fil à longue portée bidirectionnelle entre deux modules APC230 (433 MHz).
L'un branché sur un ordinateur (sur le port USB), l'autre monté sur une carte Arduino distante.

Image.Image.Image

Composants utilisés

Principe de fonctionnement
Le kit de radio-communication APC230 comporte deux émetteurs-récepteurs et un adaptateur sériel USB / TTL.
Il permet de créer un pont transparent entre deux interfaces série TTL. La mise en paquet et l'encodage sont réalisés par le module.

L'adaptateur série USB / TTL permet de brancher l'un des deux modules APC230 à un PC (Mac, Win, Linux) afin d'échanger des données entre le PC et une carte Arduino (ou autre microcontrôleur) connectée au second module APC230.

On peut ainsi dialoguer entre un ordinateur et une carte Arduino située à grande distance, ou entre deux cartes équipées chacune de modules Apc230.
Ce système constitue une bonne alternative au Xbee.

Caractéristiques techniques
Très longue portée, plus de 1000 m en extérieur (à 2400 bauds), puissance d'émission maximale à régler sur 10 mW (en Europe) ou plus élevée, tampon de 256 octets, modulation GFSK, fréquence de 418 MHz à 455 MHz réglable (fréquence libre à utiliser en Europe, bande 433 MHz), plus de 100 canaux (intervalle de 200 KHz).

Le choix de la fréquence permet de faire cohabiter plusieurs réseaux au même endroit.
Le module est semi-duplex:
  • de point à point
  • un module hôte vers plusieurs modules clients, chacun ayant un ID unique. L'hôte gère la communication et l'envoi des ID, les clients comparent les envois à leur propre ID pour savoir s'ils sont concernés.

Pour ne pas perdre de données, paramétrer un UART cohérent avec le "air rate". Il y a un contrôle des données transmises. On peut rajouter de la redondance, un protocole de contrôle, et une antenne est fournie pour accroître la portée.


Driver USB et Branchement du module de transmission
Image.Image

Le driver est à télécharger ici, s'il n'est pas déjà présent sur votre ordinateur (détection immédiate constatée sans avoir besoin de télécharger de driver sur Win7 ).
http://silicon-laboratories-cp210x-vcp- ... ormer.com/
http://www.silabs.com/products/mcu/page ... ivers.aspx


Lors du branchement sur PC du module muni de l'USB, le panneau de configuration de l'ordinateur trouve dans la rubrique "Ports (COM et LPT)" la ligne suivante
"CP210x USB to UART Bridge Controler" (par exemple sur COM4), du fabricant Silicon Laboratories, 9600 bauds, 8 bits de données, pas de parité, 1 stop bit.
Il doit indiquer "fonctionne correctement".
Ne pas débrancher le module de l'USB brusquement pendant son fonctionnement (risque de plantage du PC).

Paramétrage du module de transmission

Le logiciel RF-magic permet de configurer le module.
en ZIP ici http://www.zartronic.fr/kit-communicati ... -p-74.html
en RAR ici http://www.todopic.com.ar/foros/index.php?topic=34517.0

Paramétrages possibles :
  • UART rate 1200, 2400, 4800, 9600 ,19200, 38400, 57600 Par défaut 9600 bps
  • Parité Disable, Even Parity, Odd Parity Par défaut Disable
  • Fréquence 418MHz-455MHz Par défaut 434 MHz
  • Air Rate 2400 bps, 4800 bps, 9600 bps, 19200 bps Par défaut 9600 bps
  • Puissance RF 0-9 (9 pour le maximum) Par défaut niveau 9 (maxi)

J'ai utilisé ce lien
http://blog.flamingoeda.com/wp-content/ ... apc220.zip

Image

La configuration par défaut est :
  • Fréquence = 470 MHz Régler à 434 MHz pour l'Europe
  • RF rate =9600 bauds
  • RD power = 9 (niveau est le maximum) réduire la puissance pour l'Europe
  • NET ID = 12345
  • NODE ID = 123456789115
  • Series rate = 9600
  • Parity = Disable

En bas de l'écran, la mention "found device" indique que le module fonctionne correctement (par exemple sur COM4).
On peut laisser les paramètres par défauts pour réaliser les tests.
Important, il n'y a pas de communication possible entre 2 modules si le protocole entre ces 2 modules diffère en baud rate, ou en checkout, ou en fréquence.

Exemple d'utilisation : dialogue à distance PC <--> Arduino
Un premier module monté sur l'adaptateur USB est placé dans le PC. Il communique avec un second module connecté à une carte Arduino éloignée.
- allumer une led à distance
- lire l'état d'un interrupteur à distance.

Image


Branchements
Module --> Arduino
Le brochage du module ACP230 comporte 7 broches en ligne. Le câblage sur une carte Arduino se fait avec seulement 4 fils (Gnd, V, Tx, Rx).

Image

Vu de dessous, de haut en bas (en partant du cristal)
Module APC230 --> Arduino
  • 1 = SET Setting parameters, setting online supported (1 = état de fonctionnement normal, 0 = état de paramétrage en ligne)
  • 2 = AUX Pin réservée pour fonctions étendues
  • 3 = TXD (UART output, TTL, transmission) --> Rx Arduino Pin0 jaune
  • 4 = RXD (UART input, TTL, réception) --> Tx Arduino Pin1 vert
  • 5 = EN (Power enable ≧ 1.6V or empty, ≦ 0.5V sleep)
  • 6 = VCC (alimentation 3.5 à 5.5V) -->5V rouge
  • 7= GND (Ground) -->GND noir

Composants supplémentaires à monter pour les tests
  • une LED couleur en série avec une résistance de limitation de courant de 470 Ω placée entre GND et digital pin 2.
  • un bouton poussoir, monté en série avec une résistance de 10 kΩ de pull down , placée entre Gnd et digital pin3.

Informations sur la bande de fréquence 433 MHz
Ce module de radio communication existe en différentes puissances :
APC220 puissance 20 mW, portée 800 à 1200 m. La puissance réglée au niveau 9 (maxi) permet de traverser 7 murs et 35 m. !
APC230 puissance 100 mW, celui présenté ici, très longue portée.
APC802 puissance 600 mW (puissance non autorisée en Europe sur le 433 MHz).

La bande de fréquence 433 MHz est utilisée librement sans licence en Europe pour les talkies-walkies, les liaisons radio téléphoniques, avec des dispositifs LPD (low power device), ou encore pour la télémesure, les alarmes sans fil, les télécommandes de portails, les baby phones, certains jouets, des stations météo sans fil...

Les fréquences légalement autorisées vont de 433,050 à 434,750 MHz (Europe), et la puissance apparente rayonnée doit être de 10 mW maximum.
Les talkies utilisent la modulation NFM, ce module utilise le GFSK.

Programmation
Il est important de débrancher la connexion de Tx/ Rx (pin0 et pin1) du module monté sur la carte l'Arduino quand on téléverse le programme dans l'Arduino, utilisant également ces pins 0 et 1.
Sinon les ports de communication entre PC/Arduino (téléversement et serial monitor) et celui entre module1 / module2 (sans fil ) vont entrer en conflit.

La carte Arduino distante est alimentée sur pile ou transformateur 9V, sans lien USB avec le PC.
Image

Code: Tout sélectionner
//=== Transmission sans fil à longue distance avec deux APC220 ====
//
// Exemple de communication entre un PC local et un carte Arduino distante
// transmission bidirectionnelle
// Sur le PC on utilise le serial monitor
// tiptopboards.com  25 08 2013
// Source d'inspiration  de ce code http://fritzing.org/media/fritzing-repo/projects/w/wireless-arduino-with-apc220/code/APC220.ino
// Original project from http://www.swanrobotics.com
//================================================================
//LED sur pin 2 (1 pour on, 0 pour off) commandée à distance depuis le PC
// Bouton poussoir sur pin 3 (on ou off) état lu à distance  depuis le PC
//Module sur pin0 pin1
//(attention ceci bloque le téléversement de programme et le serial monitor)
//================================================================

// Etat des pins
const int bouton = 3;     // pin3 pour le bouton poussoir
const int ledPin =  2;       // pin2 pour allumerla LED

// variables:
int switchState = 0;         // lecture du statuty du bouton popussoir
int intSerialVal = 0;        // lecture de la serial value

// Initialisation
void setup() {
  pinMode(ledPin, OUTPUT);        //LED en output
  pinMode(bouton, INPUT);  //Bouton Poussoir en input

  Serial.begin(9600);  //Initialise la communication sans fil
  //etat_bouton = digitalRead(bouton);  //Lire l'état initial du bouton poussoir
}

// Le programme
void loop()
  {   
  intSerialVal = Serial.read();     // Lire l'entrée de l utilisateur (à distance sans fil depuis le PC )
 
  switch (intSerialVal) {
    case '0':
      digitalWrite(ledPin,LOW);     // Eteindre la LED
      Serial.println("Led Off");    // LED off
      break;
    case '1':
      digitalWrite(ledPin,HIGH);    // Allumer la LED
      Serial.println("Led On");     // LED on
      break;
  }

  // Lire le bouton poussir et transmettre sur le PC à distance
  int etat_bouton=digitalRead(bouton);
  Serial.println(etat_bouton);
 
   delay(100);
  }



En tapant 0 ou 1 dans le serial monitor du PC on allume ou éteint la LED sur la carte à distance.
Dans l'autre sens, l'état de l'interrupteur sur la carte est transmis sans fil sur le PC.


Références
Exemple de tutoriel de swanrobotics (en anglais)
http://fritzing.org/projects/wireless-a ... th-apc220/
On utilise le moniteur série du PC pour lire et envoyer des données.
http://fritzing.org/media/fritzing-repo ... APC220.ino

http://www.emartee.com/product/41855/

Documentation du module APC220 sur Zartronic
http://www.zartronic.fr/kit-communicati ... -p-74.html

Datasheet APC220 (même principe que le APC230)
http://www.zartronic.fr/doc/E2/E2N1P142 ... n_v100.pdf