電子ペーパー2020年02月15日

電子ペーパーを使う

今回はRaspberry Pi zero wとESP32Sで電子ペーパーを使ってみました。
Raspberry Pi zero wではお天気ボードを作製しました。
2.7インチ電子ペーパーHATはRaspberry Pi zero wの40ピン端子に直接接続し、I2Cインターフェース用ケールをHATにはんだ付けしています。HAT上にある4個のタクトスイッチの内KEY4をシャットダウンSWに使用しています。
表示に使用しているお天気データはOpen Weather MapのAPIを使用してデータを取得しています。Yahoo!お天気のほうが身近で良かったのですが降水確率データ以外のデータの利用方法がイマイチわかりづらく、(ネットに利用例が少なかった。)結局断念しました。OSはRasbianですからPython言語でプログラムを作製しました。Python言語もだいぶ使い慣れてきました。ライブラリーも増えてシェルやC言語より使い勝手が良くなっています。

ESP32では時計と環境データを表示するディスプレーです。ボードには2色1.54インチ電子ペーパーをSPI接続し、日付時刻の他にSHT30の温度湿度データとMQ-135ガスセンサーの電圧を環境データとして表示しています。
取得したセンサーデータはそのままMQTTブローカーにもPushしています。

Raspberry Pi zero w2020年01月15日

最小のRaspberry Pi zero w

今回はRaspberry Pi zero wです。Raspberry Piはサーバー用途に購入していましたが、今回は組み込み用に購入してみました。MQTTとの連携やESP32やESP8266を使用した端末装置との連携も考えられます。OSは相変わらずRaspbianを使用しています。

Linux zerow01 4.19.75+ #1270 Tue Sep 24 18:38:54 BST 2019
 armv6l GNU/Linux
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 10 (buster)
Release:	10
Codename:	buster
Raspberry Pi3 B+などと違ってほとんど発熱しませんのでアクリル積層のサンドイッチ型ケースに収めました。
とりあえずいじりやすいI2Cインターフェースに表示装置とBMP280大気圧センサーを取り付けてみました。

このほかに2.7インチの3色電子ペーパーをSPIインターフェースで取り付けする予定ですが、中国からまだ入荷していませんので後日。
それも待てずにSPIインターフェースにESP32モジュール用に購入した1.54インチの電子ペーパーを 接続してテストしています。
表示プログラムはPythonを使用しています。



3色表示の電子ペーパーがやっと届きました。サイズは2.7インチです。この電子ペーパーは表示が完了するまで15秒もかかります。1.54インチ電子ペーパーは2秒だったので今回は完全に調査不足でした。これではリアルタイムな表示を望めません。リアルタイム表示に使えそうな電子ペーパーは1.54インチの他に2.13インチと2.9インチ2色電子ペーパーです。
OLEDで常時点灯させると画面の焼付きが起こってしまいます。電子ペーパーはそのようなことがなくてよいのですが表示させる速度に制約があります。

ホームオートメーション(1)2019年02月11日

MQTTとホームオートメーション

Raspberry PiでMQTTブローカーであるmosquittoのインストールも終わり、MQTTブローカーが動き出すとMQTT経由で遠隔地のセンサーからのデータ受信やリレーを制御することが容易になりました。パワーポイントにあるように接続される機器はネットワーク上にあれば良く、同一サーバー上にある必要がなくなり設置に関しての自由度が格段と増しました。しかし、現在販売されているホームオートメーション機器を使用してシステムを構築しようとすると様々な問題が出てきます。今回はSONOFFスイッチが格安で入手できたので2台購入して使ってみたいと思います。
最近のホームオートメーション関連機器はAmazon AlexaやGoogle Homeなどいろいろと出てきていますが、対応機器が限られているのと割高感があります。
データ収集はESP8266やESP-32などWiFiに対応したモジュールを利用し、制御プログラムはRaspberry Pi内のnode-redに担当してもらいます。

Raspberry Pi3 B+(2)2019年01月29日

Raspberry Pi3 B+のIOインターフェース

久しぶりにRaspberry Piをいじったら、node-redとpythonが大変使いやすくなっていたのでいろいろなものをGPIOやI2Cインターフェースに接続して遊んでみました。

  • 5Mピクセルのカメラモジュール
  • GPIOに直接接続
  • サーボ制御カメラマウントに2個のSG90サーボ
  • 2回路リレー制御モジュール
  • 超音波距離センサー
  • マイクロウエーブドップラーセンサー
  • NaPiOn人感センサー
  • 赤外線リモコン受信機
  • 赤色LED
  • I2Cインターフェースに接続
  • 4チャンネルADコンバーター (ADS1115)
    薄膜サーミスタ温度センサー
  • 1.3インチOLED (SH1106)

これらはすべてnode-redで直接制御できるか、pythonプログラムで制御できます。もちろんMQTTにも対応できます。
node-redのモジュールが充実しています。

pythonプログラムで美咲フォント(日本語フォント)を1.3インチOLEDに表示させてみました。読めますが流石に8x8フォントは小さいです。

Raspberry Pi3 B+(1)2019年01月12日

最新のRaspberry Pi3 B+は強力になった。

久しぶりにRaspberry Piネタです。Raspberry Piは5台目で用途はIP電話交換機、ちょっとした用途のサーバー、インターネット音楽プレーヤー、3Dプリンターの印刷サーバーに使用しています。今回はMQTTの実験用に最新版RaspbianにmosquittoというMQTTブローカーをインストールしました。

MQTTはIoTを考える上で避けて通れないテクノロジーです。アマゾンのAWSでも使用されています。MQTTクライアントとしてESP32やESP8266を使用した端末装置からのメッセージを取りまとめする機能をブローカーが担います。OSは相変わらずRaspbianを使用しています。

Linux raspmosq 4.14.79-v7+
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 9.6 (stretch)
Release:	      9.6
Codename:	      stretch
Raspberry Pi3 B+になって発熱が大きくなったようですのでファン付きのアクリルケースにしています。

3Dプリンター(17)2016年04月17日

3Dプリントサーバー

3Dプリンター(8)で作成したOctoprintサーバーを多少改造しました。Raspberry Pi B+に2.2インチの液晶ディスプレーを追加し、OSに液晶ディスプレー用のRaspbianを採用し、Octoprintを新たに追加インストールしました。

  • Adafruit 2.2" PiTFT OSイメージを使用しますので2.2インチPiTFT用のカーネルになり、うかつにアップグレードできません。
    基本OSにRaspbian jessie 8.0
    Linux 4.1.14+になります。
  • 8GB SDカードにイメージを書き込む
    4GBでは入りきりません。
  • Raspbianの設定
    ネットワーク→WiFi設定、ホスト名の変更、固定IPアドレス
    ローカル設定→使用言語、タイムゾーン、キーボード
  • 追加ソフトウエア
    Octoprint

久しぶりのRaspberry Pi2016年03月27日

Raspbian 8.0

この3月にRaspberry PiのOSであるRaspbianの最新版(Jessie)がアップデートされました。だからというわけではないのですが以前からVPNサーバーが定期的にダウンするという現象の原因がわからず悩んでいたので、Wheezyから新しい版のJessieで再作成することにしました。以前に紹介している温度センサーを接続しているサーバーです。今は出歩くことが減り家にいるのでVPNサーバーの必要性も薄れていることもありVPNサーバーは廃止し、I2CやGPIOのテスト機として再スタートです。Raspberry PiはSDカードさえ作り直せばどのような環境でも再作成が可能な所が良いです。

  • 基本OSにRaspbian jessie 8.0を使用する
    Linux 4.1.19になります。
  • 8GB SDカードにイメージを書き込む
    4GBではぎりぎりになってしまいます。
  • Raspbianの設定
    ネットワーク→ホスト名の変更、固定IPアドレス
    ローカル設定→使用言語、タイムゾーン、キーボード
    その他の設定→I2Cの使用
    日本語フォントのインストール
  • 追加ソフトウエア
    python-smbus
    i2c-tools
    digitemp
    lcdi2c

新OS上ではダイナミックDNSサーバーへIPアドレスを登録するスクリプト、室温と外気温をクラウドサーバーへデータ登録するためのスクリプト、接続した16桁2行キャラクターLCDへ日付曜日、時刻の表示が今のところcronに登録する定期実行JOBになります。Raspbian jessie 8.0からWiringPiは標準でインストールされていますのですぐにGPIOを使用できます。WEBブラウザからでも操作できるようにWebIOPiをインストールしました。WebIOPiなら別にhttpサーバーをインストールする必要がありません。このサイトを参考にしました。

3Dプリンター(8)2015年11月19日

3Dプリント・サーバー

ArduinoやRaspberry Piをいじってきましたが、3Dプリンターでそれらを全て使用することになりました。なんか嬉しくなります。

以前なら購入していたRaspberry Pi B+のケースを作りました。オープンなデザインがいっぱいあります。ケースの肉厚が薄いので印刷時の設定で100% infillで印刷しなければいけなかったのですが70% infillで印刷してしまいました。ちょっとスカスカして弱い感じがします。今度時間のあるときにでも印刷し直そうかと考えています。

ベースOSにRaspbianをインストールし、octoprintをインストールして3Dプリンターのプリントサーバーに仕上げました。

