2年目のラズパイ...6日目(ESP-WROOM-2)

USBケーブルを間違えて購入し、先週は進みませんでしたが、よくよく確認してmini-bケーブルを入手しました。

まずは先人の知恵をよく調べます。
https://tpedia.tech.gr.jp/20160111434/
https://qiita.com/hnw/items/3869f435405054511fda

要点をまとめると
  • ESP-WROOM-2は3.3V駆動、結構電力が必要。RL232の3.3V端子では電流が足りない
  • USB給電の5Vを3端子レギュレータを使って3.3VにしてESPへ給電する
  • ESP-WROOM-02には、書き込みモード、実行モード、SDブートモードがある

まずは、電源ラインから、
USB給電の5Vを取り出し、レギュレータに入れて、3.3VにしてESPに給電します。
レギュレータはJRC製のNJU7223F33を使用します。ピンは、向かって左から1.Vout,2.Vin,3.GNDです。
ノイズ対策のためVinには積層セラミックコンデンサ10μF、出力電圧安定化のためVoutには電解コンデンサ470μFを接続します。

まずはこんな感じで

GNDの配線をしていきます。

データシートと現物見ながらやってると疲れます。やっぱり配線図作成してから一気に配線したほうが楽だし間違わない感じですね。

家にいるといろいろと割込みが入り、今日はここまでです。

2年目のラズパイ...5日目(ESP-WROOM-2)

