(makerconf2014) raspberry p as a registration system

67
Raspberry Pi 好好玩 - 報到系統篇 台灣樹莓派 <[email protected]> Aug 9, 2014 /MakerConf

Upload: raspberrypi-tw

Post on 13-May-2015

19.636 views

Category:

Technology


3 download

DESCRIPTION

用 Raspberry Pi 做報到系統,結合了觸控螢幕 + NFC Reader + 熱感式印表機。本系統在 MakerConf 2014 報到時實際使用。 http://makerconf.tw

TRANSCRIPT

Page 1: (MakerConf2014) Raspberry P as a Registration System

Raspberry Pi 好好玩 - 報到系統篇

台灣樹莓派 <[email protected]>Aug 9, 2014 /MakerConf

Page 2: (MakerConf2014) Raspberry P as a Registration System

姓名標示 — 非商業性 — 相同方式分享

CC (Creative Commons)

姓名標示 — 你必須給予 適當表彰、提供指向本授權條款的連結,以及 指出(本作品的原始版本)是否已被變更。你可以任何合理方式為前述表彰,但不得以任何方式暗示授權人為你或你的使用方式背書。

非商業性 — 你不得將本素材進行商業目的之使用。

相同方式分享 — 若你重混、轉換本素材,或依本素材建立新素材,你必須依本素材的授權條款來散布你的貢獻物。

Page 3: (MakerConf2014) Raspberry P as a Registration System

● Element14 指定台灣地區 Raspberry Pi 獨家經銷商

● 專注於 Raspberry Pi 應用與推廣

● 舉辦 Raspberry Pi 社群聚會和工作坊

about 台灣樹莓派

Page 4: (MakerConf2014) Raspberry P as a Registration System

● Element14 指定台灣地區 Raspberry Pi 獨家經銷商

● 專注於 Raspberry Pi 應用與推廣

● 舉辦 Raspberry Pi 社群聚會和工作坊● #1 : Raspberry Pi 介紹與應用

● #2 :深入淺出 GPIO● #3 : Raspberry Pi Camera 使用

● #4 :用 Pi 做自走車

● #5 :用 Pi 學習 Linux 驅動程式

● #6 : Java 8 on Raspberry Pi

about 台灣樹莓派

Page 5: (MakerConf2014) Raspberry P as a Registration System

本場次屬「教學與教育的應用」

Page 6: (MakerConf2014) Raspberry P as a Registration System

Maker = 解決問題的人

Page 7: (MakerConf2014) Raspberry P as a Registration System

2012 COSCUP 報到

http://www.plurk.com/p/h39baa

Page 8: (MakerConf2014) Raspberry P as a Registration System

2013 COSCUP 報到

https://www.flickr.com/photos/coscup/9634483039/

Page 9: (MakerConf2014) Raspberry P as a Registration System

2014 COSCUP 報到

http://www.ithome.com.tw/news/89509

Page 10: (MakerConf2014) Raspberry P as a Registration System

● 2012 年以人工開 10 個櫃台報到 (1119 人 ) ● 2013 年以平板感應 NFC 的方式 ( 約 1500 人 )● 2014 年在報到入口加裝感應門 ( 約 1560 人 )

● 1 分鐘可以有 41 人報到● 平均一人報到時間為 1.46 秒● 有 197 人通過閘門但卡片感應失敗

● 2013/2014 的 NFC 由雪爾萊克 (Sharelike) 提供

近年來 COSCUP 報到方式

http://www.ithome.com.tw/news/89509

Page 11: (MakerConf2014) Raspberry P as a Registration System

● 問題:● 本次活動原來預估會有 300 人參加● 報到區需要 3 人以上

Page 12: (MakerConf2014) Raspberry P as a Registration System

● 問題:● 本次活動原來預估會有 300 人參加● 報到區需要 3 人以上

● 可能的解決方法:● 每個人上傳照片 , 會場以人臉識別報到● 寫手機 App, 讓所有人安裝 , 報到用手機感應● 寄發 NFC 識別證 , 報到時用識別證感應

Page 13: (MakerConf2014) Raspberry P as a Registration System

● 問題:● 本次活動原來預估會有 300 人參加● 報到區需要 3 人以上

● 可能的解決方法:● 每個人上傳照片 , 會場以人臉識別報到● 寫手機 App, 讓所有人安裝 , 報到用手機感應● 寄發 NFC 識別證 , 報到時用識別證感應

● 考慮因素:● 實做時間 , 價格 , 學習性

Page 14: (MakerConf2014) Raspberry P as a Registration System

NFC 近場通訊

Page 15: (MakerConf2014) Raspberry P as a Registration System

15

http://blogs.ifsworld.com/2013/06/come-on-apple-nfc-is-good-for-business/

NFC 線圈

Page 16: (MakerConf2014) Raspberry P as a Registration System

16http://us.moo.com/nfc/http://blogs.ifsworld.com/2013/06/come-on-apple-nfc-is-good-for-business/

NFC 線圈

可做成貼紙

Page 17: (MakerConf2014) Raspberry P as a Registration System

17http://2d-code.co.uk/nfc-business-card/http://us.moo.com/nfc/http://blogs.ifsworld.com/2013/06/come-on-apple-nfc-is-good-for-business/

NFC 線圈

可做成貼紙

NFC 名片和手機互動的應用

Page 18: (MakerConf2014) Raspberry P as a Registration System

常用的 NFC Reader + NFC Tag :PN532 + MiFare Classic Cards

https://www.adafruit.com/products/364

Page 19: (MakerConf2014) Raspberry P as a Registration System

NFC Data Exchange Format (NDEF)

Beginning NFC - Near Field Communication with Arduino, Android, and PhoneGap

Page 20: (MakerConf2014) Raspberry P as a Registration System

● 硬體

● NFC Reader : PN532● NFC Tag : MiFare 感應白卡

● 軟體

● libnfc, pynfc

● 邏輯

● 事先儲存感應白卡的 UID● 當 reader 讀到 tag 的 UID 時做比對

實做 NFC 感應所需要的準備

Page 21: (MakerConf2014) Raspberry P as a Registration System

這樣就可以紀錄不同的識別證

Page 22: (MakerConf2014) Raspberry P as a Registration System

為這次報到系統再加一些東西吧

Page 23: (MakerConf2014) Raspberry P as a Registration System

● 能顯示報到者的資訊● 除了會場報到 , 工作坊報到也能使用

● 可以列印抽獎聯或收據● 可雲端同步資料● 可擴充硬體

多加的功能與對應的硬體

Page 24: (MakerConf2014) Raspberry P as a Registration System

● 能顯示報到者的資訊 (螢幕顯示 )● 除了會場報到 , 工作坊報到也能使用 (資料庫 )● 可以列印抽獎聯或收據 (熱感式印表機 )● 可雲端同步資料 (無線網卡 )● 可擴充硬體 (串接 )

多加的功能與對應的硬體

Page 25: (MakerConf2014) Raspberry P as a Registration System

熱感式印表機

Page 26: (MakerConf2014) Raspberry P as a Registration System

熱感式紙張應用

Page 27: (MakerConf2014) Raspberry P as a Registration System

熱感式紙張應用熱感式印刷原理

Page 28: (MakerConf2014) Raspberry P as a Registration System

熱感式紙張應用熱感式印刷原理

常見熱感式印表機

Page 29: (MakerConf2014) Raspberry P as a Registration System

熱感式紙張應用熱感式印刷原理

常見熱感式印表機 手持式熱感式印表機

Page 30: (MakerConf2014) Raspberry P as a Registration System

● 內建 BIG-5中文字型● 支援 RS-232 或 TTL 通訊介面

● 可印圖形 /曲線 /文字等● 印刷速度 : 6 cm/s● 解析度 : 8點 /cm

