概要
ESP-WROOM-02 のアナログリードを使って圧力センサー (FSR402) と連携してみました
あるある程度の圧力が加わった時に MQTT にその値を Publish してみます
事前に WROOM の Arduino化 とアナログリード、WROOM からの MQTT 接続 あたりの設定を実施しておいてください
環境
- ESP-WROOM-02開発ボード
- Mac OS X 10.11.3
- Arduino IDE 1.6.7
- Arduino core for ESP8266 2.1.0
- FSR402 感圧センサ円形0.5インチ
配線
配線の全体図は以下の通り
アナログリードなので WROOM の TOUT に入る電圧を分圧回路を使って 1.1 V に下げています
抵抗は全部同じで 10KΩを使用しています
FSR402 は電極があるので気をつけてください
写真ではちょっと見えないのですが FSR402 の接触部に線が書いてある方を上にして右 (赤) がプラスで左 (青) がマイナス側になります
今回はマイナス側から値を取得します
スケッチ
スケッチ全体は以下の通りです
設定しなければならないのは冒頭の Wifi の設定と MQTT のブローカの設定になります
それ以外は特に変更しないで動作すると思います
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
extern "C" {
#include "user_interface.h"
}
const char* ssid = "ssid";
const char* password = "password";
const char* mqtt_server = "mqtt_server";
const int mqtt_port = 1883;
const char* mqtt_pub_topic = "mqtt_pub_topic";
const char* mqtt_username = "mqtt_username";
const char* mqtt_password = "mqtt_password";
WiFiClient espClient;
PubSubClient client(espClient);
char msg[50];
void setup_wifi() {
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("ESP8266Client", mqtt_username, mqtt_password)) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish(mqtt_pub_topic, "test");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
}
int getToutValue(){
int res = system_adc_read();
return res;
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
int val= getToutValue();
if (val > 500) {
Serial.print("value:");
Serial.println(val);
snprintf (msg, 75, "Analog value #%ld", val);
client.publish(mqtt_pub_topic, msg);
}
delay(200);
}
動作確認
シリアルモニタを起動してボーレードを 115200 に設定してください
スケッチを書き込み成功すると以下のように表示されると思います
Wifi 接続後 MQTT に接続します
今回は読み込んだアナログの値が 500 以上になった場合にシリアルモニタへの表示 + MQTT への Publish を行います
圧力センサーを少し押してみましょう
すると MQTT への Publish が開始されると思います
最後に
ESP-WROOM-02 のアナログリードを使って圧力センサーを試してみました
前回のアナログリード用の配線をそのまま使えたので簡単にできました
0 件のコメント:
コメントを投稿