Warning: Cannot modify header information - headers already sent by (output started at /home/cra-log/www/index.php:1) in /home/cra-log/www/site-admin-wp/wp-includes/feed-rss2.php on line 8
Raspberry Pi – CRAFT GoGo https://craft-gogo.com Raspberry Pi、3Dプリンタ、プログラミング、DIYなど、ものづくりを中心に趣味レベルで情報を発信! Sat, 19 Aug 2023 14:57:06 +0000 ja hourly 1 https://wordpress.org/?v=6.3.4 https://craft-gogo.com/site-admin-wp/wp-content/uploads/2021/05/cropped-CRAFT-GOGO-LOGO-32x32.png Raspberry Pi – CRAFT GoGo https://craft-gogo.com 32 32 【Raspberry Pi】bluetoothctlを使ってデバイスをBluetooth接続する方法 https://craft-gogo.com/raspi-bluetoothctl/ Sat, 19 Aug 2023 14:57:05 +0000 https://craft-gogo.com/?p=3564

Raspberry PiにプレステやSwitchのワイヤレスコントローラを接続して、操作してみたいと思いませんか? 本記事では、Linuxのbluetoothctlを使ってデバイスをBluetooth接続する方法について […]]]>

Raspberry PiにプレステやSwitchのワイヤレスコントローラを接続して、操作してみたいと思いませんか?

本記事では、Linuxのbluetoothctlを使ってデバイスをBluetooth接続する方法について解説します。

bluetoothctlとは

「bluetoothctl」とは、Linux環境においてBluetoothデバイスの管理や操作を行うためのコマンドラインツールです。Bluetoothデバイスのスキャン、ペアリング、接続、切断などの操作を行うことができます。ターミナルを通じてBluetoothを制御できるため、シェルスクリプトや自動化に役立ちます。

必要な準備

通常のLinux環境では、bluetoothctlコマンドが使えるはずです。インストールされていない場合は、ターミナルで次のように打ち、bluetoothctlをインストールします。

$ sudo apt -y install bluetooth bluez

インストールされたら、bluetoothctlコンソールを起動します。

$ bluetoothctl

起動すると次にように表示されます。

[bluetoothctl]#

bluetoothctコンソールを終了するには

[bluetoothctl]# quit

と打ちます。

デバイスとの接続方法

スキャン

次のコマンドを実行することで、近くのBluetoothデバイスをスキャンすることができます。

[bluetoothctl]# scan on

デバイスがスキャンされると、MACアドレスとデバイス名が表示されます。

Discovery started
[NEW] Device XX:XX:XX:XX:XX:XX [デバイス名]

このMACアドレスは、ペアリング、接続に必要のため、コピーしておきましょう。

スキャンを終えるには、次のように打ちます。

[bluetoothctl]# scan off

ペアリング

スキャンで検出したデバイスとペアリングしましょう。

[bluetoothctl]# pair XX:XX:XX:XX:XX:XX

“XX:XX:XX:XX:XX:XX”はデバイスのMACアドレスです。

デバイス側で接続要求を受け入れた後、bluetoothctl側の確認依頼にyesを返答します。

[agent] Confirm passkey xxxxxxx (yes/no): yes

最終的に次のように表示されたらペアリング完了です。

[CHG] Device XX:XX:XX:XX:XX:XX Paired: yes
Pairing successful

接続

まず、デバイスを信頼できるデバイスに設定します。次のように打ちましょう。

[bluetoothctl]# trust XX:XX:XX:XX:XX:XX

設定完了の表示がこちら。

[CHG] Device XX:XX:XX:XX:XX:XX Trusted: yes
Changing XX:XX:XX:XX:XX:XX trust succeeded

次に接続です。

[bluetoothctl]# connect XX:XX:XX:XX:XX:XX

接続に成功すると次のように表示されます。

Attempting to connect to XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
Connection successful
[CHG] Device XX:XX:XX:XX:XX:XX ServicesResolved: yes
[デバイス名]#

切断

デバイスと切断するには次のようにコマンドを打ちます。

[デバイス名]# disconnect XX:XX:XX:XX:XX:XX

切断完了されると次のように表示されます。

Attempting to disconnect from XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX ServicesResolved: no
Successful disconnected
[CHG] Device XX:XX:XX:XX:XX:XX Connected: no
[bluetooth]#

主なコマンド一覧

コマンド説明
scan onペアリング・接続可能なデバイスを検索する
scan offペアリング・接続可能なデバイスの検索を停止する
devicesペアリング・接続可能なデバイス一覧を表示する
pair <MACアドレス><MACアドレス>のデバイスとペアリングする
paired-devicesペアリングされているデバイス一覧を表示する
trust <MACアドレス><MACアドレス>のデバイスを信頼済にする
untrust <MACアドレス><MACアドレス>のデバイスを信頼されていない状態にする
connect <MACアドレス><MACアドレス>のデバイスと接続する
disconnect <MACアドレス><MACアドレス>のデバイスを切断する
info <MACアドレス><MACアドレス>のデバイス情報を表示する
remove <MACアドレス><MACアドレス>のデバイスと切断し、ペアリング情報を削除する

まとめ

本記事では、Linuxのbluetoothctlを使ってデバイスをBluetooth接続する方法について解説しました。

bluetoothctlを使えばBluetoothデバイスのスキャン、ペアリング、接続、切断などの操作を簡単に行うことができます。

今回の記事が皆さんのプログラミング学習に役立つなら幸いです。

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

]]>
【ラズパイ×家庭菜園】Googleスプレッドシートへの温度記録を自動化してみた https://craft-gogo.com/raspigarden-spread/ Fri, 06 May 2022 05:10:47 +0000 https://craft-gogo.com/?p=2632

家庭菜園で毎日の温度をチェックすることは大切ですが、毎日計測し続けるのは大変ですよね。 今回、Raspberry Piで計測した温度をGoogleスプレッドシートに自動で記録し、インターネット上から確認出来るシステムを構 […]]]>

家庭菜園で毎日の温度をチェックすることは大切ですが、毎日計測し続けるのは大変ですよね。

今回、Raspberry Piで計測した温度をGoogleスプレッドシートに自動で記録し、インターネット上から確認出来るシステムを構築したので、作り方を解説します。

システムは、Raspberry Piで計測した温度データをGoogle Sheets APIを使ってGoogleスプレッドシートに書き込む方法で構築しました。

実際に我が家で運用していますが、温度記録が全自動になって楽ちんです。

