最近のイベント会場では、万が一ウイルス感染が起きた時のために「参加者がいつ・どこへ行ったか」を記録・追跡する必要があります。
そこでIchigoJam Rを使って「イベント参加者追跡システム」を作ってみました。
システム全体図。IchigoJam R+拡張基板+バーコードリーダーで、参加者カードのバーコードを読み取ります。
システム部分。IchigoJam Rに拡張基板を差しています。
拡張基板には、有機EL(OLED)画面、RTC(時計)モジュールが付いています。
IchigoJam Rのキーボード端子に、バーコードリーダーのUSBドングルを差して、無線で接続します。電源ONから5秒くらいで使えるようになります。
(USBケーブル接続では、バーコードリーダーの初期化に失敗して使えません)
バーコードリーダーとUSBドングルは決まったペアでペアリングされているので、リーダーと基板に番号シールを貼るなどして管理するといいでしょう。
IchigoJam RでUSBキーボードが直接差せるようになって、この組み合わせが実現しました。
IchigoJam Rの裏面には、電源の単3乾電池×3本。
バーコードリーダーはバッテリ駆動なので、あらかじめ充電しておきます。
動作画面。バーコードカードを1枚読み取るごとに、バーコードの値・通算の人数「~nin」・時刻の3行を表示します。
最近はスマホのアプリ+クラウドサービスで似たような記録・追跡機能を実現したものがあるのですが、イベント参加者全員がスマホを持っている訳ではありません(特に子ども向けイベントではなおさら)。ですので、こうした簡単なシステムも使い道がありそうです。
基板データ
- Fusion PCB用ガーバーデータ(ZIP)[88x50mm]
*同じ基板を2枚配置しています。
*この基板データは、CC BYライセンスとします。どうぞご利用ください。
(C) 2021 Shiro Saito (https://www.ichigojaman.jp)
材料
- I2CシリアルEEPROM CAT24M01
- カーボン抵抗(炭素皮膜抵抗) 1/4W2.4kΩ (100本入)
- ピンヘッダ 1×40 (40P)
- L型ピンソケット 1×6(6P)
- 0.96インチ 128×64ドット有機ELディスプレイ(OLED)
- ピンソケット(メス) 1×10(10P)
- RTCモジュール M3231(aitendo)
メーカー公式ページはこちら。設定マニュアルもダウンロードできます。
プログラム
参加者記録プログラム
バーコードカードをリーダーで読み取って、RTCモジュールから読み取った時刻と共にOLED画面に表示、拡張基板上のEEPROMへデータを記録します。
1 @ARUN:'Tracking 2 CLV:CLK:VIDEO3:CLS:GSB35 3 POKE#700,0,0 4 R=I2CR(81,#700,2,#710,4):WAIT2 5 N=PEEK(#710)<<8+PEEK(#711) 6 ?"*START*":GSB37 7 BEEP10,30 8 INPUT"",D 9 IFD<0||D>9999GOTO8 10 BEEP:LED1 11 N=N+1 12 GSB26:WAIT2 13 GSB24:GSB37:WAIT2 14 POKE#700,0,0 15 POKE#710,N>>8,N&#FF,0,0 16 R=I2CW(81,#700,2,#710,4):WAIT2 17 T=(H-8)<<12+M<<6+S 18 A=N*4 19 POKE#700,A>>8,A&#FF 20 POKE#710,T>>8,T&#FF,D>>8,D&#FF 21 R=I2CW(81,#700,2,#710,4):WAIT2 22 LED0 23 GOTO8 24 ?"=";N;"nin" 25 ?DEC$(H+100,2);":";DEC$(M+100,2);":";DEC$(S+100,2):RTN 26 POKE#700,0 27 R=I2CR(#68,#700,1,#701,7) 28 X=PEEK(#703) 29 H=X>>4*10+X&15 30 X=PEEK(#702) 31 M=X>>4*10+X&15 32 X=PEEK(#701) 33 S=X>>4*10+X&15 34 RTN 35 let[84],#4000,33,#227F,#700,#D5AE,#8D80,#2014,#A100,#DAC8,#8112,#D9CF,#DBF1,#A440,#AFA6 36 ifi2cw(60,#8A8,1,#8B0,20)?"E" 37 ifi2cw(60,#8A8,1,#8AA,6)?"E" 38 for[98]=0to7:for[99]=0to15:copy#8A0,vpeek(7-[98],[99])*8,8:ifi2cw(60,#8A9,1,#8A0,8)?"E" 39 next:next:rtn
- EEPROMの回路やアクセス方法は、秋月電子のIchigoROMと同じです。最初にEEPROMの先頭から人数データを読み込んで記録を始めるので、もし途中で電源が切れても、再起動すれば継続して記録できます。
- バーコードの番号は0~9999に対応します。
- 有機EL(OLED)表示サブルーチンは、国野さんのプログラムを使わせていただいています。
- 当初IchigoJam Sで作っていたプログラムをRへ移行したのですが、Rだと動作速度が速すぎるので、I2CでEEPROMへアクセスした後にWAITが必要です。WAITを入れないと、前のアクセス処理が終わらない内に次のアクセスになってしまい、エラーが返って動作がおかしくなります。いろいろ試した感じでは、I2CR(読み出し)の後は「WAIT 1」待てば十分ですが、I2CW(書き込み)の後は「WAIT 2」待たないと厳しいようです。
ダンププログラム
EEPROM上の記録データ(時刻と参加者カード番号)を読み出して、一覧リスト(CSV形式)で表示します。拡張基板の10ピンソケットにUSBシリアルをつないで、PCからアクセスすることを想定しています。表示されたCSVリストをコピペして、Excelなどでまとめてください。
10 '*Tracking Dump 20 CLV:CLS 30 POKE #700,0,0 40 R=I2CR(81,#700,2,#710,4):WAIT 2 50 N=PEEK(#710)<<8+PEEK(#711) 60 ?"Number=";N 70 FOR I=1 TO N 80 A=I*4 90 POKE #700,A>>8,A&#FF 100 R=I2CR(81,#700,2,#710,4):WAIT 2 110 T=PEEK(#710)<<8+PEEK(#711) 120 D=PEEK(#712)<<8+PEEK(#713) 130 H=8+T>>12:T=T&#FFF 140 M=T/64:S=T%64 150 ?DEC$(H+100,2);":";DEC$(M+100,2);":";DEC$(S+100,2);",";D 160 NEXT
人数リセットプログラム
EEPROMの記録をリセットして、人数0人に初期化します。
10 'COUNT RESET 20 POKE #700,0,0 30 POKE #710,0,0,0,0 40 R=I2CW(81,#700,2,#710,4)
RTCモジュールの時刻設定プログラム
福野さんの時刻設定プログラムに、OLED表示ルーチンを追加しています。
最初にこのプログラムで、現在時刻をRTCモジュールに設定しておいてください。
1 'TIME SET 100 CLS:GSB800 300 P=#707 310 ?"Y:20";:GSB900:INPUT"",X:GSB400 320 ?"M:";:GSB900:INPUT"",X:GSB400 330 ?"D:";:GSB900:INPUT"",X:GSB400 340 X=0:GSB400 350 ?"H:";:GSB900:INPUT"",X:GSB400 360 ?"M:";:GSB900:INPUT"",X:GSB400 370 ?"S:";:GSB900:INPUT"",X:GSB400 375 POKE #700,0 380 IF I2CW(#68,#700,1,#701,7) ERR 390 ?"END":GSB900:END 400 GSB900:X=X/10*16+X%10:POKE P,X:P=P-1:RTN 800 '@OLEDI 810 let[84],#4000,33,#227F,#700,#D5AE,#8D80,#2014,#A100,#DAC8,#8112,#D9CF,#DBF1,#A440,#AFA6 820 ifi2cw(60,#8A8,1,#8B0,20)?"E 900 '@OLEDP 910 ifi2cw(60,#8A8,1,#8AA,6)?"E 920 for[98]=0to7:for[99]=0to15:copy#8A0,vpeek(7-[98],[99])*8,8:ifi2cw(60,#8A9,1,#8A0,8)?"E 930 next:next:rtn
参加者カード
バーコード付きの参加者カードは、無料で使えるプログラム「ラベル屋さん」で作れます。
- ラベル屋さん用デザインファイル
- A4サイズに名刺カードが10枚割り付けられた用紙に対応したファイルです。バーコードの形式は「CODE39」です。イベント名や日付などのデザインは適宜変えてください。
- バーコード差し込みExcelファイル
- バーコードにしたい番号をExcel表で作っておき、ラベル屋さんの「差し込み」メニューで読み込んで、カード上にバーコードを自動配置します。プログラム側は0~9999の番号に対応しています。
イベント会場での運用
- 受付で参加者に名前や連絡先を書いてもらい、バーコード付きの参加者カードを配布します。
- 会場入口や各ブースでこのシステムを使ってバーコードを読んで、カード番号と時刻を記録します。会場入口で「入る人用」「出る人用」の2台を使えば、画面に表示された人数を差し引きして「会場内に現在何人いるか」もわかります。
- イベント終了後にシステムを回収して、記録データを読み出してExcelなどでまとめます。万が一の時に「何番の人がいつ・どこへ行ったか」を追跡できます。