جدول المحتويات:

التحكم في الوصول إلى 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 خطوة (بالصور)
فيديو: Как управлять приводом с помощью Arduino - Robojax 2024, شهر نوفمبر
Anonim
تحكم في الوصول إلى Arduino YÚN باستخدام MySQL و PHP5 و Python
تحكم في الوصول إلى Arduino YÚN باستخدام MySQL و PHP5 و Python

مرحبا اصدقاء!

حسنًا ، كما تعلم ، في سبتمبر درع العرض الأول الجديد لـ Arduino ، Arduino YUN. هذا الصديق الصغير لديه نظام Linux مضمن يمكننا من خلاله تشغيل أي شيء يخطر ببالك (على الأقل حتى الآن). على الرغم من وجود القليل جدًا من المعلومات حول هذه اللوحة الجديدة ، مع المغادرة في الدليل الذي يوفر صفحة Arduino (التي سترتبط لاحقًا) ، بالإضافة إلى القليل من المعرفة بالعديد من أنظمة Linux ، يمكن تنفيذ مشروع رئيسي وهو Control Access. هذه المرة سوف أشرح كيفية القيام بهذا المشروع ، ولكن بطريقة كافية خاصة من خلال Arduino. هذا يعمل ، بفضل خادم قاعدة البيانات MySQL الذي سيستقر في YUN الخاص بنا ، ستخزن قاعدة البيانات هذه جدولين ، أحدهما للمستخدمين المرتبطين بمعرف RFID معين وجدول آخر للاحتفاظ بسجلات لجميع البطاقات التي مرت عبر قارئنا. بينما نستخدم لغات البرمجة PHP و Python النصية لأداء بعض الأساسيات والعمل مع بياناتنا. علاوة على ذلك ، فإننا نستخدم معرف قارئ ID-20 بجوار شاشة LCD التسلسلية المكونة من 16 حرفًا ، بالإضافة إلى RGB LED الذي سيكون بمثابة حالات المخبر لدينا. قد نستخدم هذا التحكم في الوصول كل ما يمكننا التفكير فيه وتعديله وإضافة مرحل أو فكرة أخرى. يمكن استخدامه في أي شيء لديك بطاقات وتريد فيه تسجيلًا. تذكر أن هذا المستند مجاني للنشر ، ولا يسمح بالاستخدام التجاري والتعديلات المستثناة. آمل أن يكون مسارًا أكثر شمولاً للإلكترونيات مفتوحة المصدر. لذلك ننتقل إلى الخطوة التالية ، تحتاج الأطراف!

الخطوة 1: الأجزاء

الأجزاء
الأجزاء
الأجزاء
الأجزاء
الأجزاء
الأجزاء

للقيام بهذا المشروع ، نحتاج إلى: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71.95 * معرف قارئ RFID-20 (125 كيلو هرتز) https://www.sparkfun.com/products/11828 34.95 دولارًا * اندلاع قارئ RFID https://www.sparkfun.com/products/8423 $ 0.95 * شاشة LCD أساسية بحجم 16 × 2 أحرف 5 فولت https://www.sparkfun.com/products/790 $ 16.95 * حقيبة ظهر LCD ممكّنة بشكل تسلسلي https:// www. sparkfun.com/products/258 $ 16.95 * LED RGB 5 مم https://www.sparkfun.com/products/105 $ 1.95 * الطنان https://www.sparkfun.com/products/7950 $ 1.95 * Somes Header Pin and wire 5.00 دولار تقريبًا. بشكل عام ، إذا اشتريت من متجر Sparkfun ، فسيكون كل شيء قريبًا من 150 دولارًا. إذا كنت تعيش في أمريكا اللاتينية ، فإنني أوصي بشراء الأجزاء في www.olimex.cl ، وهو متجر إلكترونيات تشيلي جيد جدًا.

الخطوة 2: التجميع

التجميع
التجميع
التجميع
التجميع
التجميع
التجميع

عدد قليل من الاتصالات للقيام ، ووضع شرح موجز. بالنسبة لـ RGB LED ، يجب أن يكون دبوس LED الأحمر على الطرف 9 من Arduino ، ويجب أن يكون دبوس LED الأخضر على Arduino pin 8 ويجب أن يكون مؤشر LED الأزرق على دبوس 7 من Arduino. بالنسبة لـ ID-20 ، يجب توصيل المسامير التالية كما هو موضح في الجدول بالترتيب المعني ، قارئ الدبوس إلى دبوس Arduino: Pin 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 في Arduino ، بينما يذهب دبوس LCD Serial RX إلى الطرف 11 اردوينو.

