●概要
居間で尿意を感じたら100均のBloutoothボタンをおします。トイレのESP32はこれを検知してアラウーノへ赤外線信号を送ります。この信号を受けたアラウーノは泡クッションというものを水面に作り尿を待ち受けます。
という作戦のESP32版「その3」動画です。
ライブラリ「IRremoteESP8266」の
スケッチ例のIRsendDemoを使って天井のLEDシーリングをチカチカします。
今回のソースコードは説明欄の最後に載せます。
アラウーノを含む別の赤外線リモコンが使える機器でもコードが違うだけで、それ以外のやることや、プログラムは同じです。
赤外線送信基板(部品)はRaspberryPiで作った時のものを流用しています。
基板実装やその前のブレッドボードでのテスト等は後述の「●RaspberryPi版」のリンクからご覧ください。
●部品と配線を参考にしたWebページ
・格安スマートリモコンの作り方
[ Ссылка ]
・赤外線LEDドライブ回路の決定版
[ Ссылка ]
●ESP32版
その1、Bluetoothボタン検知:[ Ссылка ]
その2、赤外線リモコンコード取得保存:[ Ссылка ]
その3:取得したリモコンコードの送信:[ Ссылка ]
その4:その1とその3のプログラム合体、ケース格納:[ Ссылка ]
RaspberryPi版の動画リンクは「環境」の次に記載しました。
●環境
・ESP32:ESP32-DevKitC-VE ESP32-WROVER-E開発ボード 8MB
[ Ссылка ]
・Arduino IDE 1.8.15
[ Ссылка ]
arduino-1.8.15-linuxarm.tar.xz
・Raspberry Pi 4B 8GB
Arduino IDE用
・Mac mini 2012 i7 16GB
Raspberry PiへVNCしてその画面をQuickTimeで録画
動画編集はiMovie
●RaspberryPi版
その1:[ Ссылка ]
その2:[ Ссылка ]
その3:[ Ссылка ]
その4;[ Ссылка ]
その5;[ Ссылка ]
その6;[ Ссылка ]
●ソースコード
動画はわかりやすくするためIDEのコードを加工したものです。
下記はIDEのコード(コンパイルエラーなし)そのものです。
ただし、掲載時に加工した部分があります。
・youtubeの制約上<>を全角にしています。半角に戻して使ってください。
・文字数制限超過のため冒頭のコメントの一部を削除しています。
以下それ以外の補足
・動画内のものに比べてコードの位置、コメント等が異なります。
・赤外線コードrawDataの値はIRrecv dumpV3で受信したものですが、受信の都度微妙に変化します。今回のコードはその2の動画のものと異なりますが、シーリングライトの操作できています。
----コード↓から----
/* IRremoteESP8266: IRsendDemo - demonstrates sending IR codes with IRsend.
*
* Version 1.1 January, 2019
* Based on Ken Shirriff's IrsendDemo Version 0.1 July, 2009,
* Copyright 2009 Ken Shirriff, [ Ссылка ]
*
* An IR LED circuit *MUST* be connected to the ESP8266 on a pin
* as specified by kIrLed below.
*
* TL;DR: The IR LED needs to be driven by a transistor for a good result.
*
* Suggested circuit:
* [ Ссылка ]
*
* Common mistakes & tips:
■■■■■youtube説明欄文字数制限超過のため削除しました。■■■■■
*/
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
//const uint16_t kIrLed = 27; // ESP8266 GPIO pin to use. Recommended: 4 (D2).
const uint16_t kIrLed = 13; // ESP8266 GPIO pin to use. Recommended: 4 (D2).
IRsend irsend(kIrLed); // Set the GPIO to be used to sending the message.
// Example of data captured by IRrecvDumpV2.ino
//iris ohyama
uint16_t rawData[195] = {342, 584, 424, 580, 428, 554, 456, 526, 484, 502, 1504, 416, 588, 474, 1532, 414, 1588, 440, 1562, 414, 590, 416, 1588, 414, 1586, 392, 592, 10288, 5582, 924, 1604, 336, 1664, 334, 670, 340, 668, 340, 670, 338, 670, 340, 668, 344, 664, 344, 666, 342, 1662, 342, 1656, 398, 606, 354, 656, 342, 664, 344, 666, 344, 1660, 338, 666, 346, 1624, 380, 622, 382, 626, 382, 628, 380, 624, 386, 626, 440, 568, 382, 666, 402, 570, 440, 568, 380, 630, 380, 628, 390, 618, 438, 570, 386, 626, 380, 1618, 380, 628, 382, 1622, 380, 1622, 382, 1618, 380, 624, 384, 1622, 388, 1612, 360, 626, 10260, 5620, 888, 1640, 358, 1642, 356, 648, 358, 650, 362, 644, 360, 648, 362, 646, 366, 642, 360, 648, 364, 1640, 362, 1636, 366, 640, 374, 636, 366, 644, 364, 640, 370, 1632, 368, 616, 394, 1556, 440, 564, 448, 562, 446, 562, 446, 620, 390, 622, 388, 622, 386, 622, 388, 622, 386, 620, 390, 620, 388, 618, 390, 618, 390, 616, 392, 616, 394, 1594, 406, 616, 398, 1590, 408, 1590, 412, 1592, 406, 598, 414, 1590, 410, 1590, 392, 594}; // UNKNOWN 7736C900
/*
uint16_t rawData[67] = {9000, 4500, 650, 550, 650, 1650, 600, 550, 650, 550,
600, 1650, 650, 550, 600, 1650, 650, 1650, 650, 1650,
600, 550, 650, 1650, 650, 1650, 650, 550, 600, 1650,
650, 1650, 650, 550, 650, 550, 650, 1650, 650, 550,
650, 550, 650, 550, 600, 550, 650, 550, 650, 550,
650, 1650, 600, 550, 650, 1650, 650, 1650, 650, 1650,
650, 1650, 650, 1650, 650, 1650, 600};
// Example Samsung A/C state captured from IRrecvDumpV2.ino
uint8_t samsungState[kSamsungAcStateLength] = {
0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0,
0x01, 0xE2, 0xFE, 0x71, 0x40, 0x11, 0xF0};
*/
void setup() {
irsend.begin();
#if ESP8266
Serial.begin(115200, SERIAL_8N1, SERIAL_TX_ONLY);
#else // ESP8266
Serial.begin(115200, SERIAL_8N1);
#endif // ESP8266
}
void loop() {
Serial.println("a rawData capture from IRrecvDumpV2");
irsend.sendRaw(rawData, 195, 38); // Send a raw data capture at 38kHz.
delay(5000);
}
----コード↑まで----
Ещё видео!