名刺サイズの超小型PC「ラズパイ」で遊ぶ(第48回)
ラズパイで測定したCO2とTVOCの値をディスプレイに表示させる
前回はラズパイとSEN-CCS811を組み合わせて、CO2のデータを測定する方法について紹介しました。今回はディスプレイを接続し、計測したCO2とTVOCのデータを表示させる方法について解説します。
SEN-CCS811の測定値はコンソール画面に表示できますが、いちいち参照するのは面倒です。そこでディスプレイを接続して表示させます。ディスプレイは、こちらもAmazonで販売されている「DSD TECH 2 PCS OLED 0.91インチディスプレイ IIC I2C シリアルポート ARM用」(1599円)を使います。
このディスプレイは「SSD1306」というデバイスで動いており、公開されているCircuitPythonのライブラリを使います。まずはライブラリを以下のコマンドでインストールします。
$ sudo pip3 install adafruit-circuitpython-ssd1306
このままで動作させても文字は表示されますが、日本語表示をさせるためにフォントをインストールします。以下のコマンドを入力してIPAフォントをインストールします。IPAフォントフォントはその名前の通り、情報処理推進機構が配布しています。
$ sudo apt-get install fonts-ipafont
フォントは「/usr/share/fonts/opentype/ipafont-gothic/」に、ゴシック体の「ipag.ttf」、明朝体の「ipam.ttf」としてインストールされます。これを踏まえて、まずは文字を表示させてみましょう。
プログラムは以下の通りです。18行目の「ipag.ttf」はゴシック体の指定なので、これを「ipam.ttf」にすると明朝体になります。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import board
import adafruit_ssd1306
import time
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
i2c = board.I2C()
oled = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c, addr=0x3c)
# ディスプレイの初期化
oled.fill(0)
oled.show()
image = Image.new("1", (oled.width, oled.height))
draw = ImageDraw.Draw(image)
# フォントの指定
font = ImageFont.truetype("/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf", 13)
# テキストを表示させる
draw.text((0, 0), "世界の国へこんにちは!", font=font, fill=255)
draw.text((0, 17), "Hello World!", font=font, fill=255)
oled.image(image)
oled.show()
time.sleep(5)
oled.fill(0)
oled.show()
oledtest.py
「世界の国へこんにちは!」と「Hello World!」が5秒間表示されたでしょうか。
ではこれらを踏まえて、CO2の値をディスプレイに表示させてみましょう。前回に紹介したプログラムを改編することで作り上げていきます。プログラムは以下のようなものでした。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import board
import adafruit_ccs811
i2c = board.I2C() # uses board.SCL and board.SDA
ccs811 = adafruit_ccs811.CCS811(i2c)
# Wait for the sensor to be ready
while not ccs811.data_ready:
pass
while True:
print("CO2: {} PPM, TVOC: {} PPB".format(ccs811.eco2, ccs811.tvoc))
time.sleep(1)
ccs811test.py
この中のprint文を、ディスプレイへ表示させるように変更します。以下のようになります。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import board
import time
import adafruit_ccs811
import adafruit_ssd1306
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
i2c = board.I2C()
ccs811 = adafruit_ccs811.CCS811(i2c)
oled = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c, addr=0x3c)
# フォントの指定
font = ImageFont.truetype("/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf", 13)
def runCCS811():
while True:
oled.fill(0)
oled.show()
image = Image.new("1", (oled.width, oled.height))
draw = ImageDraw.Draw(image)
print("CO2: {} PPM, TVOC: {} PPB".format(ccs811.eco2, ccs811.tvoc))
time.sleep(0.1)
draw.text((0, 0), "二酸化炭素:{}PPM".format(ccs811.eco2), font=font, fill=255)
draw.text((0, 17), "有機化合物:{}PPB".format(ccs811.tvoc), font=font, fill=255)
time.sleep(0.1)
oled.image(image)
oled.show()
time.sleep(2)
if __name__ == '__main__':
try:
runCCS811()
time.sleep(0.1)
except (KeyboardInterrupt, SystemExit) as exErr:
print("
Measurement end")
oled.fill(0)
oled.show()
ccs811_oled.py
これで2秒おきに、ディスプレイ画面に二酸化炭素量とTVOCが表示されるようになります。
【訂正:2021年9月21日午前10時30分 記事初出時、OLEDについて記載している箇所で液晶ディスプレイと表記している部分がありました。訂正しておわびいたします】
Copyright © ITmedia, Inc. All Rights Reserved.
名刺サイズの超小型PC「ラズパイ」で遊ぶ
今やスマートフォンアプリで何でも完結できてしまう時代。しかし、一から自分の手でデバイスを作り上げ、試行錯誤しながらアイデアを具現化する楽しさは格別です。この連載では、テーマや用途にあわせてマイクロコンピュータ(マイコン)と呼ばれる名刺サイズの超小型PC「Raspberry Pi」(通称ラズパイ)の活用方法から具体的な工作手順までを紹介します。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
「食事量は1日1200kcal以下、でも肥満」な人を14日間追跡調査 痩せない理由は……米コロンビア大などの研究
-
2
なぜ酒蔵の許諾なしに? 「VTuberコラボ日本酒」騒動、主催者が経緯説明 仲介者による調整で「準備進んでいると認識」
-
3
かっぱ寿司「配布前のコラボグッズ、フリマで買わないで」 プリキュアコラボ発表日に注意喚起
-
4
本物そっくり“AI生成レシート“が経費精算の脅威に マネフォ「自力で見破るのは難しい」 企業はどう備える?
-
5
「ペンギンを返して」→「3匹全部採用して」 批判殺到のSuica新キャラ、ファンアートが空気を変えた? SNSの声
-
6
「菜の花がおかしい」――イラストレーター制作うたうマラソン大会ポスターに指摘相次ぐ 事務局がAI使用明かす【訂正あり】
-
7
「ランジェリーパープルじゃない」「買おうと思ってたのに」 iPhone 18 Pro/Pro Maxの色に落胆の声
-
8
「iPhone Duo」純正ケース話題、「面白いけど高い」……1万4800円と2万4800円
-
9
幻の「ちいかわ」コラボ第3弾皿、捨てちゃうの? くら寿司に聞いてみた
-
10
藤井風のリサイタル、公式サイトがインターネット老人会すぎると話題 公民館のチラシみたいだけど東京ドーム開催
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR