Ардуино, Delphi, RS485

Может быть, не совсем адресу, а к дельфийцам надо.

Значит, есть Мега2560. Есть модуль rs485-ttl на микросхеме max485, есть модуль rs485-usb для подключения к ПК.

Мне нужно сделать минипрограмму на делфи: форма с кнопкой и с полем ввода. Кнопка отправляет несколько байт ардуине, ардуина отвечает своим пакетом. Выводим ответ ардуины в поле ввода программы на ПК.

Задача пока на уровне абстракции в поисках исполнителя

Arduin4ik если признаете что все не просто, да денех много дадите то наверное сделают….
а то заказов таких нет в большом количестве что бы делать дешево…

я например могу на языке GO сделать программу - это фактически тот же язык что и у ардуино, ооочень похож
у других свои способы для графического интерфейса… а сделать такой веб сервер вовсе многие смогут….

вам именно на делфи все же ? или любой графический интерфейс ? и сколько денег за проект ?

Огласите весь список!

Хотелки, варианты клиента со стороны ПК….

А на abap?

1 лайк

Приоткрою завесу. Основная задача для меня - научиться общаться с ПК через rs485. Почему делфи, я на нём работал, мне в нём многое знакомо.

Общая задача, на которой я хочу научиться: отправляем с ПК запрос в ардуину, получаем на ПК значение температуры с датчика dht22. Всë. Заимев исходник, разберусь.

Скока денег - не знаю.

уточните какой (фото), они разные бывают.

и зачем тогда тащить сюда rs485 конверторы?
Мега2560 прекрасно общается с ПК по USB-COM преобразователю который имеет на борту.

то есть научившись общаться компом с мегой по COM порту, потом ставите USB->COM->RS485 на стороне компа и COM->RS485 на стороне меги и просто ничего не меняете в программной части.

1 лайк

Я бы даже обратился к участникам - деду (@DetSimen ) работки бы. И Дельфист он отличный.

Да, Delphi + modbus, 485 - это ко мне. Пишы завтра напрямую. dap68@mail.ru

1 лайк

для программиста универсала это роскошь, он может изучать только то на что есть спрос, и оплата чуть больше чем едой))) я как то не застал его востребованность, и вовсе не знаю что это, но если позволяет, почему нет…. даже на питоне можно… главное дрова или логику там не писать стараться))) но зато питон может вообще все!

Хуже. Иногда надо еды купить, а деньги есть тока на вотку.

Бабос, сгинь с темы, пожалуйста.

1 лайк

10.000 руб.

А если нос сломать?

уже сломан, а зачем вы меня провоцируете при этом продолжать флудить ?)))

Тебя попросили по человечески, ты не понимаешь видимо? Как с тобой разговаривать?

Вот код для Нано

#include <SoftwareSerial.h>

#define PIN_RX 10
#define PIN_TX 11
#define PIN_DIR 2

SoftwareSerial rs485(PIN_RX, PIN_TX);

void setReceive() {
  digitalWrite(PIN_DIR, LOW);
}

void setTransmit() {
  digitalWrite(PIN_DIR, HIGH);
}

void setup() {
  pinMode(PIN_DIR, OUTPUT);
  setReceive();
  rs485.begin(9600);
}

void sendLine(String s) {
  setTransmit();
  delayMicroseconds(100);
  rs485.print(s);
  rs485.print("\n");
  rs485.flush();
  delayMicroseconds(100);
  setReceive();
}

String line = "";

void loop() {
  while (rs485.available()) {
    char c = rs485.read();
    if (c == '\n') {
      sendLine("OK:" + line);
      line = "";
    } else if (c != '\r') {
      line += c;
    }
  }
}

вот на питоне

import serial, time

PORT = "/dev/ttyUSB1"
BAUD = 9600

ser = serial.Serial(PORT, BAUD, timeout=1)
ser.reset_input_buffer()

def read_reply():
    deadline = time.time() + 2.0
    while time.time() < deadline:
        line = ser.readline()
        if not line:
            continue
        s = line.decode("utf-8", errors="replace").strip()
        if s.startswith("OK:"):
            return s
        # иначе это эхо или мусор — игнорируем
    return "<timeout>"

print("Enter text, empty line to exit.")
while True:
    s = input("> ")
    if not s:
        break
    ser.reset_input_buffer()          # выкинуть хвост перед запросом
    ser.write((s + "\n").encode())
    print("<", read_reply())

ser.close()

важный момент: USB свисток, включенный по двух проводной схеме слышат сам себя, поэтому нужно любым способом отличать эхо от приема. То есть на нем ТЫ ВСЕГВА примешь эхо… или топологией (4 провода ), если устройств много или протоколом это надо решать… Вот тут просто жду строчку, начинающуюся с OK. это для иллюстрации.

видео скину позже, когда на вашем ?%№ рутубе модерация пройдет.

ЗЫ: в душе не понимаю, что они там модерируют… :wink:
485 самая отличная штука для всяких сетей железок в доме, в машине, в корабле. Раньше на флоте она стандартом была, но медленная и пароходы перешли на CAN. Но по цене модули КАН дороже прилично, а модули 485 для ардуино стоят копейки. и свисток в комп, если надо. Видео не особо интересно - там просто как всё выглядит и как программка на Лазарусе (это в Линуксе Дельфи так называется).

Код на Лазарусе я не стану публиковать - ДетСимен хотел пару копеек на кашу гречневую (с тушенкой) заработать! :wink:

Со времен Архимеда и веревок люди придумали радио. Для проводов изобрели ethernet, который работает не только по витой паре, но и по RG58.

Слушайте, я немного в шоке от того, что сдешняя верхушка не только обсуждает тему, но ещё и нашли время накидать, снять видос!Чаще всего: “эй, ты, желторотик, пшлнх”, а тут вон чего.

Да, свисток 2х проводной с переключалкой между rs232 и rs485. Сформулирую Деду задачу без лишнего всего. Вникну, а там сам уже.

Когда будешь дописывать “лишнее”, имей в виду разницу в длине типов данных Arduino/AVR и Delphi. Как показывает статистика, для людей которые пытаются передавать данные между Arduino и Delphi, это самая частая ошибка.