Skip to content

Control an Android device from Arduino or vice versa

License

Notifications You must be signed in to change notification settings

mazahaker/SerialManager2

 
 

Repository files navigation

Serial Manager 2

Возможности

  • Подключение:

    • USB
    • Bluetooth
    • WebSocket
  • Действия при получении команды:

    • Показ уведомлений в виде "плавающего" окна
    • Запуск приложения
    • Эмуляция нажатия клавиш клавиатуры
    • Выполнение консольных (shell) команд
    • Отправка данных на контроллер

Arduino → Serial Manager

Формат отправляемой команды: <key:value>

Пример простого скетча для ардуино:

int counter = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("<test:" + String(counter) + ">");
  counter++;
  delay(3000);
}

Serial Manager → Arduino

Запуск и завершение соединения

При включенной опции Отправлять состояния соединения, на контроллер, при каждом успешном соединении, будет отправлено сообщение kg.serial.manager.connection_established.

При завершении работы сервиса, на все подключенные контроллеры будет отправлено сообщение kg.serial.manager.connection_lost.

Датчик света

При включенной опции Отправлять данные датчика освещённости на контроллер будут отправляться:

Сообщения датчика освещённости отправляются не чаще одного раза в 3 секунды и только при значительном изменении освещения, т.е. при смене значения {mode}.

Состояние экрана

При включенной опции Отправлять состояние экрана на контроллер будут отправляться:

  • screen:on при включении экрана
  • screen:off при выключении экрана

Действие команды Отправить данные

На контроллер будет отправлена строка указанная в опциях команды. К строке будет применено форматирвание.

Serial Manager → Android

Broadcast Intent'ы:

  • При получении команды:
    • Action: kg.serial.manager.command_received
    • Extras: key, value
  • При запуске программы:
    • kg.serial.manager.app_started
  • При запуске сервиса:
    • kg.serial.manager.started
  • При остановке сервиса:
    • kg.serial.manager.stopped

Android → Serial Manager

Чтобы отправить данные на контроллер из Вашего приложения, необходимо создать Intent со следующими параметрами:

  • Action: kg.serial.manager.send
  • Extras:
    • data - сообщение, которое необходимо отправить на контроллер
    • id - идентификатор конкретной операции, необязательный параметр.

Пример (Java):

Intent intent = new Intent("kg.serial.manager.send");
intent.putExtra("id", "1234");
intent.putExtra("data", "message_for_controller");
sendBroadcast(intent);

В случае, если был указан параметр id, то после обработки команды и попытки отправить данные на контроллер, Serial Manager создаст следующий Broadcast Intent:

  • Action: kg.serial.manager.send.complete
  • Extras: id

Форматирование строк

Можно использовать следующие значения:

  • %key - будет заменено на ключ текущей команды;
  • %value - будет заменено на значение текущее команды;
  • hex2dec(x), dec2hex(x), bin2dec(x), dec2bin(x) - конвертирование x из одной системы счисления в другую;
  • %{...} - вместо ... нужно подставить математическое выражение (формулу). Описание доступных операторов и выражений.

Например, от контроллера приходят данные о температуре в Фаренгейтах, а нам нужно перевести в градусы Цельсия. Для этого нужно написать:

%{round((%value - 32) * (5 / 9), 1)} ºC

По формуле выше, мы перевели градусы из Ф в С и округлили полученное значение до десятых (до одного знака после запятой). Т.е. если от контроллера пришла цифра 89, то мы на выходе получим 31.7 ºC. При этом текст до и после %{...} остаётся без изменений.

Форматирование строк применяется:

  • при действии команды Отправить данные;
  • в уведомлении при распознавании команды;
  • в создаваемом Intent'е при распознавании команды.

Интерфейс

Для удаления команды - свайп влево.

Команды можно перемещать вверх и вниз по списку. Для перемещения - долгий tap на команде, затем (не отпуская) двигайте вверх или вниз.

Библиотеки

Альтернативы

About

Control an Android device from Arduino or vice versa

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 51.0%
  • Kotlin 29.8%
  • C 17.6%
  • HTML 1.4%
  • CMake 0.2%