Проблема связи TCP WiFi python-arduino

#tcp #arduino #wifi #particle-photon

#tcp #arduino #wifi #частица-фотон

Вопрос:

Я пытаюсь управлять дроном с помощью джойстика с компьютера через Wi-Fi. На борту у меня есть доска, похожая на Aruino, под названием Particle Photon. Я хочу отправить 3 поплавка (тангаж, крен, дроссель) через TCP, и я придумал что-то подобное:

На стороне клиента PC — python он просто отправляет это с частотой 20 кадров в секунду / 50 мс:

         try:
            s.sendall(bytearray(struct.pack("f", float(-20*axis0))))
            s.sendall(bytearray(struct.pack("f", float(20*axis1))))
            s.sendall(bytearray(struct.pack("f", float(axis2))))

        except socket.error as e:
            print("error while sending :: "   str(e))
 

где s — моя розетка.

На стороне сервера-дрона у меня есть это:

 if (myIMU.delt_t >= 25)
    {
      if (TCPcomms amp;amp; client.connected()){

        // Check for 12 bytes (3 floats) from joystick input --
        // if we have them, update roll, pitch and throttle references        
        if(client.available() >= 12){
          
          byte tempBuff[4];
          float newInput[3];

          for(int j = 0; j < 3; j  ){
            for(int i = 0; i < 4; i  )
            {
              tempBuff[i] = client.read();                     
            }
            newInput[j] = *((float*)(tempBuff));            
          }
          roll_reference = newInput[0];
          pitch_reference = newInput[1];
          throttle_reference = newInput[2];
...
 

Drone loop работает намного быстрее, отсюда и проверка времени вверху (не нужно проверять слишком часто).
Теперь я отладил его на более медленных скоростях, и все кажется нормальным. Всякий раз, когда есть 3 готовых поплавка, код дрона считывает их, если нет, он просто продолжается.

Но в половине случаев, когда я пытаюсь запустить его с нормальной скоростью, Древесностружечная плита просто отключается через некоторое время и полностью отключается. По-видимому, он делает это всякий раз, когда возникает какая-либо проблема, но это не очень хорошо помогает донести суть проблемы…

Раньше у меня также был механизм, который отключается через X секунд, но он также часто отключает соединения. Я проверил с помощью Wireshark, что это всегда совпадало с повторной передачей пакетов.

Я предполагаю, что мой вопрос заключается в том, что это ошибка WiFi / TCP, и это просто не подходит для такого типа задач, или я делаю что-то глупое? У кого-нибудь была аналогичная проблема с Arduino или Particle?

Комментарии:

1. Фотон частиц — это не Arduino

2. Но он использует много одного и того же кода, библиотек, файлов .ino и т. Д. Я не думаю, что это вопрос, связанный с фотонами частиц.