RaspberryPi-NFC シールドを Web アプリで
MiFare カードリーダとキャラクタ液晶のついた RaspberryPi シールドの試作品。
これをWebアプリで使うための設定例です。
環境
- Raspbian Buster with desktop
2020-02-13版
- Raspberry Pi 3 Model B
インストールしてひととおりWiFiやロケール、Update などの設定は終わらせておく.
ネットワークの設定も終わらせておく
vim をインストール
sudo apt install vim
sudo apt install vim
ついでに、vim のビジュアルモードを解除。
/home/pi/.vimrc および /root/.vimrc の内部に set mouse=
行を設定
1602LCD を動かす
ライブラリ
sudo pip3 install adafruit-circuitpython-charlcd
これで動かすのでIPアドレスのスクリプトを入れておく
LCDmessage.pyをつくる
#!/usr/bin/env python
import sys
import Adafruit_CharLCD as LCD
lcd_rs = 26
lcd_en = 19
lcd_d4 = 20
lcd_d5 = 21
lcd_d6 = 22
lcd_d7 = 27
#
lcd_columns = 16
lcd_rows = 2
#
#
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,
lcd_columns, lcd_rows)
lcd.clear()
if ( 2 > len(sys.argv)):
lcd.message("No IP address.")
if ( 1 < len(sys.argv)):
message = sys.argv[1]
lcd.message(message)
if ( 2 < len(sys.argv)):
message = sys.argv[2]
lcd.message("\n")
lcd.message(message)
# cursol blink
lcd.blink(False)
MiFare カードリード
ライブラリインストール
pi@raspberrypi:~ $ git clone https://github.com/ondryaso/pi-rc522.git
pi@raspberrypi:~ $ cd pi-rc522
pi@raspberrypi:~/pi-rc522 $ sudo python3 setup.py install
wiringpi インストール
pi@raspberrypi:~ $ wget https://project-downloads.drogon.net/wiringpi-latest.deb
pi@raspberrypi:~ $ sudo dpkg -i wiringpi-latest.deb
pi@raspberrypi:~ $ sudo pip3 install wiringpi
多分最後だけでいけるのではないかな?
vim read_once_with_key_LCD_onlyID.py
from pirc522 import RFID
# Calls GPIO cleanup
import Adafruit_CharLCD as LCD
import RPi.GPIO as GPIO
#rdr = RFID(0,0,1000000,22,0,18,GPIO.BOARD)
rdr = RFID(0,0,1000000,25,0,24,GPIO.BCM)
lcd_rs = 26
lcd_en = 19
lcd_d4 = 20
lcd_d5 = 21
lcd_d6 = 22
lcd_d7 = 27
#
lcd_columns = 16
lcd_rows = 2
#
#
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,
lcd_columns, lcd_rows)
import sys
import time
import wiringpi as w
w.wiringPiSetup()
w.pinMode(1,1)
sector = int(sys.argv[1])
# print('target sector = : ', sector)
lcd.clear()
lcd.message('Ready')
while True:
rdr.wait_for_tag()
(error, tag_type) = rdr.request()
if not error:
# print("Tag detected")
(error, uid) = rdr.anticoll()
if not error:
# print(" UID: " + str(uid))
# Select Tag is required before Auth
if not rdr.select_tag(uid):
# print(" not rdr.select_tag")
# Auth for block using default shipping key A
if not rdr.card_auth(rdr.auth_a, sector, [0xA0, 0xB1, 0xC0, 0xD1, 0xE0, 0xE1], uid): # key is example
# This will print something like (False, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
# print(" Reading sector "+ str(sector) +" " + str(rdr.read(sector)))
(error,data)=rdr.read(sector)
if not error:
# print( str(data))
# print( str(data))
data2=data[0:10]
id=(''.join(map(chr,data2)))
print(id)
lcd.clear()
lcd.message(id)
w.digitalWrite(1,1)
time.sleep(0.1)
w.digitalWrite(1,0)
break
# Always stop crypto1 when done working
rdr.stop_crypto()
rdr.cleanup()
apache2インストール
sudo apt install vim apache2
sudo apt install vim apache2
サンプルページを削除
sudo rm /var/www/html/index.html
起動設定
/etc/rc.local の後ろの方を以下のように調整
ifconfig eth0:1 169.254.12.24
sleep 5 # 環境により調整
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
python3 /home/pi/LCDmessage.py $_IP
mount -o exec,uid=33,gid=33 /dev/sda1 /mnt
/mnt/trans.sh & > /dev/null
exit 0
オリジナルはIPアドレスを画面に表示するようになっているけれども、それに加えて
- セカンダリIPアドレスを設定
- IPアドレスをLCDに表示
- USBメモリを www-data ユーザ権限でプログラム実行可能で /mnt にマウント
- USBメモリに trans.sh があればそれを自動実行する
USBメモリをDocumentRootに
/etc/apache2/sites-enabled/000-default.conf を以下のように編集
# DocumentRoot /var/www/html
DocumentRoot /mnt
USBメモリ上のプログラムを実行可能にする
www-data でGPIOを使えるように sudoers に以下を追加
www-data ALL=(ALL) NOPASSWD: ALL
/etc/apache2/apache2.conf を書き換えて /mntで cgiが動作するようにする
#<Directory /var/www/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
<Directory /mnt/>
Options Indexes FollowSymLinks execCGI
AddHandler cgi-script .cgi .pl
AllowOverride None
Require all granted
</Directory>
cgi を有効にする
$ sudo a2enmod cgid
とする。
Xojo のためのライブラリインストール
Web アプリを Xojo で作る場合は以下が必要
pi@raspberrypi:~/xojo/RemoteDebuggerConsole $ sudo apt install libunwind8
Author And Source
この問題について(RaspberryPi-NFC シールドを Web アプリで), 我々は、より多くの情報をここで見つけました https://qiita.com/nanbuwks/items/efd4e84f59dedba1cc96著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .