Orange Pi на автомойке ч.3

в 10:07, , рубрики: Orange Pi, автомойка, программирование микроконтроллеров

Продолжение статей Arduino на автомойке и Arduino на автомойке ч.2.

Orange Pi на автомойке ч.3 - 1

Как понятно из заголовка перешли на использование Orange Pi One. Машинка гораздо поинтереснее Arduino. Выбран среди себе подобных в основном из-за цены. По сравнению в Arduino лучше решает следующие задачи:

— сеть (проблем пока нет)
— подключение монитора вместо табло
— возможность использования тач-панели
— возможность использования базы данных
— возможность установки на «себя» веб-сервера

В качестве операционной системы выбрана DietPi. Программирование в QT. Купюроприёмник подключен через последовательный порт. Монитор в HDMI. Тач панель в USB. Выходы на реле 29, 31, 33, 35, 37. Подключен жетоноприёмник на 22 ногу через делитель напряжения.

Также реализован режим приёма денег через кассу с выдачей клиенту пин-кода. Сервером для хранения статуса пин-кода может быть один из апельсинов. Выдача и контроль пин-кода через веб-страницу например со смартфона. Таким образом можно экономить на купюроприёмниках.

Некоторые лайф-хаки апельсина:

Останавливаем консоль на UART для купюрника

sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl mask serial-getty@ttyS0.service

Поворот экрана (файл /etc/X11/xorg.conf)

Section "Device"
        Identifier "default"
        Driver "fbdev"
        Option "Rotate" "CW"
EndSection

Включаем поддержку некоторых тач-панелей (файл /etc/modules)

hid_multitouch

Запрещаем спать ( файл /etc/X11/xorg.conf.d/10-dpms.conf)

Section "ServerFlags"
    Option "blank time"   "0"
    Option "standby time" "0"
    Option "suspend time" "0"
    Option "off time"     "0"
EndSection

Выставляем режим работы выхода.

void pinMode(int  pin, int mode)
{
    FILE *file;
    char path[80];
    file=fopen("/sys/class/gpio/export" , "w");
    fprintf(file, "%d", pin);
    fclose(file);
    sprintf(path, "/sys/class/gpio/gpio%d/direction", pin);
    file=fopen(path , "w");
    fprintf(file, "%s", mode ? "out" : "in");
    fclose(file);  
}

Включение/выключение реле.

void digitalWrite(int pin, int value)
{
    FILE *file;
    char path[40];
    sprintf(path, "/sys/class/gpio/gpio%d/value", pin);
    file=fopen(path , "w");
    fputc(value?'1':'0', file);
    fclose(file);
}

Краткие выводы на текущий момент:

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

Планы на будущее:

— подключение индуктивных петель для фиксации наличия машины
— создание личного кабинета клиента с возможностью запоминания и дальнейшего использования остатка денежных средств на любом аппарате сети автомоек.

Автор: paul_155

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js