注目キーワード

【Arduino】M5Stack で ChatGPTに質問してみよう!(ChatGPT APIの使い方)

すけろく
ううーん。
どうしたものか。
げんろく
どうした?
浮かない顔をして。
すけろく
ChatGPTをマイコンから使ってみたいのだが、
どうすればよいのかわからなくてな。
げんろく
そうか。
ChatGPTもAPIをもっているから、マイコンで文章を作って
ChatGPT APIに送信すればよいと思うぞ。
今回はそのあたりを使ってみようか!
皆さん、「ChatGPT」は活用されていますか?
私は、何かを説明する文章を作る際に、ChatGPTを使って情報を整理したりしています。
“Chat”という会話を続けて楽しむことには、使っていませんね。。。
最近、いろいろなメディアなどでも取り上げられている「ChatGPT」。
実は、ArduinoやM5Stackなどのマイコンからでも使うことができるんです。
マイコンでも次の2つの機能を実装すれば、使うことができます。
  • インターネット接続できる(WiFi接続機能など)
  • ChatGPTのAPIへリクエストを投げることができる
そこで今回は、「ChatGPTからの応答内容をディスプレイに表示する」ということを行ってみます。
マイコンとしては、WiFi接続機能とタッチディスプレイを持つ「M5Stack Core 2」をArduinoでプログラミングします。
M5Stack」は。M5Stack社が販売しているディスプレイやボタンなどが搭載された、組み込みプログラミングができる開発ボードです。
製品として使えるような、パッケージになっているので、使いやすくて人気があります。
この記事ではArduino IDEを使ったプログラミング例も含め紹介します。
この記事を参考に、ChatGPTをマイコンから使ってみることに挑戦してみてはいかがでしょうか!
この記事の前提となる「M5Stack」のはじめかたについては、次の記事で紹介しています。
関連記事

この記事では、プログラミング学習をされる方に向けた、「おすすめの機器」と「プログラミング方法」をご紹介します。 題して「まじコレ!」 第二回は、「M5Stack Core 2」です。 […]

記事内でご紹介する「M5Stack」はこちら!

M5Stack Core2 開発キット

M5Stack Core2 開発キット

Arduino、UIFlow、MicroPythonに対応した開発キットです。
タッチスクリーン、マイク、IMUを使うことができ、従来のM5Stackよりも多機能なモデルです。 バッテリーも搭載しています。一台でいろいろと遊べる機器なのでおススメです!

Click Me !!Amazonで確認
Wifi対応の小さなマイコン!ここからはじめましょう!

ChatGPT とは?

ChatGPT(Chat Generative Pre-trained Transformer)は、OpenAIが2022年11月に公開した人工知能チャットボットです。

生成AIの一種で、原語のGenerative Pre-trained Transformerとは、「生成可能な事前学習済み変換器」という意味です。

OpenAIのGPT-3ファミリーの大規模な言語モデルに基づいて構築されており、教師あり学習と強化学習の両方の手法を使って転移学習され、機械学習のサブセットである深層学習を使って開発されています。

ChatGPTは無償で使えるの?

ChatGPTは、パソコンなどのWebブラウザから対話形式で使用する場合、ユーザ登録のみで無料で利用できます。

今回は、ChatGPTのAPIを使用しますので、プランによって課金と機能体系が異なります。

「API」とは、「Application Programming Interface」の頭文字です。簡単に言うと、「アプリケーションをプログラミングするためのインターフェース」です。インターフェイスとは、コンピュータ用語でいうと、「何か」と「何か」をつなぐものという意味を持ちます。ですので、プログラムとアプリケーション(ソフトウェア)をつなぐものを意味します。

今回使うChatGPTのAPIは、プログラムからChatGPTのモデルに問い合わせを行いデータ取得をするインターフェイスとなります。

次のサイトに掲載されています。

Simple and flexible. Only pay for what you use.…

 

ChatGPTのモデルとは?

ChatGPTは、機械学習により学習されたモデルを使って、Chatなどの機能を提供しています。

このモデルにより、使用できる機能が変わってきます。

モデルによって、機械学習を行った時期が異なっています。

大きく分けて次の3つになります。

モデルファミリー APIエンドポイント
Newer models(2023 年以降) gpt-4, gpt-3.5-turbo https://api.openai.com/v1/chat/completions
Updated base models  (2023) babbage-002, davinci-002 https://api.openai.com/v1/completions
Legacy models (2020 ~ 2022 年) text-davinci-003, text-davinci-002, davinci, curie, babbage, ada https://api.openai.com/v1/completions

