подключение к ардуино к raspberry Pi по RS485

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Чт янв 17, 2019 9:19 pm

fandaymon писал(а):
Чт янв 17, 2019 9:11 pm
saf47 писал(а):
Чт янв 17, 2019 8:28 pm
как вы думаете может какая то программа настраивает порт не правильно, у меня Arduino ID , Processing установлены, не могут случайно он порт переназначать?
Так надо посмотреть какие устройства в /dev есть. И если всё-таки действительно обмен идёт через ttyUSB0 или ttyUSB1, то просто в код цикла на PHP этот порт захардкодить (убрать с 34 по 48 строчки и вписать в 54 свой порт)
fandaymon писал(а):
Чт янв 17, 2019 9:11 pm
saf47 писал(а):
Чт янв 17, 2019 8:28 pm
как вы думаете может какая то программа настраивает порт не правильно, у меня Arduino ID , Processing установлены, не могут случайно он порт переназначать?
Так надо посмотреть какие устройства в /dev есть. И если всё-таки действительно обмен идёт через ttyUSB0 или ttyUSB1, то просто в код цикла на PHP этот порт захардкодить (убрать с 34 по 48 строчки и вписать в 54 свой порт)
Я смотрел, точно через ttyISB, вот только включаю в один и тот же разъем,а он иногда меняет порт ttyISB 1 то ttyISB 0, наверно нужно проверку в скрипте поставить?
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение fandaymon » Чт янв 17, 2019 9:35 pm

saf47 писал(а):
Чт янв 17, 2019 9:19 pm
fandaymon писал(а):
Чт янв 17, 2019 9:11 pm
saf47 писал(а):
Чт янв 17, 2019 8:28 pm
как вы думаете может какая то программа настраивает порт не правильно, у меня Arduino ID , Processing установлены, не могут случайно он порт переназначать?
Так надо посмотреть какие устройства в /dev есть. И если всё-таки действительно обмен идёт через ttyUSB0 или ttyUSB1, то просто в код цикла на PHP этот порт захардкодить (убрать с 34 по 48 строчки и вписать в 54 свой порт)
fandaymon писал(а):
Чт янв 17, 2019 9:11 pm
saf47 писал(а):
Чт янв 17, 2019 8:28 pm
как вы думаете может какая то программа настраивает порт не правильно, у меня Arduino ID , Processing установлены, не могут случайно он порт переназначать?
Так надо посмотреть какие устройства в /dev есть. И если всё-таки действительно обмен идёт через ttyUSB0 или ttyUSB1, то просто в код цикла на PHP этот порт захардкодить (убрать с 34 по 48 строчки и вписать в 54 свой порт)
Я смотрел, точно через ttyISB, вот только включаю в один и тот же разъем,а он иногда меняет порт ttyISB 1 то ttyISB 0, наверно нужно проверку в скрипте поставить?
Тут я не подскажу... Есть опыт реализации датчики подключенные к пинам малины - питон - МДМ и ардуина - USB - рутер под OpenWRT - баш - wifi - МДМ, а вот чтобы ардуино-USB-малина опыта не было. Может быть где в настройках дебиана можно зафиксировать чтобы одно и тоже устройство всегда подключалась к одному и тому же порту
За это сообщение автора fandaymon поблагодарил:
saf47 (Вс янв 20, 2019 9:17 am)
Рейтинг: 1.16%
Аватара пользователя
ИванДрон
Сообщения: 2
Зарегистрирован: Чт янв 17, 2019 10:04 pm
Откуда: Питер
Благодарил (а): 0
Поблагодарили: 0
Контактная информация:

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение ИванДрон » Чт янв 17, 2019 10:09 pm

Здравствуйте!

Можно подключить Ардуино к Малине по шине OneWire, по одному I/O выводу.
Причем этот протокол или технология дуплексная и позволяет общаться устройствам по одному проводу, ну и GND конечно не забываем :D

Библиотека под Ардуино есть, а вот под Малину не видел, может тоже есть.

У кого нибудь есть подобный опыт?
m_andrey
Сообщения: 13
Зарегистрирован: Чт мар 08, 2018 9:54 am
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение m_andrey » Пт янв 18, 2019 10:57 am

Имею опыт подключения электросчетчика с RS485 к МД по MQTT. Реализация следующая. ESP8266 c переходником Serial->RS485. ESP читает топик input и все пришедшие отправляет в RS485 и наоборот все что пришло с порта отправляется в топик output. Если проще MQTT<->RS485 мост.
saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Пт янв 18, 2019 2:14 pm

saf47 писал(а):
Чт янв 17, 2019 8:28 pm
saf47 писал(а):
Чт янв 17, 2019 8:24 pm
fandaymon писал(а):
Чт янв 17, 2019 8:20 pm
saf47 писал(а):
Чт янв 17, 2019 8:06 pm
fandaymon писал(а):
Чт янв 17, 2019 7:59 pm
saf47 писал(а):
Чт янв 17, 2019 7:41 pm
у меня ардуина на порту в raspberry определяется как /dev/ttyUSB0 или ttyUSB1, скрипт сам определит порт подключения? И еще в Status я могу записать как один параметр так и строку параметров, например через запятую?
Ммм... Порт должен быть ttyAСM, тогда скрипт сам подхватит. И скорость обмена там стоит 9600
В приведенном примере status это название свойства, в которое записывается значение, передающееся параметром v
Несколько свойств присваивать я не пробовал, не уверен что получится. У меня сделано так, что несколько свойств передаются несколькими строчками. Если это зачем-то нужно, тогда надо вызывать метод с несколькими параметрами, чтобы потом этот метод разнёс параметры по свойствам объекта
с портом сейчас разберусь, а такой еще вопросик, в запросе