この記事はこんな人におすすめ!

  • 家庭菜園で毎日の温度計測を自動化したい人
  • Raspberry Piを家庭菜園に活用したい人

それでは始めましょう!

システム紹介

Raspberry Piは屋外に設置しています。Raspberry Piを防水ケースの中に収め、電源は屋外コンセントから引っ張りました。

ボックスの中にはRaspberry PiとA/Dコンバータが入っています。配線はぐちゃぐちゃですね。

Raspberry Piは家の中のWifiルータと接続し、インターネットにアクセスします。

Raspberry Piを常時ONにしておくと電気代がかかりますので、必要なときにRaspberry Piの電源がONになるようデジタルプログラムタイマーを接続しました。3時間ごとにタイマーが電源をON/OFFします。

温湿度センサ(DHT20)は、ボックス下の穴から外に出しています。ボックス内は機器で熱がこもり、正確な気温が計測できないためです。DHT20はI2C通信でRaspberry Piに温度データを送信します。

土壌湿度センサ(YL-69)もボックスの下穴から外に出し、プランターの土に刺しています。

YL-69は土の水分量に応じて電圧値が変化します。この電圧値をA/Dコンバータがデジタル値に変換して、Raspberry Piへ送信します。

データ計測、Googleスプレッドシート書き込みのプログラムはPythonで書きました。このPythonスクリプトを3時間おきに実行しています。

Googleスプレッドシートがこちら↓

3時間おきの計測データが次々と蓄積されていきます。毎日の気温、湿度、土壌水分量がどのように変化しているかが一目瞭前ですね。

製作方法

システムの製作方法について大まかに解説していきます。それぞれの要素については、別記事で詳細に書いていますので、今回は割愛させて頂きます。

準備したもの

今回のシステム構築には、以下のものを準備しました。

  • Raspberry Pi 3 model B
  • 温湿度センサ DHT20
  • 土壌湿度センサ YL-69
  • A/Dコンバータ MCP3208
  • ブレッドボード
  • ジャンパワイヤ

防水ケース類は上記に含めていません。こちらの記事で防水ケース類を紹介していますので、興味のある方はぜひご覧ください。

https://craft-gogo.com/raspberry-pi-waterproof/

システム構成

Raspberry Piで気温・湿度・土壌水分を計測。Wifi経由でRaspberry Piをインターネットに繋ぎ、Google Drive上のGoogleスプレッドシートに計測データを書き込み。PCやスマホでGoogleスプレッドシートを確認する仕組みです。

回路図

Raspberry PiとDHT20、YL-69、MCP3208との接続方法は下図の通りです。

Pythonサンプルコード

プログラムはPythonで書いています。まずは全コードを載せます。

import spidev
import smbus
import RPi.GPIO as GPIO
import datetime
from time import sleep
import gspread

#Googleスプレッドシート
key_name = '***********.json'
sheet_name = 'temp_data'

Vref = 3.3

# I2C設定
i2c = smbus.SMBus(1)
address = 0x38

set = [0xAC, 0x33, 0x00]

dat = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]

# DHT20データ取得関数
def readTemp():
    # 測定開始
    sleep(0.01)
    i2c.write_i2c_block_data(address, 0x00, set)
    
    # データの読み込み
    sleep(0.08)
    dat = i2c.read_i2c_block_data(address, 0x00, 0x07)
    
    # データ変換
    hum = dat[1] << 12 | dat[2] << 4 | ((dat[3] & 0xF0) >> 4)
    tmp = ((dat[3] & 0x0F) << 16) | dat[4] << 8 | dat[5]
    
    # 物理量変換
    hum = hum / 2**20 * 100
    tmp = tmp / 2**20 * 200 - 50

    return hum, tmp

# 初期チェック
sleep(0.1)
ret = i2c.read_byte_data(address, 0x71)

if ret != 0x18:
    exit

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.HIGH)

spi = spidev.SpiDev()
spi.open(0,0) #port 0,cs 0
spi.max_speed_hz = 1000000 # 1MHz

sleep(10)
aveVolt = 0
aveHum = 0
aveTmp = 0

for i in range(10):
    # YL-69データ取得
    adc = spi.xfer2([0x06,0x00,0x00])
    data = ((adc[1] & 0x0f) << 8) | adc[2]
    volt = Vref*data/4096

    # DHT20データ取得
    hum, tmp = readTemp()

    aveVolt = (aveVolt * i + volt)/(i+1)
    aveHum = (aveHum * i + hum)/(i+1)
    aveTmp = (aveTmp * i + tmp)/(i+1)
    voltStr = "Volt = " + str(aveVolt) + "V"
    humStr = "Humidity = " + str(aveHum) + "%"
    tmpStr = "Temperature = " + str(aveTmp) + "'C"
    
    print (voltStr)
    print (humStr)
    print (tmpStr)
    
    sleep(1)


spi.close()
GPIO.cleanup()
 
#Googleスプレッドシートに書き込み
gc = gspread.service_account(filename= key_name)
 
wks = gc.open(sheet_name).sheet1
rowNum = wks.row_count + 1
wks.add_rows(1)
wks.update_cell(rowNum, 1, str(datetime.datetime.now()))
wks.update_cell(rowNum, 2, str(aveVolt))
wks.update_cell(rowNum, 3, str(aveHum))
wks.update_cell(rowNum, 4, str(aveTmp))

ここからは各要素について解説していきます。

温湿度センサ DHT20から温度・湿度データを取得

DHT20からI2C通信でデータを取得します。下記コードは、DHT20に関する部分の抜粋です。

# I2C設定
i2c = smbus.SMBus(1)
address = 0x38

set = [0xAC, 0x33, 0x00]

dat = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]

# DHT20データ取得関数
def readTemp():
    # 測定開始
    sleep(0.01)
    i2c.write_i2c_block_data(address, 0x00, set)
    
    # データの読み込み
    sleep(0.08)
    dat = i2c.read_i2c_block_data(address, 0x00, 0x07)
    
    # データ変換
    hum = dat[1] << 12 | dat[2] << 4 | ((dat[3] & 0xF0) >> 4)
    tmp = ((dat[3] & 0x0F) << 16) | dat[4] << 8 | dat[5]
    
    # 物理量変換
    hum = hum / 2**20 * 100
    tmp = tmp / 2**20 * 200 - 50

    return hum, tmp

# 初期チェック
sleep(0.1)
ret = i2c.read_byte_data(address, 0x71)

if ret != 0x18:
    exit


# DHT20データ取得
hum, tmp = readTemp()

初期チェック→測定開始→データ読み取り→データ格納→温度・湿度に変換といった流れとなります。

I2C通信にはsmbusライブラリを使用していますので、コード自体はそれほど長くないと思います。

下記の記事でDHT20の使い方を解説していますので、詳しく知りたい方はぜひご覧下さい。

https://craft-gogo.com/raspberry-pi-dht20/

土壌湿度センサ YL-69から土壌湿度データを取得

YL-69はA/Dコンバータ MCP3208を経由してSPI通信でデータ取得しています。下記コードは、YL-69に関する部分の抜粋です。

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.HIGH)

spi = spidev.SpiDev()
spi.open(0,0) #port 0,cs 0
spi.max_speed_hz = 1000000 # 1MHz

# YL-69データ取得
adc = spi.xfer2([0x06,0x00,0x00])
data = ((adc[1] & 0x0f) << 8) | adc[2]
volt = Vref*data/4096

spi.close()
GPIO.cleanup()

spidevライブラリを使用していますので、コード自体はシンプルです。

YL-69は通電し続けると電極が錆びてしまいますので、プログラムが動作していないときはYL-69への通電を停止するよう、最後にGPIO.cleanup()を記述しました。

下記の記事でYL-69の使い方を解説していますので、詳しく知りたい方はぜひご覧下さい。

https://craft-gogo.com/raspberry-pi-yl69/

10秒間の平均データを記録

記録するデータは10秒間の平均値としました。

aveVolt = 0
aveHum = 0
aveTmp = 0

for i in range(10):
    aveVolt = (aveVolt * i + volt)/(i+1)
    aveHum = (aveHum * i + hum)/(i+1)
    aveTmp = (aveTmp * i + tmp)/(i+1)
    voltStr = "Volt = " + str(aveVolt) + "V"
    humStr = "Humidity = " + str(aveHum) + "%"
    tmpStr = "Temperature = " + str(aveTmp) + "'C"
    
    print (voltStr)
    print (humStr)
    print (tmpStr)
    
    sleep(1)

Googleスプレッドシートに計測データを書き込み

計測した温度・湿度・土壌水分量データをGoogle Sheets APIを使ってGoogleスプレッドシートに書き込みます。下記コードは、Googleスプレッドシートへの書き込みに関する抜粋です。

#Googleスプレッドシート
key_name = '***********.json'
sheet_name = 'temp_data'

#Googleスプレッドシートに書き込み
gc = gspread.service_account(filename= key_name)
 
wks = gc.open(sheet_name).sheet1
rowNum = wks.row_count + 1
wks.add_rows(1)
wks.update_cell(rowNum, 1, str(datetime.datetime.now()))
wks.update_cell(rowNum, 2, str(aveVolt))
wks.update_cell(rowNum, 3, str(aveHum))
wks.update_cell(rowNum, 4, str(aveTmp))

「temp_data」というGoogleスプレッドシートを作成し、これに計測データを書き込んでいます。

計測データと合わせて計測時間も書き込みました。

ここで、コードをただ書いたのでは、Googleスプレッドシートにデータを書き込むことは出来ません。

Google Cloud PlatformというGoogleが提供するクラウドコンピューティングサービスでの設定が必要となります。

下記の記事でGoogleスプレッドシートへの書き込み方法を解説していますので、詳しく知りたい方はぜひご覧下さい。

https://craft-gogo.com/python-gspread/

cronでPythonスクリプトを3時間ごとに実行

3時間ごとのGoogleスプレッドシートへの書き込みは、cronを使用する方法を用いました。

ターミナルソフトからcrontabファイルを開き設定します。

crontabファイルは以下のコマンドを打つことで開くことができます。

crontab -e

3時間おきに作成したPythonスクリプトを実行するよう設定しました。

0 */3 * * * /bin/python3 ******.py

下記の記事でcronの使い方を解説していますので、詳しく知りたい方はぜひご覧下さい。

https://craft-gogo.com/raspberrypi-camera-routine/

まとめ

Raspberry Piで計測した温度をGoogleスプレッドシートに自動で記録し、インターネット上から確認出来るシステム構築について解説しました。

実際に我が家で、このシステムを運用しています。温度記録が全自動になり、とても助かっています。

興味を持たれた方は、ぜひ参考にして下さい。

最後までお読み頂きありがとうございました。

]]>
Raspberry Piで計測したデータをLINEで定期的に確認する方法 https://craft-gogo.com/raspberry-pi-line/ Sun, 17 Apr 2022 12:58:16 +0000 https://craft-gogo.com/?p=2277

Raspberry Piで計測したデータがLINEで定期的に送信されてきたら、家庭菜園などデータ管理に便利ですよね。 本記事では、Raspberry Piで計測したデータを「LINE Notify」というサービスを使って […]]]>

Raspberry Piで計測したデータがLINEで定期的に送信されてきたら、家庭菜園などデータ管理に便利ですよね。

本記事では、Raspberry Piで計測したデータを「LINE Notify」というサービスを使ってスマホへ送信。更にcronというLinux機能で定期的に送信実行する方法について解説します。

私は温湿度センサDHT20と土壌湿度センサYL-69を使って、家庭菜園の気温・湿度・土壌水分計測に用いていますので、この例を基に解説していきます。

それでは始めましょう!

準備したもの

  • Raspberry Pi 3 model B
  • 温湿度センサ DHT20
  • 土壌湿度センサ YL-69
  • A/Dコンバータ MCP3208
  • ブレッドボード
  • ジャンパワイヤ

システム構成

Raspberry Piで気温・湿度・土壌水分を計測。Wifi経由でRaspberry Piをインターネットに繋ぎ、LINE Notifyへデータ送信リクエスト。LINE Notifyがスマホへデータを送信する仕組みです。

回路図

Raspberry PiとDHT20、YL-69、MCP3208との接続方法は下図の通りです。

LINE Notifyとは

LINE社が提供しているLINE Notifyを使うとWebサービスからの通知をLINEで受信出来るようになります。

LINE Notifyについては、別記事で解説していますので、本記事ではPythonでのLINE Notifyの使い方を中心に解説します。

https://craft-gogo.com/m5stack-line/

トークンを発行する

LINE Notifyを利用するにはまずトークン発行が必要です。

LINE Notifyのホームページからログインし、トークンを発行しましょう。

PythonでのPOSTメソッドを使ったリクエスト送信方法

POSTメソッドを使って計測データを送信するPythonスクリプトは以下の通りです。

messageに送信したい計測データを設定して下さい。

