赤外線リモコン受信センサーの置物

100円ショップでLEDを入れるのにちょうどいい穴の開いた植木鉢に挿す飾り(?)を見つけたので、赤外線リモコン受信センサーを組み込んでみた。

100円ショップで見つけたオブジェ

100円ショップで見つけたオブジェ

秋月で買っておいたペットボトルのキャップサイズのユニバーサル基板に実装した。(裏側にボタン電池ホルダーを付けた。)

ペットボトルのキャップサイズの基板へ実装

ペットボトルのキャップサイズの基板へ実装

できた回路をグルーガンで貼り付けた。さらに100円ショップの造花というか模造の観葉植物(?)に挿した。

100円ショップの飾り物に赤外線リモコン受信センサーを組み込んだ

100円ショップの飾り物に赤外線リモコン受信センサーを組み込んだ

動作動画。
動画ではわかるようにすぐ近くでリモコンを操作していますが、2mとか離れていても反応します。

3/30に居間に設置して、そのまま生活(テレビの操作とシーリングライトのON/OFF)していたら4/13に反応しなくなっていたのを認識した。約2週間で電池切れになった。

カテゴリー: 作ったモノ, 回路, 部品 | タグ: | コメントする

三度、赤外線リモコン

まずは赤外線リモコンの受信モジュールを使って、赤外線リモコンの信号を受けたらLEDが点滅する回路を描いた。

赤外線リモコン受信センサー回路図

赤外線リモコン受信センサー回路図

赤外線リモコン受信センサー

赤外線リモコン受信センサー

これ、赤外線リモコンの電池切れのチェックにも使える。

カテゴリー: 作ったモノ, 回路, 部品 | タグ: | コメントする

0.96インチ I2C 128×64 OLED LCDディスプレイ SSD1306液晶

0.96'' OLED LCDディスプレイ

0.96” OLED LCDディスプレイ

説明:
超高輝度(調整可能)
スーパーハイコントラスト(調整可能)
組み込みドライバ/コントローラ
フォントの色:ブルー
駆動デューティ:1/64デューティ
画素数:128×64
パネルサイズ:26.70mm x 19.26mm x 1.85mm
アクティブエリア: 21.74mm x 11.2mm
ピクセルサイズ: 0.15mm x 0.15mm
このOLED品番UG-2864HSWEG01、UG-2864AMBAG01ではない
バックライト必要はなく、表示装置は、自発光することができ
高解像度:128*64
視野角:>160°
多くの制御チップをサポートしています:Arduino、51シリーズ、MSP430シリーズ、STM32/2、CSR ICなどと完全な互換性があります。
超低消費電力:フルスクリーン点灯0.08W
電圧:3V~5VDC
働く温度:-30℃~70℃
モジュールサイズ:27.0MM*27.0MM*4.1MM
I2C/ IICインタフェースは、わずか2 IOを必要としています。
ドライバIC:SSD1306
パッケージは以下を含みます: 1*0.96″I2C IIC SPIシリアル・128×64 OLEDのLCDディスプレイ

追記
今回もAdafruit_SSD1306ライブラリを使って動かせなかったので、いろいろ調べたらこのページを見つけ、このシリーズを読んでとりあえず表示されるようになった。
でも、自由に描画できるわけじゃないので、これからいろいろ調べる。

カテゴリー: Bookmark, 部品 | タグ: , | コメントする

素Bme280Serverを電池で動かす

レギュレータを外して、アルカリ単三乾電池2本で動かしてみた。

単三電池2本でBme280Server

単三電池2本でBme280Server

一晩持たなかった。
(寝る前に起動して、起きたらアクセス不能になっていた。)

レギュレータを元に戻して、Ankerのモバイルバッテリーでも動かしてみる。

Bme280Server(Ankerバッテリー)

Bme280Server(Ankerバッテリー)

まだ動かしている途中なので、何日持つのかわからない。
追記:12時間くらいの時はまだ半分残っていたけど、26時間くらいの時には空だった。)

そこで、消費電力を調べてみようとググったら、ありました。

ESP8266の消費電流の徹底調査

どうも、ESP-WROOM-02をサーバーにするのではなく、定期的にデータを取得してサーバーに送信するクライアントとして使うのが正しいらしい。

で、deepSleepについてもググった。

ESP8266の真骨頂Deep-Sleepモードの使い方

次はサーバーを用意してクライアントとして作ってみる。

カテゴリー: Bookmark, ESP-WROOM-02, 作ったモノ | コメントする

素のESP-WROOM-02でBme280Serverを動かす

前の記事を元に素のESP-WROOM-02にBME280を接続した回路図を描いた。
(ただし、使うポートをGPIO12, GPIO14に変更した。)

Bme280Server(素のESP-wROOM-02)

Bme280Server(素のESP-wROOM-02)

ブレッドボードに組んでみた。

Bme280Server(素のESP-WROOM-02)

Bme280Server(素のESP-WROOM-02)

カテゴリー: ESP-WROOM-02, センサー, 作ったモノ, 回路 | タグ: | コメントする

素のESP-WROOM-02を動かす

DIP化した素のESP-WROOM-02を動かすための回路を再度回路図にした。

ESP-WROOM-02基本回路図

ESP-WROOM-02基本回路図

回路図をブレッドボードに組んだ。
(写真にはGPIO16にLEDをつないで、Blinkを書き込んだ。)

基本回路をブレッドボードに

基本回路をブレッドボードに

書き込む際はSW2 FLASHを押した状態で、SW1 RESETを押して放し、Arduino IDEで転送を行う。転送が終わったらSW2 FLASHを放す。

カテゴリー: ESP-WROOM-02, 作ったモノ, 回路 | コメントする

Bme280Server

ESP-WROOM-02の開発ボードを使って、BME280の情報をJSONで取得できるようにBme280Serverを作った。

Bme280Server

Bme280Server

秋月のESP-WROOM-02開発ボードからI2C経由でBME280にアクセスするArduino IDEのライブラリを探したけど、自分で使いたいピン(SDA=GPIO2, SCL=GPIO14)で動かせなかったので、AdafruitのBME280ライブラリを参考に書き換えた。
そして、ESP-WROOM-02のサンプルのHelloServerに組み込んでBme280Serverとしてビルドした。

秋月ESP-WROOM-02開発ボードとBME280の回路図

秋月ESP-WROOM-02開発ボードとBME280の回路図

Bme280Server.zip

カテゴリー: ESP-WROOM-02, センサー, 作ったモノ | タグ: , , | コメントする

ESP-WROOM-02再び

スマートスピーカーを買って、いろいろ家電を操作したいと思ってWiFiにつなげるESP-WROOM-02を購入。
(実はESP-WROOM-32の開発ボードを2つほど買ったんだけど、Arduino IDEにうまくインストールできなかったので、実績のあるESP-WROOM-02にした。)

AE_ESP-WROOM-02

AE_ESP-WROOM-02

AE-ESP-WROOM02-DEV

AE-ESP-WROOM02-DEV

カテゴリー: ESP-WROOM-02 | タグ: | コメントする

BME280

気圧、温度、湿度センサーのBME280のI2Cボードをヤフオクで購入。
I2Cアドレス : 0x76
電源電圧 : 3.0〜3.3V
I/Oレベル : 3.3V以下

BME280(I2C)

BME280(I2C)

BME280裏面

BME280裏面

VCC, GND, SCL, SDA, CSB, SDO の6本。

ヤフオクでの説明
Bosch社の高精度デジタル圧力センサBME280ブレークアウトボードです。
◎特徴は気圧や温度に加え湿度まで計測できるマルチセンサです。

※レベル変換及びレギュレータ無のボードです。Arduinoなど5V系マイコンへの接続にはレベル変換が必要になります。

≪BME280概略≫
・供給電圧(VCC): 1.71 ~ 3.6V
・圧力レンジ:300~1100hPa (動作レンジ)
・温度レンジ:-40~85°C (動作レンジ)
・湿度レンジ:0~100% (動作レンジ)
・絶対精度:±1hPa(950~1050hPa、0~ +40°C)
・インターフェース:I2C最大3.4 MHz)/SPI(3,4線式,MAX10MHz)
(I2Cアドレス=0x76, 0x77)
・消費電流:2.7uA(サンプリング=1Hz)
・外形寸法:15 x 12 mm
※資料・説明書は付属しません、接続はボード裏面のシルク文字(信号名)を参照してください。
その他詳細はBMP280のデータシートを参照ください。

≪BME280データシート
https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf

≪商品内容≫
1.BME280ブレークアウトボード x1
2.ヘッダーピン(6pin) x1

