IchigoJamで簡単に大人向けレジごっこ遊びができます。
野菜などの無人直売所で、商品管理や自動レシート発行に利用できるかもしれません。
目次
レーザーを扱うので、未成年者を対象とした活用は、ご遠慮ください。
写真の左側は、ESC/POS 対応のレシートプリンタQR204です。プリンタのシリアルRX端子とGND端子を、それぞれIchigoJamのTXDとGNDへ配線しました。プリンタの電源はDC9V出力のACアダプタで供給します。
右側は小型のバーコードリーダSymcode MJ2090です。こちらは基板上のシリアルTXと5V、GNDを、それぞれIchigoJamのRXD、5V、GNDへ接続しました。
ESC/POS 対応のレシートプリンタQR204とバーコードリーダSymcode MJ2090。プリンタはシリアル入力、バーコードリーダはシリアル出力なので、両方をIchigoJamへ接続することが出来る。
※実験するときは、かならずカバーを閉めること。拡散されていないレーザーが目に入ると、失明などの大きな傷害を負う恐れがあります。
バーコードリーダの方は、シリアル出力TXを基板から取り出す必要があります。5VやGNDはUSB端子から引き出しても良いでしょう。
下図のバーコードリーダの場合、RS-232C用レベル変換IC用ランドの10番ピンがシリアル出力TXです。また、15番ピンがGNDで、16番ピンが5Vです。
バーコードリーダに付属の説明書などを見ながら、データ出力形式を「RS-232C」に、データレートを「9600bps」に設定します。はじめに、「facrory default」と書かれたバーコードをスキャンし、続いてInterface Modeの「RS232C Mode」、Baud rate settingの「Baud rate 9600」をスキャンしてください。設定値はFLASHに保存され、次回からは起動するだけでシリアル出力となります。なお、ボクが購入した商品に付属していた説明書は「1D Laser Wired Barcode Scanner User Guide」でした。Symcode MJ2090専用の説明書では無いので、仕様などが曖昧な書き様になっている点に注意してください。
IchigoJam側では、BPS 9600を実行して、シリアル速度を9600bpsに変更してください。
本機は測距センサが搭載されており、紙などを接近させると、自動的にレーザー光が線状に放射されます。照射されないときは、一度、対象物を遠ざけて、再度、接近させてください。
バーコードでスキャンすると、スキャンしたバーコードの数値やコードが、IchigoJamに表示されます。
ご注意:レーザ光が止まっても覗き込まないでください
プリンタの方は、分解や改造不要で配線だけで動かすことが出来ます。
プリンタで文字を印字するには、シリアルから?命令でテキスト文字を送るだけです。
BPS 9600:UART 1?"TEST Print":?
レジごっこ用プログラム(2018/7/29追加)
レジごっこ用のプログラムを以下に示します。実行すると、受信したバーコードのデータと、変数FとRの値を示します。変数Fは受信の有無です。変数Rは検索値の一致を示します。
new
1 cls:?"Tester Barcode":?"クニノ ワタル"
2 clv:bps9600:uart0
3 let[4],#6552,#6461,#2E79
4 [0]="4910016200362":'マチウケ モジ 13ケタ10 @M
20 cls:uart3*F:?"read:";str$(#808):?"F=";F,"R=";R:gsb@R
30 ifFbeep:gsb@T:goto@M
40 waitT*60:goto@M500 @T
510 copy#808,#940,16:rtn700 @R
710 uart0:clt:R=0:F=0
720 I=inkey():ifI>31clt:F=1:?chr$(I);
730 iftick()>30goto770
740 ifR=13goto720
750 ifI=peek([0]+R)R=R+1elseR=0
760 goto720
770 ?:R=R=13:rtn999 bps0:uart1:?"MJ GETS git.bokunimo.com/MJ/808.txt
実行すると、バーコードを読むたびに読んだコードをプリンタへ印字します。また、行番号4に書かれた13桁の待ち受け文字と一致すると、変数Rに1を応答します。
大人のレジごっこをお楽しみください。
by ボクにもわかるIchigoJam用マイコンボード
https://bokunim
o.net/ichigojam/
https://bokunim
o.net/ichigojam/
以上の記事では、シリアル信号を基板から取り出していますが、PS2を利用したほうが、より簡単に扱えるようになります。本機のマニュアルにはPS2対応と書かれているので、いろいろと試しましたが、いまのところPS2での動作は成功していません。以下は試行や調査したときの関連情報です。
【情報提供依頼】本バーコードリーダーは、PS2出力にも対応していますが、設定するためのバーコードが記載されていませんでした。PS2へ接続する方法をご存知の方は、教えてください。
【試してみたこと・確認してみたこと】
- 通常のWindows PCへ接続してみたが、PS2キーボードとして認識しなかった。
- 他の機種のマニュアルに掲載されているPS2キーボード設定のバーコードを読んでみたが、PS2接続はできなかった。
- IchigoJamへ接続し、PS2信号を確認すると、キーボードが無い状態と同じ状態となる。
電源ONと同時に、CLOCK(D+)とDATA(D-)がHレベルになり、約1.5秒後にCLOCK(D+)がLレベルに、その0.2μs後にDATA(D-)側がLレベルになる。CLOCKは約1μs以内にHレベルへ復帰するが、DATAはLレベルのままになる。このあと、本来であれば、デバイス側(バーコード側)がCLOCKをLレベルに遷移させるはずだが、その動きがみられない。- D+のプルアップ抵抗を外してみたが、PS2接続が出来なかった。
【USB/PS2判定方法】NXPのUSBキーボード用の制御IC M68HC08のリファレンス資料「USB and PS/2 Multimedia Keyboard Interface」によると、以下のような方法でUSB/PS2の自動切り替えを実現しています。
USBロースピードのデバイス(キーボード側)は、D+(CLK)が1.5kΩでプルアップされています。このため、起動直後は、、D+(CLK)はHレベルとなります。その後、USBの場合は4us以内にUSBリセットでLになります。このとき、D+(CLK)がLにならない(USBリセットが来ない)場合はPS2と判断します。
しかし、タイミングによってはPS2の場合もホストからD+(CLK)のLが来ます。その場合はUSBリセットの完了またはPS2のクロック解除後に次の第2の判定処理を行います。第2判定処理においても、D+(CLK)を監視します。USBデータがあればデータの検出を試み、USBデータを検出すればUSBと判定します。データがHレベルのまま1ms以上、変化が無ければPS2と判断します。第1・第2のどちらの場合も、不定な状態が10秒以上、継続した場合は、USBと判定します。
【PS2の動作】───┐ ┌───────────────────
Host Clock └───┘──────┐ ┌───┬───┬───┬───┬─
Host Data └──┴───┴───┴───┴───┴─────────┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌
Device Clock └─┘ └─┘ └─┘ └─┘ └─┘───────────────────────────
Device Data──────┼←→┼←────────────────
送信 ホスト送信データ
要求下記から転用
by ボクにもわかるIchigoJam用マイコンボード