「WiFi」タグアーカイブ

Arduino MKR WiFi 1010 ベランダ太陽光発電 温湿度センシング検討

2021/9/22からベランダに設置している、太陽光発電 気象観測システムが止まることなく無事に北海道の厳しい冬を越すことができたことを前回報告させていただきました。

RaspberryPi サーバ & WordPress ブログ を XSERVER に サーバ移転

 

長い冬が終わり気温が上がってきまして、ずーっと保留にしてきた比較的気温が高い時に発生する温度と湿度の値の跳ね上がり現象が現れ始めました。

 

腰を据えてこの問題と向き合いましたので報告いたします。

 

 

温湿度センサ交換

これまで温湿度センサはDHT11からDHT22にかえて運用してきましたが、いずれも値の跳ね上がり現象が発生しています。

Arduino MKR WiFi 1010 をソーラで楽しむ 3 -温湿度センサ変更-

新温湿度センサ SHT31 

凝りもせず再び温湿度センサを変えてみました。

https://github.com/adafruit/Adafruit_SHT31

 

 

しかし、結果は変わらず日中に値が上昇する結果となりました。。。

ということは日中お弁当箱の中は確実にこの温度になっているということです。

 

お弁当箱 加工

お弁当箱を百葉箱のように通気性がよく直接日光が当たらないように工夫しました。
側面に穴を複数開けて、フタにプラ板で天井を設けました。

あっさり解決しました。。w

屋根が効いたようです。早く気づけよという話ですね。。。

温湿度センサのDHT11とDH22  疑ってごめんなさい 😥 

 

引き続き運用続けます。

Arduino MKR WiFi 1010 ベランダ太陽光発電 気象システム 無事越冬

2021/9/22からベランダに設置している、太陽光発電 気象システムが止まることなく無事に越冬できました。

Arduino MKR WiFi 1010 をソーラで楽しむ 1 -ベランダ気象データ測定-

 

 

 

気象システム

システムのおさらいです。
Arduino MKR WiFi 1010 に温湿度センサと気圧センサを接続し、LiPoバッテリを8Wソーラパネルで充電しながら運用しています。
10分おきに起床してLiPoバッテリ電圧とソーラ発電電圧と気象データ(温度、湿度、気圧)をUDP送信してスリープします。

 

  • Arduino MKR WiFi 1010

     
  • 温湿度センサー DHT22

     
  • 大気圧センサーモジュール BMP280

     
  • LiPoバッテリ 1200mAh

     
  • 8Wソーラパネル (6V用)

パワーマネージメント

Arduino MKR WiFi 1010には入力定格22VのパワーマネージメントIC BQ24195Lが搭載されており、コントローラ用のロジック電源生成とLiPoバッテリの充電動作を実施しています。

高い入力電圧耐圧のBQ24195Lのおかげで開放電圧10.8Vの8W出力のパネルソーラパネルを直接Vinに接続することができ、LiPoバッテリを充電しながらの長期運用が実現できました。

但しArduino MKR WiFi 1010のオフィシャルVin最大定格は6Vです。
実施の際は自己責任で宜しくお願い致します。

参考

 

無事に越冬

本システムをベランダに置いて2021/9/22から運用し、
2022/3/17まで止まることなく動き続けています(176日連続動作)。
引き続き運用していく予定です。

気温

気圧

湿度

LiPoバッテリ電圧

ソーラパネル電圧

 

データをブラウザでみえる化

お母ちゃんに気象システムからのデータをブラウザから見れるようにしてもらいました。

RaspberryPi サーバ & WordPress ブログ を XSERVER に サーバ移転

これで端末からいつでも気象情報をチェックできます。

 

氷点下時のバッテリ電圧

気温が-8℃以下になるとバッテリ電圧の低下がみられました。

気温

LiPoバッテリ電圧

 

ソーラパネルからの電圧は普段通り供給されているので、低温によるバッテリ電圧の低下といえます。

ソーラパネル電圧

 

バッテリ電圧低下時でも3.8V以上を保持しており、システム動作に異常はありませんでした。
気温が-10℃以下になると危なかったかもしれませんが、今冬は無事に超えることができました。

 

トンガ火山噴火 衝撃波

2022/1/15のトンガ火山噴火の衝撃波による気圧変化を本システムでも観測しました。

 

 

逆方向と2周目の3回のピークを観測しました。
これには非常に驚きました。

 

 

温湿度センサ

観測当初から見られた温湿度センサの値の跳ね上がり現象がここ最近再びみられるようになりました。

 

同様に湿度にもピークが出るので温湿度センサDHT22の何かに起因しているものと考えています。

 

こちらはセンサ交換も視野に入れつつ、原因検証すすめます。

 

おわりに

Arduino MKR WiFi 1010 ベランダ太陽光発電 気象システムの長期運用状況について報告いたしました。

すでに冬を超えて半年近く動作しています。
特殊機材の追加なしにマイコンとソーラとバッテリとセンサのみで実施できる非常に経済的なシステムであるといえます。

今後は温湿度センサのピーク値の原因解明と現行では10分おきのデータ取得周期を消費電力と相談しながら縮めていこうと考えております。

Arduino MKR WiFi 1010 をソーラで楽しむ 5 -8Wソーラ再測-

前回はバッテリ配線を修正し、ダイソーのガーデンライトソーラでの運用結果を報告いたしました。

Arduino MKR WiFi 1010 をソーラで楽しむ 1 -ベランダ気象データ測定-

 
ここでは8Wソーラで再実験いたしましたので報告いたします。

 

8Wソーラで気象データ測定システム再実験

8Wソーラは以下を使用し、Arduino MKR WiFi 1010に給電します。
いつも通りベランダで運用。

 

センサとして温湿度センサと、気圧センサを接続します。

  • 温湿度センサー DHT22

     
  • 大気圧センサーモジュール BMP280

     
  • LiPoバッテリ 1200mAh

 

運用状況

2021/9/22の朝から8Wソーラでの運用を再開いたしました。

気温が高く30度以上となるときに温湿度センサの値に乱れがありますが、おおむねよく測れています。

 

ソーラ発電電圧及びLiPoバッテリの電圧の状況は以下の通り

