エリキシルにおけるDYP‐A 01超音波距離センサの使用


にほんご
先日、私はDYP-A01 ultrasonic distance sensor 私のNerves -動力Raspberry Pi . これが私のノートです.


ロングストーリー
  • 私は、私たちがラズベリーパイのシリアルポートを通して超音波センサーと通信するのを可能にするElixirプログラムを書きました.
  • 超音波センサーを接続する距離を測定できました.
  • ラズベリーパイゼロのUART Rxピン
  • ラズベリーパイ4のUART RXピン
  • ラズベリーパイ4のUSBポート

  • 神経ファームウェア
    私の使用Nerves 私のラズベリーパイのファームウェアを構築する.
    Elxirプログラミング言語のファームウェアを構築するプラットフォームです.そこには良い資源がある.
    私は個人的に神経の公式文書を読んで神経を始めた.そこで質問をしました#nerves さんのチャンネルElixir Slack 私が立ち往生したとき.人々はコミュニティで親切で親切です.
  • Nerves documentation
  • Nerves • Elixir School
  • ここではいくつかの例をファームウェアのプロジェクトでは、実験を行うことができます.
  • Nerves Livebook firmware
  • Nerves example firmware collection
  • 次のYoutube動画では、神経プロジェクトの共同執筆者、初心者のための神経についての協議.

  • Elixir in Embedded Systems using Nerves Livebook YouTube

  • Elixir Wizards Live: Frank and the Wizards YouTube

  • 使用ハードウェア
    これが私の実験で使用したもののリストです.
    DYP-A01 ultrasonic distance sensor

    USB to TTL Serial Cable

    Jumper wires

    Raspberry Pi 4

    Raspberry Pi Zero W (with Headers)


    配線
    配線は、USBまたはGPIOピンを通して行うことができます.

    USB
    私は、ADAFruitのもので読んだものに基づくDTL - A 01超音波距離センサーとUSBをTTLシリアルケーブルに買いましたcatalog .

    This sensor has UART output, so it can connect to a microcontroller or microcomputer with a TTL serial port. You can also connect it to a computer using a USB-to-serial adapter and read data from the operating system's COM or serial port device.


    最初はどうやって彼らをつなぐかわからなかった.USBケーブルがそれの来る4本のワイヤーを持っている間、センサーのケーブルの終わりには1つのコネクタです.しばらくして、ジャンパーワイヤーを使って接続することができました.



    私の場合では、感謝して、ワイヤーはきれいに色分けされます.そして、それは配線を簡単にします.この特定のセンサーのために、我々が我々のラズベリーPiからセンサーまで信号を送るので、1本のワイヤーは不必要です.私たちはセンサーから定期的に送られる信号を受け取りますdata sheet .
    DPO - A 01
    TTLシリアルケーブル
    赤( 3.3 - 5 V )
    赤色( 5 V )
    黒色の
    黒色の
    ホワイト( TX/送信)
    ホワイト(RX/受信)

    GPIOピン
    あるいは、我々はラズベリーパイでGPIOピンを通してセンサーをつなぐことができます.
    DPO - A 01
    ラズベリーパイ
    赤( 3.3 - 5 V )
    5 V
    黒色の
    グラウンド
    ホワイト( TX/送信)
    GPIO 15 ( RX/受信)
    Raspberry Pi pinout

    エリクサー・プログラム
    必要なコードをElixirライブラリとしてパッケージ化しますdypa01 . 追加でインストールできますdypa01 ファームウェアの依存関係のリストにmix.exs ファイル
    def deps do
      [
        {:dypa01, "~> 0.1"}
      ]
    end
    

    シリアルポート名
    あなたの神経への最初のシェルは、ラズベリーパイを動かしました.
    現在実行中のすべてのシリアルポートを一覧表示できます.
    iex> Circuits.UART.enumerate
    %{
      "ttyAMA0" => %{},
      "ttyS0" => %{},
      "ttyUSB0" => %{
        description: "CP2102 USB to UART Bridge Controller",
        manufacturer: "Silicon Labs",
        product_id: 60000,
        serial_number: "0001",
        vendor_id: 4292
      }
    }
    
    UART用のデフォルトの神経シリアルポートを見つけることができます/boot/config.txt .
    iex> cmd "cat /boot/config.txt | grep tty"
    # Enable the UART (/dev/ttyS0)
    0
    
    私のケースでは、私のRASPREY PIゼロが使用したことがわかりましたttyAMA0 そして、私の猛烈なPIttyS0 UART用.

    測距
    シリアルポート名が見つかったら、超音波距離センサから距離データを読みやすくする.
    # Start a gen server for interacting with a DYP-A01 sensor on port ttyAMA0
    iex> {:ok, pid} = DYPA01.start_link(port_name: "ttyAMA0")
    {:ok, #PID<0.1407.0>}
    
    # Measure the current distance
    iex> DYPA01.measure(pid)
    {:ok, %DYPA01.Measurement{distance_mm: 1680, timestamp_ms: 321793}}