宅配ボックス通知デバイスを作りました

宅配ボックス、便利ですよね。でも、荷物が届いても気付かなくて困ったことはありませんか?

そこで、宅配ボックスに荷物が届いた時にLINEで通知してくれるシステムを作りました!

・・・という訳で今年もM5Stackコンテストにエントリーしました。今回は実用性特化で単純な構成というのもあり、M5Stampのお陰で少ない部品で簡単に作れます。

原理検証の為に既製部品を使用した「通常版」と、稼働時間を犠牲に部品再選定し3Dプリントで自作した「小型版」の2種類製作しました。

稼働時間は検証中ですが、通常版で半年程度はあると思います。
M5Stamp PICOを使用することで手軽かつ稼働時間を長くすることが出来ました!

■構成部品
通常版:M5Stamp PICO(\1,100) + Groveケーブル(\50) + ドアセンサースイッチ(\250) + 単4乾電池x3本(\90) + 電池ケース(\120) (※合計材料費1,610円)
小型版:M5Stamp PICO(\1,100) + リードスイッチ(\40) + 適当な磁石 + 自作磁石ケース + LR44ボタン電池x3個(\40) + 自作電池ケース + 自作ケース (※合計材料費1,180円+樹脂代)

■サイズ
通常版:60x30x30(ほぼ電池ケース)
小型版:本体Φ25x35mm、+磁石

■接続例
リードスイッチ(ドアセンサースイッチ)の片方をIO32に、もう片方をGNDに。

■プログラム例(参考、無保証です)
1.リードスイッチで開閉を検知するとDeepSleepから復帰する
2.WiFiに接続し、LINE Notify経由でLINE通知後、DeepSleepする

#include <Arduino.h>

#include <FastLED.h>

#include <WiFi.h>

#include <WiFiClientSecure.h>

#include “HTTPClient.h”

#include “FS.h”

const char* SSID = “your_ssid”;

const char* PASS = “your_pass”;

void initWiFi()

{

WiFi.mode(WIFI_STA);

WiFi.begin(SSID, PASS);

while( WiFi.status() != WL_CONNECTED ){ delay( 200 ); }

Serial.printf( ”[%lu] WiFi Connection OK \n”, millis() );

}

const char* host = “notify-api.line.me”;

const char* token = “your_token”;

const char* message = “宅配ボックスの開閉を検知しました”;

WiFiClientSecure client;

void sendLine()

{

client.setInsecure();

Serial.printf( ”[%lu] LINE Notify Connection \n”, millis() );

if( !client.connect(host, 443) ){ Serial.printf(”[%lu] Connection NG \n”, millis() ); }

String query = String(“message=”) + String(message);

String request = String("") +

“POST /api/notify HTTP/1.1\r\n” +

“Host: ” + host + “\r\n” +

“Authorization: Bearer ” + token + “\r\n” +

“Content-Length: ” + String(query.length()) +  “\r\n” +

“Content-Type: application/x-www-form-urlencoded\r\n\r\n” +

query + “\r\n”;

client.print(request);

}

#define NUM_LEDS 1

CRGB leds[NUM_LEDS];

void setup() {

Serial.begin(115200);

pinMode(GPIO_NUM_32, INPUT_PULLUP);

pinMode(GPIO_NUM_27, OUTPUT);

FastLED.addLeds<SK6812, GPIO_NUM_27, RGB>(leds, NUM_LEDS);

esp_sleep_enable_ext0_wakeup(GPIO_NUM_32, HIGH);

initWiFi(); leds[0] = CRGB::Blue; FastLED.show();

sendLine(); leds[0] = CRGB::Black; FastLED.show();

while( digitalRead(GPIO_NUM_32) );

esp_deep_sleep_start();

}

void loop() {

}

ありがとうM5Stamp!(初めての方はこちらのライター付きが良いですね)

M5Stamp Pico DIY Kit

23/8/15追記:8月頭に電池切れと思って取り外したら、暑さでセンサ固定の両面テープが外れていただけだったみたいです。折角なので充電したので最大稼働時間は結果不明のままですが、電池変更版を12月頭から動作開始したので少なくとも8か月(開閉回数は約100回)以上でした。ちゃんとDeepSleepは機能してそうですね。ご参考まで。

← ブログ一覧へ戻る この記事をシェア

関連記事