我が家のベランダは東向きで午前中しか直射日光が得られないのですが、
バッテリも良く充電されており ずーっと4V以上のフル充電で運用できています。

 

おわりに

現在までで12日以上動いてくれています。

バッテリ電圧の低減もなく発電量も十分なようです。
クリーンエネルギーによる電気代ゼロの気象データ測定システムが実現できたかもしれません。

あとは冬。ここは北海道

地獄の寒さで本システムがどうなるか非常に楽しみです。
(ヒータの検討しといたほうがいいかなぁ??? 🙄 )

追記

2021/10/17 運用25日経過

2021/11/4 運用43日経過

 

日照が無い日は当然バッテリ電圧低下していますが、日照時にしっかり充電できています。安心ですね。

2021/11/26 運用65日経過

2021/12/18 運用87日経過

Arduino MKR WiFi 1010 をソーラで楽しむ 4 -ダイソーのソーラ再測-

前回は8Wソーラで運用したArduino MKR WiFi 1010気象データ測定計の温湿度センサの変更を報告いたしました。

Arduino MKR WiFi 1010 をソーラで楽しむ 3 -温湿度センサ変更-

更においじりしましたので報告いたします。

 

 

バッテリ配線修正

前回からしばらく運用していたところ電圧が不安定に低下する現象が発生しました。

そこでバッテリの配線をArduino MKR WiFi 1010のコネクタではなくジャンパを半田付けして接続することにしました。

 

そうしたところバッテリ電圧の低下現象は改善され、
メチャクチャ元気になって常にフルチャージ状態になりました。

 

実はArduino MKR WiFi 1010のコネクタとLiPoバッテリの端子の接触の悪さは当初から気になっており
以下のようにマスキングテープで固定しながら使用していました。。

屋外なめんなって話ですよね。

 

ダイソーのソーラで再測

バッテリの接触が改善され8Wソーラで常にフルチャージ状態になったので、
以前10日で終了してしまったダイソーソーラによる運用を再検証してみることにしました。

もしかしたらバッテリ接触不良のために長期運用ができなかった可能性があります。

結果

残念ながら前回同様にバッテリ電圧はグングン低下し 12日ちょいで停止しました(9/8  21:57 ~ 9/21  14:29)。
バッテリの接触の影響はさほど大きくなかったようです。。。

そもそも発電電圧が4V程度で低いですよね。
仮にダイソーソーラ(300円)を3個シリーズにして電圧を上げても、
コストが900円となり それであれば少しお金を足して性能明確なパネル使ったほうがいいですよねぇ。

 

前回 温湿度センサを変えましたが、やはり高温時に異常値示してますね。。。
温湿度センサは違うタイミングで変更検討します。

 

おわりに

ここではバッテリの接続を改善して再度ダイソーソーラでArduino MKR WiFi 1010気象データ測定計を運用してみました。

残念ながらバッテリの接触の影響はそれほど大きくなく前回と同じような結果に終わりました。
結局 ダイソーソーラの2個シリーズでは発電量が足りないのです。

また8Wソーラで運用実験します。

Arduino MKR WiFi 1010 をソーラで楽しむ 3 -温湿度センサ変更-

前回はArduino MKR WiFi 1010を充電・駆動するダイソーのカワイイ ソーラパネルをガチの8Wパネルに変更して運用してみました。

Arduino MKR WiFi 1010 をソーラで楽しむ 1 -ベランダ気象データ測定-

ここでは温湿度センサを変更してみたので報告いたします。

 

 

温湿度センサ DHT11

これまでは温湿度センサとして以下のDHT11モジュールを使用してきました。

 

以下はDHT11モジュールでベランダの温湿度を計測した結果です。

気温が30℃以上でデータが乱れております。

 

以下は気圧を追加してプロットしたグラフです。気圧は別センサで測定しています。

 

更に以下はソーラ電圧を追加してプロットしたグラフです。

 

上の二つのグラフから温湿度センサのデータの乱れは別センサやマイコンで測定した電圧との相関がないため、
温湿度センサ固有のものであると考えられます。

 

温湿度センサ DHT22

センサを変えてデータの乱れが改善されるか確認してみました。

DHT11より温度動作範囲が広いDHT22を試してみました。

 

以下が変更時のベランダの温湿度測定結果です。

変更後も高温時に若干データの乱れが見えますね。。。なんだろコレ?
温度がピークを迎えてちょっと下がった時にデータが乱れているようにみえます。

もう少し様子見ますが札幌はどんどん気温が低下しているのでデータの乱れは観れないかもしれませんね。。。

しかし動作温度範囲の広いセンサになりましたので低温時も安心ですね。
冬はむしろマイコンやバッテリの動作が心配ですが。。

Arduino IDEコード

温湿度センサは以下のライブラリを使用させてもらっていたので
 https://github.com/adafruit/DHT-sensor-library

#define DHTTYPE DHT11 から
#define DHTTYPE DHT22
に変更するだけで動作しました。

 

動作

以下は8Wソーラに変更後の動作の様子です。

 

バッテリも順調に充電され4V付近をキープしています。 

 

おわりに

ここでは温湿度センサを変更してみました。

高温時に温湿度センサのデータの乱れがありセンサを変えてみましたが、改善はありましたが根絶はできませんでした。
故に原因も謎です。

今回は上位版のセンサを試したので、全く別のセンサも検討することを頭の片隅に置きつつ運用していきたいと思います。

これからは低温との戦いとなるかと思います。

Arduino MKR WiFi 1010 をソーラで楽しむ 2 -ソーラパネル変更-

前回はArduino MKR WiFi 1010をダイソーのソーラーで駆動して
気象データ測定計としてベランダに配置して運用してみました。

Arduino MKR WiFi 1010 をソーラで楽しむ 1 -ベランダ気象データ測定-

ここではその後の結果と進捗を報告させていただきます。

 

 

ダイソーソーラパネルでの運用

前回の構成での最終結果です。
10分おきに起床してLiPoバッテリ電圧とソーラ発電電圧と気象データ(温度、湿度、気圧)をUDP送信してスリープします。

8/17 22:48から08/27 2:11の約10日間 頑張って動作してくれました。