上記のAPIエンドポイントは、各モデルを使う際にリクエストする場所になります。

モデルによりAPIエンドポイントが異なっていますので注意が必要です。

 

今回は、数あるモデルの中で、「text-davinci-003」を使用します。

 

ChatGPTを使う

ここでは、ChatGPTを使うために必要な手続きをご紹介します。

手続きは、次の2点です。

  1. ChatGPTにユーザ登録する
  2. API Keyを取得する

ChatGPTにユーザ登録する

ChatGPTの公式サイトへのリンクを以下に貼っておきます。

アクセスしてみてください。

ChatGPT公式サイトへのリンク

ChatGPTのサイト
ChatGPTのサイト
とてもシンプルなページが表示されます。
画面右上の「Get Started」からユーザー登録を行ってください。
ユーザー登録は、「メールアドレス」、「Google アカウント」、「Microsoft アカウント」、「Apple ID」から選択して使うことができます。
登録した際に、5ドル分の利用権が付与されます(3か月間有効)※2023年6月時点
それ以降は、有償となるため、支払いに使用するクレジットカードを登録する必要があります。

API Keyを取得する

ユーザー登録が完了したら、ChatGPTのページから「Login」を押します。

ログインが完了したら、以下の画面が表示されます。
ここでは、「API」を押します。
以下のような、APIを使用するためのドキュメントページが表示されます。
右上のユーザーメニューを開いて、「View API Keys」を押します。
API Keyの画面が表示されます。
Create New Secret Key」を押します。
API Keyの名前を付けます。
名前を入力後に「Create Secret key」ボタンを押します。
API Keyが作成され、表示されます。
API Keyをコピーします。
以上でAPI Keyの取得は完了です。

M5StackでChatGPTを使ってみよう

では、取得したAPI Keyを使って、M5StackからChatGPTにリクエストしてみます。
ChatGPTへリクエストを送信するためには、WiFi接続する必要があります。

Wi-Fi接続用のSSIDとパスワードをmicroSDカードから取得し設定する

Wi-Fi環境への接続が必要になります。

今回のプログラムでは、事前にM5StackのmicroSDに記憶させた情報を使用しています。

Wi-Fi接続情報の読み出し方法は、次の記事で紹介しています。

関連記事

すけろく M5Stackは、Wi-Fi機能がついているのか。 げんろく ESP32のおかげだな、2.4GhzのWi-Fi接続に 対応している。 すけろく では、早速Wi-Fi接[…]

microSDは、M5Stackに対応しているものを選びましょう。今回は次のものを使いました。

microSDカード

サンディスク microSDHCメモリーカード 16GB
安心・安全なSanDiskのmicroSDメモリです。JetsonやRaspberry Piなどで使用するには少し遅い部類のメモリになりますが、M5Stackなどでデータロギングやデータ読み込み用途にはこのあたりが最適です。
安価なメモリはほかにもありますが、信頼性が高いこのメーカーを当サイトではおススメしています。

Click Me !!Amazonで確認
M5Stackのデータロギングにつかうならこれ!

ライブラリを追加する

今回、ライブラリとしては、次のものを使用します。事前にライブラリのインストールが必要です。

ライブラリ名 バージョン ライブラリサイト
ArduinoJson
6.21.3 https://arduinojson.org/?utm_source=meta&utm_medium=library.properties
LovyanGFX
1.1.8 https://github.com/lovyan03/LovyanGFX
M5Core2
0.1.6 https://github.com/m5stack/M5Core2

ChatGPTから取得するデータはJSON形式になりますので、ArduinoでJSON形式データを扱うためのライブラリ「ArduinoJSON」をインストールします。

ライブラリのインストールは、次の記事で紹介しています。

関連記事

本記事は、Arduino IDE 1.8.xバージョンのライブラリ管理方法を紹介した記事です。 Arduino IDEは、より新しいバージョン「2.0.x」が発表されています。     機能がよりリッチになった「Ardu[…]

ChatGPTを使うプログラム

今回は、以下の質問をChatGPTへリクエストした結果を、M5Stackのディスプレイに表示させるプログラムを作成します。

「日本で最も高い山はどこですか?」
Where is the highest mountain in Japan?

Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。

※「ChatGPTのAPI Key」、ご自分の環境に合わせて値を修正してください。(スケッチ例では、「”Please correct it to the value that suits your environment.”」と記載しています。)

 Arduino IDE スケッチ例

 

M5Stackへの書き込み

  1. 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  2. 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。
    この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
    ボード:「M5Stack」-「M5Stack-Core2」
    「Partition Scheme」で「Not OTA(Large App)」を選択します。
  3. 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
    (転送速度は「115200」です)
  4. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

