Протокол общения с Arduino?
Весь протокол в обмене словами, по сути.
Т.е. по определенному набору входных слов можно сделать функции, которые отработают и отправят в ответ строку - результат.
Можно сделать примерно такое (сильно не пинать за говнокод, это пример!):
отправляем строку. арудина её читает, если находит подстроку, то выполняет определенное действие, иногда пишет в терминал какие-то слова, что действие выполнено.if (strstr(term_in, "SWPOWER"   ) != 0) code = 1;/*strstr - найти подстроку в строке, пришедшей с ПК (алгоритм чтения слова опустим)*/
if (strstr(term_in, "CALL_1"    ) != 0) code = 2;
if (strstr(term_in, "SMS_SEND"  ) != 0) code = 3;
if (strstr(term_in, "CTRL+Z"    ) != 0) code = 4;
//в зависимости от найденной подстроки был получен один из кодов и по нему работает case
      switch (code)
      {
        case 1:
          Serial.println("@power on/off signal");
          digitalWrite(9, HIGH);
          delay(1000);
          digitalWrite(9, LOW);
          break;
        case 2:
          Serial.println("term@: call number +790679__823");//отправляем сообщение, что начата попытка дозвона
          gprsSerial.println("ATD+790679__823;");//в шилд
          break;
        case 3:
          function1();
   default:
          /*Код, который выполнится, если ниодно из константых значению не соответствует значение в переменной variable*/
          Serial.print("text ");
          break;
Ну обычно для этого берут RS-232 и компанию через MAX232 или его альтернативу.
https://www.arduino.cc/en/Tutorial/ArduinoSoftwareRS232
Ну а ардуина как определяет что висит на ее ноге? У нее же нет дара предсказывания, если вы просто повесите на ногу датчик 1Wire ничего не произойдет.