本次選用的印表機特色與規格

Page 31: (MakerConf2014) Raspberry P as a Registration System

和印表機溝通:從 Serial送 Raw Byte

Page 32: (MakerConf2014) Raspberry P as a Registration System

再來說說觸控螢幕吧

Page 33: (MakerConf2014) Raspberry P as a Registration System

● 觸控螢幕 = 螢幕 + 觸控● 螢幕 = HDMI 或 RCA 或 RGB● 觸控 = USB 或 SPI / I2C

Raspberry Pi 的觸控螢幕選擇

chalk-elecHDMI + USB

Gechic 1002HDMI + USB

Adafruit PiTFTRGB + SPI

SainSmart 3.2”RGB + SPI

Page 34: (MakerConf2014) Raspberry P as a Registration System

34

如何將畫面輸出到螢幕?

Page 35: (MakerConf2014) Raspberry P as a Registration System

35

先從硬體架構講起

Page 36: (MakerConf2014) Raspberry P as a Registration System

36

LCD 和 Framebuffer 的關係

http://www.clivemaxfield.com/diycalculator/popup-h-console.shtml

不同顏色深度顯示的結果

資料透過顯示卡輸出到螢幕的示意圖

從 Framebuffer透過 DAC 轉換後輸出到螢幕

Page 37: (MakerConf2014) Raspberry P as a Registration System

37

16-bit = 16 pin現實是:沒有這麼多腳位可以用

Page 38: (MakerConf2014) Raspberry P as a Registration System

38

4094 - 序列轉並列

http://www.channel9.msdn.comhttp://www.xuan.idv.tw/wordpress/?p=1181

4094腳位說明4094 時序圖

序列轉並列示意圖

Page 39: (MakerConf2014) Raspberry P as a Registration System

39

● 一個 4094只能輸出 8bits● 16bits 需串接兩個 4094● 再外接一顆 IC 做訊號同步處理

訊號同步

http://www.myu.ac.jp/~xkozima/lab/raspTutorial3.html

Page 40: (MakerConf2014) Raspberry P as a Registration System

40

電路圖

http://www.myu.ac.jp/~xkozima/lab/raspTutorial3.html

Page 41: (MakerConf2014) Raspberry P as a Registration System

41

÷Pi – 轉換電路 - LCD

http://www.myu.ac.jp/~xkozima/lab/raspTutorial3.html

Page 42: (MakerConf2014) Raspberry P as a Registration System

42

以上是顯示部份電路圖

再加上觸控的電路圖吧

Page 43: (MakerConf2014) Raspberry P as a Registration System

43

電路圖

http://ozzmaker.com/2013/05/23/raspberry-pi-with-a-3-2-tft-with-touch-control/

Page 44: (MakerConf2014) Raspberry P as a Registration System

44

再講講軟體

Page 45: (MakerConf2014) Raspberry P as a Registration System

45

http://blog.csdn.net/stefzeus/article/details/6258216

SPI / I2C / UART / PWM

GPIO(General Purpose Input/Output)

Page 46: (MakerConf2014) Raspberry P as a Registration System

● 決定是輸入還是輸出● 寫值到某根腳位● 從某根腳位讀值● 決定是正緣觸發還是負緣觸發● 等待中斷 (interrupt) 的發生

那軟體做什麼? 控制硬體

Page 47: (MakerConf2014) Raspberry P as a Registration System

● 直接修改 register 的值

● 步驟 1, 看 datasheet● 步驟 2, 查 register● 步驟 3, 填對應的值

● 透過 driver 進行操作

控制硬體的方法

Page 48: (MakerConf2014) Raspberry P as a Registration System

48

看 datasheet

Page 49: (MakerConf2014) Raspberry P as a Registration System

BCM2835 ARM Peripherals

http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

共 205頁

Page 50: (MakerConf2014) Raspberry P as a Registration System

50

查 register

Page 51: (MakerConf2014) Raspberry P as a Registration System