ラズパイからちょっと離れて、Wi-FiモジュールESP-WROOM-2としばらくは、戯れたいと思います。
それぞれのデータシートはこちら(ESP-WROOM-02FT232RL

まずは、足とジャンパーにピンヘッダーを半田付けします。

Wi-Fiモジュールはこちら。銀色のデバイス左側がWi-Fiのアンテナです。

USB-シリアル変換はこちら。USBは、ミニBでした。買ったケーブルはマイクロB(涙)。確認したつもりでしたが。

ブレッドボードに刺した全体はこちら。
10円と比較してますが、それぞれ非常に小さなデバイスです。

2年ぶりのラズパイ...4日目

ラズパイ+センサー+クラウドは、前回までで終了しました。

1週間ほど経ちましたが、問題なく稼働中です。グラフは横軸1メモリ/日です。夕方気温のピークがきて朝方に向かって下がってます。この一週間は日に日に気温のピークが上がってましたが、昨日夕方から急に気温も湿度も下がり過ごし易い環境です。

ラズパイは商用運用中なので突発停電対策はしておかないと、また痛い目にあいます。
モバイルバッテリーで充電と放電を無瞬断でやってくれる優れものがあるそうなので、ただいま探索中です。

先週は、 秋月にいっていろいろ買いこんできました。
 2年前から寝かしていたESP-WROOM-2、Wi-Fiモジュールです。マイコンとWi-Fiモジュール、アンテナが付いて650円です。技適も取っているので、電波法違反にもなりません。
 ラズパイからちょっと離れて、今日からこれにセンサーをつけて、クラウドと連携させたいと思います。
ハード的には、USB-シリアル変換経由でこいつにアクセスします。ソフトウェアはデフォルトでATコマンドに反応するマイコンが入っています。この部分にmicropythonを送り込むとライトなpythonが動くようなので、そこまで行きたいと思います。


2年ぶりのラズパイ...3日目

GW中に終らせようと思っていましたが、そうはいかず。
週末を中心に更新します。

今日は、AmbientというIoT専用のクラウドサーバーに、ラズパイからセンサーデーターをアップすることについて頑張ります。

以下がambientのトップページ。無料で使えます。
https://ambidata.io

クラウドとのやり取りをするpython libをインストール
https://github.com/AmbientDataInc/ambient-python-lib

まずは、ambientのアカウントを作成します。
メールにWebでの認証リンクが送付されクリックするとアカウント作成完了です。
次は、チャンネルの作成。IoT機器との入出力口になるらしい。4桁のIDです。
同時に、送信用と受信用の鍵が作成されます。

先ほどのチャンネルIDと送信用鍵の組み合わせで、ポートの認証を行っているようだ。
画面はこんな感じ。

Google共通言語のpythonも勉強しつつ、サンプルコードを修正してデーターをクラウドに送信することが出来ました。

これまでperlは結構戯れていたので、pythonはお作法がわかれば取り組み易いです。
コード表現の自由度を排除して、誰が書いても同じ動作をするということが狙いだそうで。文末に「;」を打たないとか、インデントは4文字等々慣れるととっつきやすいです。

ラズパイに接続しているBME230センサーから、温度、湿度、気圧を読み出して、Ambientに送信します。cronで1分毎にデータを送信。
クラウド側で送信データーにタイムスタンプを打って、保存してくれます。
データーは、1度に8個まで送れます。
 グラフの作成は、WWW上でパラメーター等を設定すれば勝手に表示されます。データがアップデートされるとグラフも自動更新。

ということで、センサーデータをラズパイで読み取り、クラウドに送信するまでは出来るようになりました。

ラズパイのバックアップを取って、しばらくはデータの送信を続けてみます。

今後はラズパイzeroとか違うセンサーの接続、アップしたデーターを読み取って加工するなどを 考えてみます。

2年ぶりのラズパイ...2日目

クラウドはAWS1年間無料なので、がんばってみようかと思いましたが、AmbientというIoT専用のクラウドを個人で運用されている人が居ます。
簡単そうなので、そちらで試してみます。

久しぶりなので写真も。
●ラズパイ本体(確か2+です)

●BME230センサー(小さい、緑色の基盤の真ん中銀色の部分がセンサーです)

●データーシート(pdfファイルへのリンク)


●ラズパイとセンサーの接続状況(ラズパイ側1本pin間違っている状態)



その前に今回はラズパイに温度湿度センサー接続し、読み取れるように設定です。


★ラズパイGPIO番号と端子位置
https://tool-lab.com/make/raspberrypi-startup-22/

★ラズパイでSPI通信の準備
http://elelab-net.com/hobbytec/?p=533

★ラズパイI2CでBME280と接続
http://karaage.hatenadiary.jp/entry/2016/05/11/073000

★BME230をPythonで読み出す
https://qiita.com/masato/items/027e5c824ae75ab417c1
https://www.erde.co.jp/blog/?p=2927
http://marm.cocolog-nifty.com/jokanaan/2016/12/ae-bme28012-ed4.html
http://karaage.hatenadiary.jp/entry/2017/05/25/073000

-----------
こんな感じでI2C経由でBME280を認識できました。なかなか認識できなかったのですが、本体側のGPIOピンの接続が1本ずれてました。

【反省】「適切に接続したつもり」という思い込みは駄目。ピンヘッダー真上から見ると一目瞭然。ハードウェアは何度も目線を変えて目視確認が重要。

pi@raspberrypi:~ $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
pi@raspberrypi:~ $

スイッチサイセンスさんがpythonスクリプトを公開しています。
$ git clone https://github.com/SWITCHSCIENCE/BME280.git
$ cd BME280/Python27/
$ python bme280_sample.py 
 
これではsmbus2というモジュールが無いと言うことでインストール。
★smbus2のインストール

$wget https://github.com/kplindegaard/smbus2/archive/master.zip
$unzip master.zip.1
$cd smbus2-master
$sudo pip install smbus2


これでエラーはなくなりました。
$pi@raspberrypi:~/BME280/Python27 $ python bme280_sample.py
$temp : 23.94  ℃
$pressure : 1006.75 hPa
$hum :  46.24 %
$pi@raspberrypi:~/BME280/Python27 $ 

ちゃんと温度に湿度、気圧の値をセンサーから取得することが出来ました。
 
その後、1分毎に計測してファイルに書き出し、昔ながらの(今は使わないらしい)
gnuplotでグラフにしてみました。
センサーはちゃんと動いて、ラズパイで読みと取れているようです。
 

2年ぶりのラズパイ...1日目

2年ほどお休みだったラズパイを起こすために、OSを入れ直しです。

NOOBSのバージョンも2.8.1に上がってます。ファイルの大きさは1.7GB。でかい。
ダウンロードに20分ほどかかりました。
当時は、バージョン1.4だったような。
この間、ラズパイ3,3+,zero等ハードもいろいろと出たので、それに対応していったのでしょう。
小さいzeroは、ちょっと気になります。

SDカードへの書き込みや初期設定等はこちらを参考にしました。
http://deviceplus.jp/hobby/raspberrypi_entry_003/
https://qiita.com/kanaisawa/items/4723f72a28084263ae1f
https://qiita.com/HeRo/items/c1c30d7267faeb304538

★パッケージの更新とOSの更新
$ sudo apt-get update       # パッケージリストの更新 
$ sudo apt-get upgrade      # パッケージの更新
$ sudo apt-get dist-upgrade # OSのアップグレード
 
★ファームの更新
$ sudo apt-get install rpi-update # インストール
$ sudo rpi-update                 # 更新実行
$ sudo reboot                     # 反映のための再起動 

★日本語フォントとターミナル
$sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
$sudo apt-get install uim uim-anthy 
$sudo apt-get install jfbterm
 
 
まずはこの辺までで。
前回の反省を生かしてSDカードはこの時点でバックアップしておきます。
8GBのイメージファイルwindows側にできます。 日付とバージョンをファイル名につけておけば、
どの時点でのバックアップかはある程度推測できるでしょう。

http://www.moonmile.net/blog/archives/6878 

ラズパイ日記...esp32(arduino)+mpu6050

# esp32で6軸センサー読み出し esp32で6軸センサーを読み出し、値をグラフ表示して動作を確認します。 ## 準備 ハード的な接続は、センサーが3.3V駆動できるので、3.3VとGNDの2線で電源供給します。I2C用にSDAとSCLのデータ線が必要ですが、esp...