Но он на каком-то "языке" должен общаться с ардуино? Как это общение организовать в флпрог?
Разработка пользовательских блоков под заказ
Re: Разработка пользовательских блоков под заказ
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Разработка пользовательских блоков под заказ
Приемопередатчик это физический уровень, там никакого языка нет, просто физические сигналы RX и TX. Язык нужен на канальном уровне и выше, за это в данном случае отвечает протокол LIN, т.е. вам нужен блок протокола для общения ардуинки с датчиками. Поищите его в инете, потом попросите кого-нибудь затолкнуть его в блокDiimaas писал(а): 12 апр 2026, 22:19Но он на каком-то "языке" должен общаться с ардуино? Как это общение организовать в флпрог?
ПС: искать например Arduino-LIN
Re: Разработка пользовательских блоков под заказ
Спасибо за развернутый ответ, получается что если сделать блок общения с лин шиной то не имеет значения какой будет лин трансивер т.к он только конвертирует уровни?dstrufanov писал(а): 13 апр 2026, 07:50 Приемопередатчик это физический уровень, там никакого языка нет, просто физические сигналы RX и TX. Язык нужен на канальном уровне и выше, за это в данном случае отвечает протокол LIN, т.е. вам нужен блок протокола для общения ардуинки с датчиками. Поищите его в инете, потом попросите кого-нибудь затолкнуть его в блок
ПС: искать например Arduino-LIN
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Разработка пользовательских блоков под заказ
Да, вы можете подключить LIN-передатчик, CAN-передатчик, RS-485
Re: Разработка пользовательских блоков под заказ
C каном отлично получилось сработаться со встроенным стандартным блоком для MCP2515 в программе флпрог. Реализовал все свои хотелки в машине.dstrufanov писал(а): 13 апр 2026, 13:06 Да, вы можете подключить LIN-передатчик, CAN-передатчик, RS-485
Для прослушивания лин такой код подойдет?
Код: Выделить всё
/* LIN Sniffer - Monitor traffic on LIN Bus
*
* Written in September 2016 by Blaž Pongrac B.S., RoboSap, Institute of Technology, Ptuj (www.robosap-institut.eu) for Macchina LLC
*
* To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.
*
* You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
*
* Using LIN Stack v2.0 Library (https://github.com/macchina/LIN)
*
* Developed against Arduino IDE 1.6.9
*/
// Including LIN Stack library
#include <lin_stack.h>
// Variables
const byte ident = 0; // Identification Byte
byte data_size=8; // length of byte array
byte data[8]; // byte array for received data
// Creating LIN Object
lin_stack LIN1(1,ident); // 1 - channel, ident - Identification Byte
void setup() {
SerialUSB.begin(9600); // Configure Serial for Serial Monitor
LIN1.setSerial(); // Configure Serial for receiving
}
void loop() {
// Checking LIN Bus periodicly
byte a = LIN1.readStream(data, data_size);
if(a == 1){ // If there was an event on LIN Bus, Traffic was detected. Print data to serial monitor
SerialUSB.println("Traffic detected!");
SerialUSB.print("Synch Byte: ");
SerialUSB.println(data[0]);
SerialUSB.print("Ident Byte: ");
SerialUSB.println(data[1]);
SerialUSB.print("Data Byte1: ");
SerialUSB.println(data[2]);
SerialUSB.print("Data Byte2: ");
SerialUSB.println(data[3]);
SerialUSB.print("Data Byte3: ");
SerialUSB.println(data[4]);
SerialUSB.print("Data Byte4: ");
SerialUSB.println(data[5]);
SerialUSB.print("Data Byte5: ");
SerialUSB.println(data[6]);
SerialUSB.print("Check Byte: ");
SerialUSB.println(data[7]);
SerialUSB.print("\n");
}
}https://github.com/Beirdo/Arduino-LIN/t ... es/Sniffer
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Разработка пользовательских блоков под заказ
Попробуйте. Вот это записать в секцию Declare:Diimaas писал(а): 13 апр 2026, 13:34 Для прослушивания лин такой код подойдет?
Код: Выделить всё
/* LIN Sniffer - Monitor traffic on LIN Bus * * Written in September 2016 by Blaž Pongrac B.S., RoboSap, Institute of Technology, Ptuj (www.robosap-institut.eu) for Macchina LLC * * To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty. * * You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. * * Using LIN Stack v2.0 Library (https://github.com/macchina/LIN) * * Developed against Arduino IDE 1.6.9 */ // Including LIN Stack library #include <lin_stack.h> // Variables const byte ident = 0; // Identification Byte byte data_size=8; // length of byte array byte data[8]; // byte array for received data // Creating LIN Object lin_stack LIN1(1,ident); // 1 - channel, ident - Identification Byte void setup() { SerialUSB.begin(9600); // Configure Serial for Serial Monitor LIN1.setSerial(); // Configure Serial for receiving } void loop() { // Checking LIN Bus periodicly byte a = LIN1.readStream(data, data_size); if(a == 1){ // If there was an event on LIN Bus, Traffic was detected. Print data to serial monitor SerialUSB.println("Traffic detected!"); SerialUSB.print("Synch Byte: "); SerialUSB.println(data[0]); SerialUSB.print("Ident Byte: "); SerialUSB.println(data[1]); SerialUSB.print("Data Byte1: "); SerialUSB.println(data[2]); SerialUSB.print("Data Byte2: "); SerialUSB.println(data[3]); SerialUSB.print("Data Byte3: "); SerialUSB.println(data[4]); SerialUSB.print("Data Byte4: "); SerialUSB.println(data[5]); SerialUSB.print("Data Byte5: "); SerialUSB.println(data[6]); SerialUSB.print("Check Byte: "); SerialUSB.println(data[7]); SerialUSB.print("\n"); } }
Код: Выделить всё
// Including LIN Stack library
#include <lin_stack.h>
// Variables
const byte ident = 0; // Identification Byte
byte data_size=8; // length of byte array
byte data[8]; // byte array for received data
// Creating LIN Object
lin_stack LIN1(1,ident); // 1 - channel, ident - Identification Byte
Код: Выделить всё
{
SerialUSB.begin(9600); // Configure Serial for Serial Monitor
LIN1.setSerial(); // Configure Serial for receiving
}
Код: Выделить всё
{
// Checking LIN Bus periodicly
byte a = LIN1.readStream(data, data_size);
if(a == 1){ // If there was an event on LIN Bus, Traffic was detected. Print data to serial monitor
SerialUSB.println("Traffic detected!");
SerialUSB.print("Synch Byte: ");
SerialUSB.println(data[0]);
SerialUSB.print("Ident Byte: ");
SerialUSB.println(data[1]);
SerialUSB.print("Data Byte1: ");
SerialUSB.println(data[2]);
SerialUSB.print("Data Byte2: ");
SerialUSB.println(data[3]);
SerialUSB.print("Data Byte3: ");
SerialUSB.println(data[4]);
SerialUSB.print("Data Byte4: ");
SerialUSB.println(data[5]);
SerialUSB.print("Data Byte5: ");
SerialUSB.println(data[6]);
SerialUSB.print("Check Byte: ");
SerialUSB.println(data[7]);
SerialUSB.print("\n");
}
Re: Разработка пользовательских блоков под заказ
Правильно?
А как входы/выходы обозначить?
А как входы/выходы обозначить?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Разработка пользовательских блоков под заказ
Какие входы/выходы? Я так понял, что этот блок будет мониторить шину LIN и отправлять данные в порт?
Re: Разработка пользовательских блоков под заказ
Даа с выходами я погорячился, а как настроить пины к которым цепляется лин трансивер? И еще вопрос это на ардуине должно быть два уарта? Или как переделать на софтсериал?
Re: Разработка пользовательских блоков под заказ
Не получается даже просто код скомпилировать, выдает ошибки...
Код: Выделить всё
Arduino: 1.8.15 (Windows 10), Плата:"Arduino Nano, ATmega328P"
C:\Program Files (x86)\FLProg\ideV7\libraries\LIN\examples\Sniffer\Sniffer.ino: In function 'void setup()':
Sniffer:26:3: error: 'SerialUSB' was not declared in this scope
SerialUSB.begin(9600); // Configure Serial for Serial Monitor
^~~~~~~~~
C:\Program Files (x86)\FLProg\ideV7\libraries\LIN\examples\Sniffer\Sniffer.ino:26:3: note: suggested alternative: 'Serial'
SerialUSB.begin(9600); // Configure Serial for Serial Monitor
^~~~~~~~~
Serial
C:\Program Files (x86)\FLProg\ideV7\libraries\LIN\examples\Sniffer\Sniffer.ino: In function 'void loop()':
Sniffer:34:6: error: 'SerialUSB' was not declared in this scope
SerialUSB.println("Traffic detected!");
^~~~~~~~~
C:\Program Files (x86)\FLProg\ideV7\libraries\LIN\examples\Sniffer\Sniffer.ino:34:6: note: suggested alternative: 'Serial'
SerialUSB.println("Traffic detected!");
^~~~~~~~~
Serial
exit status 1
'SerialUSB' was not declared in this scope
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Разработка пользовательских блоков под заказ
Ругается на SerialUSB, видимо такая библиотека должна быть. И да, по идее нужно два USARTа, один для LIN, второй для USB. Поищите другие варианты на гитхабе, не может быть, чтобы никто не делал
Re: Разработка пользовательских блоков под заказ
Нашел еще один, загрузил все работает все отлично. Вопрос можно этот скеч интегрировать в флпрог и добавить выходы что бы можно было использовать данные в своих проектах?
https://github.com/zapta/linbus/tree/ma ... er/arduino
https://github.com/zapta/linbus/tree/ma ... er/arduino
Код: Выделить всё
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "action_led.h"
#include "avr_util.h"
#include "custom_defs.h"
#include "hardware_clock.h"
#include "io_pins.h"
#include "lin_processor.h"
#include "sio.h"
#include "system_clock.h"
// FRAMES LED - blinks when detecting valid frames.
static ActionLed frames_activity_led(PORTB, 0);
// ERRORS LED - blinks when detecting errors.
static ActionLed errors_activity_led(PORTB, 1);
// Arduino setup function. Called once during initialization.
void setup()
{
// Hard coded to 115.2k baud. Uses URART0, no interrupts.
// Initialize this first since some setup methods uses it.
sio::setup();
// Uses Timer1, no interrupts.
hardware_clock::setup();
// Uses Timer2 with interrupts, and a few i/o pins. See source code for details.
lin_processor::setup();
// Enable global interrupts. We expect to have only timer1 interrupts by
// the lin processor to reduce ISR jitter.
sei();
// Have an early 'waiting' led bling to indicate normal operation.
frames_activity_led.action();
}
// Arduino loop() method. Called after setup(). Never returns.
// This is a quick loop that does not use delay() or other busy loops or
// blocking calls.
void loop()
{
// Having our own loop shaves about 4 usec per iteration. It also eliminate
// any underlying functionality that we may not want.
for(;;) {
// Periodic updates.
system_clock::loop();
sio::loop();
frames_activity_led.loop();
errors_activity_led.loop();
// Print a periodic text messages if no activiy.
static PassiveTimer idle_timer;
if (idle_timer.timeMillis() >= 3000) {
// Slow blinking indicates waiting.
frames_activity_led.action();
sio::println(F("waiting..."));
idle_timer.restart();
}
// Handle LIN processor error flags.
{
// Used to trigger periodic error printing.
static PassiveTimer lin_errors_timeout;
// Accomulates error flags until next printing.
static uint8 pending_lin_errors = 0;
const uint8 new_lin_errors = lin_processor::getAndClearErrorFlags();
if (new_lin_errors) {
// Make the ERRORS led blinking.
errors_activity_led.action();
idle_timer.restart();
}
// If pending errors and time to print errors then print and clear.
pending_lin_errors |= new_lin_errors;
if (pending_lin_errors && lin_errors_timeout.timeMillis() > 1000) {
sio::print(F("LIN errors: "));
lin_processor::printErrorFlags(pending_lin_errors);
sio::println();
lin_errors_timeout.restart();
pending_lin_errors = 0;
}
}
// Handle recieved LIN frames.
LinFrame frame;
if (lin_processor::readNextFrame(&frame)) {
const boolean frameOk = frame.isValid();
if (frameOk) {
// Make the FRAMES led blinking.
frames_activity_led.action();
}
else {
// Make the ERRORS frame blinking.
errors_activity_led.action();
}
// Print frame to serial port.
for (int i = 0; i < frame.num_bytes(); i++) {
if (i > 0) {
sio::printchar(' ');
}
sio::printhex2(frame.get_byte(i));
}
if (!frameOk) {
sio::print(F(" ERR"));
}
sio::println();
// Supress the 'waiting' messages.
idle_timer.restart();
}
}
}
- Ilich
- Рядовой
- Сообщения: 55
- Зарегистрирован: 12 авг 2024, 11:56
- Имя: Игорь
- Благодарил (а): 16 раз
- Поблагодарили: 27 раз
Re: Разработка пользовательских блоков под заказ
Попробуйте вот здесь - https://phazz1980.github.io/web_i2u/
Re: Разработка пользовательских блоков под заказ
Это не совсем то, я имеел ввиду возможность переделки этого скетча что бы можно было информацию выводить не в уарт а использовать в нутри программы...
Re: Разработка пользовательских блоков под заказ
Попался такой простой скетч, может к нему можно прикрутить выход что бы не в сериал писал а в переменную?
Код: Выделить всё
#include <SoftwareSerial.h>
// Подключение LIN-трансивера:
// TX -> RX пин Arduino (трансивер получает данные)
// RX -> TX пин Arduino (трансивер отправляет данные)
// LIN-трансивер RX подтягиваем к Arduino RX
#define LIN_RX 2
#define LIN_TX 11
SoftwareSerial linSerial(LIN_RX, LIN_TX);
void setup() {
Serial.begin(115200); // Скорость связи с ПК
linSerial.begin(19200); // Стандартная скорость LIN (чаще всего 9600 или 19200)
Serial.println("LIN Sniffer Started");
}
void loop() {
if (linSerial.available()) {
byte b = linSerial.read();
// Печатаем данные в шестнадцатеричном виде
if (b < 0x10) Serial.print("0");
Serial.print(b, HEX);
Serial.print(" ");
// Дополнительная логика: обнаружение синхробайта (0x55) для новой посылки
if (b == 0x55) {
Serial.println(); // Новая строка для нового кадра
}
}
}Re: Разработка пользовательских блоков под заказ
Добрый день всем участникам!
В ветке объявлений разместил свою хотелку, но увидев эту тему решил написать и сюда
Кто нибудь из участников может взяться блок сделать
CS1238/37 24Bit ADC
На платной основе, кто готов пишите в личку или сюда, без разницы
Запись данных (коэф усиления и проч) чтение параметров и кодов ацп обеих каналов
https://forum.arduino.cc/t/cs1238-fast- ... ry/1166383
https://github.com/yasir-shahzad/CS1238 ... ADC-Module
https://habr.com/ru/articles/700446/
В ветке объявлений разместил свою хотелку, но увидев эту тему решил написать и сюда
Кто нибудь из участников может взяться блок сделать
CS1238/37 24Bit ADC
На платной основе, кто готов пишите в личку или сюда, без разницы
Запись данных (коэф усиления и проч) чтение параметров и кодов ацп обеих каналов
https://forum.arduino.cc/t/cs1238-fast- ... ry/1166383
https://github.com/yasir-shahzad/CS1238 ... ADC-Module
https://habr.com/ru/articles/700446/
-
cfitymrf
- Сержант
- Сообщения: 110
- Зарегистрирован: 06 сен 2021, 07:45
- Имя: иван
- Благодарил (а): 8 раз
- Поблагодарили: 5 раз
Re: Разработка пользовательских блоков под заказ
так попробуй сам сделать , я ради интереса в гугле написал сделай блок CS1238 и он сделал и еще спрашивает какие функции желаете.zakhar81 писал(а): 17 апр 2026, 13:00 Добрый день всем участникам!
В ветке объявлений разместил свою хотелку, но увидев эту тему решил написать и сюда
Кто нибудь из участников может взяться блок сделать
CS1238/37 24Bit ADC
На платной основе, кто готов пишите в личку или сюда, без разницы
Запись данных (коэф усиления и проч) чтение параметров и кодов ацп обеих каналов
https://forum.arduino.cc/t/cs1238-fast- ... ry/1166383
https://github.com/yasir-shahzad/CS1238 ... ADC-Module
https://habr.com/ru/articles/700446/
Re: Разработка пользовательских блоков под заказ
Я обратился же не просто так, написал вроде бы что не за спасибо прошу, готов оплатить, если нужно предоплату сделаю
Попробовать можно но в данный момент мне нужен исполнитель, который попробует и про тестирует, поскольку пока что времени нет на пробы.
Попробовать можно но в данный момент мне нужен исполнитель, который попробует и про тестирует, поскольку пока что времени нет на пробы.
-
ecoins
- Администратор
- Сообщения: 4486
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 224 раза
- Поблагодарили: 368 раз
Re: Разработка пользовательских блоков под заказ
Напишите в личку как с Вами связаться по видеосвязи.zakhar81 писал(а): 19 апр 2026, 14:25 Я обратился же не просто так, написал вроде бы что не за спасибо прошу, готов оплатить, если нужно предоплату сделаю
Попробовать можно но в данный момент мне нужен исполнитель, который попробует и про тестирует, поскольку пока что времени нет на пробы.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя