Arduinoの紹介

Arduinoは、オープンソースのマイクロコントローラー開発ボードです。 平易な英語では、Arduinoを使用してセンサーを読み取り、モーターやライトなどを制御できます。 これにより、このボードにプログラムをアップロードして、実世界の物とやり取りすることができます。 これにより、世界全体に反応して反応するデバイスを作成できます。

たとえば、鉢植えの植物に接続された湿度センサーを読み取り、乾燥しすぎた場合は自動散水システムをオンにすることができます。 または、インターネットルーターに接続するスタンドアロンのチャットサーバーを作成することもできます。 または、猫がペットのドアを通過するたびにツイートすることもできます。 または、午前中にアラームが鳴ったときにコーヒーを入れてもらうこともできます。

基本的に、何らかの方法で電気で制御されているものがある場合、Arduinoは何らかの方法でそれとインターフェイスできます。 そして、電気で制御されていなくても、おそらくモーターや電磁石のようなものを使用して、それとインターフェースを取ることができます。

Arduinoの可能性はほとんど無限です。 そのため、1つのチュートリアルで、知る必要のあるすべてを網羅することはできません。 とはいえ、Arduinoを起動して実行するために必要な基本的なスキルと知識の基本的な概要を説明するために最善を尽くしました。 これ以上ないにしても、これはさらなる実験と学習への踏み台として機能するはずです。

ステップ1:さまざまな種類のArduino

さまざまな種類のArduinoから選択できます。 これは、発生する可能性のあるArduinoボードのより一般的なタイプのいくつかの簡単な概要です。 現在サポートされているArduinoボードの完全なリストについては、Arduinoハードウェアページをご覧ください。

Arduino Uno

Arduinoの最も一般的なバージョンはArduino Unoです。 このボードは、ほとんどの人がArduinoについて言及するときに話しているものです。 次のステップでは、その機能のより完全な要約があります。

Arduino NG、Diecimila、およびDuemilanove(レガシーバージョン)

Arduino Uno製品ラインのレガシーバージョンは、NG、Diecimila、およびDuemilanoveで構成されています。 レガシーボードについて注意すべき重要な点は、Arduino Unoの特定の機能がないことです。 主な違い:

  • DiecimilaとNGは、(より強力なATMEGA328とは対照的に)ATMEGA168チップを使用します。
  • DiecimilaとNGの両方には、USBポートの横にジャンパーがあり、USBまたはバッテリー電源を手動で選択する必要があります。
  • Arduino NGでは、プログラムをアップロードする前に、ボード上のレストボタンを数秒間押し続ける必要があります。

Arduino Mega 2560

Arduino Mega 2560は、Arduinoファミリーで2番目によく見られるバージョンです。 Arduino Megaは、Arduino Unoのより機能的な兄のようなものです。 256 KBのメモリ(Unoの8倍)を誇っています。 また、54の入力ピンと出力ピンがあり、そのうち16ピンはアナログピンで、14ピンはPWMを実行できます。 ただし、追加された機能はすべて、わずかに大きい回路基板のコストがかかります。 これによりプロジェクトがより強力になりますが、プロジェクトがより大きくなります。 詳細については、Arduino Mega 2560の公式ページをご覧ください。

Arduino Mega ADK

このArduinoの特殊バージョンは、基本的にはAndroidスマートフォンとのインターフェース用に特別に設計されたArduino Megaです。 これも今ではレガシーバージョンです。

アルドゥイーノ・ユン

Arduino Yunは、ATmega328の代わりにATMega32U4チップを使用しています。 しかし、本当に際立っているのは、Atheros AR9331マイクロプロセッサの追加です。 この追加チップにより、このボードは通常のArduinoオペレーティングシステムに加えてLinuxを実行できます。 それだけでは不十分な場合は、オンボードのwifi機能も備えています。 言い換えれば、他のArduinoの場合と同じようにボードをプログラムできますが、ボードのLinux側にアクセスしてwifi経由でインターネットに接続することもできます。 Arduino側とLinux側は、簡単に相互に通信できます。 これにより、このボードは非常に強力で多用途になります。 私はあなたがこれでできることの表面をかろうじて引っ掻いていますが、詳細はArduino Yunの公式ページをご覧ください。

Arduino Nano

標準のArduinoボードよりも小さくしたい場合は、Arduino Nanoが最適です! 表面実装ATmega328チップに基づいて、このバージョンのArduinoは、狭いスペースに収まる小さなフットプリントに縮小されました。 また、ブレッドボードに直接挿入することもでき、プロトタイプを簡単に作成できます。

Arduino LilyPad

LilyPadは、ウェアラブルおよび電子テキスタイルアプリケーション向けに設計されました。 布地に縫い付けられ、導電糸を使用して他の縫製可能なコンポーネントに接続されることを意図しています。 このボードには、特別なFTDI-USB TTLシリアルプログラミングケーブルの使用が必要です。 詳細については、Arduino LilyPadページが適切な出発点です。

ステップ2:Arduino Uno機能

Arduinoボード全体をマイクロコントローラーと考える人もいますが、これは不正確です。 Arduinoボードは、実際にはAtmelマイクロコントローラーを使用したプログラミングとプロトタイピング用に特別に設計された回路ボードです。

Arduinoボードの良い点は、比較的安価で、コンピューターのUSBポートに直接接続できること、およびセットアップと使用が他の開発ボードと比べて非常に簡単なことです。

Arduino Unoの主要な機能には次のものがあります。
  • オープンソース設計。 オープンソースであることの利点は、それを使用しトラブルシューティングする人々の大規模なコミュニティがあることです。 これにより、プロジェクトのデバッグに役立つ人を簡単に見つけることができます。
  • 簡単なUSBインターフェイス。 ボード上のチップはUSBポートに直接差し込まれ、コンピューター上で仮想シリアルポートとして登録されます。 これにより、シリアルデバイスであるため、インターフェイスを使用できます。 このセットアップの利点は、シリアル通信が非常に簡単な(そして実績のある)プロトコルであり、USBが最新のコンピューターへの接続を非常に便利にすることです。
  • 非常に便利な電源管理と組み込みの電圧調整。 最大12vの外部電源を接続でき、5vと3.3vの両方に調整します。 また、外部電源なしでUSBポートから直接電源を切ることもできます。
  • 見つけやすく、汚れが少ないマイクロコントローラー「頭脳」。 ATmega328チップは、Digikeyで約2.88ドルで販売されています。 タイマー、PWMピン、外部および内部割り込み、複数のスリープモードなど、無数の優れたハードウェア機能を備えています。 詳細については、公式データシートをご覧ください。
  • 16MHzのクロック。 これにより、最も高速なマイクロコントローラーではなく、ほとんどのアプリケーションに十分な速度を実現しています。
  • コードを保存するための32 KBのフラッシュメモリ。
  • 13デジタルピンと6アナログピン。 これらのピンにより、外部ハードウェアをArduinoに接続できます。 これらのピンは、Arduinoのコンピューティング機能を現実世界に拡張するための鍵です。 これらの各ピンに対応するソケットにデバイスとセンサーを接続するだけで準備完了です。
  • USBポートをバイパスし、Arduinoをシリアルデバイスとして直接インターフェースするためのICSPコネクタ。 このポートは、チップが破損してコンピューターと通信できなくなった場合に、チップを再ブートロードするために必要です。
  • コードのデバッグを迅速かつ簡単に行うためのデジタルピン13に取り付けられたオンボードLED。
  • 最後に、重要なことですが、チップ上のプログラムをリセットするボタン。

Arduino Unoが提供するすべての完全な概要については、Arduinoの公式ページを確認してください。

ステップ3:Arduino IDE

Arduinoで何かを始める前に、Arduino IDE(統合開発環境)をダウンロードしてインストールする必要があります。 この時点から、Arduino IDEをArduinoプログラマーと呼びます。