我が家のベランダの方角的に長時間の日照が得られないこととダイソーのカワイイソーラパネルの発電量では必要電力をまかなえず、徐々にバッテリ電圧が低下しています。

MKRWiFi1010 はWiFi OFFでSleepしても6V入力で15mAほど消費します。
WiFi通信時の電力無視して更にLiPoバッテリ(1200mAh)がフル充電してたとしても
3.7V × 1200mAh ÷ 6V × 15mA = 49.3h
と 約2日しか持たないはずなのでダイソーソーラはよく頑張ったと言えます。

 

得られた気象データは以下

 
気温が30℃以上になると温度、湿度共に乱れる結果となっています。

今後 もっと温度動作範囲の高い温湿度センサを検討したいと考えております。

 

ソーラパネル変更

ソーラパネルの出力を上げることにしました。

開放電圧10.8V、8W出力のガチパネルを使用します。

 

ソーラパネルだけを変えて同様にベランダで運用してみました。

Arduino MKR WiFi 1010のオフィシャルVin最大定格は6Vです。
実施の際は自己責任で宜しくお願い致します。

 

運用状況

取得データを以下に載せます。

 

バッテリ電圧の低下も観られず非常に順調に運用できています。
電気代ゼロの永久なる気象データ測定システムが実現できたかもしれません。
楽しみながら経過をみたいと思います。

 

おわりに

ソーラパネルを変更しての気象データ測定システム運用を開始いたしました。
経過をたのしみにみてゆく所存です。

温湿度計が高温時に異常値を示すので、冬の氷点下がやってくる前にセンサ変更検討したいです。

Arduino MKR WiFi 1010 をソーラで楽しむ 1 -ベランダ気象データ測定-

今夏 Arduino MKR WiFi 1010が国内でも購入できるようになりましたね。
2, 3年前にでた製品だと思うのですが技適で発売が遅れに遅れたんでしょうね。恐らく。

 

 

Arduino MKR WiFi 1010 を購入

Arduino MKR WiFi 1010はWiFi/Bluetooth接続可能なArduino公式のマイコンです。
いまどきはWiFi/Bluetooth内蔵マイコンは珍しくなく強く欲しいとも思わなかったのですが、構成を紐解くと非常に興味深いパワーマネージメントICが載っていることがわかり購入に至りました。

Arduino公式マイコンなんて何年ぶりに手にしたことでしょう。

技適マークは箱にシールで貼ってあるだけでした(そんなんでいいんだ。。)

PMIC : BQ24195L

Arduino MKR WiFi 1010にはパワーマネージメントIC BQ24195Lが搭載されていました。

BQ24195Lはバッテリチャージコントローラとチャージ電圧を生成するDCDCコントローラが内蔵されたシステム電源です。

BQ24195Lの入力電源 (VBUS) の定格が22Vと高く可能性を感じArduino MKR WiFi 1010購入の決め手となりました。
(しかしArduino MKR WiFi 1010の電源入力推奨定格は6Vとなっております。)

参考

 

ソーラー発電で運用

入力耐圧が高くバッテリチャージ機能のあるシステム電源が載っているということで
ソーラー発電による運用を思い立ちました。

(前述の通りArduino MKR WiFi 1010のオフィシャルVin最大定格は6Vです。
実施の際は自己責任で宜しくお願い致します。)

構成

Arduino MKR WiFi 1010 に温湿度センサ、気圧計を接続しました。

 

 

ソーラパネルにはダイソーの300円ガーデンライトのものを2つシリーズにして使用しました。
ソーラ発電電圧は抵抗分圧してアナログ入力ピンで計測します。

動作概要

Arduino MKR WiFi 1010で検出したデータ(バッテリ電圧、ソーラ電圧、気圧、温湿度) を10分おきにUDPで自宅サーバに送信します。
ベランダに配置して運用します。

 

UDP送信後にWiFiを切ってスリープし10分後に起床しWiFi接続→UDP送信を繰り返します。

スリープ&WiFi OFFすることでかなり消費電力を減らすことができました。

消費電力はザックリ以下のような感じです(Vin = 6V)。
・WiFi ON:50 mA
・WiFi OFF:22 mA
・WiFi ON & スリープ:30mA
・WiFi OFF & スリープ:15mA

Arduino IDE コード

 

参考

 

結果

数日運用してみました。

 

 

ダイソーのカワイイソーラーでは発電量が小さいらしくLiPoバッテリを充電できるほどではないようで無日照時に徐々にバッテリ電圧下がっています。何日もつかな 🙄 ?

我が家はベランダが東向きなので晴天時でも日照短いのがすこし悩みどころでもあります。

ベランダの気象データが取得でき大変興味深いです。
しかし温湿度センサが30℃超えると誤動作しているようです。。。
まぁ北海道は年の半分冬だしいいか。。。

 

おわりに

現在Arduino MKR WiFi 1010をソーラー駆動での気象データ測定計として運用中です。

Arduino MKR WiFi 1010というよりもうほとんどパワーマネージメントIC BQ24195Lの評価ボードとして楽しんでいる感もありますが、無線機能がやはり非常に便利です。

現状ですと徐々にバッテリ電圧が低下しているのでいつか落ちてしまうと思います。
次回はソーラパネルの検討を実施したいです。
また温湿度計もなにかいいものがあれば変更するかもしれません。

 

追記

2021/8/22

徐々にバッテリ電圧が低下しております。。

ハムスター用 回し車カウンター製作

HomeMadeGarbageに新たなメンバーが増えました!

