Arduino(アルデュイーノ、またはアルドゥイーノ)は、電子工作の世界に足を踏み入れるための理想的なプラットフォームで、2005年にイタリアで開発された、手のひらサイズの小型マイコンボードです。
コンピュータの基本要素を搭載し、お試しできるような製品となっているので、プログラミングと電子工作を簡単に始められる特徴があります。
そのため、初心者向けの内容のようにも思えますが、実際は多くの初心者だけでなく、経験豊富な企業のエンジニアまで、Arduinoは手軽にプロジェクトを開始し、創造性を形にするための強力なツールとして愛用されています。
このオープンソースのマイコンボードには、簡単なI/Oが実装されており、簡単に接続できるハードウェアと豊富なセンサー、サーボモーターなどの電子部品を組み合わせて、幅広いプロジェクトを実現することが可能です。
この記事では、Arduinoの基礎知識や具体的な活用方法、さらに電子工作のさまざまな種類について詳しく解説します。
※Arduinoの活用方法を見たい人はこのリンクから飛んでください。
マイコンボードArduinoの特徴
Arduinoは、電子工作の世界に興味を持つ人々にとって、創造性を最大限に発揮できる環境を提供します。
Arduinoの基本的な使い方や、どのようにしてプロジェクトを進めていくのかを理解することで、誰でも簡単に自分のアイデアを形にすることができます。
Arduinoを利用すれば、複雑な電子回路やプログラミングの知識がなくても、シンプルな操作から始めて、徐々に高度なプロジェクトへと挑戦することが可能です。
- ソフトウェアが無料で使え、簡単な操作性
- オープンソースで基板を独自に制作できる
- シールドによる豊富な拡張性
- 低コストなマイコンボード
- 豊富な情報
ソフトウェアが無料で使え、簡単な操作性
公式webサイトからダウンロードできる開発ツールであるArduino IDEを使うことで、C++に似た言語で簡単にプログラミングできます。
開発ツールが無料で使えるのが人気の秘密です。
それ以外にも、MicroPythonも使えますが、セットアップが面倒なので、慣れていない人にはおすすめできません。
オープンソースで基板を独自に制作できる
設計情報が公開されており、誰でも製造・販売可能です。
そのため、中国製の格安の互換機がAmazonなどで発売されているのです。
PCにインターフェイスのドライバーをインストールする場合があるものの、互換機でもAurduino IDEが使用可能です。
自分で基板を起こして、互換機を作っても、
全くお咎めありません。
バラで部品を購入して、ブレッドボードを使って、Arduinoを製作する猛者もいるだけでなく、店舗独自で基板のデザインを行い、オリジナリティあふれるArduinoを作っている販売店もあります。
シールドによる豊富な拡張性
シールドと呼ばれる拡張パーツで機能を追加できます。
シールドは、亀の子のように重ねていくようになっており、電源回路の許す限りは、何段でも増やすことができます。
低コストなマイコンボード
マイコンボードの中でも比較的安価で入手可能です。
本家の方よりもさらに安価な互換機も発売されています。
互換機は安価にするため、オリジナルとは違う部品を使っており、100%互換ではありませんが、ほぼ同様な使い方ができます。
豊富な情報
Arduinoの公式webサイトからだけでなく、世界各国の有志により、様々な情報に溢れています。
そのため、簡単に回路設計やソフトウェア設計が可能となります。
その情報を元に自分だけの回路を組むこともできるんだ!
Arduinoの基本構造と使い方
Arduinoは主にマイコンボードを中心に構成されており、これにより情報処理やデバイスの制御が可能になります。
人気のあるモデルにはArduinoUnoやArduinoMegaがあり、これらは初心者でも扱いやすく、多くの電子工作プロジェクトに利用されています。
ArduinoボードはUSBを介してパソコンと接続し、専用の統合開発環境(Arduino IDE)を使って簡単にプログラミングできます。
Arduino IDEではArduino言語(C/C++ベース)を使って、LEDの点灯やセンサーのデータ取得など、基礎的な操作を手軽に試すことができます。
Arduinoは、簡単にプログラミングしてデバイスの制御ができるように設計されているんですよ!
Arduinoは初心者でも簡単に扱うことができるという点が
非常に大きな魅力なんだ。
例えば、Arduino Unoは使いやすさと手頃な価格から、初めて電子工作を行う人にとって最適なモデルです。
Arduino Megaは入出力ピンが多く、大規模なプロジェクトに対応するのに適しています。
このような異なるモデルがあることで、自分のプロジェクトに最適なArduinoボードを選ぶことができます。
Arduinoでできる電子工作設計
- LEDの制御: 点灯、点滅、明るさ調整など
- センサーの利用: 距離測定、物体検知など
- モーター制御: ロボット製作、動く装置の開発
- 音響装置: ブザーやスピーカーを使った音楽再生
- ディスプレイ制御: 7セグメントLEDやOLEDディスプレイの表示
- IoTデバイス: インターネットに接続するスマートデバイスの開発
Arduinoを使った電子工作には、幅広い種類があります。
例えば、ロボットの制御、IoTデバイスの作成、自動化システムなど、応用は無限大です。
モーターやセンサーを使うことで、環境情報を取得し、デバイス同士の連携を図るといったプロジェクトも可能です。
また、Arduinoのシンプルな設計と拡張性により、初心者でも独自のアイデアを実現しやすい環境が整っています。
豊富な参考記事やチュートリアルも存在するため、電子工作初心者でも安心して始めることができます。
Arduinoを利用したプロジェクトは、教育分野でも非常に人気がありますよ!
学校やワークショップで、子供から大人までが参加できる簡単なプロジェクトを通じて、電子工作やプログラミングの基本を学ぶことができます。
例えば、簡単なロボットを作成し、動かすことで、基礎的な制御構造やセンサーの役割について学ぶことができます。
さらに、Arduinoを使ったIoTプロジェクトでは、温度や湿度などの環境データを収集し、それをインターネットを通じて表示・共有することが可能です。
Arduinoは学びながら創造力を高めることができる理想的なツールと言えますね。
Arduinoとラズパイの違いは何ですか?
Arduinoとラズパイ(Raspberry Pi)はどちらも電子工作において人気のあるマイコンボードですが、それぞれ異なる特徴と用途があります。
Arduino | ラズパイ | |
ハードウェア | マイクロコントローラボードで、シンプルな設計と低消費電力が特徴です。 基本的には特定のタスクを繰り返し実行するために使用されます。 OSもないので、スイッチONしてからの起動は早いのも魅力です。 | シングルボードコンピュータで、フル機能のコンピュータのように動作します。 複雑なオペレーティングシステム(通常はLinuxベース)を実行でき、マルチタスクが可能です。 |
プログラミング | Arduino IDEを使用してプログラミングします。 プログラミングが比較的簡単で、初心者にも扱いやすいです。 | 主にC++に基づいたPython、C/C++、Javaなど、さまざまなプログラミング言語を使用できます。 Raspberry Pi OSを始めとするOS上で動作するため、より複雑なアプリケーションの開発が可能です。 Pythonを除き、情報が少なく、初心者向きではありません。 |
用途と拡張性 | センサーのデータ取得、LED制御、モーター制御など、リアルタイムの制御が必要なプロジェクトに適しています。 しかし、現在発売されているものは、OSを積んでいないので、複雑な制御は苦手としています。 ハードウェアでカバーできる場合は、出来合いのシールドを用いるか、自分で独自に作る必要があります。 | OSを搭載しているので、メディアセンターやホームサーバー、ロボティクス、エッジコンピューティングなど、より複雑で計算集約的なプロジェクトに向いています。 ポートを持っているので、単純にI/OをON/OFFする動作も可能です。 HATと呼ばれる拡張ボードを付ければ、色々な動作も可能です。 |
価格 | シールドと呼ばれる拡張ボードを使って機能を追加できます。 | 一般的に価格が安く、シンプルなプロジェクトに適しています。CPUやメモリなどの機能が低いZERO2シリーズであれば安価なので、用途によってはArduinoではなく、ZERO2シリーズを選択する方がよい場合もありえます。 | 現在は10,000円を越えており、高価になりましたが、USBポートやHDMI出力など、多くのインターフェースを備えており、拡張性が高いです。
これらの違いを理解することで、プロジェクトのニーズに最適なプラットフォームを選択することができます。
また、Arduinoの応用範囲は趣味のレベルにとどまらず、産業用のプロトタイピングや自動化システムの開発にも広がっています。
モーターやセンサーを駆使して、農業や工場の自動化プロジェクトを実現することも可能です。
Arduinoの拡張性を活かして、より高度な制御を行うことで、実際の産業に役立つシステムのプロトタイプを作成することができますよ!
Arduinoプログラミングの基本
Arduinoのプログラミングは初心者でも簡単に始められるように設計されています。
Arduino IDEを使ってプログラムを書き、ボードに転送することで、プロジェクトを動かすことができます。
Arduino言語はシンプルな構文を持つC/C++ベースのため、基本的なプログラミングの知識があれば、すぐに複雑な操作にも挑戦可能です。
また、多くのユーザーが公開しているライブラリやサンプルコードを活用すれば、自分のプロジェクトに最適なソリューションを簡単に見つけることができます。
Arduinoのプログラミングは、非常に柔軟であり、簡単なプログラムから高度な制御プログラムまで、さまざまなレベルでプロジェクトを進めることができます。
例えば、LEDを点滅させるだけのシンプルなプログラムから、センサーのデータを解析して特定の動作を行う複雑なプログラムまで、多岐に渡るんだ。
さらに、インターネットに接続してデータをやり取りすることで、IoTプロジェクトの一部としてArduinoを活用することもできます。
これにより、家庭のスマート化や環境モニタリングなど、さまざまな分野で活躍の場が広がっています。
また、Arduinoには数多くのライブラリが用意されており、これを活用することでプログラミングの手間を大幅に省くことができます。
例えば、センサーのデータ取得やモーターの制御など、特定のタスクに特化したライブラリを利用することで、初心者でも簡単に高度なプロジェクトを進めることが可能です。
ライブラリの活用は、プロジェクトの完成度を高めるだけでなく、学習効率を向上させる上でも非常に有効です。
Arduinoを始めよう
Arduinoは、初心者から上級者まで楽しめる電子工作のプラットフォームです。
シンプルなプログラミングと使いやすい開発環境で、あなたも自分だけのユニークなプロジェクトを形にしてみましょう。
Arduinoボードと基本的な部品を用意し、まずはLEDを点灯させることから始めてみてください。
そこから、あなたのアイデアをどんどん膨らませて、より複雑で魅力的なプロジェクトに挑戦していきましょう。
Arduinoを始める際には、まず簡単なプロジェクトから
取り組むのがおすすめですよ!
例えば、LEDの点灯やブザーの鳴動といった基本的な操作から始めることで、Arduinoの基本的な使い方に慣れていきます。
その後、センサーを使ったプロジェクトやモーターの制御など、少しずつ難易度を上げていくことで、より高度なスキルを身に付けることができます。
また、Arduinoはオンラインでの学習リソースが非常に豊富です。
さまざまなチュートリアルやプロジェクトの例が提供されているため、初心者でも迷うことなく学習を進めることができます。
Arduinoおよび互換機の活用例
Arduinoには互換機を含め種類は豊富!
Arduinoは、電子工作の入門に最適なオープンソースプラットフォームとして、多くのユーザーに支持されています。
そのシンプルさと拡張性により、ロボットやIoTデバイスのプロトタイピング、教育用プロジェクトなど、多様な応用が可能です。
Arduino UnoやNanoなど、用途に応じたさまざまなモデルがあり、プロジェクトの規模やニーズに合わせて選択できます。
一部ですが、ArduinoおよびArduino互換機などを紹介しますね。
メーカー | 種別 | 名称 | 備考 | 購入先 | |
Arduino | Arduino | Arduino Uno R4 Minima | Arduino Unoの第4世代であるマイコンボード。日本のメーカーであるRenesas製Arm Cortex-M4コアを採用。 | Amazon | |
Arduino | Arduino | Arduino Uno R4 WiFi | Arduino UnoにWiFi機能が付いたもの。 | Amazon | |
Arduino | Arduino | Arduino Leonald | 旧Arduino Unoと類似の機種で、ATmega32u4チップを付けたことでUSB-シリアルを変換するチップが不要となった。 | Amazon | |
Arduino | Arduino | Arduino Mega 2560 | Arduino Unoよりも基板が長くなっている。 | Arduino UnoのメモリやI/Oを増量したもの。Amazon | |
Arduino | Arduino | Arduino Due | Arduino Megaをさらに強化したもので、ARM Cortex-M3 CPUコアのマイコンボード搭載。I/OはArduino Megaと類似。 | Amazon | |
Arduino | Arduino | Arduino Nano | 旧Arduino Unoを小型にしたような機種。 | Amazon | |
Arduino | Arduino | Arduino Nano 33 IoT | 従来のArduino Nanoの進化版で、Cortex-M0+コアのSAMD21をMCUに、u-blox製NINA-W102をWi-Fi/Bluetooth用に搭載した開発基板。 | Amazon | |
Arduino | Arduino | Arduino MKR WiFi 1010 | Wi-Fi/Bluetooth接続を構築できるシンプルなマイコンボード。 | Amazon | |
Arduino | Arduino | Arduino Micro | Arduino Leonardoを小さくしたマイコンボード。 | Amazon | |
SeeedStudio | その他 | Seeed Studio XIAO ESP32C3 | 切手大の大きさでBluetooth Low EnergyとWi-Fi機能を搭載した小型マイコンボード。Arduino互換機ではないものの、Arduinoと同じようにArduino IDEで開発可能。 | Amazon | |
Sony | Arduino互換機 | SONY SPRESENSE | SONY製のArduino互換機で、拡張ボードに載せると、さらに使いやすくなる。 小型なのに、GPSや192kHz/24bit のオーディオコーデックとClass-Dのデジタルアンプなども搭載。本家Arduinoにはない機能がてんこ盛りのスグレもの。 | Amazon | |
M5STACK | その他 | M5Stick-C PLUS2 | 小型のアイテムを製作するのに便利。 | M5STACKというメーカーから発売されているケースに入っており、小型ディスプレイ付き。Amazon | |
SeeedStudio | その他 | Wio Terminal | Bluetooth とWi-Fi機能を搭載したディスプレイ付きの小型マイコンボード。 | Amazon | |
スイッチサイエンス | その他 | ESPr Developer | ESP-WROOM-02が搭載されているマイコンボード。 | Amazon |
Arduinoは日常生活を便利にする
また、Arduinoはオープンソースであり、活発なコミュニティの支援を受けながら学べるのも大きな魅力です。
Arduinoを利用することで、家庭用の自動化システムやDIYガジェットを作成することが可能です。
例えば、Arduinoを使って温度センサーを設置し、特定の温度に達したときにファンを自動的に作動させるといったプロジェクトは、家庭での快適さを向上させることができます。
また、植物の水やりシステムを自動化することで、適切な水分を維持し、植物の成長を促進することもできます。
このような応用例は、Arduinoを使った日常生活の利便性を高めるプロジェクトの一例です。
Arduinoは教育用途でも活用されている
さらに、Arduinoは教育現場でも広く活用されています。
子供たちにプログラミングの基礎を教えたり、物理的な現象を学ぶための教材としても非常に効果的です。
Arduinoを用いることで、抽象的な概念を実際に目で見て体験することができ、学習の理解を深めることができるのです。
例えば、簡単なロボットを作成し、それを動かすことで、プログラミングの基礎や電子回路の仕組みの良い勉強になります。
Arduino IDEはC++がベースとなっているので、C++の習得にも役立ちます。
Arduinoの教育用途は、未来のエンジニアを育成する上で大きな役割を果たしているのです。
では、実際にどのようなことができるか、いくつか実例をご紹介します。
以前、このブログでご紹介していましたが、情報整理のため、当記事にまとめてArduinoなどを使った自作事例を一挙ご紹介します。
M5Stick-C+MStack用ToFユニットでトイレの自動洗浄
2021年02月20日にelchika主催のコンテストに参加すべく、編み出したネタです。
M5Stick-CにMStack用ToFユニットを人感センサーとして使用し、トイレから立って30秒経ったら、自動でトイレ洗浄するというもの。
ToFユニットを用い、赤外線で距離を測定。
距離に大幅な変化があった場合、M5Stick-Cに付いている赤外線LEDからトイレを洗浄するデータを送信することで、トイレを制御するのです。
M5Stick-Cは純然たるArduino互換機ではないのですが、Arduino IDEでソフトウェア開発ができるので、ご紹介しますね。
Wio Terminalを使った自転車用スピードメーター
Wio Terminalも純然たる互換機ではありませんが、Arduino IDEつながりということで、ご紹介します。
自動車などのスピードメーターと仕組みは一緒で、タイヤなどが回転する度に、車速パルスという物が変化します。
それをカウントして、時速〇〇km/hと表示させるという仕組みです。
自動車やバイクには速度を検知するセンサーはありますが、自転車にはありませんので、マグネットとマグネットセンサーを使って、同様なことをしています。
ソースファイルを含めたノウハウは、elchikaで紹介していますので、ご覧ください!
ArduinoからScratchを制御できたっ!
2017年1月25日に公開したArduinoからScratchを制御できたというお話。
私は、Arduino ETHERNETという廃盤となったマイコンボードを使いましたが、これはArduino Uno+ETHERNETシールドでも代用できます。
これに使うScratchは、クラウド上のものではダメで、デスクトップアプリのScratchでないとArduinoを制御することはできません。
動作は、次の通りです。
ArduinoとScratchを動作させているPCを同じネットワークに接続しておきます。
私は有線LANに接続できるArduino ETHERNET(廃盤)を使っていますが、ArduinoにETHERNETシールドを接続する場合はそのまま使えます。
また、下記のスケッチに手を加えれば(WiFiの接続手順を追記)WiFiルーターでも使えるはずですので、余力のある人はぜひチャレンジしてみてください。
Arduinoにシリアル接続し、「a(半角小文字)」を受けたら、mojiという変数の中身(文字数+broadcast "a"
という文字)をScratchへ送信するという単純なプログラムです。
Scratchのデータをやり取りするには、「broadcast〇〇」「sensor-update〇〇」の2パターンあります。
データの送り方も独特で、送る文字の文字数を初めの4バイトに記すお約束になっており、Asciiコードで送信するとうまくいくようです。
なお、LEDを点灯させるなどの動作をしたい場合は、if (Serial.read() == 'a'){...}
のカッコ内にLEDを点灯する命令を入れておきます。
「a(半角小文字)」を受け取ったとき~をするというアクションをスケッチに作成。
ここでは、「a(半角小文字)」を受け取ったとき→(ネコが)「こんにちは!」と言うアクションにしています。
PCにシリアルで接続されているArduinoへ「a(半角小文字)」を送信すると、ETHERNET経由でScratchアプリにデータ送信。
それを受け取り、(ネコが)「こんにちは!」と言うアクションを行うわけです。
ArduinoからScratchを制御するためのソースファイル(ここをタップすると見られます)
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { イーサネットシールドなどのMACアドレス};
byte ip[] = {イーサネットシールドのIPアドレス(任意のものを入れる)};
byte server[] = {ScratchがインストールされているPCのIPアドレス };
byte moji[] = { 0x00, 0x00, 0x00, 0x0d, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x20, 0x22, 0x61, 0x22 }; //broadcast "a"と送信
EthernetClient client;
void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip);
delay(1000);
Serial.println("connecting...");
if (client.connect(server, 42001)) {//Scratchとはポート42001で通信する。
Serial.println("connected");
delay(1000);
} else {
Serial.println("connection failed");
}
}
void loop() {
if (Serial.available()){
if (Serial.read() == 'a'){
client.write(moji, sizeof(moji));
}
}
}
Arduino用シールドであれば、どのメーカーのものでも使用可能です。
ArduinoでFFT
2019年8月5日公開したネタで、Qiitaに出ていたArduinoでFFT(高速フーリエ変換)の手法を使って処理を行うというものです。
思ったより分解能が広げられず、Arduino MEGAを使ったところ、メモリーの関係上、分解能は512で精一杯。
色々実験を行ったところ、FFTライブラリをインストールした際に入るオリジナルのスケッチ(プログラム)では、サンプリング周波数が10000Hz未満でなければ、周波数確度が取れないことが分かりました。
それは、Arduino内部のAD変換の時間によるもので、クロックの分周比を変えてAD変換の時間を早めてやれば、サンプリング周波数を12800Hzにしても周波数確度が上がります。
これを応用すれば、ある程度の精度を持ったオーディオ帯のスペアナが作れる可能性がありそうなんだ。みんなもチャレンジしてみて!
ESP-WROOM-02でメールが送れるぞ!
純然たる互換機ではないのですが、Arudino IDEを用いて開発できるデバイスとして、ESP-WROOM-02(上記画像)というものもあります。
このデバイスは、小型でありながら、WiFiに対応しており、比較的簡単にネットワーク機器を作成することができます。
このデバイスESP-WROOM-02(ESP8266)を使って、メールを送れるようにしてみました。
2016年3月2日に公開しましたが、そのスケッチを改めて公開します。
これは、ESP8266用に用意されたテンプレートであるWifiClientに手を加えたものです。
ハードウェアは、秋月電子のAE-UM232RとESP-WROOM-02を接続し、他に抵抗、コンデンサ、タクトスイッチなどの部品でできます。
スイッチサイエンスから発売されているモジュール(下記)であれば、必要な部品が搭載されているので、ハードウェアを組み立てる手間は不要なんだ。
このモジュールをおすすめするよ!
メールを送る際の注意
ターミナルソフトでESP-WROOM-02と接続し、ターミナルソフト上で「S(半角大文字)」という文字を送ると、メールサーバーと通信しはじめて、「ESP-WROOM-02からテストメール」というタイトルのメールを送るようになっています。
私の場合は、メールを送る方式がAUTH PLAINでしたが、プロバイダーによっては、AUTH LOGINだったりして、ID・パスワードの送信の仕方が異なることもあります。
telnet接続するなどして、自分の環境を確かめてくださいね。
なお、下記のソースは、メールID・パスワードは自分の物に書き換えるように。
ちなみに、動作は次の通りです。
Setup()関数の中にあるSerial.println();から最後までがWiFi接続するためのコマンドです。
シリアルで「S(半角大文字)」を受信したら、メール送信のコマンドを実行していきます。
ESP-WROOM-02でメールが送れるソースファイル(ここをタップすると見られます)
#include <ESP8266WiFi.h>
const char* ssid = "SSID";
const char* password = "パスワード";
const char* host = "ドメイン";
const char* auth_pass = "ユーザー名\0ユーザー名\0メールパスワード";
const char* mail_from = "差出人のメールアドレス";
const char* rcpt_to = "宛先のメールアドレス";
const char* subj = "ESP-WROOM-02からテストメール";
const int httpPort = 587; //SMTPサーバーがポート587を使っている場合
int value = 0;
WiFiClient client;
void ReadLoop(){
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}
}
void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
if (Serial.available() > 0) {
byte inByte = Serial.read();
if (inByte == 'S')
{
delay(5000);
++value;
Serial.print("connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
client.print("ehlo ");
client.println(host);
ReadLoop();
delay(1000);
client.println("AUTH PLAIN");
ReadLoop();
delay(3000);
client.println(auth_pass);
ReadLoop();
delay(1000);
client.print("mail from:");
client.println(mail_from);
ReadLoop();
delay(1000);
client.print("rcpt to:");
client.println(rcpt_to);
ReadLoop();
delay(1000);
client.println("data");
ReadLoop();
delay(1000);
client.print("From:");
client.println(mail_from);
ReadLoop();
delay(1000);
client.print("To:");
client.println(rcpt_to);
ReadLoop();
delay(1000);
client.print("subject:");
client.println(subj);
ReadLoop();
delay(1000);
client.println("");
client.println("メールのテスト送信ですよ~");
ReadLoop();
delay(1000);
client.println(".");
ReadLoop();
delay(1000);
client.println("quit");
ReadLoop();
Serial.println();
Serial.println("closing connection");
}
}
}
※ESP-WROOM-02でメールサーバーにコマンドを送り、メールを送る様子を図示してみましたので、ご覧ください。
SpresenseのADCの使い方
2019年9月7日に投稿した記事です。
元祖Arduinoであれば、アナログのどのチャンネルを使っても同じように使えるのですが、Spresenseの場合、アナログ入力A0~A3はサンプリングレートが約65Hz、A4/A5は約6kHzという残念な仕様になっています。
高い周波数を使うようなFFTを作る場合には、Spresenseは使えないということになります。
しかも、メインボードの方が0.7Vレンジであるため、メインボード単体では、0.7V以上の電圧が入れられないという欠点も(拡張ボードには、アッテネータが入っているから、5Vまで入れられるらしい)。
英文のドキュメントには、Spresense SDKを使えば高いADC性能を引き出すことができるとあるのですが、やっとの思いでSpresenseに構築したNUTTX環境を見てみました。
確認したところ、認識しているADCのハードウェアは、hpadcとlpadcの2種類となっています。
Spresense SDKでADC入力のサンプリングレートがチューニングできるのかと期待していたのですが、どうやら違うみたい。
これだったらArduino IDEでも一緒。いや、完璧に負けてる。
用途によっては、態々、Spresense SDKにするまでもないのかな…。
Spresenseを使ってFFTを作りたければ、Arduino IDEの使用例でマルチコアを使ったFFTの実例があるのだけれど、単にLEDを光らす程度のお遊びで使う分には問題ないように思えます。
しかし、周波数確度としてはイマイチ。
入力も、ArduinoのようにADC入力からではなく、マイク入力から行うようになっているし…。
「クセつよっ」というマイコンボードのようです。
まとめ
このように、Arduinoは学習者にとって非常にフレンドリーな環境を提供しており、初めて電子工作に挑戦する人にとって理想的な選択肢となっています。
創造性を活かし、日常生活をより便利で楽しいものにするためのアイデアを形にしていくことで、Arduinoの魅力を存分に体感することができるはずです。
Arduinoを使って、ぜひ新しい電子工作の世界に飛び込んでみて!
きっと、自分だけのユニークなプロジェクトを実現することができるでしょう。