الخطوة 3: برمجة Arduino Yun

برمجة Arduino Yun
برمجة Arduino Yun

لغرض إنشاء مشروعنا ، نحتاج إلى البدء بجزء من البرنامج ، وتثبيت بعض الملفات على Arduino opkg Yun:

  • خادم MySQL
  • PHP5
  • MySQLdb for Python 2.7.1 تحديث
  • تعديل PHP5 إلى MySQL

تذكر أنه افتراضيًا في Bridge يأتي Python 2.7 مثبتًا ، لذلك لن تحتاج أبدًا إلى تثبيت أي تحديث لهذا الغرض. ابدأ في تسجيل SSH يجرؤ على الدخول إلى 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 دورات ، "معرف" ، "اسم" ، "اسم" ، "بريد إلكتروني" ، "rfid" لتسويق بعضها وسأقدم شرحًا موجزًا لاستخدامها.

  • 'id': هل الحقل أو عمود int الخاص بالسمة سيخبرنا بالرقم المخصص لمعرف المستخدم ، وهذا الرقم يتم تعيينه بواسطة نفس قاعدة البيانات وسيكون هو السبيل لفهرسة سجلاتنا.
  • 'nombre': عمود السمة سيكون "varchar" وقد يُشار إليه بالاسم الذي يُعرف به مستخدم البطاقة.
  • 'apellido': عمود السمة سيكون 'varchar' ويمكن الإشارة إليه بالاسم الأخير الذي يرتبط به مستخدمنا.
  • 'correo': هو عمود السمة "varchar" الذي سيحتوي على البريد الإلكتروني للمستخدم المرتبط.
  • 'rfid': هو عمود السمة "varchar" الذي سيحتوي على رمز بطاقة RFID التي تستخدمها.

(سأستخدم المتغيرات باللغة الإسبانية ، لأن لغتي الأم وأنا أحب c:) الآن يمكننا تكوين قاعدة البيانات الخاصة بنا دون مشكلة ، لذلك نقوم بإنشاء استدعاء MySQL لـ 'arduino'. يجب عليك كتابة الكود التالي:

mysqladmin -u root -p إنشاء اردوينو

نطلب كلمة المرور التي أدخلناها مسبقًا في التثبيت ، وسنرسلها لإكمال إنشاء القاعدة. انتهينا من كل هذا ، أدخلنا الاستعلام إلى MySQL ، يجب عليك كتابة الكود التالي في وحدة التحكم:

mysql-root -p

مرة أخرى نطلب كلمة المرور ، يجب عليك إرسالها مرة أخرى. بمجرد دخولنا إلى أمر وحدة تحكم MySQL ، يجب أن نظهر المؤشر ('mysql>') جاهزًا للكتابة. أول شيء سنفعله هو نقل قاعدة بيانات "اردوينو" للعمل عليها. يتم ذلك عن طريق كتابة الأمر التالي في وحدة تحكم 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) ليس NULL ،
  7. المفتاح الأساسي (`id`)
  8. ) المحرك = مجموعة MyISAM الافتراضية = latin1 AUTO_INCREMENT = 0 ؛

* تذكر أنه عند الضغط على مفتاح ENTER في نهاية سطر الأوامر في وحدة تحكم MySQL ، لن يتم تشغيله حتى تجد '؛' لذلك ، في نهاية الكود هو "؛" لإكمال تثبيت MySQL وتكوينه ، نقوم بملء بعض حقول الاختبار داخل قاعدتنا. اكتب الأسطر التالية:

  1. أدخل في `usuariosrfid` (` id` ، `nombre` ،` apellido` ، `correo` ،` rfid`) القيم
  2. (1، "Pedro"، "Suarez"، "[email protected]"، "1234a-12345-b-123c") ،
  3. (4 ، "ماتياس" ، "لوبيز" ، "[email protected]" ، "987a-9876b-987c") ؛

استمر الآن في إنشاء الجدول "ControlUsuarios" ، والذي سيضم جميع رموز RFID التي تمر عبر القارئ ، ويتكون هذا الجدول من 3 حقول ، "id" ، و "rfid" ، و "date".

  • 'id' هو الحقل أو عمود int الخاص بالسمة والذي سيحتوي على معرف كل سجل للفهرسة.
  • سمة "rfid" هي العمود "varchar" الذي يحتوي على رمز علامة RFID الذي تمت قراءته بواسطة القارئ.
  • "التاريخ" هو عمود السمة "varchar" الذي سيحتوي على تاريخ قراءة البطاقة.