Код: Выделить всё

sprintf(buf, "GET /objects/?/objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
, чтобы изменить только свойство, переменная которую необходимо записать помещаем в (int)current_garage, или я не прав?
так правильней

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
этот sprintf подставляет вместо %1, то что находится во втором аргументе, т.е. в данном случае (int)current_garage, целую часть от того что хранится в переменной current_garage
Если где-нибудь в ардуиновском скрипте мы вычислили температуру и занесли её в переменную temp_room, а потом хотим записать её в свойство temp, то строчка будет выглядеть так

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=temp&v=%1 HTTP/1.0", (int)temp_room);
спасибо, с этим теперь все ясно. теперь ищу как порт на ttyAMA0 настроить
как вы думаете может какая то программа настраивает порт не правильно, у меня Arduino ID , Processing установлены, не могут случайно он порт переназначать?
Здравствуйте! опять я по вашу душу. Запустил скрипт: sample_cycle_arduino_direct.php, просто из командной строки, и он у меня ругается на библиотеки в начале скрипта, то есть он их не может открыть. Что ни будь на это можете мне подсказать?
saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Пт янв 18, 2019 2:36 pm

saf47 писал(а):
Пт янв 18, 2019 2:14 pm
saf47 писал(а):
Чт янв 17, 2019 8:28 pm
saf47 писал(а):
Чт янв 17, 2019 8:24 pm
fandaymon писал(а):
Чт янв 17, 2019 8:20 pm
saf47 писал(а):
Чт янв 17, 2019 8:06 pm
fandaymon писал(а):
Чт янв 17, 2019 7:59 pm
saf47 писал(а):
Чт янв 17, 2019 7:41 pm
у меня ардуина на порту в raspberry определяется как /dev/ttyUSB0 или ttyUSB1, скрипт сам определит порт подключения? И еще в Status я могу записать как один параметр так и строку параметров, например через запятую?
Ммм... Порт должен быть ttyAСM, тогда скрипт сам подхватит. И скорость обмена там стоит 9600
В приведенном примере status это название свойства, в которое записывается значение, передающееся параметром v
Несколько свойств присваивать я не пробовал, не уверен что получится. У меня сделано так, что несколько свойств передаются несколькими строчками. Если это зачем-то нужно, тогда надо вызывать метод с несколькими параметрами, чтобы потом этот метод разнёс параметры по свойствам объекта
с портом сейчас разберусь, а такой еще вопросик, в запросе

Код: Выделить всё

sprintf(buf, "GET /objects/?/objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
, чтобы изменить только свойство, переменная которую необходимо записать помещаем в (int)current_garage, или я не прав?
так правильней

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
этот sprintf подставляет вместо %1, то что находится во втором аргументе, т.е. в данном случае (int)current_garage, целую часть от того что хранится в переменной current_garage
Если где-нибудь в ардуиновском скрипте мы вычислили температуру и занесли её в переменную temp_room, а потом хотим записать её в свойство temp, то строчка будет выглядеть так

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=temp&v=%1 HTTP/1.0", (int)temp_room);
спасибо, с этим теперь все ясно. теперь ищу как порт на ttyAMA0 настроить
как вы думаете может какая то программа настраивает порт не правильно, у меня Arduino ID , Processing установлены, не могут случайно он порт переназначать?
Здравствуйте! опять я по вашу душу. Запустил скрипт: sample_cycle_arduino_direct.php, просто из командной строки, и он у меня ругается на библиотеки в начале скрипта, то есть он их не может открыть. Что ни будь на это можете мне подсказать?
Ну тут сам понял,скрипт для пробы положил в другую директорию. А когда запускаю из правильной , то есть из папки scrits, то выдает ошибки.[imghttps://cloud.mail.ru/public/6mpm/hTZ3XAzHB][/img]
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение skysilver » Пт янв 18, 2019 3:06 pm

Блин, хватить оверквотить!!! Если себя не жалко, то о других подумайте.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Пт янв 18, 2019 7:33 pm

кто ни будь знает почему скрипт sample_cycle_arduino_direct.php, после запуска дает ошибку на строку: chdir(dirname(__FILE__) . '/../');
пишет синтаксическая ошибка- рядом неожиданный знак ' dirname'
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение skysilver » Пт янв 18, 2019 8:55 pm

saf47 писал(а):
Пт янв 18, 2019 7:33 pm
кто ни будь знает почему скрипт sample_cycle_arduino_direct.php, после запуска дает ошибку на строку: chdir(dirname(__FILE__) . '/../');
пишет синтаксическая ошибка- рядом неожиданный знак ' dirname'
Как запускаешь? Скриншот. А то на том, что выше, запуск скрипта неверный - не указан интерпретатор php в начале.
За это сообщение автора skysilver поблагодарил:
saf47 (Вс янв 20, 2019 9:16 am)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Сб янв 19, 2019 8:27 am

skysilver писал(а):
Пт янв 18, 2019 8:55 pm
saf47 писал(а):
Пт янв 18, 2019 7:33 pm
кто ни будь знает почему скрипт sample_cycle_arduino_direct.php, после запуска дает ошибку на строку: chdir(dirname(__FILE__) . '/../');
пишет синтаксическая ошибка- рядом неожиданный знак ' dirname'
Как запускаешь? Скриншот. А то на том, что выше, запуск скрипта неверный - не указан интерпретатор php в начале.
спасибо, вы правы, не правильно запускал скрипт.
Ответить