Stránka 1 z 1

měření vzdáleností pomocí RPLidar A1 a komunikace s PLC

Napsal: 31 bře 2019, 23:36
od ondrej123
Zdravím, jsem nováček a byl bych rád za nějaká doporučení a rady od zkušenějších. Do Arduina UNO jsem nahrál example sketch z knihovny RPLidar, chtěl jsem nechat tisknout informace o vzdálenosti do seriového monitoru, tak jsem přidal akorát "Serial.println(distance);", všechno jsem zapojil, všechno vypadalo, že bude fungovat, akorát v seriovém monitoru mi to házelo akorát otazníky a různé znaky místo číselných hodnot. Zkoušel jsem měnit baudy, jestli to nebude tím, ale nepomohlo to. Napadlo mě, jestli nebude problém v tom, že sensor využívá TX/RX piny Arduina, ale nevím moc co s tím. Pokud tohle vyřeším, tak mám v plánu posílat data skrz ethernetový sheild W5100 do PLC. Budu rád za každou radu, ať už ohledně tištění hodnot do seriového monitoru, nebo ohledně toho propojení s PLC (jestli je to vůbec realizovatelné přes ten shield, nebo tak).
Děkuji

Kód: Vybrat vše

// This sketch code is based on the RPLIDAR driver library provided by RoboPeak
#include <RPLidar.h>

// You need to create an driver instance 
RPLidar lidar;

#define RPLIDAR_MOTOR 3 // The PWM pin for control the speed of RPLIDAR's motor.
                        // This pin should connected with the RPLIDAR's MOTOCTRL signal 
                       
                        
void setup() {
  // bind the RPLIDAR driver to the arduino hardware serial
  lidar.begin(Serial);
  
  // set pin modes
  pinMode(RPLIDAR_MOTOR, OUTPUT);
}

void loop() {
  if (IS_OK(lidar.waitPoint())) {
    float distance = lidar.getCurrentPoint().distance; //distance value in mm unit
    float angle    = lidar.getCurrentPoint().angle; //anglue value in degree
    bool  startBit = lidar.getCurrentPoint().startBit; //whether this point is belong to a new scan
    byte  quality  = lidar.getCurrentPoint().quality; //quality of the current measurement
    
    Serial.printl(distance);
    
    
  } else {
    analogWrite(RPLIDAR_MOTOR, 0); //stop the rplidar motor
    
    // try to detect RPLIDAR... 
    rplidar_response_device_info_t info;
    if (IS_OK(lidar.getDeviceInfo(info, 100))) {
       // detected...
       lidar.startScan();
       
       // start motor rotating at max allowed speed
       analogWrite(RPLIDAR_MOTOR, 255);
       delay(1000);
    }
  }
}

Re: měření vzdáleností pomocí RPLidar A1 a komunikace s PLC

Napsal: 01 dub 2019, 07:50
od Axamith
Aniž bych nějak pitval tvůj kód, s setupu ti chybí

Kód: Vybrat vše

Serial.begin(9600);
s nastavením rychlosti přenosové linky.

P.S. pro vkládání kódu používej Fci code (5 ikona zleva nad textovým oknem).
(By Admin: Kód jsem vložil do správných značek)

Re: měření vzdáleností pomocí RPLidar A1 a komunikace s PLC

Napsal: 01 dub 2019, 09:00
od jankop
Ke kolizi sériového portu nepochybně dochází také.
Přesunul bych LIDAR na SoftwareSerial(). Předpokládám, že by to neměl být problém.

https://www.arduino.cc/en/Tutorial/Soft ... ialExample

Re: měření vzdáleností pomocí RPLidar A1 a komunikace s PLC

Napsal: 01 dub 2019, 09:05
od ohruska
Asi je třeba v monitoru nastavit rychlost přenosu stejnou, jaká je definována v knihovně " RPLIDAR_SERIAL_BAUDRATE = 115200"
Ota

Re: měření vzdáleností pomocí RPLidar A1 a komunikace s PLC

Napsal: 01 dub 2019, 11:42
od ondrej123
Děkuji za rychlé reakce, zítra to vyzkouším.