

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
はじめに:GPIOとI2Cの違いを知る意味
こんにちは。電子工作を始めたばかりの人にとって、GPIOとI2Cという言葉は混乱の原因になりがちです。まず大切なのは、GPIOはGeneral Purpose Input/Outputの略で、個々のピンを自由に入出力として使える機能の総称です。これに対してI2CはInter-Integrated Circuitの略で、二本の線だけを使って複数のデバイスと通信する「通信路」のことです。GPIOはスイッチを押す信号を読んだり、LEDを点灯させたりといった「ピン単位の操作」が中心です。I2Cは温度センサー、時計、表示パネルなど、複数のデバイスを一つのバスに接続してデータをやり取りします。I2Cを使えば同じマイコンで多くのデバイスを制御できますが、バスの仕組みを理解せずに扱うと通信エラーが起こりやすくなります。I2Cの基本には、アドレス管理、通信速度の制限、パイプライン処理などのルールがあります。GPIOは各ピンの状態を直接決められる自由度の高い道具ですが、その分「何をどう接続するか」を自分で設計する力が必要です。配線を短く、ノイズを減らす工夫、電圧レベルの認識、そしてデバイスごとの仕様を読み解く姿勢が大切です。反対にI2Cは、複数のデバイスを同時に扱うことができる強みがあり、部品の数を抑えられる点が大きな魅力です。ただし、SDAとSCLはオープンドレインで動作するのが基本で、pull-up抵抗が必須です。これを知らないと通信が止まる、という体験を誰もが経験します。長さに敏感な配線では、リセットのタイミングやクロックの設定が原因で誤作動が起きることもあります。こうした背景を理解しておくと、GPIOとI2Cを適切に使い分け、実際のプロジェクトで成功へと導く道筋が見えてきます。ここからは、実践的な違いと使い分けのコツを詳しく見ていきましょう。
GPIOとI2Cの使い分けのポイント
一番の基本は「用途を考える」ことです。単純な信号の読み書きならGPIOを使い、複数の機器を同時に扱うならI2Cが便利です。GPIOはLEDを点灯させる、ボタンの押下を検知する、などはGPIOの得意分野です。反対に温湿度センサーや光センサー、温度計など複数のデバイスを少ない配線で接続したい場合はI2Cが効率的です。ただしI2Cではデバイスアドレスの管理、バスの衝突回避、信号線の長さ、電源ラインの安定化を意識する必要があります。 Raspberry Piのような3.3V系機では、I2Cの信号レベルが3.3V前提になるため、5V動作のセンサーを直接接続すると破損の原因になることがあります。そこで、レベルシフタや適切なpull-up抵抗値の選定が必要です。実装のコツとしては、最初に基本的なI2Cデバイスを一つだけ用意して、アドレスを確認することです。デバイスのアドレスは7ビット表記のものが多く、衝突を避けるために覚えるべき番号を整理します。接続の際はSDAとSCLの2本だけで済むため、配線ミスが減りやすく、教育用ボードでは特に楽に学べる点があります。次に必要なのは、クロック周波数の選択と、デバイスごとの応答時間を理解することです。I2Cには標準モード100kHz、ファーストモード400kHz、ファーストモードプラス1MHzなどの速度クラスがあります。これらを使い分けると、センサーの読み取り間隔を適切に保ちながら、メモリや処理の余裕を作ることができます。なお、複数デバイスを同時に扱う場合の配線計画として、信号線の配線順序を一定に保つ、バス上のデバイス数を最小限に抑える、電源ラインの安定化を心がけると良いでしょう。
項目 | GPIO | I2C |
---|---|---|
基本役割 | 個別のピンを制御 | 一つのバスで複数機器を接続 |
配線の本数 | ピン数分 | SDAとSCLの2本だけ |
速度と遅延 | ピン操作の速さに依存 | 通信オーバーヘッドあり、遅くなることがある |
拡張性 | 自由度は高いが配線は増えやすい | 多機器に強いが設計が必要 |
部活でI2Cの話をしていたときのこと。友達が『どうしてSDAとSCLだけで通信できるの?』と尋ねた。私は『I2Cはマスターとスレーブがバスを共同利用する仕組みだから、アドレスを見つけて対話するだけなんだ』と答えた。さらに『プルアップ抵抗がなければ信号が勝手に下がらない』と付け加えた。彼は『でも長い配線でのノイズは?』と心配そう。私は『距離が長いとスピードを落とす判断と、低速モードを選ぶのがコツだよ』と教えた。結局、I2Cは小さな部品を少ない配線で動かす力強い仲間になる――という話で締めくくった。