line_notify_token = '****************************'
line_notify_api = 'https://notify-api.line.me/api/notify'
message = '計測データ'

headers = {'Authorization': 'Bearer ' + line_notify_token}
data = {'message': message}
requests.post(line_notify_api, headers = headers, data = data)

Pythonスクリプト

気温・湿度はDHT20、土壌湿度センサはYL-69を使って計測しています。

import spidev
import smbus
import RPi.GPIO as GPIO
import requests
from time import sleep

#LINE Notify
line_notify_token = '******************************'
line_notify_api = 'https://notify-api.line.me/api/notify'

Vref = 3.3

# I2C設定
i2c = smbus.SMBus(1)
address = 0x38

set = [0xAC, 0x33, 0x00]
dat = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]

# LINEへメッセージを送信する関数
def send_line_message(notification_message):

    headers = {'Authorization': 'Bearer ' + line_notify_token}
    data = {'message': notification_message}
    requests.post(line_notify_api, headers = headers, data = data)

def readTemp():
    # 測定開始
    sleep(0.01)
    i2c.write_i2c_block_data(address, 0x00, set)
    
    # データの読み込み
    sleep(0.08)
    dat = i2c.read_i2c_block_data(address, 0x00, 0x07)
    
    # データ変換
    hum = dat[1] << 12 | dat[2] << 4 | ((dat[3] & 0xF0) >> 4)
    tmp = ((dat[3] & 0x0F) << 16) | dat[4] << 8 | dat[5]
    
    # 物理量変換
    hum = hum / 2**20 * 100
    tmp = tmp / 2**20 * 200 - 50

    return hum, tmp

sleep(0.1)
ret = i2c.read_byte_data(address, 0x71)

if ret != 0x18:
    exit

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.HIGH)

spi = spidev.SpiDev()
spi.open(0,0) #port 0,cs 0
spi.max_speed_hz = 1000000 # 1MHz

sleep(10)
aveVolt = 0
aveHum = 0
aveTmp = 0

for i in range(10):
    adc = spi.xfer2([0x06,0x00,0x00])
    data = ((adc[1] & 0x0f) << 8) | adc[2]
    volt = Vref*data/4096

    hum, tmp = readTemp()

    aveVolt = (aveVolt * i + volt)/(i+1)
    aveHum = (aveHum * i + hum)/(i+1)
    aveTmp = (aveTmp * i + tmp)/(i+1)
    voltStr = "Volt = " + str(aveVolt) + "V"
    humStr = "Humidity = " + str(aveHum) + "%"
    tmpStr = "Temperature = " + str(aveTmp) + "'C"
    print (voltStr)
    print (humStr)
    print (tmpStr)
    sleep(1)

messageStr = voltStr + "\n" + humStr + "\n" + tmpStr
send_line_message(messageStr)

spi.close()
GPIO.cleanup()

DHT20、YL-69の使い方については別記事で解説していますので、ここでは割愛させて頂きます。

https://craft-gogo.com/raspberry-pi-yl69/

https://craft-gogo.com/raspberry-pi-dht20/

cronで3時間おきにPythonスクリプト実行

cronとは、設定したスケジュールに従ってスクリプトを自動実行してくれるデーモン(常駐プログラム)です。「crontab」というコマンドでスケジュールを設定します。
cronの使い方は↓で詳しく解説しています。

https://craft-gogo.com/raspberrypi-camera-routine/

作成したPythonスクリプトを定期的に実行するため、crontabファイルに設定を追加していきます。

crontabファイルは以下のコマンドを打つことで開くことができます。

$ crontab -e

今回は3時間おきにPythonスクリプトを実行するようにしました。

0 */3 * * * /bin/python3 ***.py

これで時間になったらPythonスクリプトが実行されるはずです。

LINEで計測データ受信

スマホのLINE画面です。3時間おきに計測データが受信出来ていますね。

まとめ

Raspberry Piで計測したデータを「LINE Notify」を使ってスマホへ送信。更にcronで定期的に送信実行する方法について解説しました。

私は温湿度センサDHT20と土壌湿度センサYL-69の計測データをスマホで確認するのに活用しています。

興味を持たれた方は是非挑戦してみて下さい。

最後までお読み頂きありがとうございました。

]]>
【Raspberry Pi】温湿度センサDHT20を使った気温・湿度計の作り方 https://craft-gogo.com/raspberry-pi-dht20/ Sat, 16 Apr 2022 05:06:08 +0000 https://craft-gogo.com/?p=2283

家庭菜園などで毎日の気温・湿度データを管理出来たら便利ですよね? 今回はRaspberry Piと温湿度センサDHT20を使った気温・湿度計の作り方について解説します。 準備したもの 回路図 Raspberry Piと温 […]]]>

家庭菜園などで毎日の気温・湿度データを管理出来たら便利ですよね?

今回はRaspberry Piと温湿度センサDHT20を使った気温・湿度計の作り方について解説します。

こんな人におすすめ!

  • Raspberry Piを活用したい人
  • 温湿度センサの使い方を知りたい人
  • 電子工作初心者の人

準備したもの

  • Raspberry Pi 3 model B
  • 温湿度センサ DHT20
  • ジャンパワイヤ メス-メス
DHT20

回路図

Raspberry Piと温湿度センサDHT20の接続方法は図表の通りです。

DHT20はI2C通信でデータをやり取りできるため、A/Dコンバータは不要となりシンプルですね。

Raspberry PiDHT20
1: 3.3V1: VDD
3: SDA2: SDA
6: GND3: GND
5: SCL4: SCL

温湿度センサ DHT20の仕様

DHT20の仕様は下表の通りです。

測定間隔2秒毎
湿度分解能0.024%RH
湿度精度±3%RH
温度測定範囲-40~80℃
温度分解能0.01℃
温度精度±0.5℃
I2Cアドレス0x38

詳細仕様はデータシートを参照下さい。データシートにはI2C通信方法も記載されています。

サンプルプログラム

まずプログラム全体を記載します。

プログラムは、初期チェック→測定開始→データ読み取り→データ格納→温度・湿度に変換といった流れです。

import smbus
import time

i2c = smbus.SMBus(1)
address = 0x38

trigger = [0xAC, 0x33, 0x00]

dat = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]

#初期チェック
time.sleep(0.1)
ret = i2c.read_byte_data(address, 0x71)

if ret != 0x18:
    exit