ArduinoプログラマーはProcessing IDEに基づいており、CおよびC ++プログラミング言語のバリエーションを使用しています。

このページでArduinoプログラマの最新バージョンを見つけることができます。

ステップ4:プラグイン

ArduinoをコンピューターのUSBポートに接続します。

Arduinoはコンピューターに接続されますが、真のUSBデバイスではないことに注意してください。 このボードには特別なチップが搭載されており、USBポートに差し込むと、コンピューターに仮想シリアルポートとして表示されます。 これが、ボードを差し込むことが重要である理由です。ボードが差し込まれていない場合、Arduinoが動作する仮想シリアルポートは存在しません(それに関するすべての情報はArduinoボード上に存在するため)。

すべてのArduinoが一意の仮想シリアルポートアドレスを持っていることも知っておくと良いでしょう。 つまり、異なるArduinoボードをコンピューターに接続するたびに、使用中のシリアルポートを再構成する必要があります。

Arduino Unoには、オスのUSB A-オスのUSB Bケーブルが必要です。

ステップ5:設定

Arduinoプログラマで何かを始める前に、ボードタイプとシリアルポートを設定する必要があります。

ボードを設定するには、次に移動します。

ツール->ボード
使用しているボードのバージョンを選択します。 Arduino Unoが接続されているので、明らかに「Arduino Uno」を選択しました。

シリアルポートを設定するには、次の場所に移動します。

ツール->シリアルポート
次のようなシリアルポートを選択します。

/dev/tty.usbmodem [乱数]

ステップ6:スケッチを実行する

Arduinoプログラムはスケッチと呼ばれます。 Arduinoプログラマーには、大量のサンプルスケッチがプリロードされています。 人生で何もプログラムしたことがない場合でも、これらのスケッチの1つを読み込んでArduinoに何かをさせることができるので、これは素晴らしいことです。

LEDをデジタルピン13に接続して点滅させるには、点滅の例をロードしましょう。

点滅の例は次のとおりです。

ファイル->例->基本->点滅
点滅の例では、基本的にピンD13を出力として設定し、ArduinoボードのテストLEDを毎秒点滅させます。

点滅の例が開いたら、アップロードボタンを押すことでATMEGA328チップにインストールできます。アップロードボタンは、右向きの矢印のように見えます。

Arduinoのピン13に接続された表面実装ステータスLEDが点滅し始めます。 遅延の長さを変更し、アップロードボタンをもう一度押すと、点滅の速度を変更できます。

ステップ7:シリアルモニター

シリアルモニターを使用すると、コンピューターをArduinoにシリアル接続できます。 Arduinoがセンサーやその他のデバイスから受信しているデータを取得し、コンピューターにリアルタイムで表示するため、これは重要です。 この機能を持つことは、コードをデバッグし、チップが実際に受け取っている数値を理解するために非常に貴重です。

たとえば、ポテンショメータの中央スイープ(中央のピン)をA0に接続し、外側のピンをそれぞれ5vとアースに接続します。 次に、以下に示すスケッチをアップロードします。

ファイル->例-> 1.基本-> AnalogReadSerial
ボタンをクリックして、虫眼鏡のようなシリアルモニターを起動します。 これで、シリアルモニターのアナログピンで読み取られている数字を確認できます。 ノブを回すと、数字が増減します。

数値は0〜1023の範囲になります。これは、アナログピンが0〜5 Vの電圧を個別の数値に変換しているためです。

ステップ8:デジタル入力

Arduinoには、アナログとデジタルの2種類の入力ピンがあります。

まず、デジタル入力ピンを見てみましょう。

デジタル入力ピンには、オンまたはオフの2つの状態しかありません。 これら2つのオンとオフの状態は、次のようにも呼ばれます。
  • 高または低
  • 1または0
  • 5Vまたは0V。
この入力は一般に、スイッチが開いたり閉じたりしたときに電圧の存在を検知するために使用されます。

