電子チェックイン
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 2 | |||
| × | 2 | ||||
| × | 4 |
このプロジェクトについて
台北ハッカースペースで頻繁に発生する問題の1つは、私たちがいつ営業しているかを人々が知らないことです。基本的なルールは単純です。キーホルダーメンバーがハッカースペースにいるときはいつでも、誰でも/誰でも参加できます。実際には、誰かがそこにいるかどうかはわかりません。
彼らはスペースに電話をかけたり、メーリングリストにメールを送信したりすることもできますが、私が知っている人は通常、直接私に尋ねることになります-ねえ、今スペースにいる人はいますか?私はいつも答えを知っているわけではないので、より良いものを探していました-おそらくより技術的またはハックな解決策:アウトのウェブサイトに現在のステータスを表示する電子チェックイン/アウトシステムを構築しましょう。
主なアイデアは、台北ではほとんどの人がEasyCardを持っているということです。これは、市内のすべての公共交通機関などで使用される13.56MHzのRFIDカードです。 RC522カードアンテナモジュールはカードをかなりうまく読み取ることができるようです、そして私がそれを降りる必要があるのはかなり簡単なID番号です(ソースコードのためにArduinoフォーラムを掘った後)。
一言で言えば、プロジェクトは次のとおりです。
- Arduino MegaとRC522ボードを使用して、特定のEasyCardのID番号を取得します
- 魔女を使って、その人がチェックインしているかチェックアウトしているかを確認します
- LEDを使用して、ハードウェアのフィードバックと基本的なユーザーインターフェイスを提供します
- Node.jsサーバーは、Arduinoと通信し、チェックイン/アウトデータベースとインターフェースを取り、APIとデータへのリアルタイムアクセスを提供します
- チェックインステータスを表示するために、ウェブサイトに少しインターフェースを作成します
それでは、さまざまな部分について詳しく見ていきましょう。
RFID
RC522モジュールには8つのピンがあり、ArduinoはSPIライブラリを使用して通信できます。私はArduinoMega ADKを使用しました。これは、たとえば、SPIピンに簡単にアクセスできるためです。レオナルド、そのために私はいくつかの新しいケーブルまたはヘッダーを作らなければならなかったでしょう。 RC522(ピン番号)->メガ(ピン番号)接続は、次のように行われます。
- SA(1)→SS(53)
- SCK(2)→SCK(52)
- MOSI(3)→MOSI(51)
- MISO(4)→MISO(50)
- (5)接続されていません
- GND(6)→GND
- RST(8)→(任意のデジタルピン)
- + 3.3V(8)→+ 3.3V

カードと通信するためのソースコードはブログからのものであり、元々は中国の技術ショップからのものだと思います(簡体字中国語の大量のコメントに基づいています)。
スイッチと視覚的フィードバック
カードリーダーのインターフェイスをできるだけシンプルにしたかったのです。このスイッチとLEDのペアを追加しました(D1は緑、D2は赤)。 ArduinoがリーダーからカードIDを受信すると、LEDが点滅して、チェックインボタンまたはチェックアウトボタンのいずれかを押すように促します。いずれかを押すと、対応するLEDが少し明るく点滅し、カードIDとチェックイン/チェックアウトイベントがシリアル接続を介して接続されたコンピューターに送信されます
チェックイン/チェックアウトボタンとビジュアルフィードバックLEDの(非常に基本的な)回路。 「ピン」とは、現在のバージョンで使用されているArduinoピンを指します

10秒以内にボタンが押されない場合、読み取り値は破棄され、カードリーダーはリスニングモードに戻ります。
Webサーバー
Node.jsは、迅速なWebサービスを作成するのに非常に便利であり、ライブラリのサポートはそれほど悪くはありませんが、すべてが順調に進んでいるわけではありません。ドキュメントはせいぜい不足していることがよくあります。それでも、ほとんどすべての必要なコンポーネントの前に使用したことがあるので、物事を稼働させるのに最も速いものでした。
サーバーは、シリアルポートライブラリを介してArduinoと通信します。私はPythonのpyserialに慣れていますが、この場合、シリアルポートが読み取りイベントを発行できるのは非常に便利でした。したがって、サーバーは、受信データに対していくつかの関数を読み取って実行するものがあるまで待つことができます。私の経験では、シリアルポートは、シリアルランドで遭遇したすべてのコーナーケースに適しているわけではありませんが、このセットアップではうまく機能します。
sqlite3ライブラリを使用してデータを保存するためにSQLite3を選択しました。他にもたくさんありますが、どれがまだ開発中であるかを見回さなければなりませんでした。この特定のライブラリはそれほど悪くはありませんが、ドキュメントの不足と非同期性とはかなり戦っています。結果として得られるコードはかなり醜いです。ラウンドアバウトではない方法で目的の結果を得る方法がわからなかったため、場所によっては非効率的ですが、それでも機能しているようで、それがプロトタイプにとって重要です。
最初に、現在チェックインしているユーザーにクエリを実行するための単純なREST APIを作成し、後で、socket.ioを介して(リアルタイムで)プッシュ更新を追加して、より適切なものにしました。ポーリングなしで、誰かがサインインまたはサインアウトすると、すべてのクライアントを更新できるのは素晴らしいことです。
このコードはメインのウェブサーバーとは別のパソコンで実行されているため、Access-Control-Allow-Originヘッダーを試して、ルーターの設定を調整してウェブから正しくアクセスできるようにする必要がありました。
フロントエンドがロードでき、すべてを処理する、かなり多くの自己完結型スクリプトを追加しようとしました。情報を表示するには、適切なHTMLスパンまたはdiv要素が必要です。
チェックイン/チェックアウト用のハードウェアセットアップ:ArduinoMega、RFID-RC522回路、およびいくつかのスイッチとLED。<図>
カードリーダーがクラッシュしない限り、結果はかなり良好です。元々、結果は表に表示されていましたが、より人間味のあるものにしたかったので、最終的に作成した形式は次のとおりです。
特定のチェックイン状況を含むホームページのスクリーンショット<図>
名前のない人もいる可能性があります。「現在、 3人」のように表示されます。 ハッカースペースにチェックインしました:グレッグと他の2人。」
SpaceAPI
スペース自体に関する情報を公開するための統一仕様のSpaceAPIと呼ばれるプロジェクトもあります(
このチェックインガジェットは、TaipeiHackerspaceのSpaceAPIエンドポイントと統合されており、オープンステータスを示しているため、たとえば、 My Hackerspaces Androidアプリ、またはSpaceAPIサイトにリストされている他のアプリケーション。
生きている!
これがどのように機能するかについての簡単なデモビデオです:
https://www.youtube.com/embed/L3ccO_AuhQ8?feature=oembedそのため、ライブ結果については、https://taipeihack.org/#openのウェブサイトをチェックしてください。近所にいる場合は、スペースに誰かがいる場合は立ち寄ってください。
ソースコード全体がGithubリポジトリで共有されます。つまり、Arduinoスケッチ、サーバースクリプト、その他のファイルです。それについて改善できることがたくさんあると確信しています...
元の記事:台北ハッカースペースでの電子チェックイン
コード
Github
https://github.com/taipeihackerspace/thcheckinhttps://github.com/taipeihackerspace/thcheckin 回路図

製造プロセス