try:
    while True:
        #測定開始
        time.sleep(0.01)
        i2c.write_i2c_block_data(address, 0x00, trigger)
        
        #データ読み取り
        time.sleep(0.08)
        dat = i2c.read_i2c_block_data(address, 0x00, 7)
        
        #データ格納
        hum = dat[1] << 12 | dat[2] << 4 | ((dat[3] & 0xF0) >> 4)
        tmp = ((dat[3] & 0x0F) << 16) | dat[4] << 8 | dat[5]
      
        #湿度変換  
        hum = hum / 2**20 * 100
        #温度変換
        tmp = tmp / 2**20 * 200 - 50
        
        print("Humidity: " + str(hum) + "%")
        print("Temperature: " + str(tmp) + "V")
        
        time.sleep(2) 

except KeyboardInterrupt:
    pass

それぞれの処理について解説していきましょう!

初期チェック

time.sleep(0.1)
ret = i2c.read_byte_data(address, 0x71)

if ret != 0x18:
    exit

DHT20に電力供給してから0.1秒後、DH20に「0x71」を送信します。

DHT20から「0x18」が返信されたら初期チェック完了です。

もしDHT20から「0x18」が返ってこなかったらプログラムを終了するようにしました。

測定開始

trigger = [0xAC, 0x33, 0x00]

time.sleep(0.01)
i2c.write_i2c_block_data(address, 0x00, trigger)

10ms待ってから「0xAC」を送信し、温度・湿度の測定を開始します。このパラメータは2バイトで、1バイト目は「0x33」、2バイト目は「0x00」を設定します。

温度、湿度データの読み取り

time.sleep(0.08)
dat = i2c.read_i2c_block_data(address, 0x00, 7)

80ms待ち、温度・湿度測定が完了したら、データを読み取ります。読み取りデータは7バイトです。

湿度データの格納

hum = dat[1] << 12 | dat[2] << 4 | ((dat[3] & 0xF0) >> 4)

湿度データは2バイト目、3バイト目、4バイト目の上位4ビットです。

よって2バイト目のデータを12ビット分左へシフト、3バイト目のデータを4ビット分左へシフト、4バイト目の上位4ビットを4ビット分右へシフトし論理和(OR)演算することで湿度データを繋げることができます。

温度データの格納

tmp = ((dat[3] & 0x0F) << 16) | dat[4] << 8 | dat[5]

温度データは4バイト目の下位4ビット、5バイト目、6バイト目です。

湿度データ同様、4バイト目の下位4ビットを16ビット分左へシフト、5バイト目のデータを8ビット分左へシフト、6バイト目を論理和(OR)演算することで温度データを繋げることができます。

湿度・温度変換

hum = hum / 2**20 * 100
tmp = tmp / 2**20 * 200 - 50

データシートに記載されている通り湿度・温度を変換します。

実際に気温・湿度を計測してみよう

プログラムを実行すると2秒置きに湿度と温度がターミナルに表示されます。

まとめ

Raspberry Piと温湿度センサDHT20を使った気温・湿度計の作り方について解説しました。

気温・湿度を計れるようになったことで、家庭菜園などで毎日の気温・湿度データを管理出来、便利でになりました。

最後までお読み頂きありがとうございました。

]]>
Raspberry Piを屋外でも使用出来るように防水処置 https://craft-gogo.com/raspberry-pi-waterproof/ Sun, 10 Apr 2022 00:16:28 +0000 https://craft-gogo.com/?p=2249

以前の記事でRaspberry Piと土壌湿度センサで植物の水やりタイミングを分かるシステムを作りました。 しかし、防水処置をしていなかったので、実際の運用には至っていませんでした。 今回、Raspberry Piを防雨 […]]]>

以前の記事でRaspberry Piと土壌湿度センサで植物の水やりタイミングを分かるシステムを作りました。

https://craft-gogo.com/raspberry-pi-yl69/

しかし、防水処置をしていなかったので、実際の運用には至っていませんでした

今回、Raspberry Piを防雨ケースに収めて、屋外でRaspberry Piを使用し始めたので記事にします。

Raspberry Piを屋外で使用したいと考えている人は是非参考にして下さい!

準備したもの

  • 未来工業 プラスチック製防雨ウォルボックス WB-12AK
  • Raspberry Pi 3 Model B
  • ブレッドボード
  • A/Dコンバータ MCP3208
  • 土壌湿度センサ YL-69
  • Revex コンセント タイマー スイッチ式 簡単デジタルタイマー PT70DW
  • 防雨型延長コード
  • 角型コンセント
  • グロメット
  • バスボンド

購入したもののリンク先を載せておくので参考にして下さい。

屋外設置のポイント

AC100V電源の引き込み

私の自宅は屋外に100V電源を設置していますので、そこから電源を確保します。

防雨ケース内に防雨型延長コードを直接引き込もうとしたのですが、引き込み穴よりプラグ穴部の方が大きく通せない・・・。

しょうがないので一旦切断し、角型コンセントに直接接続しました。

この処置は電気工事士資格を持っていないと出来ませんので注意して下さい!

私は資格所持者なので大丈夫ですよー。

デジタルタイマーの設置

土壌湿度は数時間に1回しか計測しない予定なので、Raspberry Piを常時電源ONしておくと電気代がもったいない。

しかし、Raspberry Piはネットワークを通じて起動するWake On LAN機能はありません。

どうしようかと色々検索していると電源ON/OFF時間をプログラム出来る便利なタイマーがありました。

ONの時刻、OFFの時刻をそれぞれ14個登録出来ます。

1時間ごとに電源ON/OFFは出来ないですが、2時間ごとなら出来ます。

もともと3時間ごとに土壌湿度や外気温を計測する予定だったので、これに決めました。

電子機器の配置

購入した防雨ケースは縦302×横332×深さ150の大きさです。

届いたときはデカすぎるの買ってしまったと思いました。

案の定、Raspberry Pi、電子部品を配置してもスカスカです。

これからもシステム増強していく予定ですので、これぐらいの大きさでも良かったかな。

土壌湿度センサ配線の取り出し

土壌湿度センサの配線もAC100V同様、下壁の穴を通しました。

土壌湿度センサの防水処置

土壌湿度センサは端子がむき出しだったので、ホームセンターで購入したバスボンドで端子部を覆いました。

こんなテキトーな処置で良いのかな?

土壌湿度センサは5個入りを購入して予備はたくさんあるので、これでダメだったら考えます。

運用状況

最近いちごを育てているので、いちご鉢の土の乾き具合を計測し始めました。

水やりをすると土壌湿度センサYL-69は1Vを下回って、乾いてくると1Vを上回ってきます。

