屋外でラズパイの動作を確認したい時には、abc744の方法でノートパソコンやスマホで可能だが、トラブル時などでネットが利用できない場合には、HDMIモニターに繋ぎたいことがある。そこで、HDMI入力がある”SC7J-1-JP”(Kuman製、\6.260、7インチ、ACアダプター付き)を入手した。1024x600の解像度であるが、ラズパイのモニターには十分である。
このモニターは車載用にも対応しており、電源はDC12Vなので、USBバッテリーでも使えないかと、USB入力でDC12または9Vの出力ができる「USBブースターモジュール電圧変換器」(XYmart、\1,099、最大2A)を入手し、abc745で紹介した一致するアダプタープラグを使い、ディスプレィに接続してみたところ、5V/2A出力のUSBバッテリーで利用できた。
![]() |
![]() |
| SC7J-1-JPモニターと USB電圧変換器(5→12V) |
USB電池とSC7J-1-JPで ラズパイ画面を表示 |
PHPにはMySQLを操作する以下の命令が用意されている。
| データーベースの全内容参照例 sql_acc.php(zip) | |
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>食品データ</title>
</head>
<body>
<?php
$db_name='test';
$con = mysql_connect('localhost');
if (!$con) {
die('MySQLに接続できませんでした。<br>');
}
print("MySQLに接続しました。\n\n");
$result = mysql_select_db($db_name, $con);
if (!$result) {
die($db_name . ':データベースを選択できませんでした。<br>');
}
print('<p>' . $db_name . ':データベースを選択しました。</p>');
$result = mysql_query('SELECT * FROM food', $con);
while ($data = mysql_fetch_array($result)) {
print($data['no'] . ' : ' . $data['kind'] . ' : ' . $data['name'] . '<br>');
}
$con = mysql_close($con);
if (!$con) {
die('<p>MySQLとの接続を閉じられませんでした。</p>');
}
echo '<p>MySQL(',$db_name,'データベース)との接続を終了しました。</p>';
?>
</body>
|
データーベースWEBアクセス例 |
※printは「.」(ピリオド)で、echoは「,」(カンマ)でデータを区切る(括弧無し)。
※表示文字列は通常は「'」(引用符)で囲むが、「"」(2重引用符)を用いると、「\n」で改行できる。
※die()はexit()と同じ関数
カソードコモンのフルカラーLEDをGUI画面で制御する。GUIツールとしてpythonでよく使われているtkinterを利用する。3色のLEDの明るさを変えるには、PWM制御によりデューティ比を変えることで実現する。
![]() |
![]() |
| IDLE画面例 | この画面が出ればOK |
| tkintertest.py | |
from tkinter import *
from tkinter import ttk
def foo():
print('Hello, %s!' % t.get())
root = Tk()
root.title('My First App')
frame1 = ttk.Frame(root)
label1 = ttk.Label(frame1, text='Your name:')
t = StringVar()
entry1 = ttk.Entry(frame1, textvariable=t)
button1 = ttk.Button(frame1, text='OK', command=foo)
frame1.grid(row=0,column=0,sticky=(N,E,S,W))
label1.grid(row=1,column=1,sticky=E)
entry1.grid(row=1,column=2,sticky=W)
button1.grid(row=2,column=2,sticky=W)
for child in frame1.winfo_children():
child.grid_configure(padx=5, pady=5)
root.mainloop()
|
tkintertestの実行例 |
| Frame | ウィジットを格納する枠を作る | Scrollbar | スクロールバーを作る |
| Lable | 文字列やイメージを表示 | Listbox | リストボックスを作る |
| Message | 複数行の文字列の表示 | Menu | メニューを作る |
| Button | ボタンを作る | Menubutton | メニューボタンを作る |
| Checkbutton | チェックボタンを作る | Scale | スケールを作る |
| Radiobutton | ラジオボタンを作る | Text | テキストの入力と編集 |
| Labelframe | ラベル付きフレームを作る | Spinbox | スピンボックスを作る |
| Entry | 1行の文字列の入力と編集 | Bitmap | ビットマップを作る |
| Combobox | コンボボックスを作る | Canvas | キャンバスを作る |
<PWMの使い方>
4.カラーLED制御
3つのスライドバーを動かすことでLEDの色の明るさを調節できる。
| web_color.py |
from tkinter import *
import RPi.GPIO as GPIO
import time
red_pin = 17
grn_pin = 27
blu_pin = 22
GPIO.setmode(GPIO.BCM)
GPIO.setup(red_pin, GPIO.OUT)
GPIO.setup(grn_pin GPIO.OUT)
GPIO.setup(blu_pin, GPIO.OUT)
pwmRed = GPIO.PWM(red_pin, 500)
pwmRed.start(100)
pwmGreen = GPIO.PWM(grn_pin, 500)
pwmGreen.start(100)
pwmBlue = GPIO.PWM(blu_pin, 500)
pwmBlue.start(100)
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack() # メインフレームを表示
Label(frame, text='Red').grid(row=0, column=0) # 赤ラベル
Label(frame, text='Green').grid(row=1, column=0) # 緑ラベル
Label(frame, text='Blue').grid(row=2, column=0) # 青ラベル
scaleRed = Scale(frame, from_=0, to=100,
orient=HORIZONTAL, command=self.updateRed)
scaleRed.grid(row=0, column=1) # 赤スケールバー表示
scaleGreen = Scale(frame, from_=0, to=100,
orient=HORIZONTAL, command=self.updateGreen)
scaleGreen.grid(row=1, column=1) # 緑スケールバー表示
scaleBlue = Scale(frame, from_=0, to=100,
orient=HORIZONTAL, command=self.updateBlue)
scaleBlue.grid(row=2, column=1) # 青スケールバー表示
def updateRed(self, duty): # 赤スケール変更時
pwmRed.ChangeDutyCycle(float(duty))
def updateGreen(self, duty): # 緑スケール変更時
pwmGreen.ChangeDutyCycle(float(duty))
def updateBlue(self, duty): # 青スケール変更時
pwmBlue.ChangeDutyCycle(float(duty))
root = Tk()
root.wm_title('RGB LED Control')
app = App(root)
root.geometry("275x150+0+0")
root.mainloop()
|
![]() |
![]() |
| フルカラーLED表示 | web制御画面 |
![]() |
![]() |
![]() |