プログラム実行結果

M5Stack Core 2 のディスプレイに以下のとおり表示されれば成功です。

(※表示される文章は、場合により変わる可能性があるので留意してください。)

 

さて、簡単な質問であれば、M5StackからChatGPTへのリクエストを通して、取得することができました。

ChatGPTにはテキストの他にも画像を取り扱うこともできますので、今後の広がりが期待できそうです。

今回の記事は以上になります。

最後までご覧いただきありがとうございました。

記事内でご紹介する「M5Stack」はこちら!

M5Stack Core2 開発キット

M5Stack Core2 開発キット

Arduino、UIFlow、MicroPythonに対応した開発キットです。
タッチスクリーン、マイク、IMUを使うことができ、従来のM5Stackよりも多機能なモデルです。 バッテリーも搭載しています。一台でいろいろと遊べる機器なのでおススメです!

Click Me !!Amazonで確認
Wifi対応の小さなマイコン!ここからはじめましょう!

microSDカード

サンディスク microSDHCメモリーカード 16GB
安心・安全なSanDiskのmicroSDメモリです。JetsonやRaspberry Piなどで使用するには少し遅い部類のメモリになりますが、M5Stackなどでデータロギングやデータ読み込み用途にはこのあたりが最適です。
安価なメモリはほかにもありますが、信頼性が高いこのメーカーを当サイトではおススメしています。

Click Me !!Amazonで確認
M5Stackのデータロギングにつかうならこれ!

これからはじめる方にお勧めの参考図書はこちら!

M5Stack の他の記事はこちらからどうぞ!

すけろく ううーん。 どうしたものか。 げんろく どうした? 浮かない顔をして。 すけろく ChatGPTをマイコンから使ってみたいのだが、 どうすればよいのかわからなくてな。 げんろく そうか。 ChatGPTもAPIをもっているから、マイコンで文章を作って ChatGPT APIに送信すればよいと思うぞ。 今回はそのあたりを使ってみようか! 皆さん、「ChatGPT」は活用されていますか? 私 […]

すけろく 最近メダカの飼育が流行っているらしいの~ げんろく そうだな。日本の水質にも適用能力が高い魚だからな。 我が家でも飼育してみるか。 すけろく そうなると、メダカに快適な環境を整える必要があるな。 げんろく よし。 まずは、メダカが快適に過ごせる水温か確認するぞ! 皆さん、お家で何か動植物を飼っていますか? 今回、縁あって、げんろく宅にも「メダカ」さんがやってくることになりました。 メダカ […]

すけろく んーどうしたものか。 げんろく どうした? 深刻な顔をして。 すけろく M5Stackにプログラムを書き込んだら 起動しなくなってな。 電源ON/OFFでも無理なのだ。 げんろく 書き込んだプログラムか、バッテリーの 過放電か。工場出荷時に戻してみてはどうだ? この記事では、M5Stackにプログラムを書き込んだ結果、うまく動作しなくなった場合の対処方法を記載します。 ご紹介するのは「工 […]

すけろく んー。 どうしたものか… げんろく どうした?深刻な顔をして。 すけろく 「城の守りを固めるため、敵の接近を検知してみせよ!」 と殿から宿題をもらっての。 げんろく なるほど、それならば人感センサーを使ってみてはどうか? 敵が勝手に部屋に入ったりするのを検知できるぞ! この記事では、M5Stackと、「人感センサー(HC-SR501)」を使って、人が近づいた際に検知して反応するプログラム […]

すけろく 前回は、RTC非搭載のM5Stackでの時刻同期を行ったが、 RTC搭載の場合はどうするのかな。 げんろく うむ。 RTCは、M5Stack Core 2 などで搭載されている。 ちょっと、プログラム内容が異なるから、実装してみるか。   この記事では、M5StackをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービス(NTPサーバー)と時刻を同期する方法 […]

