Подключение цифрового дальномера к Raspberry Pi

Тема в разделе "Raspberry Pi", создана пользователем Mikaell, 16 янв 2018.

  1. Mikaell

    Mikaell Нуб

    [​IMG]
    Всем здравствуйте, у меня есть датчик расстояния Laser Sensor и Raspberry Pi 3.
    Вопрос к участникам форума следующий - как обрабатывать данные с данного устройства. Ведь я, так понимаю для него необходима библиотека работающая с цифровым кодом. Библиотека должна быть желательно для питона.
    Это даже возможно не дальномер а датчик препятствий судя по данной статье ноя не уверен , тк информации о нем мало в сети https://www.waveshare.com/wiki/Laser_Sensor
     
    Последнее редактирование: 16 янв 2018
  2. Bobreogen

    Bobreogen Нерд

    Для работы с портами есть для питона специальная библиотека - RPi.GPIO. Здесь инструкция по установке и проекты с его использованием:
    https://arduinomaster.ru/raspberry-pi/ustanovka-python-i-na-raspberry-pi/
    https://arduinomaster.ru/raspberry-pi/proekty-raspberry-pi-na-python-s-gpio/
     
    arkadyf нравится это.
  3. Igor68

    Igor68 Гуру

    Это точно не дальномер судя по схеме. Там только стабилизатор питания, излучатель питания и датчик отражения. И отражение должно быть нормальным - всего один транзистор. Скорее всего отражающая поверхность (такие "плёнки" у нас приклеены на каждой тележке на рельсах для настоящего дальномера). В схеме нет даже модулятора на излучатель и фильтра для приёмника для отсеивания просто освещения от отражения(хотя некоторая последовательная RC цепочка (R7 и C5) присутствует . Так что это просто датчик препятствия и похоже в темноте(когда не мешает внешний свет). Для работы Вам потребуется только библиотеки взаимодействия с портами ввода-вывода.
     
    Последнее редактирование: 7 апр 2018
  4. Igor68

    Igor68 Гуру

    Вот посмотрите, какой код предлагают для Arduino:
    Код (C++):
    int laser_din=2;

    void setup()
    {
      pinMode(laser_din,INPUT);
      Serial.begin(9600);
    }
    void loop()
    {
      if(digitalRead(laser_din)==LOW)
      {
        Serial.println("NO Obstacles!");
      }
      else
      {
        Serial.println("Obstacles!");
      }
      delay(500);
    }
     
    Простое определение есть сигнал или нет (отражение)
    Да и для STM32 ничего иного:
    Код (C++):
    /*******************************************************************************
    * Function Name  : main
    * Description    : Main program
    * Input          : None
    * Output         : None
    * Return         : None
    * Attention         : None
    *******************************************************************************/

    int main(void)
    {
        Delay_Init();
        usart_Configuration();
        ADC_Configuration();
        user_gpio_init();
          printf("\r\n****************************************************************\r\n");
          /* Infinite loop */
          while (1)
          {
            if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4))
                printf("The Obstacles is far!\r\n");
            else
                printf("The Obstacles is near!\r\n");
              Delay(100);   /* delay 1000ms */
        }
    }
     
    Так, что в Питоне вам потребуется только работа с дискретными портами, на которую Вы сами всё выложили.
     
  5. Igor68

    Igor68 Гуру

    И последнее - простите не обратил внимания на H1 и H2(думаю это некие перемычки) на схеме... Это возможность "поиграться" с модуляцией. На Ваше усмотрение.