車のバッテリーが上がってエンジンを起動できないことがありませんか?
他の車を近づけ、ブースターケーブルをつないで、起動させる方法が一般的ですが、近くにお願いできる車がいない場合は大変です(JAFにお願いしても直ぐには来ません)。
そこで、便利なのが「ジャンプスターター」と呼ばれる、大電流出力が可能な充電式バッテリーです。普通車の2.5Lで300A、3Lで500A程度あればエンジン始動できるといわれているので、Beatit(容量:10800mA、最大出量:500A、\4,399)を購入した。Beatitは小型で、3Lガソリン車、2,5Lディーゼル車、オートバイ、ボートなど、さらに急速充電規格のQC3.0にも対応している。充電はUSBで行い、出力にUSB-A,-C端子(2A)もあり、LEDライト付モバイルバッテリーとしても使うことが出来る。いざという時のため、ジャンプスターターは車に常備しておくべき一品です。
ジャンプスターター (要充電50%以上) |
裏は黒色のツートーンカラー (ケーブルは車印の所に差込) |
車のバッテリーに接続 |
PHP(XAMPP)はデータベースを以下の様にMySQLを使って簡単に扱うことができる。
phpMyAdmin画面 | デーブル作製画面 | 登録データ例 |
SQLコマンド入力画面 | phpMyAdminでデータ入力 | 入力したデータ例 |
※正規表現の表現法(抜粋)
.(ピリオド) | 不明な1文字 | ^(ハット) | 先頭の文字列 |
*(アスタリスク) | 不明な文字列(無くても) | $(ドル) | 行末の文字列 |
[0-9a-z] | 範囲の1文字 | +(プラス) | 文字の繰り返し |
[^a-c] | 範囲外の1文字 | |(パイプ) | いずれかの文字列 |
?(クエスチョン) | 文字が無いか1文字ある | {n} | n個以上の文字 |
※コマンドラインのほか、phpMyAdminでブラウザからもMySqlを操作することができる。
ラズパイでGPIOを制御できることが判ったが、web画面上からGPIOの制御を行いたい。Pythonでwebフレームワークを使うにはdjangoやFlaskなど様々なツールがあるが、本悪的な用途には適さないがコンパクトなbottleを使う。(https://code-examples.net/ja/docs/bottle~0.12/indexなど参照)
モジュールリストの中にbottle | <hello.py> | web画面例 |
WEB制御画面 | 3LED点灯実行例 | 応答webページの HTMLファイルのソース例 |
web_controle.py |
from bottle import route, run import RPi.GPIO as GPIO host = '192.168.1.40' # localは0.0.0.0 GPIO.setmode(GPIO.BCM) led_pins = [17, 27, 22] led_states = [0, 0, 0] switch_pin = 23 GPIO.setup(led_pins[0], GPIO.OUT) GPIO.setup(led_pins[1], GPIO.OUT) GPIO.setup(led_pins[2], GPIO.OUT) GPIO.setup(switch_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) def switch_status(): state = GPIO.input(switch_pin) if state: return 'Up' else: return 'Down' def html_for_led(led): # ボタンが押されれたら・・ l = str(led) result = " <input type='button' onClick='changed(" + l + ")' value='LED " + l + "'/>" return result def update_leds(): # LEDへ出力する関数 for i, value in enumerate(led_states): GPIO.output(led_pins[i], value) @route('/') @route('/<led>') # webから送られてくるLED番号により処理 def index(led="n"): print(led) if led != "n": led_num = int(led) led_states[led_num] = not led_states[led_num] update_leds() response = "<script>" response += "function changed(led)" response += "{" response += " window.location.href='/' + led" # 押されたLED番号を付けてルートを指定 response += "}" response += "</script>" response += '<h1>GPIO Control</h1>' response += '<h2>Button=' + switch_status() + '</h2>' response += '<h2>LEDs</h2>' response += html_for_led(0) response += html_for_led(1) response += html_for_led(2) return response try: run(host=host, port=8080) finally: GPIO.cleanup() |