2017年3月9日木曜日

ESP-WROOM-02 で圧力センサーを使ってみた

概要

ESP-WROOM-02 のアナログリードを使って圧力センサー (FSR402) と連携してみました
あるある程度の圧力が加わった時に MQTT にその値を Publish してみます
事前に WROOM の Arduino化アナログリードWROOM からの MQTT 接続 あたりの設定を実施しておいてください

環境

配線

配線の全体図は以下の通り
アナログリードなので WROOM の TOUT に入る電圧を分圧回路を使って 1.1 V に下げています
抵抗は全部同じで 10KΩを使用しています
wroom_with_fsr402_circuit.jpg

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 に設定してください
スケッチを書き込み成功すると以下のように表示されると思います
wroom_with_fsr402_serial.png

Wifi 接続後 MQTT に接続します
今回は読み込んだアナログの値が 500 以上になった場合にシリアルモニタへの表示 + MQTT への Publish を行います
圧力センサーを少し押してみましょう
すると MQTT への Publish が開始されると思います

最後に

ESP-WROOM-02 のアナログリードを使って圧力センサーを試してみました
前回のアナログリード用の配線をそのまま使えたので簡単にできました

0 件のコメント:

コメントを投稿