Yearly Archive:2019

Byfrank

Arduino lesson – VL53L0X 飛行時間型(ToF)距離測定センサー

本センサはST’s
VL53L0Xレザー距離測定システムを搭載されるキャリア/ブレイクアウト基板で、最大測定距離は
2 mに達します。VL53L0Xは赤外線パルスの飛行時間測定原理を使って、測定のターゲットの表面や色の影響せず、測距機能を実現しますて、測定値はデジタル I²Cインターフェースで読み込めます。本基板にの2.8Vリニアレギュレータとレベルシフタが入力電圧2.6V-5.5Vで作動するのは可能になります。0.1のピン間隔もブレッドボードや0.1のパーフボードに使用しやすくなります。

紹介

VL53L0X飛行時間型「ToF」距離測定センサーはVL53L0Xに基づいて、より高速、高精度、高測定距離のセンサーです。

VL53L0Xは新世代の飛行時間距離測定モジュールです。従来の伝統技術と違い、現在市場で最も小さいToF測距センサで、ターゲットの反射率を問わず、精確で距離を測定でき、最大測定値が2mに達するため、新たな測距性能の基準を設定して、また新たなアプリケーションの可能性を拓きます。

VL53L0XはSPAD(Single Photon Avalanche Diode単一光子アバランシェ・ダイオード)検出器のアレイを集積し、ST’s二世代のFlightSenseTM特許技術を採用しています。

VL53L0Xの5.6×10-7m VCSEL (VerticalCavity Surface-Emitting Laser垂直共振器面発光レーザー)はアイセーフ・クラス1のため人眼にとって完全に不可視の光線で、内部の光学干渉フィルと合わせて、より遠い距離、よりよい環境光イミュニティや光学クロストークが実現できます。

ハードウェアの概要

まず、処理している  VL53L1X sensor の特徴を見ましょう。それでボードの特性が把握できます。

特性 範囲
 動作電圧 2.6V-3.5V
 消費電力 20mW @10Hz
 測定範囲 ~0.04m  4m
 インターフェースタイプ I²C (TWI)
 光源 クラス 1、5.6×10-7 VCSEL
 I2C アドレス 0x29
 視野角度 15° – 27°
 読み取り率 50Hz