デジタル入力は、無数のデジタル通信プロトコルの基盤としても使用できます。 5V(HIGH)パルスまたは0V(LOW)パルスを作成することにより、すべての計算の基礎となるバイナリ信号を作成できます。 これは、PING超音波センサーなどのデジタルセンサーと通信したり、他のデバイスと通信したりするのに便利です。

使用中のデジタル入力の簡単な例については、デジタルピン2から5Vにスイッチを接続し、デジタルピン2からグランドに10K抵抗**を接続して、次のコードを実行します。

ファイル->例-> 2.デジタル->ボタン
** 10K抵抗は、スイッチが押されていないときにデジタルピンをグランドに接続するため、プルダウン抵抗と呼ばれます。 スイッチが押されると、スイッチの電気接続は抵抗器よりも抵抗が少なくなり、電気はアースに接続されなくなります。 代わりに、5Vとデジタルピンの間で電気が流れます。 これは、電気が常に最も抵抗の少ない経路を選択するためです。 詳細については、デジタルピンのページをご覧ください。

ステップ9:アナログ入力

デジタル入力ピンの他に、Arduinoには多数のアナログ入力ピンもあります。

アナログ入力ピンはアナログ信号を取得し、10ビットのアナログ-デジタル(ADC)変換を実行して、0〜1023(4.9mVステップ)の数値に変換します。

このタイプの入力は、抵抗センサーの読み取りに適しています。 これらは基本的に、回路に抵抗を与えるセンサーです。 また、0〜5Vのさまざまな電圧信号の読み取りにも適しています。 これは、さまざまなタイプのアナログ回路とインターフェースするときに役立ちます。

手順7の例に従ってシリアルモニターを使用する場合は、既にアナログ入力ピンを使用してみました。

ステップ10:デジタル出力

デジタル出力ピンは、HIGH(5v)またはLOW(0v)に設定できます。 これにより、物事をオンまたはオフにできます。

物事をオン/オフする(およびLEDを点滅させる)以外に、この形式の出力は多くのアプリケーションにとって便利です。

最も注目すべきは、デジタル通信を可能にすることです。 ピンをすばやくオン/オフすることにより、バイナリ状態(0および1)を作成します。これは、他の無数の電子デバイスによってバイナリ信号として認識されます。 この方法を使用すると、さまざまなプロトコルを使用して通信できます。

デジタル通信は高度なトピックですが、何ができるかについての一般的なアイデアを得るには、「ハードウェアとのインターフェース」ページをご覧ください。

ステップ6の例に従ってLEDを点滅させる場合は、すでにデジタル出力ピンを使用しようとしました。

ステップ11:アナログ出力

前述したように、Arduinoには多くの特別な機能が組み込まれています。 これらの特別な機能の1つはパルス幅変調です。これは、Arduinoがアナログのような出力を作成できる方法です。

パルス幅変調(略してPWM)は、PWMピンを急速にハイ(5V)およびロー(0V)にしてアナログ信号をシミュレートすることで機能します。 たとえば、LEDを十分な速さ(それぞれ約5ミリ秒)で点滅させると、輝度は平均化され、半分の電力しか供給されていないように見えます。 あるいは、1ミリ秒間点滅してから9ミリ秒間点滅する場合、LEDは1/10の明るさで、1/10の電圧しか受けていません。

PWMは、音を出す、照明の明るさを制御する、モーターの速度を制御するなど、多くのアプリケーションにとって重要です。

より詳細な説明については、PWMページの秘密を確認してください。

自分でPWMを試すには、LEDと220オームの抵抗をデジタルピン9に直列に接続します。 次のサンプルコードを実行します。

ファイル->例-> 3.アナログ->フェージング

ステップ12:独自のコードを書く

独自のコードを作成するには、いくつかの基本的なプログラミング言語の構文を学ぶ必要があります。 言い換えれば、プログラマーがそれを理解するためには、コードを適切に形成する方法を学ぶ必要があります。 この種の文法と句読点の理解を考えることができます。 適切な文法や句読点なしで本全体を書くことができますが、たとえそれが英語であっても誰もそれを理解することはできません。