水やりタイミングの閾値は1Vぐらいかな。データを集めて様子を見たいと思います。

まだ定期的に自動計測するプログラムは作っていません。

今のところ屋内からRaspberry Piにアクセスし、プログラムを実行して土壌湿度を計測しています。

早いところ自動計測プログラムを作らなきゃ。

まとめ

Raspberry Piを防雨ケースに収めて、屋外でRaspberry Piを運用した内容について記事にしました。

Raspberry Piが雨風に当たることはないので安心です。

ただ屋内より屋外の方が確実に気温・湿度条件は厳しい。Raspberry Piの耐久性は大丈夫なのだろうか?

実際に運用して確かめていきたいと思います。

Raspberry Piを屋外で使用したい人は是非参考にして下さいね!

最後までお読み頂きありがとうございました。

]]>
【Raspberry Pi】土壌湿度センサを使って植物の水やりタイミングを知ろう https://craft-gogo.com/raspberry-pi-yl69/ Sat, 09 Apr 2022 00:58:10 +0000 https://craft-gogo.com/?p=2228

家庭菜園などで土が乾きそうなのを知らせてくれて、水やりタイミングが分かったら便利ですよね。 今回、土壌湿度センサYL-69を購入して、土壌の水分量を検知するシステムを製作したので作り方を解説しちゃいます。 準備したもの […]]]>

家庭菜園などで土が乾きそうなのを知らせてくれて、水やりタイミングが分かったら便利ですよね。

今回、土壌湿度センサYL-69を購入して、土壌の水分量を検知するシステムを製作したので作り方を解説しちゃいます。

こんな人におすすめ!

  • 家庭菜園にRaspberry Piを活用したい人
  • 土壌湿度センサの使い方を知りたい人

準備したもの

  • Raspberry Pi 3 Model B
  • 土壌湿度センサ YL-69
  • A/Dコンバータ MCP3208
  • ブレッドボード
  • ジャンパワイヤ

土壌湿度センサ YL-69

今回使用した土壌湿度センサ YL-69はプローブと電子基板で構成されています。

一般的に土壌の水分量が多いと抵抗値が下がります。この原理を利用して土壌水分量を検出する仕組みです。

電子基板には4本の端子があり、端子の説明は以下の通りです。

VCC3.3~5Vを供給
GNDグランド
D0デジタル出力: 水分量が多いと1を出力。ポテンショメータを回すことで閾値を変化出来る。
A0アナログ出力: 水分量が多いほど値は小さくなる。

回路図

YL-69のアナログ出力(A0)とMCP3208のアナログ入力を接続します。そして、MCP3208とRaspberry PiをSPI接続する回路構成です。

YL-69への通電を制御出来るようVCC端子はRaspberry PiのGPIO端子と接続しています。

Raspberry PiMCP3208YL-69
1: 3.3V15: VREF
16: VDD
6: GND14: AGNDGND
11: GPIO17VCC
19: SPI0 MOSI11: DIN
21: SPI0 MOSO12: DOUT
23: SPI0 SCLK13: CLK
24: SPI0 CE010: CS/SHDN
1: CH0A0

サンプルプログラム

YL-69のアナログ出力値を計測するサンプルプログラムです。

import spidev
import RPi.GPIO as GPIO
from time import sleep
Vref = 3.3

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.HIGH)

spi = spidev.SpiDev()
spi.open(0,0) #port 0,cs 0
spi.max_speed_hz = 1000000 # 1MHz

try:
    while True:
        adc = spi.xfer2([0x06,0x00,0x00])
        data = ((adc[1] & 0x0f) << 8) | adc[2]
        print (str(Vref*data/4096) + "V")
        sleep(1)

except KeyboardInterrupt:
    pass

spi.close()
GPIO.cleanup()

Raspberry PiとMCP3208はSPI通信します。自力でSPI通信プログラムを作るのは大変なので、spidevライブラリを使用しています。

MCP3208の使い方は別記事で紹介していますので、ここでは割愛させて頂きます。

https://craft-gogo.com/raspberrypi-adconverter/

YL-69は通電し続けると電極が錆びてしまいますので、プログラムが動作していないときはYL-69への通電を停止するよう、最後にGPIO.cleanup()を記述しています。

水分量を検出可能かテスト

まずは台上で水分量を検出可能かテストです。

水に付けていない状態では3.2Vを示しました。

全て水に付けると1.3V。半分ぐらい水に付けると1.6Vでした。

うまく水分量を検出出来てそうです。

土壌湿度を計測してみよう

台上テストが完了したので、実際の土でテストです。

まだ機器や配線がむき出しなので、屋外での使用は難しいです。

実際に運用していくには、防水対策が必要ですね。

まとめ

土壌湿度センサYL-69で土壌の水分量を検知するシステムを製作したので作り方を解説しました。

まだRaspberry Piにアクセスしなければ土が乾いているか確認出来ないので、水やりタイミングを自動で知らせてくれるにはシステムの改良が必要です。

また、実際の運用には防水対策が必須です。

今後システム改良したら紹介したいと思います。

以上、最後までお読み頂きありがとうございました。

]]>
【Raspberry Pi】リモートSSH接続でPCのVSCodeからpythonプログラミング https://craft-gogo.com/raspberry-pi-remote-ssh/ Wed, 06 Apr 2022 03:44:48 +0000 https://craft-gogo.com/?p=2190

普段Visual Studio Code(VSCode)でプログラミングしている人は、Raspberry PiのPythonプログラミングでもVSCodeを使いたいですよね? PCのVSCodeでPythonコードを書い […]]]>

普段Visual Studio Code(VSCode)でプログラミングしている人は、Raspberry PiのPythonプログラミングでもVSCodeを使いたいですよね?

PCのVSCodeでPythonコードを書いて、Raspberry Piに転送。ターミナルソフトでSSH接続してPythonプログラムを実行している人も中にはいるのではないでしょうか。実際、私がそうでした。

VSCodeのRemote-SSHという拡張機能を使えば、コード作成からプログラム実行までVSCodeで完結でき、PCからRaspberry Piへのファイル転送作業から解放されます。

今回はVSCodeのRemote-SSHについてインストール方法から使い方まで解説します。

Remote-SSHのインストール

VSCode上からRaspberry PiにSSH接続するためにRemote-SSHという拡張機能を使います。拡張機能からRemote – SSHを検索し、インストールしましょう。

Configファイルの設定

Remote-SSHがインストールされましたら、Raspberry Piに接続させるための設定です。

