編集履歴一覧に戻る
soraのアイコン画像

sora が 2021年05月13日12時32分26秒 に編集

コメント無し

本文の変更

# はじめに 今回obniz 1Yをいただいたので,記事を書くことになりました.内容としましては,タイトルにもある通り,obnizとRFID-RC522を使った簡易入退出通知システムです.詳しく言いますとobnizとRFID-RC522を接続して,そこにRFIDカードを近づけるとSlackの方に通知してくれます.では早速作っていきます. # RFID-RC522をobnizと接続 [公式のドキュメント](https://obniz.com/ja/sdk/parts/MFRC522/README.md)がありますので,参照しました.注意点としてRFID-RC522くんは3.3Vの入力が必要なのですが,obnizは3Vピン設定は十分ではないようなので,5Vピン設定をレギュレータで降圧してくれ,と書いてありました.僕はそういう電子部品は持ち合わせていないので今回はRaspberryPiから3.3Vの電源をとるようにしています(くそ邪魔なので絶対おすすめしません)ピンの対応表とその写真を示します. |obniz board 1Y|RFID RC-522| |:---:|:---:| |0(CS)|SDA| |1(CLK)|SCK| |2(MOSI)|MOSI| |3(MISO)|MISO| |5(GND)|GND| |6(RST)|RST| RFID-RC522の3.3Vピンに3.3Vの入力をしましょう.(何度も言いますがobnizの5Vピン設定をレギュレータで降圧してください.ここの表には記載されていませんが,特に難しくはないと思います) ![キャプションを入力できます](https://camo.elchika.com/6145d226f6fda72ff69edb778a6632bb1a3ed45b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64633637626232382d313930302d346636372d393065342d6539626237316232323035302f35626235646462352d306138342d346234392d393434312d656237346534626233383966/) 写真はRaspberryPiから電源をとっているせいでくそみたいな配線になっています.レギュレータさえあればこんな状態になりませんので,ご安心を(また研究室のくそ北汚いソファで撮影したので背景が汚いですが,その点もご了承ください.) # SlackからWebhookを使って通知できるよう設定 くそ簡単です.Webhookで通知を送りたいSlackワークスペースの(多分)管理者であることが前提です.[ここ](https://slack.com/services/new/incoming-webhook)からアプリをWSに追加して,メッセージを送信するためのWebhook URLを取得します.メッセージを送信したいチャンネルを選択し,その後表示されるWebhook URLを控えてください.あとからプログラムの中で書き換えます. これで設定完了です. # ソースコード ではソースコードを示します.先ほど取得したURLにする部分があるので注意してください. ```html:main <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous"></script> </head> <body> <h1>カードを検出する</h1> <div id="obniz-debug"></div> <script> var obniz = new Obniz("OBNIZ_ID_HERE"); obniz.onconnect = async function () { var mfrc522 = obniz.wired("MFRC522", { cs: 0, clk: 1, mosi: 2, miso: 3, gnd: 5, rst: 6 }); while (true) { try { let card = await mfrc522.findCardWait(); console.log("カードが検出されました。"); console.log("UID : " + card.uid); console.log("PICC Type : " + card.PICC_Type); sendToSlack(); sample_func(); } catch (e) { // Not Found or Error console.error("カードは検出されません。", e.message); } } }; function sendToSlack(temp) { let url = "<ここにWebhookのURLを記入>"; let data = { text: "入退出の発生" }; let dataJson = JSON.stringify(data); $.ajax({ type: "POST", dataType: "json", url: url, processData: false, data: "payload=" + dataJson }).then( function (data) { }, function (XMLHttpRequest, textStatus, errorThrown) { console.log("post to bot"); } ); } function sample_func() { if (!is_ready()) { setTimeout(sample_func, 1000); // wait 100ms and execute sample_func() again return; } do_something(); } </script> </body> </html> ``` # 実行結果

+

@[youtube](https://youtu.be/cwvkh3IMkxQ)

このように近づけると, ![キャプションを入力できます](https://camo.elchika.com/67cca9ec7ba17cf2b8381dec1fde2d232e15bb9d/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64633637626232382d313930302d346636372d393065342d6539626237316232323035302f66333266303866642d383233632d343336662d623437312d613263663636393432653734/) Slackに通知が行きます! ![キャプションを入力できます](https://camo.elchika.com/7910393186a38335d6c9f8775de75f98eaa6336d/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64633637626232382d313930302d346636372d393065342d6539626237316232323035302f36373438663635322d363163642d346363652d386237392d626237613730363038326434/) # 今後の展望 RFIDカードのIDを利用して,データベースを用いて誰が入室したか退室したか細かく識別できるようになったらよりよいものになりそうです.これで終わります!