見出し画像

Arduinoの始め方/環境構築


1.概要

 人気のシングルボードコンピュータ(SBC)であるRasberry Piと同様に有名なSBCであるArduinoを紹介します。

1-1.Arduinoとは

 Arduinoは2005年イタリアの大学教授Massimo Banzi氏らによって開発された、コンピュータ初心者向けの「電子工作用マイコンボード」です。

 下記特徴により広く普及しています。

  1. オープンソースハードウェア

  2. オープンソースの環境の提供

  3. コミュニティのサポートが豊富

    • 「非営利団体Arduino Foundation」と「営利企業Arduino Holding」の2社でArduino IDEを管理(出典:分裂していたArduinoが和解して1つに)

      • Arduino Holding:関連製品の販売を一元管理

      • Arduino Foundation:オープンソースのArduino IDE(統合開発環境)の管理と開発者コミュニティーの窓口

      • 過去にArduinoの内部分裂があったが、現在は解消とのこと

    • Qiitaや技術ブログでも記事が豊富

  4. パーツの種類が豊富(これはラズパイも同様)

https://www.ric.co.jp/pdfs/content/118/948_chap1.pdf

[1] 弘前大学総合情報処理センター広報 シングルボードのススメ

 Arduinoでは下記のようなことを実現できます。

  1. スイッチ入力:I/Oピンを用いて特定の動作を実行可能です。具体例として人感センサー(人を検出して点灯)などがあります。

  2. アナログ入力:センサー(温度や圧力)の値をモニタリングできます

  3. シリアル通信:センサーやモジュールと通信をすることで、データ情報のやり取りができます。

  4. モーター制御:PWM信号によるサーボモーターやLEDの制御が可能

    • PWM信号による制御は下記記事参照

https://www.ric.co.jp/pdfs/content/118/948_chap1.pdf

【コラム:自作開発事例(8pino)】
 自作開発の事例としてクリエイティブユニット「VITRO」が開発し2014年から販売した指乗りサイズのArduino互換機「8pino」があります。
 Qiitaで詳細も記載されておりますのでご参考までに。

1-2.Arduinoの用語

 Arduinoで使用される専門用語は下記の通りです。

  • スケッチ:プログラム

  • シールド:拡張ボード(接続して機能を拡張できるパーツ)

  • レシピ:処理の流れやプロセス

1-3.Arduinoの種類

 Arduinoは用途に応じて複数の種類があります。

  1. 標準モデルArduino UnoArduino Leonardo

    • 標準モデルがArduino UNOです。R3とR4(Minima)がありますが、Minimaは2023年6月販売のため情報量はR3の方が多いです。

    • Arduino LeonardoはArduino Unoとほぼ同じ仕様・機能ですが、マイコンが異なりピン数やUSB端子が若干異なります。

  2. コンパクトモデルArduino NanoArduino Micro

    • サイズ感はUNO>>Micro>Nanoです。

    • ロボット内などスペースが限られた場所に組み込む場合はオススメ

    • Arduino Nano Everyは旧製品のArduino Nanoと同サイズで高性能・低価格になったものです

  3. ハイエンドモデルArduino Mega 2560,  Arduino Due

    • マイコン処理速度、メモリ、I/Oピン数を増やしたモデル

    • 通信ポートが複数あるためマイコン同士を通信させたい時はオススメ

    • Dueの方がMegaよりクロック周波数が高いため高速処理が可能だが、動作電圧が3.3Vのため他の装置と仕様が異なる点に注意が必要

  4. IoTモデルArduino Industrial 101Arduino MKRシリーズ

    • Arduino Industrial 101:既に生産中止

    • Arduino MKR WIFI 1010:2021年7月から国内販売開始

    • インターネット経由で本体の遠隔制御が可能

  5. 特殊品

 コラム:Arduino PLC

 産業機器ではセンサ信号を取得して機器を制御する装置としてPLC(Programmable Logic Controller)やIPC(産業用PC)が使用されます。
