นี่เป็นกระทู้แรกที่เกียวกับ IoT ในบอร์ด HOSxP นะครับ
Raspberry Pi เป็น Single-Board Computer ที่ถูกพัฒนาให้ทำงานได้เหมือนเครื่อง Computer ที่อาจจะไม่เร็วมากนักแต่ก็พอใช้งานได้ดีครับ หัวข้อนี้จะเป็นการใช้ Raspberry Pi ในการอ่านข้อมูลจากบัตรประชาชนและส่งข้อมูลให้
Node-Red นำไปใช้ใน Flow ที่เขียนนะครับ
อย่างแรกที่ต้องมีก็คือ Raspberry Pi ครับ ถ้าเป็นไปได้ก็ใช้ Model 3 นะครับ
ถัดมาก็เป็นการติดตั้ง Software ใน Raspberry Pi (ต่อไปผมจะเรียก rpi นะครับ มันสั้นดี)
OS ที่สามารถติดตั้งใน rpi ได้นั้นมีหลายตัวครับ ทั้ง Raspbian ที่มีพื้นฐานมาจาก Debian หรือ Android (ที่ยังไม่มี official release แต่ก็มีคนทำเป็น image ไว้ให้ทดลองใช้ได้ครับ) ในหัวข้อนี้จะใช้ Raspbian ในการติดตั้ง software นะครับ
Software ชุดแรกที่ต้องใช้คือ pcsc และ library ที่เกี่ยวข้องครับใช้คำสั่งนี้ติดตั้ง
sudo apt-get -y install libtool libusb-1.0-0-dev libpcsclite1 libpcsclite-dev pcscd pcsc-tools
ชุดถัดมาก็จะเป็น Node-Red ครับ
ใช้คำสั่งตามลำดับดังนี้ครับ
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install build-essential yarn firefox-esr
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
ชุดถัดมาจะเป็น Console Application ที่ผมเขียนขึ้นมาสำหรับอ่านบัตรประชาชน ตอนแรกคิดว่าจะลองเขียนใน flow ของ Node-Red แต่ผมไม่ค่อยถนัด java script สักเท่าไหร่ ก็เลยต้องใช้ Lazarus เขียนเป็น console app ให้ส่งข้อมูลผ่าน tcp ไปให้ Node-Red ที่สามารถเขียน Flow ให้รับค่าจาก tcp request ได้อยู่แล้วครับ แต่เนื่องจาก ตัว console app ที่เขียนมันต้อง link กับ gtk library ทำให้หากมาเรียกใช้ใน rpi ที่ทำงานแบบ headless แล้วมันจะ error จึงต้องเรียกใช้งานผ่าน xvfb ครับ จึงต้องติดตั้ง xvfb ก่อน
sudo apt-get install xvfb
แล้วก็จะเป็น App ที่ใช้อ่านบัตรประชาชนครับ
[ Guests cannot view attachments ]
extract แล้วอย่าลืม chmod +x เพื่อให้ทำงานได้ด้วยนะครับ ส่วนวิธีเรียกใช้โปรแกรมให้เรียกแบบนี้ครับ
xvfb-run ./smartcardconsole
หมายเหตุ หากต้องการเพิ่ม mirror ให้ apt-get สามารถทำงานได้เสร็จเร็วขึ้นให้เพิ่ม mirror ด้วยคำสั่งนี้ครับ
sudo su
echo "deb [trusted=yes] http://mirror1.ku.ac.th/raspbian/raspbian/ $(dpkg --status tzdata|grep Provides|cut -f2 -d'-') main contrib non-free rpi" > /etc/apt/sources.list
exit