0
Answered

GPIO Raspberry Pi3

volk_234 7 years ago updated by AntonLoginov 2 years ago 21

Добрый день.

Интересует возможность чтения портов GPIO в проекте сервера.

По этому обсуждению понял как устанавливать порты в нужное значение, но как быть с чтением? В примере тип драйвера указан как IR.DEVICE_CUSTOM_STREAM, опять же не нашел информации по этому типу.

Добрый день.

В проекте есть событие EVENT_RECEIVE_DATA. там будет текущее значение.

TestGPIO.sirpz

Приветствую.

Это событие инициируется только при инициализации драйвера?

Если драйвер создался, то он будет считывать файл в цикле. EVENT_RECEIVE_DATA сработает если файл изменится.

что-то у меня так не работает... считывает только один раз и потом файл меняется, но не в цикле не считывается ни при изменении...

Under review

Добрый день.

Дело в правах.

Попробуйте создать не скриптом, а руками:

sudo su
echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction


Затем что-нибудь отправьте туда:

echo 1 > /sys/class/gpio/gpio17/value


Этот код:

IR.AddListener(IR.EVENT_START,0,function(){               
device = IR.CreateDevice(IR.DEVICE_CUSTOM_STREAM, "RPI_GPIO", {FileName:'/sys/class/gpio/gpio17/value'});
IR.AddListener(IR.EVENT_ONLINE, device, function()
{
IR.Log("ONLINE");
});
IR.AddListener(IR.EVENT_RECEIVE_TEXT, device, function(text)
{
IR.Log('received text = ' + text);
});
});

выведет в лог полученное значение.

Проверить в консоли текущее значение:

cat /sys/class/gpio/gpio17/value

Значение будет совпадать с тем, что получил драйвер в Иридиум.

Столкнулся с такой же проблемой:

Raspberry Pi 3 Model B+

Raspbian Buster Lite (по ссылке из wiki)

Порты инициализурую shell скриптом с sudo правами, при загрузке RPi.

Управляется без проблем. 

Но, IR.EVENT_RECEIVE_TEXT и EVENT_RECEIVE_DATA срабатывают только один раз при инициализации драйвера.

Подскажите, в какую сторону ещё можно копнуть.

Добрый день.

Мы проверили на версии Raspberry 3B с Jessie.

При отправке из shell слушатель с EVENT_RECEIVE_TEXT и EVENT_RECEIVE_DATA отслеживает данные:



Аналогично работает и на 3B+ с Buster. Убедитесь, что пин настроен как out.

Проверил. Согласен. При отправке данных из shell слушатель работает.

Я, просто, управлял из проекта. И в проекте же хотел получить данные.

Отсюда 2 вопроса:

1. Т.е., если управлять пинами через проект, то слушатель и не должен работать?

2. Пины direction in слушать не получится?

Отправку из проекта мы проверяем в данный момент. Решение предложим в этом обсуждении чуть позже.

Пины in записать не получится. Можете проверить из shell - увидите результат (нет прав). При попытке записать из iRidium Server будет то же самое.

Я не хочу писать пины in - я хочу навесить туда датчики и слушать.

Но, событие отрабатывает только один раз при старте системы.

т.е. меняю сосотояние пина in - перезапускаю проект - состояние считывается, но дальше, сколько не меняй - тишина.

Добрый день.

Приложите ваш проект. Можете перед этим удалить из него всё, что не связано с пинами.

Серверный проект:

PB_ShowRoom (Server).sirpz


Shell скрипт инициализации портов:

start

Выполняется при загрузке (пробовал и с sudo и без).

Will be answered

Добрый день.

Исправление в работе. Сообщим по готовности.

Сможете сориентировать по срокам?

Добрый день.

Изменения запланированы на следующий после 1.3.19 релиз.

Мы сообщим, когда будет готово.

Answered

Изменения доступны в релизе 1.3.22.

Можно попросить пример слушателя. В веб интерфейс в system-gpio вижу, что считывает состояние, а забрать в проект никак не получается.

Добрый день.

Пример (проверялось на версии 1.3.24):

Результат выполнения команд приходит на пин. Посмотреть в shell можно через:

cat /sys/class/gpio/gpio17/value

Результат выполнения команды из shell также видит iRidium Server (выделено на скриншоте).

GPIO_RPI.sirpz

Добрый день! Оно работает только в случае если GPIO назначен как выход, а если как ВХОД, то данные при изменении файла не приходят!!!! Проверьте пожалуйста этот момент!!!

И в добавок  слушатель принимает значения только в случае изменения состоянии из иридиума, и более никак