(PLCの簡易説明は下記記事のDI/DO、AI/AO参照

 「Arduino Pro シリーズ」の中で提供される「Arduino Opta®マイクロPLC(プログラマブルロジックコントローラ)」は安価なPLCを提供します。2024年現在の型式はLite, RS485, Wifiの3種類があります。

 産業機器は安定性が非常に重要なため簡単に既存の物とは交換できませんが、簡易制御用であれば使用できるとは思います。これは将来的に記事作成予定です。

 1-3-1.モデル比較表

 詳細は下記記事を参照させていただきました。

 1-3-2.Mega2380とDueの違い

 ハイエンドモデルであるMegaとDueの違いは下記記事参照のこと。とりあえずDueの方が価格は高いみたいです。

 1-3-3.技適の状況

 技術基準適合証明(技適)とは、総務大臣の登録を受けた者等が、特定無線設備について、電波法に定める技術基準に適合しているか否かについての判定を無線設備1台ごとに行う制度です(制度の概要(登録証明機関一覧))。
 Arduinoで技適の確認ができる機種は下表の通りです。

https://www.tele.soumu.go.jp/giteki/SearchServlet?pageID=js01

2.Arduino仕様

2-1.ArduinoとRaspberry Piの比較

 ArduinoはRaspberry PiのようにOSが無いため、コンピューターのような使い方はせずマイコンとして使用します。OSが無いため高速に動作し、リアルタイム性を求める処理に適しています。
 またRaspberry Piにはない(※Picoには一部あります)機器が搭載されており、センサや制御に強みを持っています。

  • ADコンバータ(ADC):電圧をデジタル値に変換(Analog Input)

    • センサからの電圧値(アナログ)をデジタル値に変換し数値として出力

  • DAコンバータ(DAC):デジタル値を電圧値に変換(Analog Output)

    • 出力したい値を電圧として出力し、センサや制御機器に渡す※Arduino UNOはPWMを使用した平均電圧のためセンサなどの最大定格超過は不可

    • Arduino UNO R4移行のみ(R3は無し)

  • シリアル通信:SPI, I2C, UART, CAN

    • CANはRaspberry PiやPicoにも無い。Arduinoで使用する場合、外部トランシーバーが必要

    • Raspberry Pi/Picoには1-Wireあり

  • PWM出力:周期的に電圧値の0/1の間隔を制御

  • GPIOピン:多目的に使用できるピン(GPIO:General Purpose Input/Output)

    • ピン数はRaspberry Piの方が多いが、Arduinoの方がピンの種類は多様

2-2.Arduinoのデータシート

 Arduinoのデータシートはすべて公式で公開されています。

2-3.Arduino UNOの仕様

 個別の型式の情報を紹介します。全ての情報は量が多く記載できないため、一部の情報を抽出しました。

 2-3-1.Uno R4 Minima

 Arduino Uno R4 Minimaは下記の通りです

 2-3-2.Arduino UNO R4 WiFi

 Arduino UNO R4 WiFiは下記の通りです。

3.製品の購入

3-1.購入先に関して

 たまにAmazonだと半導体製品は高額で販売されていることがありますが、Arduino自体安いため大きな問題にはならないと思います。
 有名な秋月電子やSwitch Scienceなどで購入すれば間違いはないです。

3-2.購入品

 購入品はAruduino本体のみです(別途PCとUSBケーブルは必要)。
 今回は標準かつ一通りの機能を使用できるArduino UNO R4のMinimaとWiFiモデルを購入しました。
 Arduino UNO R3は記事が豊富であり初学者が触る分にはよいですが、①基本的にR4の方がハイスぺ※、②R3より安い、③追加機能もあり 予算的に1個選択するならR4がオススメです。
※R4は各ピンが出せる電流量が減少している。

 3-2-1.UNO R3とR4の比較

 基本的にR4の方が高性能ですが、各ピンの許容出力電流が8mAに低下しています。産業用を目的として電源電圧をDC24Vにしたなら、AOもあるので電流は4-20mAに対応できるよう20mAのままが良かった気がするのだが・・・・

 3-2-2.Uno R3のUSB規格

 USBポートは、Uno R4はType-CですがUno R3はType-Bになります。普段の生活でType-Bは使用しないため在庫がない方は購入が必要です。

3-3.Option

 追加で購入する部品は用途に応じて変わりますが、IoTで遊ぶ場合には高確率で必要になるものを記載しました。
※本記事では使用しないため、とりあえずは無くても問題ありません。

  1. ブレッドボード:各種電子部品やジャンパ線をボードの穴に差し込むだけで、 はんだ付けをしなくても手軽に電子回路を組むことの出来る基板

    • 全部をジャンプワイヤーやはんだ付けで繋ぐと手間のため便利

  2. ジャンプワイヤ:ブレッドボードに差し込むだけで基板上の回路を繋ぐ

    • ブレッドボード上の回路作成用

4.Arduinoの環境構築

 Arduinoの環境構築方法について説明します。

4-1.Arduinoのソフトウェア

 Arduinoで使用できるソフトウェアとしては下記があります。初学者は使いやすさ/簡単さからArduino IDEを推奨します。

  1. Arduino IDE:GUIで操作可能なIDE。直下的で分かりやすい

    • Version1.x系と2.x系がある

    • Nightly Buildsは開発中の最新Ver.です。エラーがでると初学者では対策が難しいため、今回はこちらは避けます。

  2. Arduino with Chromebook:Chroebook用

  3. MicroPython With Arduino Boards:ArduinoでMicropythonを利用

  4. Arduino PLC IDE:Arduino PLC用のIDE

    • 対象機器は1章のコラム Arduino PLC参照

  5. Arduino CLI:CLIを使用した開発環境

  6. Arduino Web Editor:ブラウザ(推奨:Chrome)を使用したIDE

4-2.Arduini IDEの設定

 Arduino IDEの環境構築を実施します。内容は下記記事参照しました。

http://zattouka.net/GarageHouse/micon/Arduino/arduino_inst.htm

 4-2-1.Arduino IDEインストール

 プログラム(スケッチ)を作成するために統合開発環境(IDE)をインスト―スしていきます。
 Arduino公式ではエコシステムの中で、SoftwareとしてArduino IDEを推奨しています。私はVS Codeが好きなため、初めはArduino IDEで学習し、将来的にはVS Codeに移管していきたいです。

【ダウンロード方法】
 Arduino IDEはVer1.Xと2.Xがありますが、最新の2.Xでよいと思います。

https://www.arduino.cc/en/software

 自分のOS(Windows)にあったインストーラーを選択し「JUST DOWNLOAD」を選択していきます。

 後は全てデフォルト設定のまま進めていきました。関連するウィンドウも全てインストールしていきます。

 最終的に下記画面が立ち上がれば完了です。

 4-2ー2.日本語の設定

 File/PreferencesからLanguageを日本語に選択します。

 4-2-3.Board Package追加

 Arduino UNO R4 Minimaを使用する場合は事前にBoard Packageのインストールが必要です。

 手順は下記の通りです。

  1. IDE左のボードマネジャーを選択

  2. 「UNO R4 Minima」で検索

  3. Arduino UNO R4 Boardsをインストール

 4-2-4.Port/Boardの選択

 最後にポートとボードを選択します。
※本節の画像はArduino UNO R4 Boardsインストール前に実行したものです。おそらく手順通りに実行すればすんなりいくと思います。

【ポート(Port)選択】
 ”ツール”タブの”ポート”を選択し、接続されているポートを選択します。

【参考:Windowsでのポート確認】
 画面左下にあるWindowsマークを右クリックし"デバイスマネージャ"を選択します。Arduinoが接続されていたら、デバイスマネージャのポート(COMとLPT)にUSBシリアルデバイス情報とCOM番号が記載されます。

【ボード(Board)選択】
 ”ツール”タブの”ボード”を選択し、指定のモデルを選択します。

 右下にモデル名が表示されたら環境構築は完了です。

【参考:Arduino UNO R4 Boardsインストール前】
 Arduino UNO R4 Boardsインストール前だとArduino AVR Boardしか選択できません。一部の記事ではArduino UNOを選択すればよいみたいに記載していましたが、Arduino公式通りArduino UNO R4 Boardsをインストールしてから実施することを推奨します。

 4-2-5.任意:コード補完機能

 必須ではないですが、コード作成中に補完機能を有効にするために、「ファイル/基本設定」から”エディターのクイックサジェスト”を選択します。
※本機能はArduino IDE 2.0から実装されているため1.Xは無し。

 後はコード作成中に"Ctrl+Space"で補間してくれます。

4-3.応用編:VS Codeでの実装

 Arduino IDEの使用に疲れた方向けにVS CODEでの環境構築を紹介します。実装はVS Codeの拡張機能である「Visual Studio Code extension for Arduino」を使用しました。

 4-3-1.事前準備の確認

 Visual Studio Code extension for Arduinoで使用するためには下記のどちらかが必要となります。

  • Arduino CLIのインストール(推奨

  • Legacy Arduino IDE(1.X系)のインストール(将来なくなるため非推奨)

https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.vscode-arduino

 Arduino2.0系をインストールしており、公式推奨ということもあるためArduino CLIを使用して環境構築を実施していきます。

【注意点:昔のブログ記事】
 Arduino 2.0がReleaseされたのは2022年9月14日です。古い記事だとArduino IDEが1.X系前提で話が進むため、記載があるフォルダが見当たらないことに注意が必要です。

 4-3-2.Arduino CLIの追加

 Arduino CLIのインストールはOS毎に異なり、やり方も複数あります。

 今回は一番簡単そうな「Download」の方法で実施します。この方法はビルド済みのバイナリーファイルを用いてArduino CLIを使用します。
 「Arduino-CLIのInstallationページ」のDownloadから自分のOSに合ったファイルを選択(私は64bitのWindows10)しました。
 "arduino-cli_0.35.3_Windows_64bit.zip"が得られたため、それを展開すると"arduino-cli.exe"と”LICENSE.txt”が含まれます。

 "arduino-cli.exe"のPATHが通っている場所なら、コマンドプロンプト(CMD)でarduino-cliコマンドが使用できます。
 例としてDesktopにarduino-cli.exeを配置し、下記コマンド実行しました。特に設定しなくてもarduino-cliコマンドが使用できます。

[Terminal]
arduino-cli version

[OUT]
arduino-cli  Version: 0.35.3 Commit: 95cfd654 Date: 2024-02-19T13:24:21Z

【参考:常時arduino-cliコマンドを利用する場合】
 Windowsで常時arduino-cliコマンドを利用したい場合は”環境変数を編集”から”ユーザー環境変数のPath”にあるPath内に配置する方法などがあります。

 4-3-3.arduino-cli.exeの配置

 arduino-cli.exeを分かりやすい場所に配置します。Arduino IDE2系をインストール時に”C:\Users\<ユーザー名>\AppData\Local”内に"Arduino15"と
"Programs/Arduino IDE"が存在していますが、とりあえずArduino15内に突っ込みました。
※この時点でファイルを移動させたため、保存場所まで移動しないとCMDでarduino-cliコマンドは実行できなくなくなります。

[arduino-cli.exeの配置]
C:\Users\kiyo\AppData\Local\Arduino15\arduino-cli.exe

 4-3-4.VS Codeの拡張機能追加

 VS Codeを開き、拡張機能(Ctrl+Shift+X)から下記をインストールします。

  • Arduino(Arduino for Visual Studio Code)_Microsoft

  • arduino-snippets(Code snippets for arduino)_Ronaldo Sena

 4-3-5.VS Codeの設定

 設定ボタン(左下歯車)/設定/拡張機能/Arduino Configurationを選択し、下記3つを実施します。

  1. Arduino:Use Arduino Cliのチェックボックスに✔を入れる

  2. Arduino:Pathにarduino-cli.exeがあるフォルダPathを記載

  3. Arduino:Command Pathにarduino-cli.exeを記載

 次に設定の検索ボックスに”C_Cpp.intelliSenseEngine”と入力し、C_Cpp: Intelli Sense EngineをDefaultからTag Parserに変更します。 
※詳細は不明ですがこうするとエラーが出にくいらしい

 最後にsetting.jsonを開き、設定が全て反映されているか確認します。基本的には選択した後にsetting.jsonを開けば自動で記載されているはずです。
 問題なく記載されていたら設定は完了です。

[setting.json]
    "arduino.useArduinoCli": true,
    "C_Cpp.intelliSenseEngine": "Tag Parser",
    "arduino.path": "C:\\Users\\kiyo\\AppData\\Local\\Arduino15",
    "arduino.commandPath": "arduino-cli.exe",

5.動作確認

 環境構築が完了したらArduinoを動かしてみます。今回は簡単な例としてArduino内にあるLEDを点灯させてみました。

5-1.スクリプト作成

 コードは下記の通りです。言語の記載方法は次章で説明します。また記載するのが手間な場合、スケッチ例から同様のコード選択も可能です。

  1. 定数の定義:LEDのピン番号を指定

  2. setup():プログラム(スケッチ)実行時に1回だけ実行するコード

    • ピンのI/O設定:LEDを光らせるためOUTPUTに設定

  3. loop():プログラム(スケッチ)実行時に繰り返し実行するコード

    1. digitalWrite(LED_BUILTIN, HIGH)でピンをHIGHに設定(LED点灯)

    2. 1000ms=1sec待機※delay()関数はミリ秒単位

    3. digitalWrite(LED_BUILTIN, LOW)でピンをLOWに設定(LED消灯)

    4. 同様に1sec待機

[test.ino]
// Lチカ
const int Pin_LED =13;

void setup(){
  pinMode(Pin_LED, OUTPUT); //13PINを出力に設定
}

void loop(){
  digitalWrite(Pin_LED, HIGH); //HIGH=5V
  delay(1000); //1000ms=1.0sec
  digitalWrite(Pin_LED, LOW); //LOW=0V
  delay(1000); //1000ms=1.0sec
}

【参考:スケッチ例からスケッチ(プログラム)選択】
 Arduino IDEにはサンプルコードが提供されています。

「ファイル/スケッチ例/01.Basics/Blink」からLチカコードを選択できます。

[Blink.ino]
/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
*/

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}

5-2.検証/書き込み

 Pythonのようなインタプリタ型言語とは異なり、ArduinoはC/C++をベースとしているためコンパイラ言語となります。つまり、実行前には機械が理解できる形に変更するためのコンパイルが毎回必要となります。
 コンパイルが終わったファイルをArduinoのメモリ内に書き込んで初めてArduinoがコードを実行できます。

 プログラム(スケッチ)作成後に下記を実行します。

  1. 検証(Verify):左上の✔マークを押すとVerifyを実行します

    • IDEがコードに間違いがないか確認し、コンパイルを実行します

    • 問題なければ「コンパイル完了」と表示されます

  2. 書き込み(Upload):左上の➡マークを押すとUploadを実行します

    • コンパイルされたコードをボードに書き込みます

    • 問題なければ「書き込み完了」と表示されます

5-3.動作確認

 書き込みが完了したらArduinoがプログラム(スケッチ)通りの動作をします。下記にdelay(300)とdelay(1000)の結果を表示します。
 なお書き込み後は電源が供給される間は永久的にloop()を実行するため、停止したい場合は電源を抜きます。

出力1:0.3sec(delay(300))で点灯

出力2:1sec(delay(1000))で点灯

【参考:ArduinoのLED番号】
 LEDは13番ピンと接続されているため、ピン番号=13で使用できます。文字列の"LED_BUILTIN"でも指定可能です。

 参考としてピン13にLED▶220Ω抵抗器▶GNDで接続しました。ピン13がLEDと連動して点灯していることが確認できました。

6.参考1:Arduino言語

 Arduino言語は「C言語」と「C++」をベースにしており、C言語のすべての構造と、いくつかのC++の機能をサポートしています。また、AVR Libcにリンクされていて、その関数を利用できます。

 本章では簡易に言語の説明を記載しました。

6-1.Arduino言語の記法

 Lチカを実施する上で最低限必要な記法を箇条書きしました。ベースはC/C++ですが、Javascriptにも少し近い感じがします。

  1. コードの終わりに全て";(セミコロン)"が必須:命令の区切りを判断

  2. 関数は"{}(波カッコ)"で括ることが必須

  3. コメントは"//"で追加

  4. 使用する定数・変数には全て型定義が必要

    • ExcelのVBAでいう"Option Explicit"と同じ状態

  5. プログラムは必ず「setup()」と「loop()」が実行される

6-2.定数/変数の定義

 プログラム内で数値を変更しないものは定数として扱います。定数を定義する時は頭に"const"を付けます。
 プログラム内で数値を変更するものは変数として扱います。変数を定義する場合は型式 変数名のみで定義可能です。
 定数・変数を定義時に型定義をしますが、データ型は下記の通りです。

[サンプル]
const int Pin_LED =13;
int pin_val = 1;

6-3.初期化:setup()

 setup()はArduinoボードの電源を入れたときやリセットしたときに、一度だけ実行されます。ピンモードの設定やライブラリなど、実動作に必要な事前準備を実施します。

 setup()でよく使用する関数は下記の通りです。

  • pinMode(<ピン番号>, <形式>):GPIOピンの設定

    • 形式はOUTPUT/INPUT

6-4.連続実行:loop()

 setup()実行後に連続して実行される関数となります。Pythonでいうwhile文のようなものです。
 このloop()内にArduinoに実行してほしい動作を記述することで、Arduinoがloop()内のプログラム通りに動作します。

 loop()でよく使用する関数は下記の通りです。

  • digitalRead(<ピン番号>):DI▶値の読み取り

  • digitalWrite(<ピン番号>, <状態>):DO設定▶値の出力

    • 状態はHIGH/LOW

  • analogRead(<ピン番号>):AI▶アナログ値の読み取り

    • 10bitのため値は0~1023▶電圧は0~5V

  • analogWrite(<ピン番号>, <値>):AO設定※▶PWM出力

  • delay(<待ち時間[ms]>):ms単位でWait

7.参考2:VS Codeでの実装

 Arduino IDEでなくVS Codeで実装する人向けのプログラム(スケッチ)作成方法を紹介します。環境構築は4章で対応済みという前提で進めます。

 参考までにVisual Studio Code extension for Arduinoのコマンド一覧は下記の通りです。

https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.vscode-arduino

7-1.保存用フォルダの作成

 Arduinoは1個のスケッチを1個のフォルダで管理します。まずフォルダを保管する位置を決定し、保存用のフォルダを作成します。
 今回の試験では下記としました。

  • スケッチ保存Dir:C:\Users\kiyo\Desktop\Script\Arduino

  • サンプルスケッチ保存Dir:test

 当然ですがTestフォルダは空の状態です。

7-2.エクスプローラーでフォルダを開く

 エクスプローラーから「フォルダを開く」を選択し、先ほど作成したディレクトリを選択します。
※次節のInitiallizeにある.vscodeでスケッチやビルドしたファイルを管理するため、この手順が無いと2回目以降でスケッチの書き換えができなくなるトラブルが発生しました。

7-3.初期化(Initialize)

 エクスプローラーから”新しいファイル”を選択し、拡張子名がinoのファイル名を記載します。この時点でinoファイルが作成されました。

 コマンドパレット(Ctrl+Shift+P)から”Arduino: Initialize”と入力し、選択します。
公式では「Arduino: Initialize: Scaffold a VS Code project with an Arduino sketch.」とあり、Scaffoldは「足場を組む」意味だそうです。

 完了するとVS Codeの下にはBoard TypeとSerial Portを選択できる場所が現れ、フォルダ内には".vscode"の隠しフォルダが出現します。この中に”arduino.json”ファイルがありスケッチのPathなどが管理されます。

7-4.Board/Serial Port設定

 Arduino IDEと同様(4-2-4 Port/Boardの選択 )BoardとPortを選択します。

 Board選択はVS Code下の<Select Board Type>を選択すると"Arduino Board Configuration"タブが開くため、セレクトボックスから該当するBoardを選択します。

 Port選択はVS Code下の<Select Serial Port>を選択するとコマンドパレットにシリアルポート一覧が出るため、該当する方を選択します。

【参考:c_cpp_properties.json】
 この時点で.vscodeフォルダ内に”c_cpp_properties.json”というファイルが作成されます。色々記載があるため色々管理してると思います。
※おそらくビルドされたファイルなどもここで管理されると思います。

[c_cpp_properties.json]
{
    "version": 4,
    "configurations": [
        {
            "name": "Arduino",
            "compilerPath": "C:\\Users\\kiyo\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4\\bin\\arm-none-eabi-g++",
            "compilerArgs": [
                "-w",
                "-fno-use-cxa-atexit",
                "-fno-rtti",
                "-fno-exceptions"
            ],
            "intelliSenseMode": "gcc-x64",
            "includePath": [
                "C:\\Users\\kiyo\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\renesas_uno\\1.1.0\\cores\\arduino\\tinyusb",
                "C:\\Users\\kiyo\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\renesas_uno\\1.1.0\\cores\\arduino\\api\\deprecated",
                "C:\\Users\\kiyo\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\renesas_uno\\1.1.0\\cores\\arduino\\api\\deprecated-avr-comp",
                "C:\\Users\\kiyo\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\renesas_uno\\1.1.0\\cores\\arduino",
                "C:\\Users\\kiyo\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\renesas_uno\\1.1.0\\variants\\MINIMA",
                "c:\\users\\kiyo\\appdata\\local\\arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4\\arm-none-eabi\\include\\c++\\7.2.1",
                "c:\\users\\kiyo\\appdata\\local\\arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4\\arm-none-eabi\\include\\c++\\7.2.1\\arm-none-eabi",
                "c:\\users\\kiyo\\appdata\\local\\arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4\\arm-none-eabi\\include\\c++\\7.2.1\\backward",
                "c:\\users\\kiyo\\appdata\\local\\arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4\\lib\\gcc\\arm-none-eabi\\7.2.1\\include",
                "c:\\users\\kiyo\\appdata\\local\\arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4\\lib\\gcc\\arm-none-eabi\\7.2.1\\include-fixed",
                "c:\\users\\kiyo\\appdata\\local\\arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4\\arm-none-eabi\\include"
            ],
            "forcedInclude": [
                "C:\\Users\\kiyo\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\renesas_uno\\1.1.0\\cores\\arduino\\Arduino.h"
            ],
            "cStandard": "c11",
            "cppStandard": "c++17",
            "defines": [
                "F_CPU=48000000",
                "ARDUINO_UNOR4_MINIMA",
                "ARDUINO=10607",
                "PROJECT_NAME=\"C:\\Users\\kiyo\\AppData\\Local\\Temp\\arduino\\sketches\\B7E8D3643DACA78C36DCE3DA34BA43B6/test.ino\"",
                "ARDUINO_MINIMA",
                "ARDUINO_ARCH_RENESAS_UNO",
                "ARDUINO_ARCH_RENESAS",
                "ARDUINO_FSP",
                "_XOPEN_SOURCE=700",
                "CFG_TUSB_MCU=OPT_MCU_RAXXX",
                "__DBL_MIN_EXP__=(-1021)",
                "__HQ_FBIT__=15",
                "__FLT32X_MAX_EXP__=1024",
                "__cpp_attributes=200809",
                "__UINT_LEAST16_MAX__=0xffff",
             ・・・以下省略・・・
            ]
        }
    ]
}

【参考:Windowsでのポート確認】
 画面左下にあるWindowsマークを右クリックし"デバイスマネージャ"を選択します。Arduinoが接続されていたら、デバイスマネージャのポート(COMとLPT)にUSBシリアルデバイス情報とCOM番号が記載されます。

7-5.Verify/Upload

 最後は通常通り下記手順で実施します。

  1. コード作成:今回は簡単なLチカ

  2. Arduino: Verify(Alt+Ctrl+R):エラー確認+ビルド

  3. Arduino: Upload(Alt+Ctrl+U):Arudino(Board)へ書き込み

[test.ino]
const int Pin_No = 9;

void setup(){
  pinMode(Pin_No, OUTPUT); 
}

void loop(){
    digitalWrite(Pin_No, HIGH); // LED点灯
    delay(1000); // 1秒待つ
    digitalWrite(Pin_No, LOW); // LED消灯
    delay(1000); // 1秒待つ
}
[OUT:Vefiry実行後]

[Starting] Verifying sketch 'test.ino'
[Warning] Output path is not specified. Unable to reuse previously compiled files. Build will be slower. See README.
IntelliSense configuration already up to date. To manually rebuild your IntelliSense configuration run "Ctrl+Alt+I"
[Done] Verifying sketch 'test.ino'
[OUT:UUpload実行後]

[Starting] Uploading sketch 'test.ino'
[Warning] Output path is not specified. Unable to reuse previously compiled files. Build will be slower. See README.
IntelliSense configuration already up to date. To manually rebuild your IntelliSense configuration run "Ctrl+Alt+I"
[Done] Uploading sketch 'test.ino'

 問題なく書き込みできたことを確認しました。

8.参考3:Arduino上達にむけて

 Arduinoを学んでいく上で使えそうな記事を張り付けておきます。

8-1.Arduinoでやれること

8-2.Arduino Cloud

 8-2-1.概要

 Arduinoをクラウドから操作することでIoT化できるアプリです。無料でも使用できますが有償プランが2種類存在します。

https://app.arduino.cc/

 機能としては下記の通りです。

  1.  スケッチの自動生成

  2.  デバイス間通信

  3.  ワイヤレスアップデート

  4.  ESPボードをサポート

  5.  クラウドとのイベント発生時のアクション実行トリガー

  6.  ダッシュボード共有

  7.  Alexaとの統合

  8.  API統合

  9.  IFTTT/ZapierなどをWebhookで利用

  10. 最新ファームウェア有無の自動チェック

  11. ダッシュボードのカスタマイズ

  12. ウォッチドッグタイマー

  13. Node-REDとの統合

  14. Arduino公式サイトやフォーラムの既存アカウントで無償プランを利用可能

 単純にブラウザ上でArduinoスケッチを作成できるだけでなく、アプリを用いてスマホから操作することなども可能とのことです。

 8-2-2.Project Hub

 他の人が作成したプロジェクト/スケッチを確認することが出来ます。おそらくAIでいう「Hugging Face」のArduino版と思います。

8-3.Processing

 Processingとは、画像処理やアニメーション等のプログラミングに特化した、オープンソースのプログラミング環境であり、Javaをベースにした実行環境とエディタが用意されています。
 Arduinoと連携させることにより、ProcessingからArduinoの情報を取得して、PCの画面上で映像や音を表現できるようになります。

 スクリプトを実行するためにはProcessingで作成したスケッチとArduinoで作成したスケッチの2個準備する必要があります。

8-4.周辺機器

 メモレベルでArduinoに設置できる周辺機器を追加しておきます。基本的に欲しいもの(センサ、液晶パネルなど)は適宜調べることを推奨します。

【RTC(real time clock)】

【5Vリレー】

DS2E-S-DC5Vは定格消費電力:200mWより電流は40mAです。このままだとArduinoの定格電流を超過します。必要に応じてMOSFETや抵抗器などが必要です。

【MOSFET】

MOSFET N-CH 100V 10A TO220AB:IRF520
https://www.marutsu.co.jp/pc/i/12908264/

【電磁弁】

散水コントローラー AC電源式 AC6S用 電磁弁 :PL-DEV20
https://www.monotaro.com/g/00999968/



別添

別添1:Arduino関係

別添2:環境構築関係

あとがき

 早くPLCやりたいけど、まずは手持ちの入門キット3つやってからかな。
センサはRaspberry Pi Picoでやったので、あとはArduino言語の理解とAOピンを使えば次にいける。

更新履歴

  • 2024年3月23日:準備開始

  • 2024年5月26日:初版発行

  • 2024年5月31日:Arduino言語によく使用する関数を追記

  • 2024年6月1日:VS CODEでの環境構築を追記

  • 2024年6月2日:参考資料の更新


この記事が気に入ったらサポートをしてみませんか?