لإنشاء الجدول "ControlUsuarios" ، أدخلنا الكود التالي في وحدة تحكم MySQL:

  1. إنشاء جدول "ControlUsuarios" (
  2. `id` int (255) NOT NULL AUTO_INCREMENT ،
  3. 'rfid` varchar (300) ليس NULL ،
  4. `fecha` varchar (300) NOT NULL ،
  5. المفتاح الأساسي (`id`)
  6. ) المحرك = مجموعة MyISAM الافتراضية = latin1 AUTO_INCREMENT = 0 ؛

أخيرًا اكتب "exit؛" في وحدة التحكم للخروج من MySQL Query ، والعودة إلى 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 و Python

تثبيت Conector MySQL لـ PHP5 و Python
تثبيت Conector MySQL لـ PHP5 و Python

تابع تثبيت وتكوين الوحدات النمطية لربط قاعدة بيانات MySQL بـ PHP و Python. لنبدأ بموصل PHP. اكتب الكود التالي:

  1. opkg تثبيت php5-mod-mysql
  2. sed -i 's،؛ extension = mysql.so، extension = mysql.so، g' /etc/php.ini

بمجرد أن يصبح جاهزًا ، لن يحتاج إلى إعادة تشغيل خادم uHTTPd ، ليكون جاهزًا للاستخدام الفوري. تابع الآن مع موصل Python ، لذلك ، يجب عليك إدخال الكود التالي:

opkg تثبيت python-mysql

مع هذه الخطوة الأخيرة ، سيكون لدينا Arduino Yun جاهزًا لمشروعنا باستخدام قارئ البطاقة ID-20 RFID 125 كيلو هرتز. أنهِ هذا الجزء بملاحظات عما أنجزناه:

  • قمنا بتثبيت خادم MySQL على Arduino Yun الخاص بنا ، ثم قمنا بتكوينه ، منتهيًا بإدخال بيانات الاختبار.
  • قم بتثبيت مكمل PHP على خادمنا.
  • انتهينا من تثبيت وتكوين MySQL Connector لكل من PHP و Python.

الخطوة 7: الرموز

في هذا المجال ، نناقش رموز البرمجة التي سيتم استخدامها لهذا المشروع. نترك مع كود Python ، الذي ينقسم إلى ملفين: 'comprobar.py' ، والذي سيتصل بقاعدة البيانات ويبحث عن Yun Arduino إذا كانت النتيجة فيه ، والتحكم في الملف. py '، وهو المسؤول عن تسجيل أي بطاقة يقرأها القارئ ID-20 ، سواء أكان ذلك في قاعدة بيانات المستخدمين المسجلين أم لا. ثم تابع وصف ملفات PHP ، وهي: 'ConsultaRelacion.php'، 'ConsultaControl.php'، 'index.php' 'modificar2.php'، 'modificar.php'، 'borrar.php'، 'delete2. php '،' guardar.php '' Consulta.php '،' configuracion.php '. بالنسبة لهذه الملفات ، يتم تكرارها على حد سواء لأنه من السهل فهمها. أخيرًا ، انتهي من الكود الذي سيصعد مثل رسم Arduino الخاص بنا.

الخطوة 8: ملفات Python

ملفات بايثون
ملفات بايثون

كما ذكرنا سابقًا ، تعمل نصوص Python الخاصة بنا مع المكتبة أو فئة MySQLdb المثبتة مسبقًا. ابدأ بإنشاء ملف بـ ".py" يسمى "comprobar.py" في محررنا ، أوصي باستخدام هذه الحالات للبرمجة في Python ، محرر Sublime Text 3 ، والذي يمكنك تنزيله على موقع الويب الخاص بهم www.sublimetext.com. لنبدأ باستيراد المكتبة للاتصال بقاعدة بيانات MySQL الخاصة بنا ، وهي المكتبة التي ستسمح لنا بالتواصل مع Arduino Yun:

  1. استيراد MySQLdb
  2. استيراد النظم

بمجرد استيراد هذه المكتبات أو الفئات ، نضيف متغيرات إلى التعليمات البرمجية الخاصة بك ، والتي ستكون بيانات الاتصال من قاعدة بيانات MySQL الخاصة بنا ، العظام:

  1. host = "127.0.0.1" # يتوافق مع عنوان خادم MySQL الخاص بنا.
  2. user = "your-seat" # هو مستخدم قاعدة البيانات الخاصة بنا.
  3. passw = "your-password" هي كلمة مرور المستخدم. base = "arduino" # هذا هو اسم قاعدة البيانات التي تستخدمها.