独自のコードを作成する際に留意すべき重要な事項:

  • Arduinoプログラムはスケッチと呼ばれます。
  • Arduinoスケッチのすべてのコードは、上から下に処理されます。
  • Arduinoスケッチは通常、5つの部分に分かれています。
  1. スケッチは通常、スケッチの実行内容と作成者を説明するヘッダーで始まります。
  2. 次に、通常はグローバル変数を定義します。 多くの場合、これは異なるArduinoピンに定数名が与えられる場所です。
  3. 初期変数が設定されると、Arduinoはセットアップルーチンを開始します。 セットアップ機能では、必要に応じて変数の初期条件を設定し、一度だけ実行する予備コードを実行します。 これは、シリアルモニターを実行するために必要なシリアル通信が開始される場所です。
  4. セットアップ関数から、ループルーチンに進みます。 これがスケッチのメインルーチンです。 これはメインコードの場所だけでなく、スケッチの実行が続く限り何度も実行されます。
  5. ループルーチンの下には、他の関数がリストされていることがよくあります。 これらの関数はユーザー定義であり、セットアップおよびループルーチンで呼び出されたときにのみアクティブになります。 これらの関数が呼び出されると、Arduinoは関数内のすべてのコードを上から下に処理し、関数の呼び出し時に中断したスケッチの次の行に戻ります。 関数は、同じコード行を何度も記述することなく、標準ルーチンを何度も実行できるため、優れています。 関数を複数回呼び出すだけで、関数ルーチンは1回しか書き込まれないため、チップ上のメモリが解放されます。 また、コードが読みやすくなります。 独自の関数を作成する方法については、このページをご覧ください。
  • それはすべて、必須のスケッチの2つの部分のみがセットアップルーチンとループルーチンです。
  • コードは、おおまかにCに基づいたArduino言語で作成する必要があります。
  • Arduino言語で書かれたほとんどすべてのステートメントは、;で終わる必要があります。
  • 条件文(ifステートメントやforループなど)には、;は必要ありません。
  • 条件には独自のルールがあり、Arduino言語ページの「制御構造」の下にあります
  • 変数は、数値の格納コンパートメントです。 変数との間で値を渡すことができます。 変数は、使用する前に定義(コードに記述)する必要があり、それに関連付けられたデータ型が必要です。 基本的なデータ型の一部を学習するには、言語ページを確認してください。

はい! したがって、ピンA0に接続されたフォトセルを読み取るコードを記述し、フォトセルから取得した読み取り値を使用して、ピンD9に接続されたLEDの輝度を制御するとします。

まず、次の場所にあるBareMinimumスケッチを開きます。

ファイル->例-> 1.Basic-> BareMinimum

