Pages: [1]   Go Down
Author Topic: Gestion module ultrason URM 37 V3.2  (Read 815 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Voulant gerer l' altitude de mon aeroquad avec le module URM 37, je me suis aperçu que je ne pouvais pas utiliser le module avec une carte Arduino Duemilanove . En effet la carte ne possede qu'un seul port de com serie .
Aprés quelques recherches sur le web la solution trouvée est de créer un second port serie avec les voies TOR pour communiquer avec le module à ultra son.
Voici mon programme qui est une evolution du programme de www.yerobot.com:
/* Ultrasound Sensor
*------------------
* URM V3.2 ultrasonic sensor TTL connection with Arduino
* Reads values (0-300) from an ultrasound sensor (3m sensor)
* and writes the values to the serialport.
* Pin12 (Arduino)-> Pin 1 VCC (URM V3.2)
* GND (Arduino) -> Pin 2 GND (URM V3.2)
* Pin11 (Arduino) -> Pin 7 (URM V3.2)
* Pin 2 (Arduino) -> Pin 9 (URM V3.2)
* Pin 3 (Arduino) -> Pin 8 (URM V3.2)
* www.yerobot.com programme modifie pour carte arduino duemilanove
* lecture distance sur module URM 37
* le 9/9/10
*/


#include <NewSoftSerial.h>
NewSoftSerial mySerial(2, 3);  // creation d'un nouveau port de communication serie voies 2 et 3
int UREnable = 11; // Ultrasound enable pin
int URPower = 12; // Ultrasound power pin
int val = 0;
int USValue = 0;
int timecount = 0; // Echo counter
int ledPin = 13; // LED connected to digital pin 13
boolean flag=true;
uint8_t DMcmd[4] = { 0x22, 0x00, 0x00, 0x22}; //distance measure command

void setup() {
  Serial.begin(9600);                  // Sets the baud rate to 9600
  mySerial.begin(9600);                // initialisation du port de com vers le capteur ultrason
                                      // application du 5v sur les bornes 1 et 7 du module URM 37  
  pinMode(ledPin, OUTPUT);            // Sets the digital pin as output
  pinMode(UREnable, OUTPUT);
  digitalWrite(UREnable, HIGH); // Set to High
  pinMode(URPower, OUTPUT);
  digitalWrite(URPower, HIGH); // Set to High

delay(200); //Give sensor some time to start up --Added By crystal  from Singapo, Thanks Crystal.
}

void loop()
{
 
  flag=true;
  //Sending distance measure command :  0x22, 0x00, 0x00, 0x22 ;
  //trame à envoyer au module URM 4 mots: code fonction,val_1,val_2,somme(code fonction + val_1+ val_2 )
  // codage des fonctions 0x11 :lecture T°
  //                      0x22 :lecture de la distance ,il est possible d'utiliser un servo sur lequel est positionner le modul URM
  //                            alors val_1 sera egal a l'angle de rotation du servo
  //                      0x33 : lecture de l'EEPROM
  //                      0x44 : ecriture de l'EEPROM
  // pour plus d'information consulter le site www.yerobot.com
  
  for(int i=0;i<4;i++)
  {
        mySerial.print(DMcmd,BYTE);  //ecriture de 4 valeurs par communication serie vers la carte URM
  }
 
  delay(75); //delay for 75 ms
 
while(flag)
{
    if(Serial.available()>0)
    {
        int header=mySerial.read(); //0x22   lecture de 4 valeurs venant de la communication vers la carte URM
        int highbyte=mySerial.read();
        int lowbyte=mySerial.read();
        int sum=mySerial.read();//sum
      
        if(highbyte==255)
        {
          USValue=65525;  //if highbyte =255 , the reading is invalid.
        }
        else
        {
          USValue = highbyte*255+lowbyte;
        }
  
       Serial.print("Distance=");
       Serial.println(USValue);
      
       flag=false;
     }

}
  delay(50);
}


Maintenant, si quelqu'un sait comment l'interfacer avec le programme de l'aeroquad je suis preneur .


Logged

Pages: [1]   Go Up
Jump to: