[測試] AS3992 – UHF RFID Single Chip Reader

《文件與教學》
文件總整理,可以從這論壇查看使用教學。
https://www.soliddepot.com/forum/viewforum.php?f=22

AS399X firmware(.hex)下載
https://www.soliddepot.com/forum/viewtopic.php?f=22&t=40343&sid=e0f3335ae0e157fb2e77c799a567d57d

下載完整資料(出處),包括 datashhet、schematics、firmware、document 等等。
https://www.dropbox.com/s/u9cv2ytscplytmg/AS3992%20reader%20module%20files%20English.zip?dl=0

 
《硬體外觀》
AS3992_adapter_antenna_tag
AS3992 開發板 + 3.6V/2A 電源 + 3dBi 天線 + 五張 915MHz Tag

usb_debugger_jtag_adapter
USB Debug Adapter + JTAG 排線 + JTAG 轉 C2 轉板

 
《AS3992 韌體更新》
由於韌體預設是燒錄 USB 版本,可以燒成 UART 版本方便測試。連接方式如下。

jtag_connect_usb_debugger
JTAG排線防呆。

jtag_connect_adapter
注意要三角對三角。

pin_of_as3992_jtag_adapter
AS3992 的 C2CK 和 C2D 還有 GND 要和 JTAG 轉板腳位相接。

connect_as3992_jtag_adapter
相接的結果(用手扶著就可以了)。

upload_firmware_connection
完整連接圖。

韌體更新要透過 Silicon Lab 提供的 FLASH 燒錄工具(C8051F)上傳。或是下載完整資料裡的壓縮檔。選擇 C2 programmer > Flash Programming V3.90.exe

如果一切連接順利,就可以看到 USB Debug Adapter 是可以選取的。
silicon_lab_flash_utility

點選 “Connect”,順利的話就可以連接到 AS3992,原來 “Connect” 會變成 “Disconnect”。
connect_to_as3992

下載 AS399X firmware.zip(.hex)
其中,as399xdemo_uart_3992.hex 表示 115200bps baud rate
另外,as399xdemo3992uart_9600.hex 表示 9600bps baud rate
我們選擇 115200bps 燒錄(用 9600bps 的也可以)。

upload_firmware
燒錄完畢後,重插拔電源將會使用新韌體開機(如果下載到一半斷線也沒關係,但電源不能斷)

 
《AS3992 連線》
我們測試的環境為 Raspberry Pi 3,使用 2016-05-23 的映像檔。
Raspberry Pi 和 AS3992 使用 USB 轉 TTL 序列傳輸線(PL2303HXD 或是 PL2303HX 都可以)相接。
raspberry_pi_as3992

通訊的方式是用 CuteCom,如果還沒安裝請先用 sudo apt-get install cutecom 安裝。
在 Pi 上連線的介面是 /dev/ttyUSBX,例如 /dev/ttyUSB0 如下圖。
dev_ttyusb0

一切沒問題,就可以使用 cutecom 做連線測試了。步驟如下:
1. 在 Device 選擇 /dev/ttyUSB0
2. 在 Baud rate 選擇 115200
3. 在 Data bits 選擇 8
4. 在 Stop bits 選擇 1
5. 在 Parity 選擇 None
6. 這時候點選 Open device
7. 最下方選擇 Hex input
8. char delay 選擇 1 ms
cutecom

根據文件說明,送 10 03 00 是查詢韌體版本,送 10 03 01 是查詢硬體版本。

因此我們在底下的 Input 輸入100300 就可以看到 AS3992 回傳的韌體版本。
cutecom_100300

如果是輸入100301 就可以看到 AS3992 回傳的硬體版本。
cutecom_100301

更多命令就需要參考完整的手冊才知道怎麼使用了。最重要的是完整資料裡的 datasheet 和 command。
datasheet: AS3992 reader module files English > Application notes > AS3992_Datasheet_v1.0.pdf
command: AS3992 reader module files English > Application notes > AN399x Leo Roger System Description_1_4.pdf

 
《AS3992 讀卡》
有人將 AS3992 UHF RFID reader 寫了 Python 的模組,可以參考使用。

接線就和剛剛的方式一樣,Raspberry Pi 透過 PL2303HX 或 PL2303HXD 和 AS3992 相接。

################                 ##########
# Raspberry Pi #  --USB to TTL-- # AS3992 #
################                 ##########

開啟 Pi 的終端機,先把程式拉(pull)下來。

$ cd ~
$ git clone https://github.com/GuyLewin/pyAS3992
$ cd pyAS3992/

因為原本的範例程式(example.py)只會讀取一次,我們稍做修改就可以持續讀取。

$ vim main.py
import as3992_api
import time

def main():
    ann = as3992_api.AntennaDevice()
    print "Firmware info: %s\nHardware info: %s" % ann.get_system_info()
    print "Activating antenna"
    ann.set_antenna_state(True)
    print "Tags:"

    while True:
        try:
            for epc, rssi in ann.iter_epc_rssi():
                print epc.encode("HEX"), rssi
        except:
            pass

        time.sleep(1)

if __name__ == "__main__":
    main()

執行 main.py,我們拿五張 tag 做測試,會讀到 epcrssi。實測接收距離約在 10-15cm 左右。

$ sudo python main.py

as3992_reader

[常見問與答] 如何看 Raspbian 的版本資訊?

自從 Raspbian 從 Wheezy 升級到 Jessie 以後,許多系統性的設計都有所不同。那要如何看 Raspbian 的版本資訊呢?

1. uname -a 查詢 kernel 版本。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.1.17-v7+ #834 SMP Mon Feb 1 15:17:54 GMT 2016 armv7l GNU/Linux

 

2. /opt/vc/bin/vcgencmd version 查詢 firmware 版本。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd version
Apr 21 2015 14:42:19 
Copyright (c) 2012 Broadcom
version 2d5ad04b63af4233440c3f7c8587108223201102 (clean) (release)
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ /opt/vc/bin/vcgencmd version
Feb  1 2016 17:51:17 
Copyright (c) 2012 Broadcom
version b3dc56931507f355d503ea69397778643f7a3dc3 (clean) (release)

 

3. strings /boot/start.elf | grep VC_BUILD_ID 查詢 firmware 版本。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ strings /boot/start.elf | grep VC_BUILD_ID
VC_BUILD_ID_USER: dc4
VC_BUILD_ID_TIME: 14:42:19
VC_BUILD_ID_BRANCH: master
VC_BUILD_ID_TIME: Apr 21 2015
VC_BUILD_ID_HOSTNAME: dc4-XPS13-9333
VC_BUILD_ID_PLATFORM: raspberrypi_linux
VC_BUILD_ID_VERSION: 2d5ad04b63af4233440c3f7c8587108223201102 (clean)
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ strings /boot/start.elf | grep VC_BUILD_ID
VC_BUILD_ID_USER: dc4
VC_BUILD_ID_TIME: 17:51:17
VC_BUILD_ID_BRANCH: master
VC_BUILD_ID_TIME: Feb  1 2016
VC_BUILD_ID_HOSTNAME: dc4-XPS13-9333
VC_BUILD_ID_PLATFORM: raspberrypi_linux
VC_BUILD_ID_VERSION: b3dc56931507f355d503ea69397778643f7a3dc3 (clean)

 

4. cat /proc/version 查詢更完整的 kernel 資料。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ cat /proc/version
Linux version 3.18.11-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ cat /proc/version
Linux version 4.1.17-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #834 SMP Mon Feb 1 15:17:54 GMT 2016

 

5. cat /etc/os-release 查詢 OS 版本資訊。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

 

6. cat /etc/issue 查詢 Linux distro 版本。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ cat /etc/issue
Raspbian GNU/Linux 7 \n \l

# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ cat /etc/issue
Raspbian GNU/Linux 8 \n \l

 

7. cat /etc/debian_version 查詢 Debian 版本編號。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ cat /etc/debian_version
7.8
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ cat /etc/debian_version
8.0