素の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に「ホイ」と反応させている。

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

Rainbow LEDの動作テスト

Rainbow LEDにケーブルを付けて動作テスト。
ケーブルはサーボモーター用の3線のケーブル。

Rainbow LEDの動作テスト

Rainbow LEDの動作テスト

Adafruit_NeoPixelライブラリのサンプルstrandtestをそのまま使った。

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

16 x 12-bit PWM & Servo Shield

16 x 12-bit PWM & Servo Shieldをヤフオクで見つけたので購入。

16 x 12-bit PWM & Servo Shield

16 x 12-bit PWM & Servo Shield

ヤフオク情報

NXP社のI2C-LEDコントローラPCA9685を使用した16ch-12bitPWM/サーボシールドです。16個のサーボをI2Cインターフェース(信号2本)で制御可能な便利なシールドです。
◎商品は組立て済完成品、動作確認済です。

≪商品概要≫
・電源:5V
・インターフェース:I2C
・PWM周波数:最大1.6KHz
・分解能:12bit (約4usec/60Hz)
・サーボ電源入力用ターミナルブロック(2P-2.54mmピッチ)
・サーボ出力ヘッダ:4x3Px4グループ(16チャンネル)
・出力ライン220Ω保護抵抗付き
・62種のアドレス設定(6アドレスパッド・半田ジャンパー)
・大型電解コンデンサ用パッド(470~100uF/10Vを必要の応じて実装してください)

≪参考ページ≫
・PCA9685データシート
http://cache.nxp.com/documents/data_sheet/PCA9685.pdf?pspll=1

・Adafruitサーボドライバライブラリ
https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

≪商品内容≫
(1)16ch-12bitPWM/サーボシールド x1台
※商品は本体のみです、説明書・資料などは付属しません。

Adafruit PWM Servo Driver Libraryのサンプルservoでの動作テスト
さっそく、Arduinoプラットフォームを使って、動作テストを行った。

16 x 12-bit PWM & Servo Shieldの動作テスト(全体)

16 x 12-bit PWM & Servo Shieldの動作テスト(全体)

16 x 12-bit PWM & Servo Shieldの動作テスト(サーボモーター接続部分)

16 x 12-bit PWM & Servo Shieldの動作テスト(サーボモーター接続部分)


サーボモーターを0, 1, 4, 5に接続。

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

Rainbow LED

ヤフオクでRGB LEDがリング状に配置された部品を見つけたので2つ購入。

Rainbow LED

Rainbow LED

Rainbow LED 単品表面

Rainbow LED 単品表面

Rainbow LED 単品裏面

Rainbow LED 単品裏面

ヤフオクでの情報

WS2811 5050 RGBレインボーLEDモジュール(FC102)です。

≪商品概要≫
・電源電圧:5V
・外形寸法:直径60mm
・チップ:WS2811(LEDに内蔵)
・LED:5050 RGBフルカラー・ハイライトパッケージx16個
・制御ポート:デジタル
・プラットフォーム:Arduinoなどマイクロコントローラ用
・基板カラー:ホワイト
・重量:11g

≪商品内容≫
(1)5050 RGBレインボーLEDモジュール(FC-102) x1台
※商品は本体のみです、説明書・資料などは付属しません。

≪参考ページ≫
https://www.adafruit.com/product/1463

≪Adafruit_NeoPixelライブラリ≫
https://github.com/adafruit/Adafruit_NeoPixel

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

テレビ回転台

直径40cmあるテレビ回転台を見つけたので購入。
耐荷重も100kgある。

テレビ回転台

テレビ回転台


3Dプリンターを乗せてテーブルの高さ調整をするのに便利と思ったので。

カテゴリー: 3Dプリンター, 工具 | タグ: | コメントする

Arduino用プラットフォーム

最近、Arduino用プラットフォームというのを見るのでちょっと試してみたくて購入。

Arduino用プラットフォーム(組み立て前)

Arduino用プラットフォーム(組み立て前)

Arduino用プラットフォーム(組み立て後)

Arduino用プラットフォーム(組み立て後)

カテゴリー: Arduino, 工具 | タグ: | コメントする