今さら聞けないラズパイ×Linux超入門


A-D変換値のSPI 読取りとLCD表示のプログラミング

ラズパイのGPIOと通信方式

図1 SPI通信は,CE,MOSI,MISO,SCLKの4本でデータの送受信を行う.I$^2$C通信は,SDAとSCLの2本の信号線でデバイスのアドレスを指定し,データを送信する.画像クリックで動画を見る.または記事を読む.[提供・著]後閑 哲也
詳細[VOD/KIT] ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門

ラズベリー・パイ(ラズパイ)には,I$^2$CやSPIといった通信方式を利用できるGPIO(汎用入出力ピン)が搭載されています.これらを使うことで,外部デバイスとのデータ送受信が可能です.今回のテーマでは,SPI接続のA-Dコンバータ(ADC)MCP3002を使って電圧値を取得し,I$^2$C接続の液晶表示器(LCD)AQM0802に表示するプログラムを作成します.

  1. ラズパイのGPIOに接続されたSPI機器とI$^2$C機器を制御する
  2. A-Dコンバータ(MCP3002)を用いて電圧値を取得する
  3. 取得した電圧値をLCD(AQM0802)に表示する

SPIを使ったA-D変換の読取り

SPI(Serial Peripheral Interface)は,4本の信号線(MOSI,MISO,SCLK,CE)を用いた同期シリアル通信方式です.ラズパイでは,GPIO10(MOSI),GPIO9(MISO),GPIO11(SCLK),GPIO8(CE0)を使用してMCP3002と接続します.

MCP3002は2チャネルのA-Dコンバータで,ラズパイからSPI通信で制御できます.A-D変換の基本的な流れは以下のとおりです.

  1. CE(チップセレクト)をLowにしてMCP3002をアクティブ化
  2. 制御ビットをMOSI(送信)ラインに送る
  3. 変換結果をMISO(受信)ラインで取得
  4. CEをHighにして通信を終了

MCP3002の変換結果は10ビットのディジタル値として取得できます.取得した値を$V_{in}$に変換するには,以下の計算を行います.

\[ V_{in} = \frac{10\text{bitデータ}}{1024} \times 3.3V \]

I$^2$C通信によるLCD表示

I$^2$C(Inter-Integrated Circuit)は,SDA(データ)とSCL(クロック)の2本の信号線でデバイスと通信する方式です.ラズパイではGPIO2(SDA),GPIO3(SCL)を使ってLCDと接続します.

LCD(AQM0802)は,I$^2$Cバスに接続されており,アドレス0x3Eで識別されます.データ送信の手順は次のとおりです.

  1. LCDのアドレス(0x3E)を指定して通信を開始
  2. 制御コマンドを送信してカーソル位置を設定
  3. 表示するテキスト・データを送信
  4. 通信を終了

I$^2$C通信では,プルアップ抵抗(通常1.8k$\Omega$?4.7k$\Omega$)が必要です.〈著:ZEPマガジン〉

動画を見る,または記事を読む

著者紹介

  • 1971年 東北大学 工学部卒 大手通信機メーカにて制御機器開発に従事
  • 1996年 ホームページ「電子工作の実験室」を開設
  • 2003年 有限会社マイクロチップ・デザインラボ設立 代表取締役 計測制御システムコンサルタント,書籍執筆 セミナ講師
  • 2012年 神奈川工科大学 工学部 客員教授

著書

  1. "[VOD/KIT/Book/data]ラズパイPico W×ChatGPT APIで学ぶ 会話型IoTエッジ開発,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]PICマイコン オールイン1日学習キット ,ZEPエンジニアリング株式会社.
  3. [VOD/Pi KIT]ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門,ZEPエンジニアリング株式会社.
  4. [VOD/Pi KIT]ラズパイ×Node-REDで作ろう!IoTアプリ開発入門,ZEPエンジニアリング株式会社.
  5. 電子工作のための PIC16F1ファミリ活用ガイドブック,技術評論社.

参考文献

  1. [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]M5Stack Core2付き!ESP32で学ぶPython&Arduinoプログラミング入門,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]M5Stackで一緒に作ろう!IoTセンシング・エッジ×クラウド連携システム開発[改訂版],ZEPエンジニアリング株式会社.
  5. [VOD/KIT]実習キットでできる!ラズパイPicoでマイコン入門,ZEPエンジニアリング株式会社.
  6. [VOD/KIT]LabVIEW×Arduino!初めてのパソコン計測&制御【改訂版】,ZEPエンジニアリング株式会社.