≪Adafruitの参考ページ≫
https://learn.adafruit.com/adafruit-bme280-humidity-barometric-pressure-temperature-sensor-breakout/wiring-and-test?view=all

カテゴリー: センサー | タグ: , , | コメントする

Google Home Miniとあっち向いてホイ!

Google Home Miniで何か動かしたいと思って、作ったのがコレ。

まずは単純に手元にあったドロイド君のフィギュアの頭を左右に回せるように首にサーボを入れてみた。

ドロイド君

ドロイド君

ドロイド君(サーボ部分)

ドロイド君(サーボ部分)

ドロイド君(サーボ部分)

ドロイド君(サーボ部分)

ドロイド君(頭部)

ドロイド君(頭部)

ドロイド君(頭部)

ドロイド君(頭部)

あとはArduinoでサーボを制御。
本当はサーボには別の電源から供給した方がいいんだろうけど、とりあえずここではUSBからの5Vで動かしています。

Arduino Nanoとドロイド君

Arduino Nanoとドロイド君

最終的に、USB経由のシリアル通信で’r’, ‘l’, ‘c’で「右」、「左」、「中央」に首を振るようにした。
さらに’r’も’l’も1秒で中央に戻るようにしたので、’c’は使わなくていいようにした。

#include 

Servo myservo;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  
  myservo.attach(9);

  delay(100);
  myservo.write(90);
}

void loop() {
  // put your main code here, to run repeatedly:

  if (Serial.available() > 0) {
    int c = Serial.read();
    //Serial.write(c);
    if (c=='c') {
      myservo.write(90);
    } else if (c=='l') {
      myservo.write(10);
      delay(1000);
      myservo.write(90);
    } else if (c=='r') {
      myservo.write(170);
      delay(1000);
      myservo.write(90);
    }
  }
}

次にRaspberry Pi 3にGoogle Home Notifierを入れて使っていたので、そのGoogle Home Notifierのexample.jsにシリアル通信部分を追加して対応した。
それにngrokが使えると便利だし。

var express = require('express');
var googlehome = require('./google-home-notifier');
var ngrok = require('ngrok');
var bodyParser = require('body-parser');
var app = express();
var SerialPort = require('serialport');
var port = new SerialPort('/dev/ttyUSB0', {
  baudRate: 9600
});
const serverPort = 8080;

port.on('open', function() {
  console.log('Serial open.');
});

var deviceName = 'Google Home';
googlehome.device(deviceName);
// googlehome.accent('uk'); // uncomment for british voice

var urlencodedParser = bodyParser.urlencoded({ extended: false });

app.post('/google-home-notifier', urlencodedParser, function (req, res) {
  if (!req.body) return res.sendStatus(400)
  console.log(req.body);
  var text = req.body.text;
  if (text){
    res.send(deviceName + ' will say: ' + text + '\n');
    googlehome.notify(text, function(res) {
        console.log(res);
    });
  }else{
    var dd = new Date();
    var dice = dd.getMilliseconds()%2;
    if (dice==0) {
      port.write(new Buffer('l'), function (err, results) {});
    } else {
      port.write(new Buffer('r'), function (err, results) {});
    }
    res.send('Please POST "text=Hello Google Home"');
  }
})

app.listen(serverPort, function () {
  ngrok.connect(serverPort, function (err, url) {
    console.log('POST "text=Hello Google Home" to:');
    console.log('    http://localhost:' + serverPort + '/google-home-notifier');
    console.log('    ' + url + '/google-home-notifier');
    console.log('example:');
    console.log('curl -X POST -d "text=Hello Google Home" ' + url + '/google-home-notifier');
  });
})

さらにIFTTTでGoogle AssistantとWebhookでAppletを作って、次のように設定した。

Google Assistant部分

フィールド
What do you want say? あっちむいて
What’s another way to say it? (optional) (空欄)
And another way? (optional) (空欄)
What do you want the Assistant to say in response? ほい
Language Japanese

Webhook部分

フィールド
URL https://??????.ngrok.io/google-home-notifier
Method POST
Content Type (optional) application/json
Body (optional) test

※ URLの??????部分は起動する毎に変わるので、その度にIFTTTの設定を変えている。

本来は「あっち向いてホイ!」と全部こっち側がしゃべるべきだけど、反応も欲しいので「あっち向いて」までしゃべるとGoogle Home Miniに「ホイ」と反応させている。

カテゴリー: 作ったモノ | タグ: | コメントする