仕様

  • サイズ: 0.5″ × 0.7″ × 0.085″ (13 mm × 18 mm × 2 mm)
  • 重量(ヘッダーピンなし): 0.5 g (0.02 oz)
  • 動作電圧: 2.6 V to 5.5 V
  • 供給: 10 mA (立ち上げ時の平均値) 。配置、対象物や環境に違って、ピーク電量は40 mAに達します。
  • 出力型式 (I²C): 16-bit (ミリメートル)
  • 測距範囲: 最大 2 m ()
      •  配置、対象物、環境に違って、測定範囲も異なります。
      • 最小範囲はないですが、経験と実験によって、最小測定値はおよそ0.03mです。

    Pinの説明

    PIN 説明
    VDD 安定化2.8Vの電源を出力し、おおよそ150mAで外部コンポーネントに給電できます(もし内部のレギュレータをバイパスしたい場合、本ピンを2.8V入力端子として使って、VINを断路にしてください)。
    VIN 2.6V-5.5Vの主電源連続です。SCLSDAのレベルシフタはI2Cラインをこのレベルに引き上げます。
    GND 電源の接地(0V)連続に充てます。I2C制御装置も必ず本ボードと同じ接地端子を共用してください。
    SDA レベルシフトI2Cデータライン、HiVIN LOW-0V。
    SCL レベルシフトI2Cクロックライン、HiVIN LOW-0V。
    XSHUT アクティブローシャットの入力端子。ボードではVDD と繋がって、デフォルトでセンサーを作動させます。端子をLOWにさせたらセンサーがハードウェアスタンバイモードになります。端子はレベルシフタ機能がありません。
    GPIO1 コーディングで出力を中断することが可能で、このピンはレベルシフトをしません。

    回路図

    上記の回路図で基板に採用したコンポがVL53L0がさらに使いやすくなるのが分かりました。基板が2.6 V ー5.5 Vで供給できレベルシフタもVINと同じロジックでI²Cと通信できます。回路図はダウンロードできます downloadable PDF (110k pdf)。

    用途

        • パソコン/ノートパソコン/タブレットとIoTの検知(省エネ)
        • ロボット(障害物検出)
        • 白物家電 (自動水栓、ソープディスペンサーなどの感知)
        • 1D ジェスチャー感知
        • レザー補助オートフォーカス。カメラのオートフォーカス性能を高めて(特に悪環境「低光量、低コントラスト」および動態ビデオモード)。

    VL53L0X入門

    入門課程では、私たちは一緒にVL53L0Xセンサとarduinoの連続方法を勉強しましょう。VL53L0XはI2Cセンサのため、多数のマイクロコントローラと同じ二つのデータ/クロックラインを使えて、アドレス衝突がなければ、他のセンサとピンもシェアできます。VL53L0Xは飛行時間(ToF)距離センサのため、他のセンサと違って、小さい不可視レザー光源とマッチングセンサを内蔵しています。では、早速始めましょう。

     

    Step1: ハードウェアの準備

        • Arduino ボード
        • VL53L0x モデル
        • ジャンパー線

    Step2: 連続

        • Vinと電源を連続してください、3~5Vでよいです。マイクロコントロールと同じ電圧を使用してください。Arduinosなら、多数は5Vです。
        • GNDと共通電源/テータグランドを連続してください。
        • SCL とArduinoのI2C クロックSCLpin を連続してください。 UNO &‘328 ベース Arduinoではこれを「A5」にも言います。Megaでは「digital 21」、Leonardo/Microでは 「digital 3」と言います。
        • SDAとArduinoのI2CデータSDA pinを連続してください。UNO &‘328ベース Arduino,では「A4」にも言います。 Megaでは 「digital 20、Leonardo/Microでは「digital 2」と言います。

    下記のように

    Adafruit_VL53L0Xダウンロード

    センサーデータを読み取るならAdafruit_VL53L0XLibraryをインストール必要があります。最も簡単な方法はArduino IDEでManageLibraries…を開きます。

     

    adafruit_products_managelib.png

    Adafruit VL53L0X を検索して Install/インストールをクリックします。

    adafruit_products_vl53.png



    デモ

    下記のように File->Examples->Adafruit_VL53L0X->vl53l0x を開いてからセンサーと連続しているArduinoにアップロードします。

    adafruit_products_demo.png

    そう !それから115200の速度でターミナルを開いて、テストを始めましょう。

    adafruit_products_ranging.png


    手を上下に動いてセンサーのデータを読み取ります。何も検知されない場合に、読み取り値オーバーと表示することを注意してください。

    使用する前にセンサーから保護カバーを取り外すのは忘れないでください。

    複数のセンサーと連続

    I2Cで個々のデバイスは1つのアドレスがあるしかありません。各I2Cデバイスは唯一のアドレスがあることを確報してください。VL53L0Xのデフォルトアドレスは 0x29 ですが、ソフトウェアではこれを変更することもできます。

    新しいアドレスを設置する方法が二つあります。1つは初期化中にlox.begin()をlox.begin(0x30)に変更させていきます。それにいつでもlox.begin(0x30)を設定するのもよろしいです。

    アドレスの再設定は簡単ですが、各センサーをシャットダウン状態にしなければなりません。各センサーのシャットダウンは XSHUT
    ピンとマイクロコントローラーピンを連続することで実現できたから、 上記のような擬似コードが実行できます。

    1. 全てのXSHUTピンをdelay(10)に設定し、ピンをlowになります、またXSHUTピンをhighに設定してから、全てのセンサーをリセットできます。
    2. センサー#1のXSHUTピンを「high」のままで、#1を立ち上げます。
    3. 他のセンサーのXSHUTピンを「low」にして、他のセンサーをシャットダウンします。
    4. lox.begin(new_i2c_address)では0x29以外の数字(<0x7F、0x30ー0x3Fがいい)を入力してください。
    5. #1を立ち上げ状態で、#2のXSHUTピンを「high」にして、リセット状態から離れます。
    6. lox.begin(new_i2c_address)では0x29と#1以外の数字を入力してセンサー#1を初期化します
    7. 上記の操作を繰り返して、各センサーを唯一のアドレスを設定します。

    注意アドレスは常設ではなく、電源を入れるたびに上記の操作を繰り返す必要があります。

     

