تصور کنید سیستم حضور و غیاب یک اداره وقتی کارت شناسایی به آن نزدیک میشود، کارمند را با نام خودش صدا خواهد زد و به شخص خوش آمد گویی خواهد کرد. به عنوان مثالی دیگر یک عروسک را در نظر بگیرید که وقتی کتاب الف را در دستش بگیرد، قصه شنگول و منگول رو تعریف خواهد کرد! و وقتی کتاب ب را بگیرد، قصه کدو قل قله زن! در ادامه با مرجع تخصصی رزبری پای Raspberry Pi به زبان فارسی، دیجی اسپارک همراه باشید.
هدف از پروژه موزیک باکس NFC
هدف از اجرای پروژه ساخت یک جعبه موسیقی Music Box است که بر اساس اطلاعات یک تگ RFID و یا NFC، موزیک خاصی رو پخش میکند. این پروژه مبتنی بر رزبری پای Raspberry Pi و زبان برنامه نویسی پایتون Python نوشته شده است، با این وجود که آپشن های متفاوت دیگه ای هم برای اجرای این پروژه وجود دارد. شماتیک پروژه در تصویر زیر نمایش داده شده است:
تنظیمات رزبری پای Music Box
مرحله اول نصب و راه اندازی پیش نیازهای موزیک باکس NFC میباشد که به ترتیب تعریف خواهیم کرد:
-
نصب و راه اندازی ماژول RFID و NFC
برای راه اندازی این ماژول میتوان از دو پروتکل I2C و SPI استفاده کرد. برای این کار پیش نیاز های مورد نیاز بایستی در رزبری پای Raspberry Pi نصب گردد.
- روش I2C:
- در اولین قدم I2C را در رزبری پای Raspberry Pi خود فعال کنید (این اینترفیس به صورت پیش فرض غیر فعال می باشد.)
- در ترمینال Terminal دستورات زیر را وارد کنید:
sudo raspi-config
- در صفحه تنظیمات رزبری پای از زیرشاخه Interfacing options گزینه I2C را انتخاب کرده و YES را کلیک کنید.
دیدن این پیام به معنی فعال شدن I2C میباشد. در این پروژه موزیک باکس NFC ماژول مورد استفاده از دو حالت I2c و Spi پشتیبانی میکند.
- کتابخانههای مربوط به کار با I2C را نصب کنید
sudo apt-get update sudo apt-get install libusb-dev libpcsclite-dev i2c-tools
- پکیج libnfc را دانلود و از حالت فشرده خارج کنید (دقت کنید که فایل های پکیج داخل پوشه روت ~ قرار گیرند).
cd ~ wget http://dl.bintray.com/nfc-tools/sources/libnfc-1.7.1.tar.bz2 tar -xf libnfc-1.7.1.tar.bz2
- پکیج libnfc را نصب کنید
cd libnfc-1.7.1 ./configure --prefix=/usr --sysconfdir=/etc make sudo make install
- فایل تنظیمات مربوط به تنظیمات libnfc را در پوشه /etc/nfc ایجاد نمایید.
cd /etc sudo mkdir nfc sudo nano /etc/nfc/libnfc.conf
- محتویات فایل libnfc.conf در ادامه آمده است.
allow_autoscan = true allow_intrusive_scan = false log_level = 1 device.name = "_PN532_I2c" device.connstring = "pn532_i2c:/dev/i2c-1"
- پس از ذخیره تغییرات فایل libnfc.conf، تمام پیش نیاز های پروژه را انجام داده شده است و نوبت به اتصال ماژول خواهد رسید.
۲- روش SPI: در اولین قدم SPI را در رزبری پای خود فعال کنید. این اینترفیس به صورت پیش فرض غیر فعال می باشد. سپس در ترمینال دستورات زیر را وارد کنید:
sudo raspi-config
در صفحه تنظیمات از زیرشاخه Interfacing options گزینه SPI را انتخاب کرده و YES را بزنید.
موزیک باکس NFC رزبری پای
ابتدا رزبری پای Raspberry Pi خود را خاموش کنید، اتصال ماژول حین روشن بودن رزبری پای میتواند باعث آسیب به رزبری پای و یا ماژول گردد. سوئیچ ماژول را در وضعیت I2C قرار دهید.
- از جدول زیر برای اتصال سیم های ماژول به رزبری پای Raspberry Pi استفاده کنید.
PN532 | Raspberry |
۵V | ۵V |
GND | GND |
SDA | SDA0 |
SCL | SCL0 |
- با اجرای دستور زیر از اتصال I2C ماژول به رزبری پای مطمئن شوید.
i2cdetect –y 1
- اگر همه مراحل به درستی انجام شده باشد خروجی فرمان فوق به این شکل خواهد بود.
تصویر ۸
- در این حالت می توانید عملکرد ماژول را با دستور زیر چک کنید
nfc-list
- اگر ماژول و اتصالات موزیک باکس NFC به درستی متصل شده باشد، خروجی دستور فوق به این شکل خواهد بود:
- با دستور زیر می توان یک tag را خواند.
nfc-poll
- با اجرای دستور فوق ماژول به مدت ۳۰ ثانیه منتظر نزدیک شدن tag می ماند، با نزدیک شدن tag اطلاعات آن نمایش داده می شود و با فاصله گرفتن tag از ماژول جدا شدن آن اعلام می شود.
نصب پکیج پخش فایل صوتی mpg321
در این پروژه از mpg321 استفاده شده است. گزینه هایی دیگری از جمله VLC نیز برای این کار وجود دارد. جهت نصب پکیج mpg321 همانند زیر عمل کنید.
sudo apt-get install mpg321
نوشتن کد جهت تشخیص tag و پخش موسیقی
در این مرحله دستوراتی را در زبان پایتون Python و در قالب یک فایل .py خواهیم نوشت که از اطلاعات خروجی دستور nfc-poll استفاده کرده و بر اساس UID ثبت شده روی tag، موزیک مشخصی را پخش خواهد کرد. ابتدا با دستورات زیر فولدر music_box را در روت (~) ایجاد میکنیم، سپس یک فایل با نام reader.py در داخل این پوشه ایجاد میکنیم.
فایل Reader.py موزیک باکس NFC
import subprocess import time import os def nfc_raw(): lines=subprocess.check_output("/usr/bin/nfc-poll", stderr=open('/dev/null','w')) return lines def read_nfc(): lines=nfc_raw() return lines song1="1108af7b" try: while True: try: myLines=read_nfc() buffer=[] for line in myLines.splitlines(): line_content=line.split() if(not line_content[0] =='UID'): pass else: buffer.append(line_content) str=buffer[0] id_str=str[2]+str[3]+str[4]+str[5] print (id_str) if(id_str==song1): r=os.system('mpg321 /home/pi/music_box/music.mp3') except: pass except KeyboardInterrupt: pass
وسایل مورد نیاز
برد رزبری پای Raspberry Pi 3 B Plus
ماژول RFID/NFC pn532 به همراه کارت و تگ
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام
چه پروژه خوبی ولی با ماژول rfid ساده نمیشه اجرا کرد ؟
سلام جناب طاها
با تشکر از نظر تون
هر ماژولی که برای RFID یا NFC بشه به رزبری پای متصل کنید قابل استفاده است
ولی بر حسب نوع ماژول که استفاده میکنید ممکنه نیاز به کتابخانه های دیگه بجز libnfc داشته باشید
با آرزوی موفقیت
با سلام
چطوری میشه اطلاعات داخل یک کارت nfc رو بخونه و انرا جایی یا روی یک کارت دیگری کپی کرد؟
با همین ماژول انجام شدنی است؟
اگه منبع اموزش برای این سراغ دارید لطف بهم معرفی کنید
سلام دوست عزیز در زمینه ساخت یک پروژه کامل چه خدماتی ارائه میدین؟ (موزیک باکس و کتاب صوتی)