😸

クリプレにピッタリ!、コロナを倒すテスラ缶

2024/12/20に公開

皆さんテスラ缶覚えていますか?
数年前に書いた記事ですが、コロナ禍の香ばしい思い出として再投稿します笑

S__8167504.jpg

まず初めに

最近、ツイッターでテスラ缶が話題になっていました。
テスラ缶は頭痛の緩和、怪我が治る、安眠効果などなど
不思議な力がありすごい!!

けど、本当に効果があるの???
怪しくない、、、、

調べてみると、科学的根拠はないらしい、、、、、

そこで、科学的根拠のあるテスラ缶を作成しました。

何を作ったのか

コロナ対策に有効なテスラ缶として、
喚起のお知らせをしてくれるテスラ缶を作成しました。
このテスラ缶で、ついつい忘れがちになってしまう喚起を確実にできます!!

システム概要

プレゼンテーション1.png

esp-wroom-02が常にco2センサの値を取得し、基準濃度以上であればIFTTTにリクエストを送りLINEに通知のリクエストを送信しています。

これでユーザーに喚起の適切なタイミングを知らせることができます!!!

co2Alarm.ino
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

#define SERVER_IP "server IP"

#ifndef STASSID
#define STASSID "SSID"
#define STAPSK  "PASSWARD"
#endif

#include <SoftwareSerial.h>

uint16_t uartco2; 

byte ReadCO2[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
byte SelfCalOn[9]  = {0xFF, 0x01, 0x79, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xE6};
byte SelfCalOff[9] = {0xFF, 0x01, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86};
byte retval[9];

long lasttime;
SoftwareSerial mySerial(4,5);

void setup() {
  Serial.begin(115200);
  co2_init();
  http_init();
}

void loop() {

  float co2 = get_co2()/3;
  long dt = millis() - lasttime;
  Serial.println(co2);
  Serial.println(dt);
  if(co2 > 1200 && dt >100000){
    http_request();
    lasttime = millis();
  }
  delay(100);
}

void http_init(){
    Serial.println();
  Serial.println();
  Serial.println();

  WiFi.begin(STASSID, STAPSK);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected! IP address: ");
  Serial.println(WiFi.localIP());
}
void http_request(){
    if ((WiFi.status() == WL_CONNECTED)) {

    WiFiClient client;
    HTTPClient http;

    Serial.print("[HTTP] begin...\n");
    // configure traged server and url
    http.begin(client, SERVER_IP); //HTTP
    http.addHeader("Content-Type", "application/json");

    Serial.print("[HTTP] POST...\n");
    // start connection and send HTTP header and body
    int httpCode = http.POST("{\"hello\":\"world\"}");

    // httpCode will be negative on error
    if (httpCode > 0) {
      // HTTP header has been send and Server response header has been handled
      Serial.printf("[HTTP] POST... code: %d\n", httpCode);

      // file found at server
      if (httpCode == HTTP_CODE_OK) {
        const String& payload = http.getString();
        Serial.println("received payload:\n<<");
        Serial.println(payload);
        Serial.println(">>");
      }
    } else {
      Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str());
    }

    http.end();
  }
}


void co2_init(){
  pinMode(4, INPUT);
  pinMode(5, OUTPUT);

  mySerial.begin(9600);
  mySerial.write(SelfCalOn,sizeof SelfCalOn);
}

int get_co2(){
    mySerial.write(ReadCO2,sizeof ReadCO2);
  mySerial.readBytes((char *)retval, sizeof retval);
  uartco2 = retval[2]*256 + retval[3];

  return uartco2;
  
}
}

動作

CO2濃度が基準値を超えるとスマホに通知されます。
S__8167504.jpg
S__8167505.jpg

Discussion