Page 5

Page 52: (MakerConf2014) Raspberry P as a Registration System

存取 register = 在記憶體位置讀寫值

Page 53: (MakerConf2014) Raspberry P as a Registration System

// RPI.h

struct bcm2835_peripheral {

unsigned long addr_p; // 指到實體記憶體位址

int mem_fd; // 開啟 /dev/mem 的 fd

void *map; // memory map 的回傳

volatile unsigned int *addr; // 指到 register 的位址

};

// RPI.c

struct bcm2835_peripheral gpio = {GPIO_BASE};

先定義週邊成一個 structure

Page 54: (MakerConf2014) Raspberry P as a Registration System

1. 開啟記憶體裝置

2. 映射到實體記憶體空間

// RPI.c

fd = open(“/dev/mem”, O_RDWR|O_SYNC);

mmap(NULL,

BLOCK_SIZE,

PROT_READ,

MAP_SHARED,

mem_fd,

addr_p);

Page 55: (MakerConf2014) Raspberry P as a Registration System

在顯示器上畫畫面 = 寫 Framebuffer

Page 56: (MakerConf2014) Raspberry P as a Registration System

void fb_init (int *fb_width, int *fb_height)

● {

● fb_fd = open(“/dev/fb0”, O_RDWR);

● fb_mem = (unsigned char *)

● mmap(NULL, fb_size, PROT_READ | PROT_WRITE, MAP_SHARED, fb_fd, 0);

● }

● unsigned char *fb_get ()

● {

● return (unsigned char *) fb_mem;

● }

開啟 Framebuffer 裝置

http://www.myu.ac.jp/~xkozima/lab/raspTutorial3.html

Page 57: (MakerConf2014) Raspberry P as a Registration System

void lcd_send (unsigned char *buffer)

● {

● lcd_comdat(0x4f, 0x00, 0x00); // 繪圖開始位置 (x, y) = (0, 0)

● lcd_comdat(0x4e, 0x00, 0xef);

● lcd_com(0x22); // 繪圖命令傳輸

● spi_send_buffer(buffer);

● }

● void main ()

● {

● lcd_init(IMAGE_SIZE);

● while (1) lcd_send(fb_get());

● }

將 /dev/fb0資料轉送到 GPIO

http://www.myu.ac.jp/~xkozima/lab/raspTutorial3.html

Page 58: (MakerConf2014) Raspberry P as a Registration System

58

第一版:沒有觸控功能的觸控螢幕

Page 59: (MakerConf2014) Raspberry P as a Registration System

59

第二版:觸控功能接上去了

Page 60: (MakerConf2014) Raspberry P as a Registration System

最後:整合硬體並實做報到功能

Page 61: (MakerConf2014) Raspberry P as a Registration System

● Raspberry Pi Model B● PN532 NFC Reader + NFC Tag● 觸控螢幕● 熱感應印表機● 一堆線材和電容電阻

所需零件

Page 62: (MakerConf2014) Raspberry P as a Registration System

指揮挺組合 +UI

Page 63: (MakerConf2014) Raspberry P as a Registration System

DEMO請到報到處看

Page 64: (MakerConf2014) Raspberry P as a Registration System

結果還是有三個人在報到櫃台- 因為要給發票和識別證吊牌

https://www.flickr.com/photos/sph999999/14718132127/in/set-72157646412879852

Page 65: (MakerConf2014) Raspberry P as a Registration System

● 以觸控螢幕說明 Linux 顯示系統

● 從查找 datasheet 學習軟硬整合能力

● 透過不同的硬體介面控制週邊裝置● 以一個簡單的系統解決實際問題● 合作的重要性 ...

本次實做在教學上的應用

Page 66: (MakerConf2014) Raspberry P as a Registration System

識別證加工過程

感謝辛苦的師大學弟們

Page 67: (MakerConf2014) Raspberry P as a Registration System

Raspberry Pi Rocks the World

Thanks