ゴールデンハムスターの「もち」ちゃんです(*´ω`*)

 

かわいい!!!!

 

家族みんな夢中になっています♪

 

 

ハムスターのもちちゃん

ペットショップで店員さんに色々教えてもらいながらケージやエサなどをそろえて
メンバーとしてお迎えさせていただきました。

まだ来たばかりなのでまずは環境に慣れてもらっている状態です。
昼間はほとんど寝ており、たまに起きてエサと水を飲むくらい
夜は活発になりずーっと回し車をクルクル回しています。

ハムスターは夜行性で一晩に数十キロも移動するとのことです。

 

回し車カウンター

夜にどれほど回し車を廻しているのか気になったので
“回し車カウンター”を製作してみました。

 

 
ESP32に磁気センサを付けて回し車につけた磁石を検出して回転をカウントする仕組みにしました。

 

 

動作

回し車につけた磁石を磁気センサーで検出して回転をカウントして、
定期的にESP32でUDPで回転数をサーバに送っています。

 

測定データ

5分おきに回転数を取得しました。
 

 
21:00~5:00に爆走していることがわかりますww

一晩で14630回転もしておりました!
回し車の直径は約13cmですので、6.0kmも走っておりました。

 

おわりに

今回はもちちゃんをメンバーに迎えて、回し車の回転数から夜の活動を観てみました。

おいおいロードセルなどで床上の移動量なども観れればいいなと考えております。

MakePython ESP32 Color LCD で 動画をWiFi受信 ー ScreenShotReceiver ー

前回は Makerfabs 様よりいただいたMakePython ESP32 Color LCD
ディスプレイにLovyanGFXライブラリをもちいてアニメーションを表示してみました。

Makerfabs製品を提供いただきました

せっかくESP32が搭載されておりますので、今回はWiFiでの動画の受信を試してみました。

 

 

ScreenShotReceiver

ここではらびあんさんのScreenShotReceiverを使用してWiFiでの動画受信を試しました。

凄いですよね。これ。。。

ScreenShotReceiverとは

“PCの画面をJPEGにしてTCPで送信し、M5Stack/ESP32で受信して表示”するアプリケーションです。

以下でWindows用送信アプリと受信Arduinoサンプルコードがダウンロードできます。
 https://github.com/lovyan03/ESP32_ScreenShotReceiver

受信Arduinoサンプルコード (ScreenShotReceiver)

以下のESP32向けのArduinoコードをダウンロードしてMakePython ESP32 Color LCDに書き込みます。
 https://github.com/lovyan03/ESP32_ScreenShotReceiver/tree/master/ScreenShotReceiver

 
以下のライブラリも必要となりますので導入しておきます。

 
MakePython ESP32 Color LCDに搭載されたカラーLCD ST7789 (240 × 240)向けに設定します。
SPI設定にはTFT_eSPIが利用されていますので、TFT_eSPIライブラリのUser_Setup.h ファイルを編集します。

 

起動

書き込みが完了し起動すると”WiFi接続を試行し、接続できない場合はSmartConfigが起動します。”

 

 

SmartConfig

SmartConfigとはESP32をWiFiのアクセスポイントとして、スマホからWiFi設定を実行する機能です。
Android用スマホアプリは以下でインストールできます。

 
SmartConfigアプリでWiFi設定しESP32をWiFi接続します。

 

接続が完了するとディスプレイにIPアドレスが表示されます。

 

参考

Windows用 送信アプリ (ScreenShotSender)

送信アプリ ScreenShotSender.exe を起動します。
設定ウィンドウと送信範囲指定ウィンドウが立ち上がります。

 

 
“画像の幅・高さ・画質の各パラメータとJPEG化する範囲が設定できます
受信側のIPアドレスを入力して接続すると、Windowsの画面の一部がLCDに表示されます。”

 

動作

 

画質クオリティ60%でFSP 28ほどで送信できています。
凄い!これは非常に便利。

あとMakePython ESP32 Color LCD に搭載されているカラーLCD ST7789の画像がきれい!視野角も広いし。

 

速度改善

らびあんさんより速度改善方法を教えていただきました。

   

~\Arduino15\packages\esp32\hardware\esp32\1.0.4\tools\sdk\lib\libdriver.a
内のの5A 62 02 を B4 C4 04にバイナリエディタで変更でSPI 80MHzが可能になるとのことでした。

 
上記修正を施して、User_Setup.h ファイルで
 #define SPI_FREQUENCY 27000000 → #define SPI_FREQUENCY 80000000
に変更して動作させてみました。

FPS 40以上で送受信できるようになりました!!

おわりに

らびあんさんの ScreenShotReceiver を使用させていただき、
MakePython ESP32 Color LCD で 動画をWiFi受信を楽しむことができました。

凄くサクサク受信・表示できて驚きました!
これはまたまたいろいろ応用ができそうで楽しみです 😛 

追記

ESP32_ScreenShotReceiver 更新 (2020/6/30)

ScreenShotReceiver に更新があり、LCD SPI設定がTFT_eSPI依存であったのを
らびやんさんのグラフィックライブラリ LovyanGFXで設定できるようになりました。

詳細は以下の記事を参照ください。

MakePython ESP32 Color LCD で ESP32 ScreenShotReceiver を楽しむ

Blynk 新ウィジェット Image Gallery

いつのまにやらBlynkに新たなウィジェットが追加されておりました!
Image Galleryといって、なにやら画像をコントロールできるとのことで早速試してみました。

構成

マイコンにはESP32を使用して、可変抵抗値をWiFiでBlynkに送って画像を動かしてみます。

部品

Blynk設定

スマホとESP32ボードはスマホアプリのBlynkを用いてWiFi通信させます。Blynkアプリのバージョンは2.27.1。

新規プロジェクトを作成します。HARDWRE MODELはESP32 Dev Boardを選択。CONNECTION TYPEはWiFiを選択。AUTH TOKENはArduinoコード生成時に使用します(メールで送信されます)。
 

今回の目玉であるImage Galleryウィジェットを配置します。
 
 

Image GalleryウィジェットでINPUTでヴァーチャルピンV0を選択します。
“+ Add Image URL”で以下の5つの絵のURLを指定します。画像は弊ブログサーバにアップしました。
 

ヴァーチャルピンV0に1〜5が入力されると画像[1]〜[5]が選択されて表示されます。

Arduino IDEコード

以下のBlynkのArduino用ライブラリを使用してプログラムしました。バージョンは0.5.4。
 https://github.com/blynkkk/blynk-library

ESP32のArduino環境セットアップなどについては以下参照ください。

LEDテープ比較 Neopixel vs Dotstar -球体POV製作への道 その7-

 
[スケッチの例] -> [Blynk] -> [Boards_WiFi]-> [ESP32_WiFi]を参考にコード生成しました。

100msec毎に可変抵抗値を読んで、値を1〜5に正規化してヴァーチャルピンV0に書き込みます。

動作

可変抵抗を動かすと画像が切り替わっています!

Image Gallery ウィジェットかなり面白い応用ができそうですね。センサ値でオリジナルのメータ動かすとか。いろいろ試してみたいですな。

Blynk で ESP32 と ESP8266 同時制御 -球体POV製作への道 その9-

またもや前回から大幅に時間があいてしまった。。。
そういう訳で球体POV(Persistence of Vision) 製作の時間です。
残像で映像を生成する装置です。
回転部と固定部を無線で情報やり取りしてみたいという発想です。はい。

前回は改めて制御マイコンから見直してWiFiBLEを搭載したESP32の検討をしてみました。
ESP32WiFiでスマホと通信、BLEで他のBLE搭載マイコンと通信するPOV装置をと思ったのですが、ESP32Arduino IDE向けBLEライブラリが今のところイケてないので。。。

方針変更!

ESP32ESP8266WiFi介してスマホアプリBlynkで直接制御してマイコン間の直接通信はしない方向に転換しました。
BLEを使用しないのにESP32を採用した理由はESP8266はアナログ入力ピンが1個しかなく、しかも1V以上印加できないため。。。。

Blynkで複数のマイコンを制御する際は以下の記事で紹介したBridge機能を使用します。

Blynkを用いたデバイス間通信 – Bridge Widget –

ここでは基本構成・動作の確認を実施しました!

構成

Blynkアプリで以下を実施

    • ESP32ボードに接続されたLEDの色を制御
    • ESP8266に接続されたデジタルポテンショメータを制御しモータ回転スピードを変える
    • モータに羽をつけてESP32ボードに接続されたフォトリフレクタで回転数計算してBlynk側に送信
フォトリフレクタでモータの羽の通過をセンシング

部品

  • BLE、WiFiマイコンESP32開発ボード ESP32-DevKitC
    ESP32の設定など詳細は以下の記事を参照ください
     https://homemadegarbage.com/pov-sphere08


     
  • LEDテープ Dotstar
    高速リフレッシュレート(PWMの周期)19.2kHzでPOV向き!詳細は以下!
     https://homemadegarbage.com/pov-sphere07

     
  • フォトリフレクタ QTR-1A
    モータに羽をつけてフォトリフレクタで回転数を測定。
    Arduino用ライブラリは以下。
     https://github.com/pololu/qtr-sensors-arduino

     
  • WiFiマイコンESP8266開発ボード ESPr Developer
    ESPr DeveloperをArduino IDEで開発する方法は以下のとおり
     http://trac.switch-science.com/wiki/esp_dev_arduino_ide

     
  • デジタルポテンショメータ MCP4131
    SPI信号で抵抗値(0~10kohm)を制御出来る。Arduinoコードは以下を参考にしました。
     http://www.learningaboutelectronics.com/Articles/MCP4131-digital-potentiometer-circuit.php

     
  • PWMコントローラ
    モータへ供給する電圧を制御する付属の可変抵抗をデジタルポテンショメータに差し替え

Blynk設定

Bridge機能を使用するためBlynkアプリを2つ作成しAUTH TOKENを2個取得します。ESP32用のアプリはウェジットを配置し、ESP8266用のアプリはAUTH TOKEN取得のみで特に何もしません。

以下はESP32用のアプリの設定です。

新規プロジェクトを作成します。HARDWRE MODELはESP32 Dev Boardを選択。CONNECTION TYPEはWiFiを選択。AUTH TOKENはArduinoコード生成時に使用します(メールで送信されます)。

モータスピード設定用のSliderウェジット、モータ回転数表示用のLabeled Valueウェジット、LEDカラー制御用のzeRGBaウィジェットを配置

モータスピード設定用のSliderウェジットです。最小値0、最大値3としました。
SEND ON RELEASEはOFFにして随時データ送信できるようにします。
ここではヴァーチャルピンV1に出力するようにしました。この値をBridge機能でESP8266側に送ります。

モータ回転数表示用のLabeled Valueウェジットです。ヴァーチャルピンV3で値を受けて単位[rpm]をつけて表示します。

zeRGBaウィジットでLEDの色を設定できるようにします。
OUTPUTはMERGEを選択。それぞれ最小値0、最大値255とします。
SEND ON RELEASEはOFFにして随時データ送信できるようにします。
ここではヴァーチャルピンV2に出力するようにしました。

Arduino IDEコード

BlynkのArduino用 最新ライブラリは以下にあります。
 https://github.com/blynkkk/blynk-library

ESP32用コード

[スケッチの例] -> [Blynk] -> [Boards_WiFi] -> [ESP32_WiFi]を参考にコード生成しました。

ESP8266用コード

[スケッチの例] -> [Blynk] -> [Boards_WiFi] -> [ESP8266_Standslone]を参考にコード生成しました。

動作

 

#blynk で #esp8266 と #esp32 制御

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

これでなんとか基本構成が実現できました。あとは球体POVをどう構築するか。。。。
乞うご期待。。。。

震えて待て!

010010100000010100101111010111101010001
卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍

Raspberry Pi Zero W 単体でラジコンカー自作

前回Raspberry Pi Zero Wでサーボモータを制御してみてラズパイでなにかしらを制御するのはシンドいなぁという感想を得たのですが。。。デジタル信号制御なら問題ないだろということで、I2C入力のモータドライバでラジコン作りました。

Raspberry Pi Zero W と Blynk で サーボモータ制御

ここではスマホアプリ Blynk とラズパイでI2C入力のモータドライバを介してモータをコントロールします。

構成

部品

I2Cモータードライバ・モジュール DRV8830

I2C入力によって、モータ供給電圧(スピード)と供給電圧方向(回転方向)を制御します。円形ロボットシャーシキットの左右のモータを制御するため2個のモジュールを使用しました。

I2Cアドレス設定

2個のモジュールを制御する必要がありますので、それぞれ異なるI2Cアドレスを設定します。

本モジュールは基板上のジャンパA1, A0のステートによって以下の表のようにアドレスを指定することができます。

表のアドレスxは読み込み時には1、書き込み時は0をしてします。ここでは書き込みのみ使用します。左モータ用モジュールのジャンパを両方GND (アドレス:0x60)、右モータ用モジュールのジャンパを両方Open (アドレス:0x64)としました。

書き込みI2Cデータ

アドレス0x00に8bitの情報を書き込むことでモータを制御します。
各ビットの設定は以下の通り

 

blynk設定

ここではblynk の2個のジョイスティックのx軸を使用して左右のモータを制御します。

新規プロジェクトを作成します。ハードウェアはラズパイ zeroがまだないのでとりあえずRaspberry Pi 3Bを選択。Conection TypeにはWiFiを指定します。
AUTH TOKENはコードコンパイル時に使用しますのでメール送信してメモしておきます。

ウィジェットとしてジョイスティックを2個配置します。

2個のジョイスティックの設定はそれぞれのx軸をヴァーチャルピンV0, V1に出力させ、値は-63~63としました。

プログラム

サーボ制御同様にC++を採用しました。

Blynkライブラリインストール

ラズパイにBlynkライブラリをインストールします。
詳細は https://github.com/blynkkk/blynk-library/tree/master/linux 通りでターミナルを起動して

$ git clone https://github.com/blynkkk/blynk-library.git

でOK

ラズパイI2C有効化

Raspberry Piの設定を開きインターフェースのタグでI2Cの有効を選択しRebootします。

C++プログラミング

Blynkライブラリがインストールされるとホームにblynk-library/linuxフォルダが生成されます。linuxフォルダをコピーするなどして、その中のmain.cppを以下のように書き換えます。

BlynkのV0, V1で値を受けてモータの回転方向とスピードを制御しています。

wiringPiのI2Cライブラリを使用しています。

コンパイル

main.cppのあるフォルダに移動して以下を実行。

$ make clean all target=raspberry 

Blynk実行

つづいて以下を実行

$ sudo ./blynk --token=Blynkアプリで取得したAuthToken 

上図のようにReadyで準備OK!
 

動作

 

#ラズパイ 単体でラジコン #blynk

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

いい感じ!デジタル通信による制御であればラズパイでも問題なく色々できそうです♪

ESP32 と Blynk と 円形ロボットシャーシキット と

かわいい円形ロボットシャーシキットをAdafruitで購入したので、ESP32載っけて Blynk でWiFiラジコンつくりました♪

構成

部品

円形ロボットシャーシキット

Adafruitで輸入購入しました。本体価格 $19.95、送料は一番グレードの低いトラッキングのないコースで$25.40の合計 $45.35でした。17/6/26購入で17/7/7着でした。

 

ミニローバーキット #adafruit

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

組み立ても簡単でした!

国内購入ですとモータ別売りだけど、スイッチサイエンスでも購入できます。

blynk設定

ここではスマホアプリのblynkでBLE32とWiFi通信でし車を動かします。

新規プロジェクトを作成します。ハードウェアはESP32 Dev Boardを選択。Conection TypeにはWiFiを指定します。
AUTH TOKENはArduinoコード生成時に使用しますのでメール送信しメモします。

ウィジェットとしてジョイスティックを配置します。

ジョイスティックの設定はヴァーチャルピンV0に2軸の数値を出力します。x, yの値はそれぞれ最小-255 最大255としました。モータを制御して車を動かします。

Arduinoプログラム

ESP32をArduinor IDEでプログラミングを行います。Arduino IDEでの開発用ソースがインストール方法と共に以下にアップされています。参照ください。
 https://github.com/espressif/arduino-esp32

BlynkのArduino用 最新ライブラリは以下にあります。
 https://github.com/blynkkk/blynk-library

[スケッチの例] -> [Blynk] -> [Boards_WiFi]-> [ESP32_WiFi] を参考にコード生成しました。

ESP32はanalogWriteが使用できない!

モータドライバの各入力にアナログ電圧(PWM出力)を印加することでモータのスピードを制御するのですが、なんとESP32はanalogWriteが使えなかった。。。

かわりにledcWriteというのが使えるようです。
[スケッチの例] -> [ESP32] -> [examples]-> [AnalogOut] -> [LEDCSoftwareFade]
によると、

  • ledcSetup(channel, freq, resolution_bits)
    channel ;0~15の16個の出力を指定できる
    freq:PWMの周波数
    resolution_bits:出力電圧(デューティー比)の分解能(1~16bit) 8bitなら分解能256
  • ledcAttachPin(pin, channel)
    pin:マイコンピンの指定
    channel:ledcSetupで設定したチャンネル指定
  • ledcWrite(fchannel, duty)
    channel:ledcSetupで設定したチャンネル指定
    duty:ledcSetupで設定した分解能でデューティー比を指定

でアナログ電圧(PWM)出力できます。周波数が指定できるのは非常に便利ですねぇ(^o^)

動作

 

#esp32 と #blynk でらじこ

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

 

#blynk で #ラジコン

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

この車かわいい 😮 。BB-8つくれそう。。。

Raspberry Pi Zero W と Blynk で サーボモータ制御

Raspberry Pi Zero Wを手に入れたので、これまでなんとなく避けていたラズパイでの電子工作にトライしてみました。

ここではスマホアプリ Blynk とラズパイで2軸のカメラマウンタ(サーボモータ2個)をコントロールします。

構成

部品

blynk設定

ここではblynk のジョイスティックで2個のサーボモータを制御できるようにします。

新規プロジェクトを作成します。ハードウェアはラズパイ zeroがまだないのでとりあえずRaspberry Pi 3Bを選択。Conection TypeにはWiFiを指定します。
AUTH TOKENはコードコンパイル時に使用しますのでメール送信してメモしておきます。

ウィジェットとしてジョイスティックを配置します。

ジョイスティックの設定はヴァーチャルピンV0, V1にそれぞれの軸の数値を出力します。x, yの値はそれぞれ25~0としました。

プログラム

ラズパイのプログラムはpythonやnode.jsなど色々あって軽く迷走した結果、C++を採用しました。Arduinoで親しみも深い言語ですので。。。

Blynkライブラリインストール

ラズパイにBlynkライブラリをインストールします。
詳細は https://github.com/blynkkk/blynk-library/tree/master/linux 通りでターミナルを起動して

$ git clone https://github.com/blynkkk/blynk-library.git

でOK

C++プログラミング

Blynkライブラリがインストールされるとホームにblynk-library/linuxフォルダが生成されます。linuxフォルダをコピーするなどして、その中のmain.cppを以下のように書き換えます。

BlynkのV0, V1で値を受けてサーボの角度として制御しています。

wiringPiのSoftware PWMライブラリを使用してどのGPIOでもPWM出力できると思っていたのですが、ハードウェアPWMに対応したGPIO12, GPIO18でしか動作しませんでした。。。なぜだろう。。。(´;ω;`)ウッ…

