今日の話題は一つ安い声感センサー。該当センサーは声の識別ができない、声が有無しか感知できます。声感知スイッチなど場合は適用です。
ものはこれです。
■配線図■RGBLEDとは
RGBLEDとは、その名の通りRGB(Red, Green, Blue)の三原色の光が一つの素子で出せるようになっているLEDです。
■種類
・普通のフルカラーRGBLED
・表面実装用フルカラーRGBLED
・ESP8266-CH340開発ボード
・カソードコモン型RGBLED
・SMDRGBLEDモジュール
・WS2812B-5050LED
・ブレッドボード
・USBケーブル
・ジャンパーワイヤー
■サンプル1ー単色切替
配線図:
プログラム:
#define B 4 // D2#define R 14 // D5#define G 12 // D6void setup() {pinMode(R, OUTPUT);pinMode(G, OUTPUT);pinMode(B, OUTPUT);}void loop() {digitalWrite(R, HIGH);digitalWrite(G, LOW);digitalWrite(B, LOW);delay(1000);digitalWrite(R, LOW);digitalWrite(G, HIGH);digitalWrite(B, LOW);delay(1000);digitalWrite(R, LOW);digitalWrite(G, LOW);digitalWrite(B, HIGH);delay(1000);}
効果:
■サンプル2ー任意色
ESP8266の一部ピンはPWM出力できます。単純なHIGH、LOWの数字出力ではなく、0-255の範囲が出力可能ので、RGBの各数字を組み合わせて、任意の色が表示できます。
上記のD2,D5,D6ピンは全部PWM出力が可能です。
今回はカソードコモン型RGBLEDを利用します。
プログラムは下記ように調整します:
#define B 4 // D2#define R 14 // D5#define G 12 // D6void setup() {pinMode(R, OUTPUT);pinMode(G, OUTPUT);pinMode(B, OUTPUT);}void loop() {// 紫色analogWrite(R, 247);analogWrite(G, 130);analogWrite(B, 247);delay(1000);}
効果:
■サンプル3ーWS2812B-5050LED
WS2812B-5050LEDモジュールは内蔵マイコンがあります。
ピン情報はこのようなことです。
GND:GND
DIN:データインプット
DOUT:データアウトプット
DINとDOUTは違いところですが、もう一番重要なことです。
DINは最大800KBデータがインプットできます、一つのWS2812B-5050LEDを経過すると24B(RGB各8bit)を取得し、残りデータは次のWS2812B-5050LEDに渡します。で、沢山なLEDを同時的にコントロールが可能になりました。
このイメージです。
#include <Adafruit_NeoPixel.h>#define PIN 0 // D3#define NUMPIXELS 1 // LED数Adafruit_NeoPixel led(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);void setup() {led.begin();led.setBrightness(10); // 明るさ}void loop() {led.setPixelColor(0,led.Color(255,0,0)); // 赤led.show();delay(1000);led.setPixelColor(0,led.Color(0,255,0)); // 緑led.show();delay(1000);led.setPixelColor(0,led.Color(0,0,255)); // 青led.show();delay(1000);led.clear();led.show();delay(1000);}
■TM1637とは
TM1637 は、4桁7セグメントのLEDを簡単に表示するためのモジュールです。 7セグメントLEDはその名の通り、1文字 (または数字) 毎に7セグメントあるので、本来は制御するためにたくさんの入出力が必要になります。
■主な特徴
・電源電圧 3.3/5V
・表示 8セグメント×6ビット
・キー・スキャン 8×2ビット
・輝度 8レベル
・インターフェース CLK、DIO
■配線図
■部品リスト
・ESP8266-CH340開発ボード
・TM1637LED表示器
・ブレッドボード
・USBケーブル
・ジャンパーワイヤー
■実物イメージ
■プログラム
サンプルプログラムはTM1637専用のライブラリを利用しているため、下記場所にダウンロードできます。
#include <TM1637Display.h>const int CLK = 14; //D5const int DIO = 12; //D6TM1637Display display(CLK, DIO); //set up the 4-Digit Display.void setup() {display.setBrightness(0x0a);}void loop() {uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };// コロンマークを点滅するdisplay.showNumberDecEx(1840,0x40,true);delay(1000);display.showNumberDecEx(1840,0x0,true);delay(1000);}
■点滅効果
■リレーとは
■リレーの動作原理
■部品リスト:
・ESP8266-CH340開発ボード
const int RELAY = 5; //D1void setup() {// put your setup code here, to run once:Serial.begin(115200);pinMode(RELAY, OUTPUT);digitalWrite(RELAY, HIGH);}void loop() {}
■紹介:
Water Sensor水位センサーはArduino開発ボードで直接繋がる使いやすいものであること。水滴サイズや水位などの水量をアナログ電圧として出力しているから 、開発ボードのA0ピンを利用する。
■部品リスト:
・ESP8266-CH340開発ボード
・ブレッドボード
・USBケーブル
・水位センサー
■配線図:
■土壌湿度センサーとは
アナログ土壌湿度センサーは、土壌中に存在する水分の量を読み取る事が出来ます。センサー自体シンプルな構造であることから信頼性が高く、湿度を監視するのに理想的です。
■部品リスト:
・ESP8266-CH340開発ボード
・ブレッドボード
・USBケーブル
・土壌湿度センサー(FC-28)
■配線図:
■説明:・ESP8266開発ボード
・ブレッドボード
・USBケーブル
・光センサー
・3mm LED
・10kΩ抵抗 100Ω抵抗(任意)
・ジャンパーワイヤー
■配線図
■説明
LDR/CDSの抵抗を変更に従って、A0ピンで取得の数値も変わります(0~1023の範囲)
一定の値を超えると、夜を判定し、LEDを自動点灯します。
一定の値に減ると、昼を判定し、LEDを自動消灯します。
■実物イメージ
・通常の場合
■プログラム
int lightValue=0;int ledPin=5; // D1void setup() {// put your setup code here, to run once:Serial.begin(115200);pinMode(ledPin,OUTPUT);}void loop() {// put your main code here, to run repeatedly:Serial.print("LDR Reading: ");lightValue = analogRead(A0);Serial.println(lightValue);if (lightValue > 20) {// 点灯digitalWrite(ledPin, HIGH);} else {// 滅灯digitalWrite(ledPin, LOW);}delay(1000);}
本文は気象関連センサーの使い方のまとめ紹介
■部品リスト:
・ESP8266開発ボード(必須)
・ブレッドボード(必須)
・USBケーブル(必須)
・温度センサーDS18B20(必須)
・雨滴感知センサー(必須)
・気圧センサーBPM180(必須)
・3mm LED
・100Ω抵抗*2(1必須)
・ジャンパーワイヤー(必須)
■気圧センサーBPM180
このモジュール単体で、「気温」「気圧」の情報を計測することができます。
ピンは、左から順に「SDA」「SCL」「GND」「VIN」になっています。
・注意点
今回は「BMP180_Breakout_Arduino_Library」を利用しています。
下記場所でダウンロードできます。
https://github.com/sparkfun/BMP180_Breakout_Arduino_Library
ダウンロードされたZIPファイルが下図でもインストールできます。
・配線図
■雨滴感知センサー
雨滴感知センサーは状態が変化した時マイクロに通知します。
ピンは、左から順に「A0」「D0」「GND」「VIN」になっています。
・注意点
アナログ電圧を読み取ってデジタル値に変換するために、ADCを占用しています。
雨滴感度は調整できます。
・配線図
■温度センサーDS18B20
高精度デジタル温度専用センサーです。
独自の1-Wireインターフェースは、通信のために1本のポートピンだけを必要とします。
ピンは、左から順に「GND」「DQ」「VDD」になっています。
・配線図
■回路イメージ
下図は集成して実物イメージです。
■プログラム
#include <OneWire.h>#include <DallasTemperature.h>#include <SFE_BMP180.h>#define ALTITUDE 1655.0#define rainDigital 16 // D0const int TEMP = 14; //D5OneWire oneWire(TEMP);DallasTemperature sensors(&oneWire);SFE_BMP180 pressure;void setup() {Serial.begin(115200);sensors.begin();pinMode(rainDigital,INPUT);//BMP180 Sensorif (pressure.begin())Serial.println("BMP180 init success");else {Serial.println("BMP180 init fail\n\n");while(1);}}void loop() {// 温度検知sensors.requestTemperatures();float temperatureC = sensors.getTempCByIndex(0);Serial.print(temperatureC);Serial.println("℃");handleADC();// 雨滴検知int rain = analogRead(A0);Serial.print("R:");Serial.println(rain);int rainDigitalVal = digitalRead(rainDigital);String rainstatus;if(rainDigitalVal==1){rainstatus="No Rain";} else{rainstatus="Raining";}Serial.println(rainstatus);delay(5000);}void handleADC() {char status;double T,P,p0,a;Serial.println();Serial.print("provided altitude: ");Serial.print(ALTITUDE,0);Serial.print(" meters, ");Serial.print(ALTITUDE*3.28084,0);Serial.println(" feet");status = pressure.startTemperature();if (status != 0){delay(status);status = pressure.getTemperature(T);if (status != 0){// 温度出力:Serial.print("temperature: ");Serial.print(T,2);Serial.print(" deg C, ");Serial.print((9.0/5.0)*T+32.0,2);Serial.println(" deg F");status = pressure.startPressure(3);if (status != 0){delay(status);status = pressure.getPressure(P,T);if (status != 0){// 気圧出力:Serial.print("absolute pressure: ");Serial.print(P,2);Serial.print(" mb, ");Serial.print(P*0.0295333727,2);Serial.println(" inHg");p0 = pressure.sealevel(P,ALTITUDE); // we're at 1655 meters (Boulder, CO)Serial.print("relative (sea-level) pressure: ");Serial.print(p0,2);Serial.print(" mb, ");Serial.print(p0*0.0295333727,2);Serial.println(" inHg");a = pressure.altitude(P,p0);Serial.print("computed altitude: ");Serial.print(a,0);Serial.print(" meters, ");Serial.print(a*3.28084,0);Serial.println(" feet");}else Serial.println("error retrieving pressure measurement\n");}else Serial.println("error starting pressure measurement\n");}else Serial.println("error retrieving temperature measurement\n");}else Serial.println("error starting temperature measurement\n");}
■ マイコン :ESP3266-CH340 シンプルの案として、マイコンは安いESP8266-CH340開発ボードを選びました。該当マイコンもWIFI機能があります。 ドライバーダウンロード場所: https://sparks.gogo.co.nz/ch340.html...