فهرست مطالب:

کنترل دسترسی Arduino YÚN با MySQL ، PHP5 و Python: 11 مرحله (همراه با تصاویر)
کنترل دسترسی Arduino YÚN با MySQL ، PHP5 و Python: 11 مرحله (همراه با تصاویر)

تصویری: کنترل دسترسی Arduino YÚN با MySQL ، PHP5 و Python: 11 مرحله (همراه با تصاویر)

تصویری: کنترل دسترسی Arduino YÚN با MySQL ، PHP5 و Python: 11 مرحله (همراه با تصاویر)
تصویری: با مقاومت متغیر خداحافظی کن |کنترل کننده ولتاژ | great idea | پتانسیومتر |منبع تغذیه متغیر با ۴ قطعه 2024, نوامبر
Anonim
کنترل دسترسی Arduino YÚN با MySQL ، PHP5 و Python
کنترل دسترسی Arduino YÚN با MySQL ، PHP5 و Python

سلام دوستان!

خوب ، همانطور که می دانید ، در سپتامبر سپر برتر جدید آردوینو ، Arduino YUN. این دوست کوچک دارای سیستم تعبیه شده در لینوکس است که با آن می توانیم هر چیزی را که فکر می کنید (حداقل تا کنون) اجرا کنیم. در حالی که اطلاعات بسیار کمی در مورد این صفحه جدید وجود دارد ، اما خروج از راهنمای صفحه Arduino (که بعداً به آن پیوند داده می شود) ، به علاوه دانش اندکی از بسیاری از لینوکس ها ، می تواند یک پروژه بزرگ را با عنوان Access Access انجام دهد. این بار من نحوه انجام این پروژه را توضیح می دهم ، اما به طریقی کافی در سراسر آردوینو. این کار به لطف سرور پایگاه داده MySQL که در YUN ما مستقر می شود ، کار می کند ، این پایگاه داده دو جدول ذخیره می کند ، یکی برای کاربران مرتبط با RFID خاص و یک جدول دیگر برای ذخیره پرونده های تمام کارت هایی که از خواننده ما عبور کرده اند. در حالی که ما از زبان های برنامه نویسی PHP و اسکریپت های پایتون برای انجام برخی از اصول و کار با داده های خود استفاده می کنیم. علاوه بر این ، از سخت افزار سربار ، ما از خواننده ID-20 در کنار LCD سریال 16 کاراکتر ، به علاوه یک LED RGB که حالتهای مطلع کننده ما است ، استفاده می کنیم. ما ممکن است از این کنترل دسترسی برای هر چیزی که فکر می کنیم استفاده کنیم ، تغییر دهیم و یک رله یا ایده دیگری اضافه کنیم. می توان آن را در هر جایی که کارت دارید و ضبط می خواهید استفاده کرد. به یاد داشته باشید که این سند انتشار رایگان است ، استفاده تجاری و تغییرات معاف مجاز نیست. امیدوارم این راه گسترده تری در زمینه الکترونیک منبع باز باشد. بنابراین ما به مرحله بعدی می رویم ، احزاب نیاز دارند!

مرحله 1: قطعات

قطعات
قطعات
قطعات
قطعات
قطعات
قطعات

برای انجام این پروژه ، ما باید: * Arduino YUN https://www.sparkfun.com/products/12053 71.95 $ * RFID Reader ID-20 (125 کیلوهرتز) https://www.sparkfun.com/products/11828 $ 34.95 * RFID Reader Breakout https://www.sparkfun.com/products/8423 $ 0.95 * پایه 16x2 کاراکتر LCD 5V https://www.sparkfun.com/products/790 16.95 $ * سریال فعال شده کوله پشتی LCD https:// www. sparkfun.com/products/258 $ 16.95 * LED RGB 5mm https://www.sparkfun.com/products/105 $ 1.95 * Buzzer https://www.sparkfun.com/products/7950 $ 1.95 * برخی از پین و سیم سرصفحه 5.00 دلار به در کل ، اگر از فروشگاه Sparkfun خرید کنید ، همه چیز نزدیک به 150 دلار خواهد بود. اگر در آمریکای لاتین زندگی می کنید ، توصیه می کنم قطعات را در www.olimex.cl خریداری کنید ، یک فروشگاه الکترونیک بسیار خوب شیلیایی است.