ابدأ الآن برموز البرنامج النصي الأساسية:

  1. احيانا صحيح:
  2. db = MySQLdb.connect (مضيف ، مستخدم ، كلمة مرور ، قاعدة)
  3. cur = db.cursor ()
  4. resultado = cur.execute ("" "SELECT * FROM usuariosrfid حيث rfid مثل٪ s ORDER BY id" ""، (sys.argv [1]،))
  5. إذا (نتيجة == 1):
  6. طباعة 1
  7. sys.exit (1)
  8. آخر:
  9. طباعة 2
  10. sys.exit (1)

إذا أدركنا ، في الحكم 'cur.execute نتيجة = ("" "SELECT * FROM WHERE rfid usuariosrfid مثل٪ s ORDER BY id" "" (sys.argv [1]))' الأمر لتنفيذ استعلامنا قارن المتغير '(sys.argv [1])' وهو الكود من بطاقة Arduino RFID مع جميع بيانات الحقل 'rfid' جدول 'usuariosrfid' ، والذي سيجد رمز المساواة من arduino و or الأكواد المخزنة في قاعدة البيانات العودة 1 ، إذا لم يكن هذا صحيحًا ولم يكن هناك مساواة بين الكود من arduino وبعض من القاعدة ، فسنقوم بإرجاع 2. هذه الأرقام سوف يستقبلها Arduino. نستمر مع الملف التالي 'control.py. يعمل هذا الملف بالطريقة نفسها الموضحة أعلاه ، مع الاحتفاظ فقط بمذاق لاحق على طاولة ، ويتم جمع هذه السجلات بواسطة القارئ ID-20 المتصل بـ Arduino Yun الخاص بنا ، حتى نتمكن من الاحتفاظ بجميع المستخدمين المسجلين الذين يستخدمون قارئ RFID الخاص بنا.

الخطوة 9: ملفات PHP

ثم تابع الملفات. 'Php' الذي سيحتفظ بالمجلد من الخادم الخاص بنا ، للقيام بذلك تذكر أنه من الضروري أن يتم حفظ هذه الملفات بمجرد أن تكون جاهزة ، في المسرحية الهزلية لمشروعنا ، والذي يقوم تلقائيًا بإنشاء IDE Arduino ، عليك أيضًا أن تتذكر ، على الرغم من أنني أتوقع هذا ، عندما ننتقل إلى رسم Arduino الخاص بنا ، نقوم بالتحميل عبر Wi -Fi ، لذلك أتركه على نفس الصفحة كتيب Arduino ، www.arduino. cc / en / 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. <؟ بي أتش بي
  2. / / خادم البيانات وقاعدة البيانات
  3. $ server = "localhost" ؛
  4. اسم المستخدم $ = "مقعدك" ؛
  5. كلمة المرور $ = "كلمة المرور" ؛
  6. $ database_name = "اردوينو" ؛

هذه هي البيانات التي تحتاج إلى الاتصال بقاعدة البيانات الخاصة بنا في اردوينو وستكون هي نفسها التي نستخدمها في نصوص Python الخاصة بنا. قم بإنهاء برمجة تعليمة connect التي استخدمت البرنامج النصي الخاص بنا:

  1. $ conexion = mysql_connect ($ server، $ username، $ password) أو die ("Problemas al tratar de establecer la conexion")؛
  2. $ bd_sel = mysql_select_db ($ database_name) أو die ("Problemas 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' التي سنقوم من خلالها بالاتصال بين Linux و ATMEGA32U4 ، وستعمل فئة "Process.h" لعمليات التشاور في Linux.
  • تحديد ثلاثة دبابيس فقط ، والتي تستخدم الأخرى تكون مجانية.

الكود مرفق

الخطوة 11: عام جديد سعيد

أواصل هذا بدقة لخدمتك ومساعدتك في الحصول على مزيد من المعلومات حول Arduino Yun. اترك جميع الملفات مرفقة حتى النهاية. بالنسبة للمتحدثين باللغة الإسبانية ، أترك هذا البرنامج التعليمي ولكن باللغة الإسبانية مع الملفات الضرورية. أتمنى لك سنة جديدة سعيدة ، واستمتع بها ونجاحها في 2014!

موصى به: