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

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Odpovědět
ondrej123
Příspěvky: 2
Registrován: 27 bře 2019, 21:27
Reputation: 0

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

Příspěvek od ondrej123 » 31 bře 2019, 23:36

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


// 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);
}
}
}

Axamith
Příspěvky: 306
Registrován: 09 srp 2017, 08:17
Reputation: 0

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

Příspěvek od Axamith » 01 dub 2019, 07:50

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).

jankop
Příspěvky: 507
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek od jankop » 01 dub 2019, 09:00

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

ohruska
Příspěvky: 166
Registrován: 08 pro 2017, 20:56
Reputation: 0

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

Příspěvek od ohruska » 01 dub 2019, 09:05

Asi je třeba v monitoru nastavit rychlost přenosu stejnou, jaká je definována v knihovně " RPLIDAR_SERIAL_BAUDRATE = 115200"
Ota

ondrej123
Příspěvky: 2
Registrován: 27 bře 2019, 21:27
Reputation: 0

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

Příspěvek od ondrej123 » 01 dub 2019, 11:42

Děkuji za rychlé reakce, zítra to vyzkouším.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host