画面左タブにあるリモートデスクトップボタンを選択し、現れたConfigureボタンを選択しましょう。

Configファイル選択ウィンドウが表示されるのでUsers下のconfigファイルを選択し、中身を編集していきます。

下図の例にならって、自分の環境に合わせてconfigファイルを編集します。

HostはVSCodeでの表示名です。自分にとって分かりやすい名前を付けましょう。

HostName、User、PortはRaspberry Piで設定した値にします。

IdentityFileは鍵認証方式にしていたら、秘密鍵の保存先を指定。

configファイルを設定しますとリモートエクスプローラーにHostが表示されましたでしょうか。

右クリックし、Connect to Host in Current Windowを選択します。

SSH接続パスワード入力を求められますので入力しましょう。

画面左下にHostが表示されたら、SSH接続完了です。

Raspberry Pi Zeroは、Remote-SSH非対応なので注意。

保存フォルダを開く

Pythonコードを作成するために、コードを保存するフォルダを開きます。エクスプローラーからフォルダーを開くを選択します。

好きな保存場所を選択しましょう。

エクスプローラーに保存フォルダが表示されればOK。

Pythonコードの作成

Pythonファイルを作成するには、New Fileボタンをクリックし、ファイル名を設定します。

ここでは、HelloWorld.pyとしました。

サンプルとしてターミナルに「Hellow World」と表示されるプログラムを作成。

プログラム実行

pythonプログラムを実行するには、エディタ右上のRun Python Fileボタンをクリックします。

ターミナルに「Hellow World」が出力されました。

まとめ

VSCodeのRemote-SSHについてインストール方法から使い方までの解説でした。

Remote-SSHを使うことで、コード作成からプログラム実行までをVSCodeで完結できるので、Raspberry PiでのPythonプログラム開発もこれではかどりますね。

最後までお読み頂きありがとうございました。

]]>
Raspberry PiのSSH接続を鍵認証方式にしてセキュリティを高めよう! https://craft-gogo.com/raspberry-pi-key/ Tue, 05 Apr 2022 13:27:30 +0000 https://craft-gogo.com/?p=2176

Raspberry PiのSSH接続、まだパスワード認証になっていませんか? 安全にSSH接続するには、公開鍵認証方式にするべきです。 今回、Raspberry PiのSSH接続をパスワード認証から公開鍵認証に変更する方 […]]]>

Raspberry PiのSSH接続、まだパスワード認証になっていませんか?

安全にSSH接続するには、公開鍵認証方式にするべきです。

今回、Raspberry PiのSSH接続をパスワード認証から公開鍵認証に変更する方法について解説します。

また、更にセキュリティを強化するため、ポート番号も変更しちゃいましょう!

TeraTermで公開鍵、秘密鍵の生成

公開鍵、秘密鍵を生成する方法はいくつかありますが、今回は私が簡単だと思うTeraTermを使った方法を紹介します。

TeraTermウィンドウの「設定」->「SSH鍵生成」を選択すると次の画面が表示されます。

鍵の種類はRSAを選択し、生成ボタンを押しましょう。

次に鍵のパスフレーズを入力し、「公開鍵の保存」、「秘密鍵の保存」ボタンを押し、鍵ファイルを保存します。

これだけで公開鍵、秘密鍵の生成は完了です!簡単ですね。

公開鍵をRaspberry Piに登録する

次に公開鍵をRaspberry Piに保存します。

保存はTeraTermのSCP転送機能を使うと楽ちんです。

SCP転送機能はTeraTermウィンドウに公開鍵ファイルをドラッグ&ドロップするだけ。

以下の画面が現れますのでOKを押しましょう。Raspberry Piのホームディレクトリに公開鍵ファイルが保存されます。

公開鍵をRaspberry Piに保存したら名前をauthorized_keysに変更し.sshディレクトリに移動します。

$ mv id_rsa.pub .ssh/authorized_keys

所有者がauthorized_keysを実行出来るよう.sshのパーミッションを変更しておきます。

$ chmod 700 .ssh

SSHの設定変更

SSHの設定ファイルsshd_configを変更し、パスワード認証から公開鍵認証にします。

まず、念のためsshd_configをバックアップしておきます。

$ cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup

続いてsshd_configのファイル書き換え作業です。

$ sudo nano /etc/ssh/sshd_config

以下のようにポート番号変更、公開鍵ファイルの指定、パスワード認証を無効化します。

#Port 22
Port XX 

AuthorizedKeysFile %h/.ssh/authorized_keys

#PasswordAuthentication yes
PasswordAuthentication no

これで公開鍵認証に変更されたはずです。

SSHサーバー再起動

最後にSSHサーバーを再起動しましょう。

$ sudo /etc/init.d/ssh restart

TeraTermでSSH接続

パスワード認証から鍵認証に変更したので、TeraTermのSSH接続方法が変わります。

まず、TCPポート欄に設定したポート番号を入力します。

次の表示に進んだらパスフレーズに鍵生成時に設定したパスワードを入力します。

そして、秘密鍵を指定する流れです。

SSH接続出来たでしょうか?

まとめ

Raspberry PiのSSH接続をパスワード認証から公開鍵認証に変更する方法について解説しました。

安全にSSH接続するために、公開鍵認証方式にしましょう!

最後までお読み頂きありがとうございました。

]]>
【Raspberry Pi】新規ユーザーを追加してセキュリティを高めよう https://craft-gogo.com/raspberry-pi-newuser/ Sun, 03 Apr 2022 12:39:11 +0000 https://craft-gogo.com/?p=2157

Raspberry Piを使うにあたってPiユーザーのままではセキュリティ面で不安だと思います。 自分独自のユーザーを追加して、Piユーザーは無効にしちゃいましょう! piユーザーの所属グループを調べる 新規ユーザーにも […]]]>

Raspberry Piを使うにあたってPiユーザーのままではセキュリティ面で不安だと思います。

自分独自のユーザーを追加して、Piユーザーは無効にしちゃいましょう!

piユーザーの所属グループを調べる

新規ユーザーにもpiユーザーと同じグループに所属させたいです。

まず、piユーザーのグループを覚えておきます。

$ groups

とコマンドを打つと

pi adm dialout cdrom sudo audio video plugdev games users input netdev lpadmin gpio i2c spi

とpiユーザーが所属しているグループが返ってきますので、これらを覚えておきます。

新規ユーザー追加

次に自分独自のユーザー名を追加しましょう。ここでは追加するユーザー名をnewuserとします。

$ sudo  adduser newuser