مرحله 2: مونتاژ

مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ

اتصالات کمی را انجام دهید ، به طور خلاصه توضیح دهید. برای LED RGB ، پین LED قرمز باید در پین 9 آردوینو باشد ، پین LED سبز باید روی پین 8 آردوینو و LED آبی باید روی پین 7 آردوینو قرار گیرد. برای ID-20 باید پین های زیر را مطابق جدول به ترتیب مربوطه متصل کنید ، پین خوان را به پین Arduino متصل کنید: پین ID-20 به پین Arduino ID-20 / Arduino PIN 1-GND PIN 2-5V PIN 7 - GND PIN 9- PIN 10 PIN 10- BUZZER PIN 11- 5V و در نهایت ، برای اتصال سری LCD فقط به پین های 5v و GND آردوینو لازم است ، در حالی که پین LCD Serial RX به پین 11 می رود از آردوینو

مرحله 3: برنامه نویسی Arduino Yun

برنامه نویسی آردوینو یون
برنامه نویسی آردوینو یون

به منظور ایجاد پروژه ، باید با بخشی از نرم افزار شروع کنیم ، برخی از فایل ها را بر روی Arduino opkg Yun خود نصب کنیم:

  • سرور MySQL
  • PHP5
  • MySQLdb برای پایتون 2.7
  • مد PHP5 به MySQL

به یاد داشته باشید که به طور پیش فرض در Bridge ، Python 2.7 نصب شده است ، بنابراین هرگز نیازی به نصب هیچ گونه به روز رسانی برای این کار ندارید. شروع به ثبت نام کنید SSH dare to Arduino Yun ما را وارد کنید ، پس از شروع به کار ، دستور زیر را برای به روز رسانی لیست برنامه های opkg تایپ کنید:

آپدیت opkg

مرحله 4: نصب MySQL

نصب MySQL
نصب MySQL

اکنون ما نصب و پیکربندی MySQL Server را ایجاد می کنیم ، دستورات زیر را در کنسول تایپ کنید:

  1. opkg نصب libpthread libncurses libreadline mysql-server
  2. sed -i's، ^datadir.*، datadir =/srv/mysql/، g '/etc/my.cnf
  3. sed -i 's، ^tmpdir.*، tmpdir = /tmp /، g' /etc/my.cnf
  4. mkdir -p /srv /mysql
  5. mysql_install_db –-force
  6. /etc/init.d/mysqld شروع کنید
  7. /etc/init.d/mysqld را فعال کنید
  8. mysqladmin -u رمز عبور ریشه 'tu-nueva-clave'

پس از اتمام وارد کردن کدهای ما و راه اندازی سرور MySQL ، باید پایگاه داده ای را که دستکاری می شود پیکربندی کنید. اما قبل از شروع به تایپ کدها ، باید زمینه هایی را که جدول ما را حمل می کنند ، درک کنیم. هیئت مدیره باید از 5 دوره "id" ، "name" ، "name" ، "email" ، "rfid" تشکیل شده باشد تا برخی از آنها را به بازار عرضه کنم.

  • 'id': آیا فیلد یا ویژگی ستون int که شماره اختصاص داده شده به User ID را به ما می گوید ، این شماره توسط همان پایگاه داده تعیین شده و راهی برای فهرست بندی سوابق ما خواهد بود.
  • 'nombre': ستون ویژگی 'varchar' خواهد بود ممکن است با نامی که کاربر کارت ما با آن مشخص شده است نشان داده شود.
  • 'apellido': ستون ویژگی 'varchar' است ممکن است با نام خانوادگی که کاربر ما با آن ارتباط دارد نشان داده شود.
  • 'correo': ستون ویژگی 'varchar' است که شامل ایمیل کاربر مربوطه خواهد بود.
  • 'rfid': ستون ویژگی 'varchar' است که حاوی کد کارت RFID مورد استفاده شما خواهد بود.

