2022/07/13

Raspberry Piに接続したLEDをPython CGIスクリプトでブラウザから制御する

概要

Raspberry Pi 3 Model B+に接続したLEDをPython CGIスクリプトでブラウザから制御してみました.

右側の画面がブラウザのウィンドウキャプチャです.ブラウザ上のボタンやテキストボックスを操作すると,LEDの点滅が変化していることがわかります.

開発環境

Raspberry Pi Raspberry Pi 3 Model B+
OS Raspbian GNU/Linux 10 (buster)

回路

回路図

回路図のとおりに,Raspberry PiとLEDを接続してください.

Raspberry Piのピン配置については,公式Webページを参照してください.

LEDのアノード側を3.3V PWRピンに,カソード側をGPIO17ピンに接続しています.電流制限用の抵抗も忘れないようにしてください.

回路部品

参考単価をクリックすると,秋月電子通商のページに飛びます.

番号 部品名 型番 数量 参考単価
R1 炭素皮膜抵抗 各社 1/4W 330Ω 1 1円 (互換品)
LED1 LED 各社 緑色 1 10円 (互換品)
その他 リード線など 適量

ソースコード

GitHubにて公開します.ページ右上付近の「Code」ボタンからダウンロードするかgit cloneしてください.

下記のようにgit cloneします.

セットアップ

README.mdの「Setup - Software」を参照してください. 予めPython仮想環境を構築する準備をしておくと,既存Pythonスクリプトの実行環境を破壊することなくセットアップできて便利です.ここでは,pyenv-virtualenvを使用しています.

下記のように依存ライブラリをインストールします.

実行

README.mdの「Usage」を参照してください.

下記のように実行します.終了する際は,Ctrl + cキーを押下してください.

Raspberry Piと同じLANに接続しているPCやスマートフォンのブラウザから,サーバにアクセスします. Raspberry PiのIPアドレスが192.168.0.3の場合は,http://192.168.0.3:5000/にアクセスしてください.

ブラウザからLEDを制御することができるようになりました.

製品紹介

2022/05/17

Raspberry Pi + BME280で計測した温度,湿度,気圧をAmbientに送信してグラフ表示させる

概要

Raspberry Pi Zero WHと温湿度・気圧センサのBME280を使用して,自室の温度,湿度および気圧を測定結果をグラフ表示する仕組みを作成しました. 測定結果の保存とグラフ表示には,IoTデーター可視化サービスのAmbientを使用しました. Pythonスクリプトにより,一定周期でセンサからのデータ取得とAmbientへのデータ送信を自動実行させています.

Ambientでのグラフ表示例

Raspberry Piから送信されてきた自室の温度,湿度および気圧をAmbientでグラフ表示した例です. インターネットに接続されたPCやスマートフォンのブラウザで表示することができます.

Ambientでのグラフ表示例

開発環境

Raspberry Pi Raspberry Pi Zero WH
OS Raspbian GNU/Linux 9.11 (stretch)

回路

回路図

回路図のとおりに,Raspberry Piと温湿度・気圧センサモジュールを接続してください.

Raspberry Piのピン配置については,公式Webページを参照してください.

温湿度・気圧センサモジュールのピン配置については,取扱説明書を参照してください.今回はI2Cで接続しています. 温湿度・気圧センサモジュール上にはJ1からJ3までの計3つのジャンパがありますが,全てオープンで使用しています. ただし,J3をショートしない代わりに温湿度・気圧センサモジュールの外でCSBとVDDを接続しています. また,SDOをGNDに落としているのでBME280のI2Cアドレスはデフォルトの0x76です.

回路図

回路部品

参考単価をクリックすると,秋月電子通商のページに飛びます.

番号 部品名 型番 数量 参考単価
U1 温湿度・気圧センサモジュール 秋月電子通商 BME280使用 温湿度・気圧センサモジュールキット 1 1250円
その他 リード線など 適量

ソースコード

GitHubにて公開します.ページ右上付近の「Code」ボタンからダウンロードするかgit cloneしてください.

セットアップ

README.mdの「Example installation in pyenv environment」を参照してください. 予めPython仮想環境を構築する準備をしておくと,既存Pythonスクリプトの実行環境を破壊することなくセットアップできて便利です.ここでは,pyenv-virtualenvを使用しています. また,AmbientのチャネルIDとライトキーが必要になります.Ambientのチュートリアルなどを参照して,準備してください.

定期的にセンサデータをAmbientに送信する

セットアップと動作確認が終わったら,定期的にセンサデータをAmbientに送信するように設定します. README.mdの「Example installation in pyenv environment」の「4. (Optional) Edit cron for periodic execution」を参照してください. 単純にcronでPythonスクリプトを5分間隔で実行しているだけです.ただし,「2-57/5 * * * *」とすることで毎時0分からの5分間隔ではなく毎時2分からの5分間隔としています. これは,毎時0分などに定期的なタスクが集中することを避けるためです.この辺りはお好みで調整してください.

製品紹介

2022/05/16

一畑電車に乗ってきました

概要

381系の国鉄色に乗ったあと,帰りのサンライズ出雲の出発まで時間があったので一畑電車に乗ってきました.

写真

一畑電車7000系 浜山公園北口-出雲大社前

初めて一畑電車に乗車しました.写真は,出雲大社前駅から徒歩5分程度の堀川の橋梁で撮影した7000系です. 7000系は86年ぶりの自社発注車両として,2016年の導入当時注目されていたと思います. 両運転台構造の1両編成の電車を新造した点も珍しいほか,車体はJR四国7000系ベースで走行機器はJR西日本225系と同一とすることでコストダウンを図っている点も特徴です.

堀川を渡る一畑電車7000系

一畑電車大社線 出雲大社前駅

一畑電車大社線の出雲大社前駅です.駅舎は,国の登録有形文化財かつ近代化産業遺産となっています.

一畑電車大社線 出雲大社前駅

JR西日本旧大社線 旧大社駅

廃線となっているJR西日本 旧大社線の旧大社駅にも行きました. 一畑電車出雲大社前駅から徒歩で行くことができます. 旧大社駅も駅舎が有名で,重要文化財です.一畑電車の出雲大社前駅が洋風建築であるのに対して,JR西日本の旧大社駅は和風建築です. ただし,訪問当時は保存修理の最中で,囲いがあり見学できませんでした.保存修理が完成した際には,また是非見学したいと思います.

写真は,敷地外から撮影した旧大社駅で保存されているD51形774号機です.奥の囲いで覆われているのが,保存修理中の旧大社駅です. この光景は保存修理中にしか見ることができないものですし,訪問してよかったと考えています.

旧大社駅で保存されているD51形774号機
2022/05/14

シリコンハウス共立の自動販売機でジャンクボックスを買ってみました

シリコンハウス共立の自動販売機

大阪日本橋の電子部品専門店,シリコンハウス共立の1階入口の横には電子部品やガジェットグッズが24時間購入できる自動販売機が設置されています. 2022年のゴールデンウィーク中に訪問したとき,200円のジャンクボックスがあったので試しに購入してみました.

シリコンハウス共立のジャンクボックス

ジャンクボックス

自動販売機の商品のラインナップは入れ替わりがあるものと考えられますが,訪問したときは「ジャンクボックス 200円」としてサンプルが陳列されていました. 「お楽しみBOX!」「中身は秘密だよ!」ということで,中身はランダムです.

シリコンハウス共立の自動販売機

あくまでサンプルからの判断ですが,比較的単価が高そうな電子部品としては下記のようなものが入っている可能性もあるようです.

  • ドットマトリクスLED
  • 7セグメントLED
  • トランジスタ,FET
  • トグルスイッチ
  • 丸ピンIC用連結ソケット
  • コネクタ

買ってみました

結論から言えば,私にはミスマッチな商品でした. この中身であれば,私の場合は3階のデジットでバラ売りのジャンクを品定めした方が良いなと感じました.

自動販売機に200円投入してボタンを押すと,タバコ箱程度の大きさ (90mm x 56mm x 23mm)の紙箱が落ちてきました.本記事1枚目の写真が開封した状態です. 紙箱なので中身は開封しないとわかりませんが,すぐに開封することはおすすめできません. 紙箱に電子部品が直接詰められているため,下手に開封すると中身を散らかしてしまうかもしれません. 私は帰宅後に開封したので回避できました.

中身を表にまとめました.ほとんどがコンデンサで,半導体部品はプリント基板に実装済みの砲弾型LEDが1個のみです. 200円相当の部品が詰められているとは正直感じ難く,私にとってはなかなか使い切るのが難しい部品が多いという結果でした.

部品名 型番 数量
小型金属皮膜抵抗 24kΩ 20
電解コンデンサ ELNA 16V 470uF 1
電解コンデンサ Rubycon 160V 47uF 1
ポイント点火用コンデンサ 三菱 0.5uF 1
セラミックコンデンサ 472M (大) 1
セラミックコンデンサ 472M (小) 4
セラミックコンデンサ 471K 5
セラミックコンデンサ 470pF 6
セラミックコンデンサ 200pF 1
セラミックコンデンサ 56pF 1
セラミックコンデンサ 27pF 2
セラミックコンデンサ 18pF 1
セラミックコンデンサ 15pF 5
セラミックコンデンサ 12pF 1
セラミックコンデンサ 3pF 2
セラミックコンデンサ 2pF 1
セラミックコンデンサ 1.5pF?,劣化や印字カスレで判別困難な個体あり 13
セラミックコンデンサ? 印字「10F TDK」 1
フィルムコンデンサ 184K 1
フィルムコンデンサ 50V, 0.027uF 1
フィルムコンデンサ 153J 1
フィルムコンデンサ 223K 1
フィルムコンデンサ 272J 1
フィルムコンデンサ 562K 3
フィルムコンデンサ 683J 1
RCAプラグ 1
プリント基板 5mm 砲弾型LED x1,金属皮膜抵抗 x1 1