パスワード設定を求められますので新しいパスワードを入力します。

その次に「Full Name」、「Room Number」、「Work Phone」、「Home Phone」、「Other」の設定を求められます。

これらはすべて空白でEnterすればOK。

新規ユーザーのグループ設定

覚えておいたpiユーザーのグループと同じグループに新規ユーザーを所属させましょう。

$ sudo usermod -aG adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,lpadmin,gpio,i2c,spi newuser

グループ引数は「,」で区切ります。最後の引数は「newuser」となることに注意して下さい。

piユーザーのホームディレクトリをコピー

新規ユーザーを追加したらホームディレクトリもコピーしておきましょう。

$ sudo cp -r /home/pi/* /home/newuser

オートログインユーザーの変更

新規ユーザーを追加しましたが、このままではRaspberry Piを起動するたびにpiユーザーになってしまいます。そこでオートログインユーザーを変更しましょう。

オートログインユーザーの変更は、lightdm.confファイルの内容を修正します。

$ sudo nano /etc/lightdm/lightdm.conf

ファイルを開いたら

autologin-user=pi

の行を見つけて下さい。「pi」を「newuser」に変更。

autologin-user=newuser

続いてautologin@.serviceファイルも変更します。

sudo nano /etc/systemd/system/autologin@.service

でファイルを開いたら、次の行を探して下さい。

ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM

「pi」を「newuser」に変更します。

ExecStart=-/sbin/agetty --autologin newuser --noclear %I $TERM

これでRaspberry Pi起動時は「newuser」でログインされます。

piユーザーの無効化

最後にpiユーザーを無効化しましょう。この作業移行はpiユーザーではRaspberry Piを操作出来なくなるので注意して下さい。

sudo usermod --expiredate 1 pi

以上で新規ユーザー追加及び設定は完了です。

まとめ

以上、セキュリティを強化するため新規ユーザーを追加し、piユーザーを無効化する方法についての解説でした。

最後までお読み頂きありがとうございました。

]]>
Raspberry Pi + OpenMediaVaultでDLNAサーバーを構築してみた https://craft-gogo.com/raspberry-pi-omv-dlna/ Sun, 13 Feb 2022 02:02:45 +0000 https://craft-gogo.com/?p=1670

家族の音楽、写真、動画ファイルが各個人のPC、スマホにばらばらに保管されていて、いざ音楽を聴いたり、写真、動画を見たいというときに面倒なことありませんか? 前回の記事では、Raspberry PiとOpenMediaVa […]]]>

家族の音楽、写真、動画ファイルが各個人のPC、スマホにばらばらに保管されていて、いざ音楽を聴いたり、写真、動画を見たいというときに面倒なことありませんか?

前回の記事では、Raspberry PiとOpenMediaVaultでPCやスマホからアクセス出来るNASサーバーを構築しました。

今回は、更にOpenMediaVaultにDLNAサーバープラグインを追加して、PC、スマホだけでなく、テレビ、ゲーム機器などからもNASサーバーにアクセスする方法を解説していきます。

私は、これによってPS3(PS5時代に古くてごめんなさい)からNASサーバーにアクセスしています。家族で撮った写真や動画をテレビの大画面で見ることが出来て、大変便利です!

こんな人に読んでもらいたい

  • ネットワークの知識を深めたい人
  • Raspberry PiでNAS構築している人

システム構成

準備するもの

  • Raspberry Pi 3 Model B (OpenMediaVaultの公式HPでは、4が推奨です)
  • USB HDD
  • ルーター

システム図

RaspberryとルーターはLANで繋げます。Raspberry PiとHDDはUSBで繋げます。

PCやスマホ、その他AV機器からルーター→Raspberry Pi経由でHDDにアクセスする構成です。

DLNAサーバー構築方法

OpenMediaVaultにDLNAサーバープラグイン「openmediavault-minidlna」をインストールし、必要事項を設定することで、DLNAサーバーが構築出来ます。

DLNAとは

DLNAとは「Digital Living Network Alliance」の略で、家庭内LANを使って、PC、スマホ、テレビ、ゲーム機器などを接続し、音楽、写真、動画をやりとりできるようにするガイドラインです。

DLNAサーバーを構築するにはDLNAサーバーソフトウェアが必要となります。

OpenMediaVaultには、Linux系の代表的なDLNAサーバーソフトウェアであるMiniDLNAを使用出来るプラグイン「openmediavault-minidlna」をインストールすることが出来ます。

openmediavault-minidlnaプラグインのインストール

MiniDLNAでDLNAサーバーを構築するために、OpenMediaVaultに「openmediavault-minidlna」プラグインをインストールします。

システム > プラグインを選択し、openmediavault-minidlnaを検索します。見つかったらインストールボタンを押し、インストールを開始します。

インストールが完了するとサービスにMiniDLNAが追加されます。

MiniDLNAの有効化

デフォルトではMiniDLNAが有効になっていないので、有効のチェックボックスをONにしましょう。

共有フォルダ設定

共有するフォルダを設定します。サービス > MiniDLNA > 共有を選択し、作成アイコンをクリックします。

共有するフォルダを選んでください。

コンテンツタイプをクリックし、共有するメディアを選びましょう。選んだら保存ボタンを押して共有フォルダ設定完了です。

これでDLNAサーバーへアクセスする準備が整いました!

DLNAサーバーへのアクセス方法

Windowからのアクセス例

私は、Windows Media Playerで音楽を聴くのに利用しています。Windows Media Playerは、DLNAクライアント機能を持っていますので、下図のようにNASに保存されている音楽を再生することが出来ます。

ゲーム機器からのアクセス例

私は、PS3(PS5時代に古くてごめんなさい)から動画ファイルにアクセスし、家族で撮った動画を大画面で見ています。下図のようにDLNAサーバーが表示されます。

まとめ

今回は、OpenMediaVaultにDLNAサーバープラグインを追加して、PC、スマホだけでなく、テレビ、ゲーム機器などからもNASサーバーにアクセスする方法を解説しました。

DLNA構築のおさらいをしますと

  • openmediavault-minidlnaプラグインのインストール
  • MiniDLNAの有効化
  • 共有フォルダ設定

でした。

DLNAサーバーを構築することによって、家族の音楽、写真、動画ファイルがゲーム機器などでも聴く、見ることが出来るようになり、大変便利です!

是非、ネットワークの知識を深めたい方や、既にRaspberry PiでNASサーバーを構築している方は、DLNAサーバーを構築してみて下さい。

最後までお読み頂きありがとうございました。

]]>