(من از متغیرها به زبان اسپانیایی استفاده خواهم کرد ، زیرا زبان مادری من است و من c را دوست دارم:) اکنون می توانیم پایگاه داده خود را بدون مشکل پیکربندی کنیم ، بنابراین ما یک تماس "arduino" MySQL ایجاد می کنیم. شما باید کد زیر را تایپ کنید:

mysqladmin -u root -p ایجاد آردوینو

ما گذرواژه ای را که قبلاً در نصب وارد کرده ایم درخواست می کنیم ، آن را برای تکمیل ایجاد پایگاه ارسال می کنیم. تمام این موارد به پایان رسید ، ما پرس و جو را در MySQL وارد می کنیم ، شما باید کد زیر را در کنسول تایپ کنید:

mysql -root -p

دوباره ما رمز عبور را درخواست می کنیم ، شما باید دوباره آن را ارسال کنید. هنگامی که داخل فرمان کنسول MySQL شدید ، نشانگر ('mysql>') باید آماده تایپ شود. اولین کاری که ما انجام می دهیم این است که پایگاه داده های arduino را روی آن کار کنیم. این امر با تایپ دستور زیر در کنسول MySQL انجام می شود:

از آردوینو استفاده کنید

ما معتقدیم که جدول نام "usuariosrfid" در پایگاه داده برای این پروژه استفاده می شود ، این کد را در کنسول MySQL تایپ کنید:

  1. ایجاد جدول `usuariosrfid` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT ،
  3. `nombre` varchar (300) NOT NULL ،
  4. `apellido` varchar (300) NOT NULL ،
  5. `correo` varchar (300) NOT NULL ،
  6. `rfid` varchar (300) NOT NULL ،
  7. کلید اصلی (`id`)
  8. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0؛

* به یاد داشته باشید که هنگام فشار دادن کلید ENTER در انتهای خط فرمان در کنسول MySQL ، تا زمانی که '؛' را پیدا نکنید ، اجرا نمی شود. بنابراین ، در انتهای کد '؛' برای تکمیل نصب و پیکربندی MySQL ، برخی از فیلدهای آزمایشی را در پایگاه خود پر می کنیم. خطوط زیر را تایپ کنید:

  1. وارد "usuariosrfid" ("id" ، "nombre" ، "apellido" ، "correo" ، "rfid") ارزشها
  2. (1 ، "پدرو" ، "سوارز" ، "[email protected]" ، "1234a-12345-b-123c") ،
  3. (4 ، 'Matias' ، 'Lopez' ، '[email protected]' ، '987a-9876b-987c') ؛

اکنون با ایجاد جدول "ControlUsuarios" ادامه دهید ، که تمام کدهای RFID منتقل شده توسط خواننده را در خود جای می دهد ، این جدول شامل 3 قسمت "id" ، "rfid" ، "date" است.

  • 'id' ستون یا ویژگی int است که شامل شناسه هر رکورد برای نمایه سازی است.
  • ویژگی 'rfid' ستون 'varchar' حاوی کد برچسب RFID است که توسط خواننده خوانده می شود.
  • 'date' ستون ویژگی 'varchar' است که شامل تاریخ خواندن کارت می شود.

برای ایجاد جدول "ControlUsuarios" ، کد زیر را در کنسول MySQL وارد می کنیم:

  1. ایجاد جدول `ControlUsuarios` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT ،
  3. `rfid` varchar (300) NOT NULL ،
  4. `fecha` varchar (300) NOT NULL ،
  5. کلید اصلی (`id`)
  6. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0؛

در نهایت عبارت 'exit؛' را تایپ کنید در کنسول برای خروج از Query MySQL و بازگشت به SHH تا بتوانیم با PHP5 شروع کنیم.

مرحله 5: نصب PHP5

نصب PHP5
نصب PHP5

نصب و پیکربندی PHP5 را ادامه دهید. این نصب آسانتر از MySQL است ، بنابراین نباید هزینه ای برای آنها داشته باشد. ابتدا بسته opkg را از بارگیری و نصب Arduino Yun نصب کنید ، بنابراین در کنسول SSH Arduino این را تایپ کنید:

opkg php5 php5-cgi را نصب کنید

پس از بارگیری و نصب PHP5 در Arduino Yun ، بنابراین ما فایل ریشه uHTTPd را پیکربندی کردیم ، سرور http که پیش فرض Arduino را به ارمغان می آورد ، توصیه می کنم فقط از این سرور http استفاده کنید زیرا از نظر تنظیمات همه کاره تر و قابل دسترسی است ، نه Apache یا Lighttpd مشکل تر هستند برای راه اندازی هنگامی که در این زمینه جدید هستید. برای پیکربندی این ، از ویرایشگر فایل 'vi' SSH استفاده کنید ، برای این کار باید حداقل دانش را برای استفاده از این ویرایشگر داشته باشید. شروع به تایپ این کد در کنسول برای دسترسی به فایل تنظیمات uHTTPd کنید:

vi/etc/config/uhttpd

برای ویرایش فایل 'i' را فشار دهید ، سپس به خط کدی که نوشته اید '# list interpreter بروید. "php = / usr / bin / php-cgi" '. شما باید کاراکتر "#" را در ابتدای خط حذف کنید ، سپس کلید خروج (کلید "ESC") را فشار دهید ، پس از آماده شدن ، باید دستور ": wq" را برای ذخیره فایل و خروج از آن تایپ کنید. شما باید سرور uHTTPd را مجدداً راه اندازی کنید ، برای این کار باید کد زیر را در کنسول فرمان SSH تایپ کنید:

/etc/init.d/uhttpd راه اندازی مجدد کنید

مرحله 6: نصب Conector MySQL برای PHP5 و پایتون

Conector MySQL را برای PHP5 و Python نصب کنید
Conector MySQL را برای PHP5 و Python نصب کنید

برای اتصال و پیکربندی ماژول ها به پایگاه داده MySQL با PHP و پایتون وصل شوید. بیایید با اتصال PHP شروع کنیم. کد زیر را تایپ کنید:

  1. opkg php5-mod-mysql را نصب کنید
  2. sed -i's،؛ extension = mysql.so، extension = mysql.so، g '/etc/php.ini

پس از آماده شدن ، نیازی به راه اندازی مجدد سرور uHTTPd نیست ، آماده استفاده فوری. اکنون با اتصال دهنده پایتون ادامه دهید ، برای این کار باید کد زیر را وارد کنید:

opkg python-mysql را نصب کنید

با این مرحله آخر ، ما Arduino Yun خود را با کارت خوان ID-20 RFID 125khz برای پروژه آماده می کنیم. این قسمت را با بازخورد آنچه انجام داده ایم به پایان برسانید:

  • ما سرور MySQL را روی Arduino Yun خود نصب کردیم ، سپس آن را پیکربندی کردیم و با درج داده های آزمایش به پایان رسید.
  • مکمل PHP را روی سرور ما نصب کنید.
  • ما با نصب و پیکربندی MySQL Connector برای PHP و Python به پایان رسیدیم.

مرحله 7: کدها

در این زمینه ، ما کدهای برنامه نویسی مورد استفاده برای این پروژه را مورد بحث قرار می دهیم. ما با کد پایتون ، که به دو فایل تقسیم شده است ، ترک می کنیم: "comprobar.py" ، که به پایگاه داده متصل می شود و در صورت وجود نتیجه در آن ، یون آردوینو را جستجو می کند و کنترل فایل. py '، مسئول ضبط هر کارتی که توسط خواننده ID-20 خوانده می شود ، خواه در پایگاه داده کاربران ثبت نام شده یا نه. سپس با شرح فایلهای PHP ادامه دهید: php '،' guardar.php '' consulta.php '،' configuracion.php '. برای این فایل ها هر دو به دلیل درک آسان آنها ، افزونگی می کنند. در نهایت با کدی که به عنوان طرح آردوینو ما بالا می رود ، کار را تمام کنید.

مرحله 8: فایل های پایتون را

فایل های پایتون
فایل های پایتون

همانطور که قبلاً ذکر شد ، اسکریپت های پایتون ما با کتابخانه یا کلاس "MySQLdb" ، که قبلاً نصب شده است ، عمل می کردند. با ایجاد یک فایل با '.py' به نام 'comprobar.py' در ویرایشگر ما شروع کنید ، توصیه می کنم از این موارد برای برنامه نویسی در Python ، ویرایشگر Sublime Text 3 استفاده کنید ، که می توانید آن را در وب سایت آنها www.sublimetext.com بارگیری کنید. بیایید با وارد کردن کتابخانه برای اتصال به پایگاه داده MySQL شروع کنیم ، sys کتابخانه که به ما امکان می دهد با Arduino Yun خود ارتباط برقرار کنیم:

  1. MySQLdb را وارد کنید
  2. واردات سیستم

پس از وارد کردن این کتابخانه ها یا کلاس ها ، ما متغیرهایی را به کد شما اضافه می کنیم ، که داده های اتصال از پایگاه داده MySQL ما هستند ، استخوان:

  1. host = "127.0.0.1" # با آدرس سرور MySQL ما مطابقت دارد.
  2. user = "your-seat" # کاربر پایگاه داده ما است.
  3. passw = "your-password" برای رمز عبور کاربر است. base = "arduino" # این نام پایگاه داده ای است که از آن استفاده می کنید.

