😸
クリプレにピッタリ!、コロナを倒すテスラ缶
皆さんテスラ缶覚えていますか?
数年前に書いた記事ですが、コロナ禍の香ばしい思い出として再投稿します笑
まず初めに
最近、ツイッターでテスラ缶が話題になっていました。
テスラ缶は頭痛の緩和、怪我が治る、安眠効果などなど
不思議な力がありすごい!!
けど、本当に効果があるの???
怪しくない、、、、
調べてみると、科学的根拠はないらしい、、、、、
そこで、科学的根拠のあるテスラ缶を作成しました。
何を作ったのか
コロナ対策に有効なテスラ缶として、
喚起のお知らせをしてくれるテスラ缶を作成しました。
このテスラ缶で、ついつい忘れがちになってしまう喚起を確実にできます!!
システム概要
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濃度が基準値を超えるとスマホに通知されます。
Discussion