すけろく ん~。 げんろく どうした難しい顔をして。 すけろく M5Stackのディスプレイにいろいろ描画しているのだが。 画像がチラチラしてみずらいのだ。 げんろく 描画タイミングとか、メモリを使うとか しておるのか? すけろく ・・・ げんろく 今回は、そのあたりを見てみようか。 この記事では、Arduino IDEを使ってM5Stackのディスプレイに文字や画像を表示する際のちらつきや、安定 […]

 すけろく M5StackでPCファンの回転を制御することはできたが LEDの点灯制御はまだだな。  げんろく そうだったな。 LEDの点灯制御もM5Stackで行うことができるぞ! 実際に動かしてみよう この記事では、M5StackとLED搭載のパソコン用冷却ファンを使ったLED発光制御の方法について紹介します。 前回は、M5Stackで冷却ファンを使った回転速度制御をおこないましたが、今回はL […]

 すけろく M5Stackを使って、モーターをコントロールしてみたいな。  げんろく それならば、モーターコントロールを学べるPC冷却ファン制御というものをやってみるか。  すけろく ん? パソコン用の冷却ファンをコントロールできるのか?  げんろく 仕組みはモーターと同じだからな。 とにかくやってみよう!   この記事では、M5Stackとパソコン用の冷却ファンを使って回転速度制御を行います。 […]

すけろく 標準ライブラリでの画面描画はできた。 しかし、M5Stack向けのライブラリなので 汎用性がないな。 げんろく たしかに。 M5StickCや他のAruduino機器でも使えるものが必要だな。 すけろく そのようなものがあるのか? げんろく よし。今回は、汎用的に使えるライブラリを紹介しよう。 lovyan03さんが公開されている「Lovyan_GFX」だ。 この記事では、Arduino […]

すけろく M5Stackも時刻同期や日本語表示までできた。 うまくいっておるな。 げんろく ああ、「M5Stack」でもノウハウがたまってきている。 すけろく そういえば、大きな画面を活かしたものを 作ってみたいと思うのだが。 げんろく わかった。今回はM5Stackのディスプレイにおける 画面制御まわりを見てみるか。 この記事では、Arduino IDEを使ってM5Stackのディスプレイに文字 […]

すけろく M5Stackに英語表記で時計を表示することは 前回の記事で行えたが、日本語は表示できないのか? げんろく いや、方法はあるぞ。 eFontライブラリをM5Stackで実行できるように 修正して提供してくれているものを使うのだ。 すけろく ぜひ、やってみたいの~ この記事では、Arduino IDEを使ってM5Stackのディスプレイに日本語を表示させるための方法を紹介します。 今回使用 […]

すけろく 前回は、Wi-Fiアクセスポイントに 接続することができた。 次は時刻同期かな。 げんろく うむ。 時刻同期は、全ての基本だからな。 実装してみるか。 この記事では、M5StackをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービス(NTPサーバー)と時刻を同期する方法について紹介します。 M5Stackは、内蔵タイマであるRTCが搭載されているモデル(例:M5St […]

すけろく M5Stackは、Wi-Fi機能がついているのか。 げんろく ESP32のおかげだな、2.4GhzのWi-Fi接続に 対応している。 すけろく では、早速Wi-Fi接続してみよう。 げんろく せっかくなので、microSDから読みだした Wi-Fi アクセスポイント情報を使って 接続してみよう! この記事では、M5Stackに実装されているWi-Fi機能を使って、Wi-Fiルータに接続す […]

すけろく M5StackとほかのWebサービスなどとの データのやり取りにJSON形式を使いたいのだが。 げんろく うむ。 M5StackでもJSON形式が使えるか試してみるか。 この記事では、Arduino IDEを使ってM5StackのプログラムでJSON形式を取り扱う方法を紹介します。 JSON形式データは、Webサービスやほかのコンピュータとのやり取りにも使用される汎用形式なので、取り扱う […]

すけろく M5Stackは、各モデル共通でmicroSDカードの スロットが搭載されているな! げんろく そうだな。microSDカードへの読み書きが できるのでログの記録や、データ読み出しからの 画面表示ができる。 すけろく ファイルの中身を画面に表示することができるのか! それはいいな! げんろく では、手始めにmicroSDカードに入っている テキストファイルの中身を表示してみよう。 この記 […]

すけろく M5StackをArduino IDEで使ってみたいのだが。 げんろく ライブラリも揃っているしな。 開発する前に、M5Stack用の設定をArduino IDEに 施す必要がある。 すけろく M5Stack開発ボードの登録とライブラリの インストールだな。 げんろく わかってきたではないか。 新しい機器をArduino IDEで使う場合の初期設定だな。 この記事では、Arduino I […]

すけろく 今回はM5Stackを取り上げたいと思うがどうだ? げんろく なんだ、急にやる気を出して。 どういった風の吹き回しだ? すけろく M5Stickとは異なり、いろいろな種類のモデルがあって 良さそうだからな。 げんろく 開発用モデルから、実用を意識したモデルまで 様々だからな。 面白い、やってみるか! 今回の記事では、「M5Stack」を各モデルを比較して、用途に応じた使い方をまとめていま […]