حالا با کدهای اسکریپت پایه شروع کنید:

  1. در حالی که True:
  2. db = MySQLdb.connect (میزبان ، کاربر ، گذرنامه ، پایه)
  3. cur = db.cursor ()
  4. resultado = cur.execute ("" "SELECT * FOUR usuariosrfid WHERE rfid LIKE٪ s ORDER BY id" "، (sys.argv [1] ،))
  5. if (resultado == 1):
  6. چاپ 1
  7. sys.exit (1)
  8. دیگری:
  9. چاپ 2
  10. sys.exit (1)

اگر متوجه شدیم ، در قضاوت 'cur.execute result = ("" "SELECT * FRODE rfid usuariosrfid LIKE٪ s ORDER BY id" "(sys.argv [1]))' دستور برای اجرای پرس و جو ما را متغیر مقایسه کنید '(sys.argv [1])' که کد کارت آردوینو RFID با تمام داده های میدانی 'rfid' جدول 'usuariosrfid' است که با یافتن کد برابری از arduino و یا کدهای ذخیره شده در پایگاه داده ، بازگشت 1 ، اگر این درست نباشد و بین کد آردوینو و برخی از پایه ها برابری وجود نداشته باشد ، 2 را برمی گردانیم. این اعداد توسط آردوینو دریافت می شوند. ما با فایل بعدی 'control.py ادامه می دهیم. این فایل همانند روش فوق عمل می کند ، فقط یک طعم تازه روی میز ذخیره می شود ، این سوابق ذخیره شده باید توسط ID-20 خواننده متصل به Arduino Yun ما جمع آوری شود ، بنابراین ما می توانیم همه کاربران ثبت شده را که از RFID خوان ما استفاده می کنند نگه داریم.

مرحله 9: فایل های PHP را

سپس پرونده ها را ادامه دهید. "Php" که پوشه را از سرور ما نگه می دارد ، برای این کار به یاد داشته باشید که لازم است این فایلها پس از آماده شدن ، در پروژه ما ذخیره شوند ، که به طور خودکار IDE Arduino را تولید می کند ، شما همچنین باید به خاطر داشته باشید ، اگرچه من پیش بینی می کنم این ، هنگامی که به طرح آردوینو یون می رویم ، از طریق Wi -Fi بارگذاری می کنیم ، بنابراین آن را در همان صفحه Arduino ، www.arduino ، قرار می دهم. cc / fa / Guide / Arduino Yun # toc14 ، که بیشتر در مورد آن توضیح می دهد ، و اینکه چگونه باید کارت MicroSD آماده شده برای این نوع پروژه را تهیه کنید ، جایی که پرونده ها باید در سرور ذخیره شوند. فایلهای PHP 10 "ConsultaRelacion.php" ، "ConsultaControl.php" ، "index.php" "modificar2.php" ، "modificar.php" ، "borrar.php" ، "borrar2.php" ، "guardar خواهند بود. php '' Consulta.php '،' configuracion.php '، که به دیگری پیوند داده می شود ، تا منوی اصلی همیشه در حال اجرا و در دسترس باشد. فقط فایل 'configuracion.php' را توضیح دهید ، که به عنوان یک اتصال دهنده با پایگاه داده ما عمل می کند. در ویرایشگر ما ، کد زیر را در فایل زمان بندی می کنیم:

  1. < php
  2. / / سرور داده و پایگاه داده
  3. $ server = "localhost"؛
  4. $ username = "your-seat"؛
  5. $ password = "رمز عبور"؛
  6. $ database_name = "arduino"؛

اینها داده هایی هستند که برای اتصال به پایگاه داده ما در arduino مانند اسکریپت های پایتون ما هستند. برنامه نویسی عبارت connect را که از اسکریپت ما استفاده می کرد ، به پایان برسانید:

  1. $ conexion = mysql_connect ($ server، $ username، $ password) یا die ("Problems al tratar de establecer la conexion")؛
  2. $ bd_sel = mysql_select_db ($ database_name) یا die ("Problems al seleccionar la base de datos") ؛
  3. ?>

فایلهای دیگر پیوست شده است.

مرحله 10: در نهایت ، برنامه Arduino YÚN

ما به قسمت اصلی این آموزش ، برنامه نویسی Arduino Yun رسیدیم ، هیچ جزئیاتی تمام کد را برجسته نمی کند زیرا بسیار گسترده است ، فقط به نکات مهم زیر اشاره کنید:

  • کد شامل 6 عملکرد اصلی و 13 عملکرد ثانویه است که تنها پشتیبانی از استفاده از LCD سریال هستند.
  • فقط سه کلاس "SoftwareSerial.h" وارد کنید ، که با آن Serial Attached را برای اتصال با ID-20 و Serial LCD ، کلاس اصلی "Bridge.h" که با آن ارتباط بین لینوکس و ATMEGA32U4 را ایجاد می کنیم ، وارد می کنیم. و کلاس "Process.h" برای فرآیندهای مشاوره در لینوکس خدمت می کند.
  • فقط سه پین تعریف کنید ، که از پین های دیگر رایگان استفاده می کند.

کد پیوست شده است

مرحله 11: سال نو مبارک

من این کار را با دقت انجام می دهم تا به شما خدمت کنم و به شما کمک کنم اطلاعات بیشتری در مورد آردوینو یون دریافت کنید. تمام فایلها را به انتهای صفحه متصل کنید. برای سخنرانان زبان اسپانیایی ، این آموزش را به زبان اسپانیایی با فایلهای لازم می گذارم. امیدوارم سال خوبی داشته باشید ، از آن لذت ببرید و در این 2014 موفق باشید!

توصیه شده: