工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ArduinoMegaをNEO-6MGPSモジュールとインターフェースする方法

コンポーネントと消耗品

>
Arduino Mega 2560
× 1
u-blox NEO-6MGPSモジュール
× 1

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

私が見つけたのは、ArduinoMegaとNEO-6MGPSモジュールとのインターフェースに関するチュートリアルがないため、作成することにしました。あなたがそれを好きになることを願っています!

必要なコンポーネント

ハードウェア

  • Arduino Mega ==> $ 30
  • Neo-6MGPSモジュール==> $ 30

ソフトウェア

  • Arduino IDE

プロジェクトの総費用は60ドルです。

GPSに関する情報

GPSとは何ですか?

全地球測位システム(GPS)は、少なくとも24個の衛星で構成される衛星ベースのナビゲーションシステムです。 GPSは、世界中のあらゆる気象条件で24時間機能し、サブスクリプション料金やセットアップ料金はかかりません。

GPSの仕組み

GPS衛星は、正確な軌道で1日2回地球を周回します。各衛星は、GPSデバイスが衛星の正確な位置をデコードして計算できるようにする固有の信号と軌道パラメータを送信します。 GPS受信機は、この情報と三辺測量を使用して、ユーザーの正確な位置を計算します。基本的に、GPS受信機は、送信された信号を受信するのにかかる時間によって、各衛星までの距離を測定します。さらにいくつかの衛星からの距離測定により、受信機はユーザーの位置を特定して表示できます。

<図>

2D位置(緯度と経度)とトラックの動きを計算するには、GPS受信機を少なくとも3つの衛星の信号にロックする必要があります。 4つ以上の衛星がある場合、受信機は3D位置(緯度、経度、高度)を判別できます。通常、GPS受信機は8つ以上の衛星を追跡しますが、それは時刻と地球上のどこにいるかによって異なります。位置が特定されると、GPSユニットは

などの他の情報を計算できます。
  • 速度
  • ベアリング
  • 追跡
  • トリップディスト
  • 目的地までの距離

シグナルとは

GPS衛星は、少なくとも2つの低電力無線信号を送信します。信号は見通し内を通過します。つまり、信号は雲、ガラス、プラスチックを通過しますが、建物や山などのほとんどの固体オブジェクトは通過しません。ただし、最近の受信機はより感度が高く、通常は家の中を追跡できます。 GPS信号には3種類の情報が含まれています

  • 疑似ランダムコード

I.D.です。どの衛星が情報を送信しているかを識別するコード。デバイスの衛星ページで、信号を受信して​​いる衛星を確認できます。

  • エフェメリスデータ

エフェメリスデータは、衛星の位置を特定するために必要であり、衛星の状態、現在の日付と時刻に関する重要な情報を提供します。

  • アルマナックデータ

アルマナックデータは、GPS受信機に各GPS衛星が一日中いつでもどこにあるべきかを伝え、その衛星とシステム内の他のすべての衛星の軌道情報を示します。

Neo-6MGPSモジュール

NEO-6MGPSモジュールを下図に示します。外部アンテナが付属しており、ヘッダーピンは付属していません。だからあなたはそれをはんだ付けする必要があります。

<図>

NEO-6MGPSモジュールの概要

  • NEO-6MGPSチップ

モジュールの心臓部は、u-bloxのNEO-6MGPSチップです。 50チャネルで最大22の衛星を追跡でき、45mAの供給電流しか消費せずに、業界最高レベルの感度、つまり-161dBの追跡を実現します。 u-blox 6ポジショニングエンジンは、1秒未満のTime-To-First-Fix(TTFF)も誇っています。チップが提供する最高の機能の1つは、省電力モード(PSM)です。受信機の一部のON / OFFを選択的に切り替えることで、システムの消費電力を削減できます。これにより、モジュールの消費電力がわずか11mAに劇的に削減され、GPS腕時計などの電力に敏感なアプリケーションに適しています。 NEO-6M GPSチップの必要なデータピンは「0.1」ピッチヘッダーに分割されています。これには、UARTを介したマイクロコントローラーとの通信に必要なピンが含まれます。

:-モジュールは4800bpsから230400bpsまでのボーレートをサポートし、デフォルトのボーは9600です。

<図>

位置修正LEDインジケーター

NEO-6M GPSモジュールには、位置修正のステータスを示すLEDがあります。状態に応じてさまざまな速度で点滅します

  • 点滅なし ==>は衛星を検索していることを意味します
  • 1秒ごとに点滅 –位置修正が見つかったことを意味します
<図>
  • 3.3VLDOレギュレーター

NEO-6Mチップの動作電圧は2.7〜3.6Vです。ただし、モジュールには、MICRELのMIC5205超低ドロップアウト3V3レギュレータが付属しています。ロジックピンも5ボルト耐性があるため、ロジックレベルコンバータを使用せずに、Arduinoまたは任意の5Vロジックマイクロコントローラに簡単に接続できます。

<図>

バッテリーとEEPROM

モジュールには、HK24C322線式シリアルEEPROMが装備されています。サイズは4KBで、I2Cを介してNEO-6Mチップに接続されています。モジュールには、スーパーキャパシタとして機能する充電式ボタン電池も含まれています。

EEPROMとバッテリーは、バッテリーでバックアップされたRAM(BBR)を保持するのに役立ちます。 BBRには、クロックデータ、最新の位置データ(GNSSまたはビットデータ)、およびモジュール構成が含まれています。ただし、永続的なデータストレージを目的としたものではありません。

バッテリーは時計と最後の位置を保持するため、最初の修正までの時間(TTFF)は1秒に大幅に短縮されます。これにより、はるかに高速な位置ロックが可能になります。

バッテリーがないと、GPSは常にコールドスタートするため、最初のGPSロックには時間がかかります。電源を入れるとバッテリーは自動的に充電され、電源が入っていない状態で最大2週間データを保持します。

<図>

ピン配置

<図>
  • GNDはグランドピンであり、ArduinoのGNDピンに接続する必要があります。
  • TxD(トランスミッタ)ピンはシリアル通信に使用されます。
  • RxD(レシーバー)ピンはシリアル通信に使用されます。
  • VCCはモジュールに電力を供給します。 Arduinoの5Vピンに直接接続できます。

Arduino Mega

Arduinoは、使いやすいハードウェアとソフトウェアに基づくオープンソースのエレクトロニクスプラットフォームです。 Arduinoボードは、入力(センサーのライト、ボタンの指、またはTwitterメッセージ)を読み取り、それを出力に変換することができます。モーターをアクティブにし、LEDをオンにし、オンラインで何かを公開します。ボード上のマイクロコントローラーに一連の命令を送信することで、ボードに何をすべきかを伝えることができます。そのためには、Arduinoプログラミング言語(配線に基づく)と、処理に基づくArduinoソフトウェア(IDE)を使用します。

<図>

Arduino Mega 2560は、Atmega2560をベースにしたマイクロコントローラーボードです。

  • ボードには54個のデジタルI / Oピンと16個のアナログピンが組み込まれており、このデバイスを他とは一線を画すものにしています。54個のデジタルI / Oのうち、15個がPWM(パルス幅変調)に使用されます。
  • 16MHz周波数の水晶発振器。
  • ボードには、コンピューターからボードにコードを接続および転送するために使用されるUSBケーブルポートが付属しています。
  • DC電源ジャックは、ボードに電力を供給するために使用されるボードに結合されています。
  • ボードには2つの電圧レギュレーター(5Vと3.3V)が付属しており、要件に応じて電圧を柔軟に調整できます。
  • リセットボタンとUSARTと呼ばれる4つのハードウェアシリアルポートがあり、通信をセットアップするための最高速度を生成します。
  • ボードに電力を供給する方法は3つあります。 USBケーブルを使用してボードに電力を供給し、コードをボードに転送するか、ボードのVinを使用するか、電源ジャックまたはバッターを介して電力を供給することができます。

仕様

<図>

ピン配置

<図>

ピンの説明

  • 5Vおよび3.3V ==>このピンは、約5Vの出力安定化電圧を提供するために使用されます。この安定化電源は、ボード上のコントローラーおよびその他のコンポーネントに電力を供給します。これは、ボードのVin、USBケーブル、または別の安定化された5V電圧電源から取得できます。別の電圧レギュレーションは3.3Vピンによって提供されます。引き出すことができる最大電力は50mAです。
  • GND ==>ボードには5つのアースピンがあり、プロジェクトに複数のアースピンが必要な場合に便利です。
  • リセット ==>このピンはボードをリセットするために使用されます。このピンをLOWに設定すると、ボードがリセットされます。
  • ビン ==>ボードに供給される入力電圧は7Vから20Vの範囲です。電源ジャックによって提供される電圧には、このピンを介してアクセスできます。ただし、このピンからボードへの出力電圧は自動的に5Vに設定されます。
  • シリアル通信 ==> RXDとTXDは、シリアルデータの送受信に使用されるシリアルピンです。つまり、Rxはデータの送信を表し、Txはデータの受信に使用されます。これらのシリアルピンには4つの組み合わせがあり、Serail 0にはRX(0)とTX(1)が含まれ、Serial 1にはTX(18)とRX(19)が含まれ、Serial 2にはTX(16)とRX(17)が含まれます。シリアル3にはTX(14)とRX(15)が含まれています。
  • 外部割り込み ==> 6つのピンは、外部割り込みの作成に使用されます。つまり、割り込み0(0)、割り込み1(3)、割り込み2(21)、割り込み3(20)、割り込み4(19)、割り込み5(18)です。これらのピンは、さまざまな方法で割り込みを生成します。つまり、LOW値の提供、立ち上がりエッジまたは立ち下がりエッジ、または割り込みピンへの値の変更です。
  • LED ==>このボードには、デジタルピン13に接続されたLEDが組み込まれています。このピンのHIGH値はLEDをオンにし、LOW値はLEDをオフにします。
  • AREF ==> AREFは、アナログ入力の基準電圧であるアナログ基準電圧の略です。
  • アナログピン ==>ボードにはA0からA15のラベルが付いた16本のアナログピンが組み込まれています。これらのアナログピンはすべてデジタルI / Oピンとして使用できることに注意してください。各アナログピンには10ビットの分解能があります。これらのピンは、グランドから5Vまで測定できます。ただし、上限値はAREFおよびanalogReference()関数を使用して変更できます。
  • I2C ==> 2つのピン20と21はI2C通信をサポートします。20はSDA(主にデータを保持するために使用されるシリアルデータライン)を表し、21はSCL(主にデバイス間のデータ同期を提供するために使用されるシリアルクロックライン)を表します。
  • SPI通信 ==> SPIは、コントローラと他の周辺機器コンポーネント間のデータ送信に使用されるシリアルペリフェラルインターフェイスの略です。 SPI通信には、50(MISO)、51(MOSI)、52(SCK)、53(SS)の4つのピンが使用されます。

Arduino IDE

ここでは、ArduinoIDEがすでにインストールされていることを前提としています。

1.以下に示す必要なライブラリをダウンロードします

TinyGPS lib

2.ダウンロードした後。解凍してフォルダC:\ Users \ ... \ Documents \ Arduino \ librariesに移動し、(-)がないことを確認します。

<図>

3. Arduino IDEを開き、プログラムセクションからコードをコピーします。

4.次に、そのボードを選択します。[ツール] ==> [ボード] ==>ここでArduinoMega2560を使用しているボードを選択します。

<図>

5.ボードを選択したら、そのポートを選択し、[ツール] ==> [ポート]に移動します。

<図>

6.ボードとポートを選択したら、[アップロード]をクリックします。

<図>

接続

Arduino MEGA ==> NEO-6M GPS

  • 3.3V ==> VCC
  • GND ==> GND
  • Tx1(18)==> Rx
  • Rx1(19)==> Tx

Serial1の代わりにSerial2またはSerial3を使用することもできます

Serial2ピン

  • Tx2(16)==> Rx
  • Rx2(17)==> Tx

Serial3ピン

  • Tx3(14)==> Rx
  • Rx3(15)==> Tx

<図>

結果

<図>

コード

  • Arduinomega_GPS
Arduinomega_GPS Arduino
 //ピン18および19に接続#include  // long lat、lon; //緯度と経度の変数を作成しますobjectfloatlat、lon; TinyGPS gps; // gps objectvoid setup(){Serial.begin(57600);を作成します// serialSerial.println( "GPS受信信号:"); Serial1.begin(9600);に接続します// gpsセンサーを接続します} void loop(){while(Serial1.available()){// gpsデータをチェックしますif(gps.encode(Serial1.read()))// gpsデータをエンコードします{gps.f_get_position(&lat 、&​​lon); //緯度と経度を取得Serial.print( "Position:"); // Latitude Serial.print( "Latitude:"); Serial.print(lat、6); Serial.print( "、"); // Longitude Serial.print( "Longitude:"); Serial.println(lon、6); }}} / * //ピン16および17に接続#include  // long lat、lon; //緯度と経度の変数を作成しますobjectfloatlat、lon; TinyGPS gps; // gps objectvoid setup(){Serial.begin(57600);を作成します// serialSerial.println( "GPS受信信号:"); Serial2.begin(9600);に接続します// gpsセンサーを接続します} void loop(){while(Serial2.available()){// gpsデータをチェックしますif(gps.encode(Serial2.read()))// gpsデータをエンコードします{gps.f_get_position(&lat 、&​​lon); //緯度と経度を取得Serial.print( "Position:"); // Latitude Serial.print( "Latitude:"); Serial.print(lat、6); Serial.print( "、"); // Longitude Serial.print( "Longitude:"); Serial.println(lon、6); }}} * // * //ピン14および15に接続#include  // long lat、lon; //緯度と経度の変数を作成しますobjectfloatlat、lon; TinyGPS gps; // gps objectvoid setup(){Serial.begin(57600);を作成します// serialSerial.println( "GPS受信信号:"); Serial3.begin(9600);に接続します// gpsセンサーを接続します} void loop(){while(Serial3.available()){// gpsデータをチェックしますif(gps.encode(Serial3.read()))// gpsデータをエンコードします{gps.f_get_position(&lat 、&​​lon); //緯度と経度を取得Serial.print( "Position:"); // Latitude Serial.print( "Latitude:"); Serial.print(lat、6); Serial.print( "、"); // Longitude Serial.print( "Longitude:"); Serial.println(lon、6); }}} * / 

回路図


製造プロセス

  1. Arduinoで水滴をキャプチャする
  2. Nextionディスプレイで遊ぶ
  3. u-blox LEA-6H 02GPSモジュールとArduinoおよびPython
  4. DHT11でBlynkの温度と湿度を読み取る方法
  5. Arduinoで音楽を作る方法
  6. ArduinoでNMEA-0183を使用する方法
  7. GPSおよびTFTディスプレイシールドを備えたGPSロケーションディスプレイ
  8. ArduinoでModbusを使用する方法
  9. Visuinoを使用してGPS情報をMicorSDカードに記録する
  10. Arduino + GPSモジュール-宛先通知機能
  11. ArduinoATコマンドを備えたSIM800LGPRSモジュール