Byamber

Graphical Programming Tutorial for Arduino – Traffic Light Controller

Introduction

The real time traffic light controller is a complex piece of equipment which consists of power cabinet, main controller or processor, relays, control panel with switches or keys, communication ports etc.

In this lesson, we will go over how to build a traffic light circuit with an arduino microcontroller.

Preparations

HARDWARE

  • Osoyoo UNO Board (Fully compatible with Arduino UNO rev.3) x 1
  • One Digit 7-Segment LED Display x 1
  • 74HC595 x 1
  • 200 ohm Resistor x 7
  • LEDs (Red LED x 2, Yellow LED x 2, Green LED x 2)
  • Breadboard x 1
  • Jumpers
  • USB Cable x 1
  • PC x 1

About this project

The use of personal vehicles is very common now a days and a result, the number of vehicles on the roads are exponentially increasing. Roads without any supervision or guidance can lead in to traffic congestions and accidents.

Traffic Lights or Traffic Signals are signalling devices that are used to control the flow of traffic. Generally, they are positioned at junctions, intersections, ‘X’ roads, pedestrian crossings etc. and alternate the priority of who has to wait and who has to go.

The traffic lights will provide instructions to the users (drivers and pedestrians) by displaying lights of standard color. The three colors used in traffic lights are Red, Yellow and Green.

In this project, an Arduino based Traffic Light Controller system is designed. It is a simple implementation of traffic lights system but can be extended to a real time system with programmable timings, pedestrian lighting etc. There is a green LED, which represents the green light. A yellow LED, which represents the yellow light. And a red LED, which represents the red light.

We will show all the hardware connections and the software needed to make this circuit work.

Connection

Build the circuit as below:

In this experiment, we use a 7-segment display to count down and set two groups of traffic lights to represent two directions, let’s say, north-south (TF1) and east-west (TF2), as shown in the above picture.

CODE PROGRAM

After above operations are completed, connect the Arduino board to your computer using the USB cable. The green power LED (labelled PWR) should go on.Open the Graphical Programming software Mixly and follow the next operations:

Setup baud rate and define datArray[] to store the to-be-display number.

Set a function State 1(), to light up a red LED(Pin 5).

Display the number from 9 to 1 on the 7-segment Display, and light up the Green2 LED (Pin 4), set T_CP( Pin 12) Low and hold low for transmitting, then pull it to save the data.

Turn off the Green LED (Pin 4), and display the number 3 to 1 on the display, then turn on Yellow 2 LED (Pin 3). Next, dim LED Yellow 2 and Red 1( Pin 5).

Next comes the State2() The blocks of State2() is just similar and you can study by yourself.

Execute function State 1() and State2().

Running Result

A few seconds after the upload finishes, you can see what is similar to the traffic light now. First, the 7-segment display counts down from 9s, and the red light in the TF1 and the green one in the TF2 light up. Then it counts down from 3, and the green LED in the TF2 goes out when the yellow lights up, with the TF1 red light still on. 3s later, the 7-segment counts down from 9s again. Meanwhile, the red light in the TF2 and the green in the TF1 light up. After 9s, it counts down from 3s, when the yellow light in the TF1 lights up and the red in the TF2 keeps on. And this repeats over and over again, as a traffic light would.

Although it is not the ideal implementation for real life scenarios, it gives an idea of the process behind the traffic light control system.

Note: The project implemented here doesn’t include the pedestrian crossing and pedestrian signaling in to consideration.

Once you know how the software operates, you can change the values to make the LEDs be on or off for any period of time. For example, instead of being on for 9 seconds, you can easily change it to 15 seconds or 30 seconds. You could make the yellow LED be on just for 1 second or 2 seconds.