Raspberry Piのネットワークは無線LANで設定したので電源さえあればどこでも動作できるので機動性が増しました。消費電流は0.5A程度ですからモバイルバッテリーでも動作できるのですが印刷時間を考えるとバッテリーが持つかどうか難しいところです。なによりoctoprintはタブレットでも操作できるのでなかなか重宝しています。操作できる機能はもprintrunより優れていると感じています。(個人の感想です)

3Dプリンター用に300WATX電源を使用していますが、PC用の電源からはいろいろな電圧が出力されています。もちろんRaspberry Piが使用する5Vも出力されています。赤色の線は5Vですが、ATX電源の電源スイッチを切ると出力されません。3Dプリンターの電源スイッチを切るとRaspberry Piも電源が切れてしまいます。これではちょっと不便です。しかし、ATX電源には5VSB(スタンバイ)という出力があり、電源スイッチの状態に関係なく常に5V 2Aが出力されています。これを利用すればRaspberry Pi用の電源を別に用意する必要がなくなり、不用意に電源を切ってしまうこともありません。マザーボードに接続する20ピンまたは24ピンのATXコネクター配線の中に紫色の線を探してください。この線と黒色の線(グランド)間には電源スイッチに関係なく常に5Vが出力されています。そこにUSB A-typeコネクターを取り付け、適当な大きさのケースを作成すればRaspberry Piが利用できるUSB電源が完成です。Raspberry Piを接続する前にテスターで電圧、極性をチェックしてください。過電圧や逆極性で接続するとRaspberry Piを壊しますので注意してください。

3Dプリンター(2)2015年10月12日

3Dプリンター制作を目指して(2)

「3Dプリントされた取り付け小物は注意が必要なようです。」自分で3Dプリントしてわかったことですが、フィラメントと呼ばれる太さ1.75mmの樹脂を熱で溶かし、0.4mm程度のノズルから細く樹脂を絞り出し、それを幾層にも積み上げてプリントします。プラスチックの塊ではないので作成物は強度に問題が出るようです。最初のプリントは3Dプリンターの取り付け小物類のスペアをプリントしました。2台目を作成するつもりでパーツを作成しました。
ついでに5.5mm厚のMDF板でフレームも作成したので本当に2台目になってしまいました。プラスチック以外のパーツも揃えました。
殆どのパーツは日本国内の通販やホームセンターで購入が可能です。中には時間がかかっても海外から購入したほうがお得なパーツもあります。RepRap Prusa i3のパーツ類を整理しておきましょう。

  • フレーム
      MDF板、アクリル板、アルミ板などを使用して自分で作成し、Y軸のボルトに取り付けます。それだけでは強度に問題があるので前後、あるいはどちらかから支えをする必要があります。このフレームにZ軸モーターと駆動系を取り付け、その上にX軸キャリアー部分がのります。
  • X軸可動部分
      ホットエンドと呼ばれる印刷ノズル部分を左右に移動させるステッピングモーターとリニアロッドで構成されます。モーターエンドとアイドラーエンドと呼ばれる3Dプリントしたプラスッチックパーツをリニアロッドで結合し、その間をホットエンドの取り付けられているキャリアが移動します。キャリアの移動はベルトとプーリーで行います。
  • Y軸可動部分
      印刷物を置くベッドを前後に移動させるステッピングモーターとリニアロッドで構成されます。ベッドの移動はベルトとプーリーで行います。Y軸のフレームは6本のM8寸切りボルトと3Dプリントしたコーナーパーツで作成されています。その他にモーター支持パーツとアイドラー、タイミングベルトホルダーを3Dプリントします。
  • Z軸可動部分
      X軸キャリアーを上下に移動させるステッピングモーターとリニアロッドで構成されます。フレームに取り付けます。X軸キャリアーの移動はステッピングモーターに直結させたM5の寸切りボルトを使用します。M5ボルトを使用した場合、ネジピッチは0.8mmになります。
  • 3Dプリントパーツの作成
      MakerBot ThingiverseYouMagine: shareなどのサイトでPrusa i3パーツファイルを入手して印刷してください。オリジナルデザインとは異なるものもありますので自由に選択してください。フレーム取り付け用のプラスチックパーツもフレーム素材に合わせて選択し、印刷してください。
2台目を作成するのであれば必要になります。
  • リニアロッドと寸切りボルトの入手
    XYZ軸共通に使用する太さ8mmのリニアロッドはYSK社製のYSAA形スタンダードリニアシャフトを使用しました。素材はSUJ2(高炭素クロム軸受鋼)で高周波焼入処理を施したシャフト長400mmの定尺物です。モノタロウから購入しました。
    M8寸切りボルトはホームセンターで扱っているステンレス鋼のシャフト長285mm定尺物を4本、M5寸切りボルトは同じく定尺物を2本使用しました。Y軸フレームの前後方向に使用する450mmの寸切りボルトはちょうどよい定尺物がありませんので1mものを切断して使用します。ホームセンターなら切ってくれるところもあります。M5の寸切りボルトは扱っているところが少ないです。M6寸切りボルトならどこでも扱っていますのでM6に変更することも可能です。M6寸切りボルトを使用した場合、ネジピッチは1mmになります。
  • リニアベアリング、ベルトとプーリーの入手
      リニアベアリングはリニアロッドに合わせて内径8mmのものを使用します。ベアリングのみのLM8UUを7個と取り付けブッシュ付きのSC8UU(取り付け穴4個)または、SCV8UU(取り付け穴2個)をベッド用に3個使用します。3Dプリントしたベアリングブッシュを使用する場合はLM8UUを3個使用します。
    ベルトはベルト幅が6mmのGT2 タイミングベルトで長さ2m程度でX、Y軸の駆動に使用します。プーリーはGT2 20歯 幅6mm 内径5mmのものを使用します。アイドラーにはフランジ付きのミニチュアベアリングMF105ZZを2個一組で合計4個使用します。調整機能付きのアイドラーに変更した場合は指定するベアリングに変更します。
    Z軸のM5寸切りボルトとステッピングモーターを直結するカップラーが2個必要です。3Dプリントしてもよいですし、フレキシブルシャフトカプラ 5 x 5mmを使用しても構いません。
    この辺りはe-bayなどで中国のバイヤーから購入すると安価(国内の約半値、送料込で)に入手できます。
  • ステッピングモーターと制御マイコンの入手
      ステッピングモーターはNEMA17を使用します。シャフトは外径5mm x シャフト長24mmのものを選択してください。XY軸に1個づつ、Z軸に2個使用します。エクストルーダーに使用しているステッピングモーターも同じものです。
    制御マイコンは3Dプリンター制作を目指して(1)で紹介しているArduino Mega2560を使用します。中国製のCH340Gを使用している互換ボードを選択する場合はPCに専用ドライバーのインストールが必要です。ステッピングモータードライバーICはA4988のほうが安くあがります。
  • ホットエンドとエクストルーダーの入手
      3Dプリンターの中心になる部分です。オリジナルのPrusa i3では3Dプリントしたパーツで作成したエクストルーダーとホットエンドの組み合わせですが、市販品のキットではMK8エクストルーダーがよく使用されています。1台目の3DプリンターはMK8エクストルーダーを使用しましたが、今は3DプリントしたダイレクトエクストルーダーとメタルJ-Headホットエンドの組み合わせに交換しています。
    ホットエンドのヒーター電圧は注意してください。12Vと24V用があり選択には自分の使用する電源に依存するためです。PC用のATX電源やほとんどの専用電源は12Vですので12Vヒーターを選択します。
  • ヒーテッドベッドと電源
      ABSフィラメントで印刷したいとか、印刷物が剥がれやすいなどを防止するためにヒーテッドベッドを使用しますのでPLAフィラメントでは必ずしも必要なものではありません。MK3ヒーテッドベッドなら12V、24Vどちらの電圧でも使用できます。ABS用に100度まで加熱するには12Vでは時間がかかりますので24Vでの使用をおすすめします。24Vでも大きな電流を流しますので太い配線を使用してください。
    電源は市販されている12V電源または、PC用の350W程度のATX電源を使用します。ATX電源の場合は12Vのみ使用し、5Vは使用しません。MK3ヒーテッドベッドへの電源供給までするのであれば大きめの電源を選択してください。

RasPBXではSDカードが駄目になる?2015年07月27日

RasPBXを動かしているとSDカードが壊れる

Raspberry Pi2Bにお手軽にRasPBXというパッケージでインストールしていました。しかし、1週間程度経つとまたは、リブートしようとするとファイルシステムが破損してしまいます。そこでraspbian(Linux)にAsterisk 11.6をインストールすることで復活を賭けました。稼働させてから1週間を過ぎましたがハングしていません。このまま安定稼働してくれるといいのですが。
これは想像ですが、FreePBXがMySQLを使用している関係で更新頻度が上がることが問題を起こしていたのではないでしょうか。Asteriskの管理ツールとしてはFreePBXは大変魅力的です。confファイルをエディターで修正していると関連性が不明確になることが多々あります。(単に物忘れの問題かも)FreePBXではそのへんは安心して操作が行えます。Asteriskの内線も5~6台ですのでそんなに苦にもならずに行えるのでよしとしています。通話ログはリブートすると消えてしまいます。安定稼働が第一ということでこのまま様子を見たいと思います。