コンパイル

main.cppのあるフォルダに移動して以下を実行。

$ make clean all target=raspberry 

Blynk実行

つづいて以下を実行

$ sudo ./blynk --token=Blynkアプリで取得したAuthToken 

上図のようにReadyで準備OK!

動作

Blynkアプリを実行すると以下のようにラズパイ単体でサーボを制御できます。

 

Raspberry Pi Zero W と #blynk で サーボモータ制御

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

でも。。。何かしら動かすならマイコンはさんだほうがいいかなぁ(´・ω・`)
不具合起きた際の復帰も遅いし。。。

LEDでスノードームをキラキラに照射!

以前ESP8266ボードで試したLEDのBlynkコントロールを応用して長女ちゃんが作ったスノードームを照らしてみました。スマホでLEDの色をコントロールします!

ESP-WROOM-02 と Blynk でLEDコントロール

スノードーム

アウトレットモールにお買い物にいったときに、キャンドルとスノードームをハンドメイドする特設コーナーがありまして。「つくりたい!」と長女ちゃん

ケースと中に入れる飾りやお魚を選んで接着剤で付けながらがんばって作りました!なんだかんだで総額¥2,600。。。。

透明スノードームケースを下から照射するLED台も売っていた(700)のですが、「作ったる!」とお父ちゃん頑張りました。

構成

部品

  • ESP8266開発ボード
  • NeoPixel Ring – 12連フルカラーシリアルLED

結局¥700オーバー。。。まぁもともと家にあった部品だし。。。遠隔操作できるしね。。。

Blynk設定

新規プロジェクトを作成します。HARDWRE MODELはESP8266を選択。CONNECTION TYPEはWiFiを選択。AUTH TOKENはArduinoコード生成時に使用しますので控えときます(もしくはメール送信します)。

以下のウィジェットを配置

  • あかるさスライダ:LED輝度調整
  • いろ(zeRGBa):通常モード時の色設定
  • にじボタン:虹モード ON/OFF
  • はやさスライダ:虹サイクルスピード調整

zeRGBaウィジットでLEDの色を設定できるようにします。
OUTPUTはMERGEを選択。それぞれ最小値0、最大値255とします。
見切れてますがSEND ON RELEASEはOFFにしています。
ここではヴァーチャルピンV0に出力するようにしました。

SliderウィジットでLEDの輝度を設定できるようにします。
最小値は0、最大値255に設定。SEND ON RELEASEはOFF。
ここではヴァーチャルピンV1に出力するようにしました。

ButtonウィジットでLED点滅の色の点滅モード切り替え行います。
OFF時は通常モードでLEDは単色で光ります。ON時は虹モードとなりLEDは虹色に光ります。
MODEはSWITCH。
ここではヴァーチャルピンV2に出力するようにしました。

Sliderウィジットで虹モードの点滅スピードを設定できるようにします。
最小値は0、最大値20に設定。SEND ON RELEASEはOFF。
ここではヴァーチャルピンV3に出力するようにしました。

Arduino IDEコード

動作

 

#blynk #neopixel #esp8266

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

 

スノードーム その1 #blynk #neopixel #esp8266

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

 

スノードーム その2 #blynk #neopixel #esp8266

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

きれいに光ったね\(^o^)/!

球体POV製作への道 その1

以下のような球体のPOV(Persistent Of Vision)装置を作りたくこちらで
進捗など記載できればとおもいペンをとります。

 POV(Persistent Of Vision)とはLEDなどを高速に動かして残像で映像を表示するものです。

 システム(あくまで理想) 

回転部と制御部でどう結線(電源線やデータ線)するかず~っと悩んでたのですが
BLEやWiFi使えばいいじゃないか!と思いたち上の図のような感じでいこうと思います。
ちょっとずつ検証・製作の報告できればと。。
んで完成させて子供たちを驚かせるぞー! ウェイ ウェイ オー 💡 !

WiFi MicroとBlynkで室温記録

してみました!

システム概要

 

DS3231ボードをI2CでWiFi Microにつないで温度情報をBlynkアプリでプロットします。
WiFi Microの詳細についでは以下も参照ください。

DS3231

正確な時間クロックを刻むリアルタイムクロック(RTC)デバイスです。温度センサも内蔵されてます。
安すぎる。。。
以下にArduino用のライブラリとプログラム例アップされてます。
 こちらのDS3231_temperature.inoを参考にI2Cで温度取得します。

Blynk設定

Blynk詳細はhttp://www.blynk.cc/getting-started過去記事を参照ください。
以下のBlynk用ライブラリをDL、解凍し所定のEnergiaライブラリフォルダにアップします。
 
 
温度表示用のLabeled Valueと温度変化履歴をプロットするHistory Graphを配置。
おまけでButton配置してD13ピンを指定しました。
WiFi MicroのD13にはLEDが載ってますんでコレ押すとON/OFF出来ます

Energia用コード

実行

最近平穏な気候過ぎて全然おもしろくないグラフに。。。。
 
冬にESP-WROOM-02でやった時は灯油ストーブが設定温度保とうと頑張ってる様子や
お母ちゃんがお迎え行ってストーブ消した様子も見れて面白かったですよ
 
ちなみに5/25にBlynkサーバ落ちたっぽく全然使えなくなった。。。。恐らく初めてだよね?コニュニティ賑わってたwww
独自のサーバ立てて使えるみたいだけど、そうなると ちと敷居高いよなぁ。。。。 🙄 

ESP-WROOM-02 と Blynk でLEDコントロール

過去に試しにやったものですが、完全に忘れてたので再度実施して備忘録を残したく候う。。。
 
今回試したのは暗くなるとLEDが点滅して、色はスマホからコントロールできるものです。
CdSセルで光を感知してLED(Neopixel)の輝度をコントロールし、LED色はBlynkを用いてWiFi介してスマホから指定します。WiFiマイコンとしてESP-WROOM-02開発ボードを使用。

ESP-WROOM-02開発ボード

人気のESP8266 WiFiモジュールとUSBシリアル変換ICが載った、まさに開発にうってつけの使いやすい基板です!
Arduino IDE環境設定方法
こちらの通りですので割愛w
 

Blynk


BlynkはArduinoやラズパイなどを簡単に遠隔で操作できるスマホアプリです。
IoTでややこしくてネックになるサーバー設定や通信方式を意識しなくても色々出来てしまうのです(現状お父ちゃんはこのへんはお母ちゃんに丸投げです。。。)
基本フリーソフトですがプロジェクトにウィジェットを追加するたびBlynk Energyというものが減り0になった場合はプロジェクトやウィジェットを削除するか、課金してBlynk Energyを購入する必要があります。
設定方法
こちらの公式ページの通り
  • スマホにアプリをインストール
  • アプリ立上げログイン登録
  • 以下でBlynk用ライブラリをダウンロードしArduinoのライブラリ保管場所に解凍
    https://github.com/blynkkk/blynk-library/releases/tag/v0.3.4   
    これでArduino IDEメニュー[ファイル]->[スケッチの例]の中に”Blynk”が追加され開発が可能になりました。

Blynkアプリでプロジェクトを作成

  • アプリを起動しCreate New Projectで新規プロジェクト作成

  • Project Name指定(ここでは”ESP LED “)
  • HARDWARE MODEL: “ESP8266″を選択
  • AUTH TOKENをひかえる。E-mailタップで登録したアドレスにAUTH TOKENが届きます。
  • Createクリックで初期設定終了

  • 画面をタップしウィジェットを配置
    ここではLEDの輝度を表示するValue Displayと色を指定するzeRGBaを配置
    zeRGBaはシマウマをタップするとその部位の色のRGB値を返すウィジェットです。

ESP-WROOM-02の設定

LEDテープNeopixelは独自の1線シリアル方式で連なった各LEDのRGB値を設定し光らせます。


Arduino IDE用ライブラリは以下にあります。
 https://github.com/adafruit/Adafruit_NeoPixel
ここでは20個のLEDを使用して色をBlynkで指定します。また乱数を用いてチラチラと瞬くようにしました。
  
CdSセルは光が当たると抵抗が減少する素子です。3.3Vを抵抗(5.1kohm)とCdSセルで分圧してアナログ入力できるTOUTピンに接続します。
以下のサイトの”ESP-WROOM-02でアナログ入力をするには”の通りTOUTピンには1V以上は入力できないため、1V以上にならないよう抵抗分圧してます。
Arduino IDE用コード

 

実行

Blynkアプリの再生ボタンをクリックでプロジェクト実行!

 

これ 別にわざわざWiFiじゃなくてBLEで十分なんだけど。。。
クリスマスになんかできそうかな 🙄 ?
まぁBlynk超便利ということで!
Blynkさん早くBLEも対応して—!!

追記(16/9/25)

現状まだベータ版ですがついにBLE対応されました!
これでスマホアプリ用コード書かなくても簡単にBLE搭載マイコンやラズパイを制御できます!

以下、試しに作ったものです。

Flood Error

loop内でデータ書き込みをすると接続エラーが出ることがあるらしい。1秒に10以上データをBlynkサーバーにあげないでほしいとのこと。

 http://docs.blynk.cc/#troubleshooting-flood-error

悪い例

loop内でヴァーチャルピンにデータ送信をしており、大量にBlynkサーバにデータが送られofflineエラーになる可能性がある。

良い例

delay()で遅延させてデータ量を制限するのは有効ではなく、改善するには BlynkTimer を使うべきらしい

例では1秒(1000msec)にタイマーを設定しているがエラーが起きない程度に早めて使用するよう推奨されています。

 

RedBear Duo セットアップ方法 for Arduino IDE

RedBear Duoとは

WifiとBluetooth LEを搭載したマイコンです。以下が詳しくまとめられてます。
それではArduino IDE向けの環境設定方法(Windows)記載します。
 

ドライバのインストール

Windowsのみ必要でWin10には必要ないようです icon-windows  
  • ドライバをDownloadし解凍
  • デバイスマネージャーを開き”Duo with WiFi and BLE”のプロパティを選択
  • “ドライバの更新”で先ほど解凍したフォルダを選択
  • 無事にインストールされるとポート(COMとLPT)で認識される

 Arduino IDE設定

  • メニュー [ファイル]->[環境設定]内のAdditional Boards Manager URLsに

https://redbearlab.github.io/arduino/package_redbear_index.json

を追加(すでに他のjsonを入力してる場合はカンマで仕切る)し[OK]をクリック

  • メニュー [ツール]->[ボード]内の[Board Manager]を選択 [Board Manager] 内の”RedBear Duo”を選択し[Install]をクリック
  • インストール後メニュー [ツール]->[ボード]内に”RedBear Duo (Native USB Port)”が追加されるので選択 、また[シリアルポート]も指定する。

ファームウェアのアップデート

  • 黄色点滅時はDFU(device firmware update)モードとなりファームウェアを書き込むことができますが
     WindowsではDFUモード用のドライバをインストールしないと認識しません
  • Zadigというソフトをインストールし起動して”Install Driver “をクリック

  • ドライバがインストールされたらArduino IDEのメニュー [ツール]->[書込装置]内の”Duo FW Uploader”を選択し[ブートローダを書き込む]をクリック
  • 無事にファームウェアが更新されると青LEDが点滅します

以上でRedBear DuoのArduino IDE環境が整いました♪

メニュー [ファイル]-> [スケッチの例]->[RedBear_Duo]->[01.Basics]内のDuo_Serverで簡易WiFi通信確認しました。
さてこれで何作ろうかなー
 

参考

追記(16/10/13) 

Redbear Duoを使って作成しました!

ワウペダルと加速度センサでBLE制御ラジコン!