BareMinimum Sketchは次のようになります。
 void setup(){//ここにセットアップコードを入れて1回実行します:} void loop(){//ここにメインコードを入れて繰り返し実行します:} 

次に、コードにヘッダーを付けて、他の人が私たちが何を作っているのか、なぜ、どのような条件で知っているのかを見てみましょう。
 / * Genius Arduino Programmer 2012によるLED調光器A0ピンのフォトセルの読み取りに基づいてD9ピンのLEDの明るさを制御します。このコードはパブリックドメインにあります* / void setup(){//ここにセットアップコードを配置し、一度実行するには:} void loop(){//メインコードをここに置いて、繰り返し実行するには:} 

それがすべて二乗されたら、ピン名を定義して変数を設定しましょう。
 / * Genius Arduino Programmer 2012によるLED調光器ピンA0のフォトセルの読み取りに基づいてピンD9のLEDの輝度を制御しますこのコードはパブリックドメインにあります* / //アナログピン0に名前を付けますconst int analogInPin = A0; //デジタルピン9に定数名const int LEDPin = 9; //フォトセルを読み取るための変数int photocell; void setup(){//ここにセットアップコードを入れて1回実行します:} void loop(){//ここにメインコードを入れて繰り返し実行します:} 

変数とピン名が設定されたので、実際のコードを書きましょう。
 / * Genius Arduino Programmer 2012によるLED調光器ピンA0のフォトセルの読み取りに基づいてピンD9のLEDの輝度を制御しますこのコードはパブリックドメインにあります* / //アナログピン0に名前を付けますconst int analogInPin = A0; //デジタルピン9に定数名const int LEDPin = 9; //フォトセルを読み取るための変数int photocell; void setup(){//ここには何もありません} void loop(){//ピンのアナログを読み取り、読み取り値をフォトセル変数に設定しますphotocell = analogRead(analogInPin); //フォトセルanalogWrite(LEDPin、photocell);によって読み取られた値を使用してLEDピンを制御します。 // 1/10秒の間コードを一時停止します// 1秒= 1000 delay(100); } 

アナログピンが実際にフォトセルから読み取っている数字を確認するには、シリアルモニターを使用する必要があります。 シリアルポートを有効にして、それらの番号を出力しましょう:
 / * Genius Arduino Programmer 2012によるLED調光器ピンA0のフォトセルの読み取り値に基づいてピンD9のLEDの輝度を制御します。このコードはパブリックドメインにあります* / //アナログピン0に名前を付けますconst int analogInPin = A0; //デジタルピン9に定数名const int LEDPin = 9; //フォトセルを読み取るための変数int photocell; void setup(){Serial.begin(9600); } void loop(){//ピンのアナログを読み取り、読み取り値をフォトセル変数に設定しますphotocell = analogRead(analogInPin); //フォトセルの値をシリアルモニターに出力しますSerial.print( "Photocell ="); Serial.println(photocell); //フォトセルanalogWrite(LEDPin、photocell);によって読み取られた値を使用してLEDピンを制御します。 // 1/10秒の間コードを一時停止します// 1秒= 1000 delay(100); } 

コードの定式化の詳細については、基礎ページをご覧ください。 Arduino言語のサポートが必要な場合は、言語ページが最適です。

また、サンプルスケッチページは、コードをいじり始めるのに最適な場所です。 物事を変えて実験することを恐れないでください。

ステップ13:シールド

シールドは、Arduino Unoの上にプラグインし、特別な機能を提供する拡張apdapterボードです。

Arduinoはオープンハードウェアであるため、その傾向がある人なら誰でも、達成したいタスクに応じてArduinoシールドを自由に作成できます。 このため、荒野には無数のArduinoシールドがあります。 Arduinoプレイグラウンドでは、増え続けるArduinoシールドのリストを見つけることができます。 そのページにリストされているよりも多くのシールドが存在することに留意してください(いつものように、Googleはあなたの友達です)。

Arduinoシールドの機能を少し理解するには、3つの公式Arduinoシールドの使用方法に関する次のチュートリアルをご覧ください。
  • ワイヤレスSDシールド
  • イーサネットシールド
  • モーターシールド

ステップ14:外部回路を構築する

プロジェクトがより複雑になると、Arduinoとのインターフェイスをとる独自の回路を構築する必要があります。 一晩で電子工学を学ぶことはありませんが、インターネットは電子知識と回路図の信じられないほどのリソースです。

エレクトロニクスの使用を開始するには、Basic Electronics Instructableにアクセスしてください。

ステップ15:超えていく

ここから、やるべきことはプロジェクトを作ることだけです。 オンラインには、数え切れないほどの素晴らしいArduinoリソースとチュートリアルがあります。

Arduinoの公式ページとフォーラムを必ずチェックしてください。 ここにリストされている情報は非常に貴重で非常に完全です。 これは、プロジェクトのデバッグに最適なリソースです。

楽しい初心者プロジェクトにインスピレーションが必要な場合は、20の信じられないほどのArduinoプロジェクトガイドをご覧ください。

広大なリストまたはArduinoプロジェクトの場合、Arduino Channelは開始するのに最適な場所です。

それでおしまい。 あなたは自分でしています。

幸運と幸せなハッキング!

関連記事