Mundarija:

MySQL, PHP5 va Python bilan Arduino YÚN -ga kirishni boshqarish: 11 qadam (rasmlar bilan)
MySQL, PHP5 va Python bilan Arduino YÚN -ga kirishni boshqarish: 11 qadam (rasmlar bilan)

Video: MySQL, PHP5 va Python bilan Arduino YÚN -ga kirishni boshqarish: 11 qadam (rasmlar bilan)

Video: MySQL, PHP5 va Python bilan Arduino YÚN -ga kirishni boshqarish: 11 qadam (rasmlar bilan)
Video: MySQL server dasturini o'rnatish va SQL uchun ish muhitini sozlash | 2-dars | SQL darslari 2024, Iyul
Anonim
MySQL, PHP5 va Python bilan Arduino YÚN -ga kirishni boshqarish
MySQL, PHP5 va Python bilan Arduino YÚN -ga kirishni boshqarish

Salom Do'stlar!

Xo'sh, siz bilganingizdek, sentyabr oyida Arduino -ning yangi premyerasi Arduino YUN. Bu kichkina do'stning Linux o'rnatilgan tizimi bor, uning yordamida biz siz o'ylagan hamma narsani ishga sola olamiz (hech bo'lmaganda hozirgacha). Bu yangi taxtada juda oz ma'lumot bo'lsa -da, Arduino sahifasini (keyinroq bog'laydigan) ko'rsatmalarni tark etish va ko'p Linux haqida ozgina ma'lumotga ega bo'lish, Control Access -ning asosiy loyihasini amalga oshirishi mumkin. Bu safar men ushbu loyihani qanday amalga oshirishni tushuntiraman, lekin bu bizning Arduino orqali. Bu ishlaydi, bizning YUN -da joylashadigan MySQL ma'lumotlar bazasi serveri tufayli, bu ma'lumotlar bazasida ikkita jadval saqlanadi, bittasi ma'lum bir RFID bilan bog'langan foydalanuvchilar uchun, ikkinchisi esa o'quvchi orqali o'tgan barcha kartalarning yozuvlarini saqlash uchun. Biz PHP va Python skriptlarini dasturlash tillaridan foydalangan holda, ba'zi ma'lumotlarni bajarishimiz va ma'lumotlarimiz bilan ishlashimiz mumkin. Bundan tashqari, qo'shimcha xarajatlar uchun biz 16 belgidan iborat ketma-ket LCD displeyi yonidagi ID-20 o'quvchisini va RGB LEDini ishlatamiz. Biz bu kirish nazoratini biz o'ylagan, o'zgartiradigan va o'z o'rni yoki boshqa g'oyani qo'shishimiz mumkin. Siz kartalaringiz bor va yozuvni xohlagan hamma narsada ishlatilishi mumkin. Eslatib o'tamiz, bu hujjat bepul nashr, tijorat maqsadlarida foydalanish va ozod qilingan o'zgartirishlarga yo'l qo'yilmaydi. Umid qilamanki, bu ochiq manbali elektronikaning kengroq yo'li. Shunday qilib, biz keyingi bosqichga o'tamiz, partiyalarga kerak!

1 -qadam: qismlar

Qismlar
Qismlar
Qismlar
Qismlar
Qismlar
Qismlar

Ushbu loyihani amalga oshirish uchun bizga kerak: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71.95 * RFID o'quvchi ID-20 (125 kHz) https://www.sparkfun.com/products/11828 $ 34.95 * RFID Reader Breakout https://www.sparkfun.com/products/8423 $ 0.95 * 5x asosiy 16x2 belgili LCD 5V https://www.sparkfun.com/products/790 $ 16.95 * Seriyali LCD ryukzak https:// www. sparkfun.com/products/258 $ 16.95 * LED RGB 5 mm. Umuman olganda, agar siz Sparkfun do'konida xarid qilsangiz, hamma narsa 150 dollarga yaqin bo'ladi. Agar siz Lotin Amerikasida yashasangiz, men ehtiyot qismlarni www.olimex.cl saytidan sotib olishni maslahat beraman, bu juda yaxshi Chili elektronika do'koni.

2 -qadam: yig'ilish

Yig'ilish
Yig'ilish
Yig'ilish
Yig'ilish
Yig'ilish
Yig'ilish

Qisqa qilib tushuntirish kerak. RGB LED uchun qizil LED pin Arduino -ning 9 -pinida bo'lishi kerak, yashil LED Arduino -pin 8 -ga, ko'k -LED -pin esa Arduino -ning 7 -pinida bo'lishi kerak. ID-20 uchun quyidagi pinlarni jadvalda ko'rsatilgan tartibda, o'quvchini Arduino piniga ulash lozim: 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 Va nihoyat, ketma-ket LCD ulagichi faqat Arduino-ning 5v va GND pinlari uchun kerak bo'ladi, LCD Serial RX-pin esa 11-pinga o'tadi. Arduino -dan.

3 -qadam: Arduino Yun dasturlash

Arduino Yun dasturlash
Arduino Yun dasturlash

Loyihani amalga oshirish uchun biz dasturiy ta'minot qismidan boshlashimiz, ba'zi fayllarni Arduino opkg Yun -ga o'rnatishimiz kerak:

  • MySQL server
  • PHP5
  • Python 2.7 uchun MySQLdb
  • MySQL uchun PHP5 mod

Eslatib o'tamiz, Bridge -da sukut bo'yicha Python 2.7 o'rnatilgan, shuning uchun siz hech qachon bu uchun yangilanishni o'rnatishingiz shart emas. SSH jurnalini yozishni boshlang, bizning Arduino Yun -ga kirishga jur'at eting, ularni ishga tushirgandan so'ng opkg ilovalar ro'yxatini yangilash uchun quyidagi buyruqni kiriting:

opkg yangilanishi

4 -qadam: MySQL -ni o'rnatish

MySQL -ni o'rnatish
MySQL -ni o'rnatish

Endi biz MySQL Serverni o'rnatish va konfiguratsiyasini o'rnatamiz, konsolda quyidagi buyruqlarni kiriting:

  1. opkg libpthread libncurses libreadline mysql-serverini o'rnating
  2. sed -i, ^datadir.*, datadir =/srv/mysql/, g '/etc/my.cnf
  3. sed -i, ^tmpdir.*, tmpdir = /tmp /, g '/etc/my.cnf
  4. mkdir -p /srv /mysql
  5. mysql_install_db-kuch
  6. /etc/init.d/mysqld boshlanishi
  7. /etc/init.d/mysqld yoqish
  8. mysqladmin -u ildiz paroli "tu-nueva-clave"

Bizning kodlarimizni kiritishni tugatgandan va MySQL -serverni ishga tushirgandan so'ng, manipulyatsiya qilinadigan ma'lumotlar bazasini sozlash kerak. Kodlarni yozishni boshlashdan oldin, biz jadvalimizni olib boradigan maydonlarni tushunishimiz kerak. Kengash 5 ta kursdan iborat bo'lishi kerak, "id", "name", "name", "email", "rfid", ulardan ba'zilarini sotish uchun men ulardan foydalanish haqida qisqacha tushuntirish beraman.

  • "id": bizga foydalanuvchi identifikatoriga berilgan raqamni ko'rsatadigan maydon yoki atribut int ustunini beradimi, bu raqam o'sha ma'lumotlar bazasi tomonidan belgilanadi va bu bizning yozuvlarimizni indekslash usuli bo'ladi.
  • 'nombre': atributlar ustuni 'varchar' bo'ladi, bizning kartamiz foydalanuvchisi aniqlangan ism bilan ko'rsatilishi mumkin.
  • 'apellido': atributlar ustuni 'varchar' bo'ladi, bu bizning foydalanuvchi bilan bog'langan familiyasi bilan ko'rsatilishi mumkin.
  • 'correo'- bu "varchar" atributlar ustuni, u o'z ichiga tegishli foydalanuvchining elektron pochtasini oladi.
  • 'rfid': atributlar ustuni 'varchar', u siz foydalanadigan RFID karta kodini o'z ichiga oladi.

(Men o'zgaruvchilarni ispan tilida ishlataman, chunki mening ona tilim va menga c yoqadi:) Endi biz ma'lumotlar bazamizni muammosiz sozlashimiz mumkin, shuning uchun biz "arduino" qo'ng'irog'ini yaratamiz MySQL. Siz quyidagi kodni kiritishingiz kerak:

mysqladmin -u root -p arduino yaratadi

Biz o'rnatishda ilgari kiritgan parolni so'raymiz, biz uni bazani yaratishni yakunlash uchun yuboramiz. Bularning barchasini tugatgandan so'ng, biz so'rovni MySQL -ga kiritamiz, siz konsolda quyidagi kodni yozishingiz kerak:

mysql -root -p

Biz yana parolni so'raymiz, uni yana yuborishingiz kerak. MySQL konsoli buyrug'iga kirgandan so'ng, ko'rsatgich ('mysql>') yozishga tayyor bo'lib ko'rinishi kerak. Biz qiladigan birinchi narsa - "arduino" ma'lumotlar bazasi ustida ishlash. Bu MySQL konsolida quyidagi buyruqni kiritish orqali amalga oshiriladi:

Arduino -dan foydalaning

Ma'lumotlar bazasidagi "usuariosrfid" nomi jadvali ushbu loyiha uchun ishlatilishiga ishonamiz, bu kodni MySQL konsoliga yozing:

  1. JADVO yarating `usuariosrfid` (
  2. `id` int (255) NULL AUTO_INCREMENT EMAS,
  3. `nombre` varchar (300) NULL emas,
  4. `apellido` varchar (300) NULL emas,
  5. `correo` varchar (300) NULL emas,
  6. `rfid` varchar (300) NULL emas,
  7. PRIMARY KEY ("id")
  8. ) MOTOR = MyISAM DEFAULT CHARSET = lotin1 AUTO_INCREMENT = 0;

* Esda tutingki, MySQL konsolidagi buyruq satrining oxiridagi ENTER tugmasini bosganingizda, ';' topilmaguncha u ishlamaydi. Shuning uchun kodning oxirida ';' MySQL -ni o'rnatish va konfiguratsiyasini yakunlash uchun biz bazamizdagi ba'zi test maydonlarini to'ldiramiz. Quyidagi qatorlarni kiriting:

  1. INSERT INTO `usuariosrfid` (` id`, `nombre`,` apellido`, `correo`,` rfid`) VALUES
  2. (1, "Pedro", "Suares", "[email protected]", "1234a-12345-b-123c"),
  3. (4, 'Matias', 'Lopez', '[email protected]', '987a-9876b-987c');

Endi o'quvchi tomonidan o'tadigan barcha RFID kodlarini o'z ichiga oladigan 'ControlUsuarios' jadvalini yaratishni davom eting, bu jadval 3 ta maydondan iborat, 'id', 'rfid', 'sana'.

  • "id" - indekslash uchun har bir yozuvning identifikatorini o'z ichiga oladigan int yoki maydon atributi.
  • 'rfid' atributi o'quvchi tomonidan RFID yorlig'i kodini o'z ichiga olgan 'varchar' ustunidir.
  • "sana" - atributlar ustuni, "varchar", unda karta o'qilgan sana ko'rsatiladi.

"ControlUsuarios" jadvalini yaratish uchun biz quyidagi kodni MySQL konsoliga kiritamiz:

  1. "ControlUsuarios" jadvalini yarating (
  2. `id` int (255) NULL AUTO_INCREMENT EMAS,
  3. `rfid` varchar (300) NULL emas,
  4. `fecha` varchar (300) NULL EMAS,
  5. PRIMARY KEY ("id")
  6. ) MOTOR = MyISAM DEFAULT CHARSET = lotin1 AUTO_INCREMENT = 0;

Oxirida "chiqish;" yozing. konsolda MySQL so'rovidan chiqish va SHH -ga qaytish uchun PHP5 bilan boshlashimiz mumkin.

5 -qadam: PHP5 -ni o'rnatish

PHP5 -ni o'rnatish
PHP5 -ni o'rnatish

PHP5 -ni o'rnatish va sozlash bilan davom eting. Bu o'rnatish MySQL -ga qaraganda osonroq, shuning uchun ularga hech qanday xarajat bo'lmasligi kerak. Birinchidan, Arduino Yun -dan yuklab olish va o'rnatish opkg paketini o'rnating, shuning uchun Arduino -ning SSH konsoliga quyidagilarni kiriting:

opkg php5 php5-cgi ni o'rnating

Yuklab olingandan va PHP5 Arduino Yun -ga o'rnatilgandan so'ng, biz uHTTPd ildiz faylini sozladik, bu http serveri Arduino -ni standart holatga keltiradi, men sizga faqat ushbu http -serverdan foydalanishni maslahat beraman, chunki u ko'p qirrali va konfiguratsiyadan foydalanish mumkin, Apache yoki Lighttpd qiyin emas. bu sohada yangi bo'lganingizda sozlash. Buni sozlash uchun 'vi' SSH fayl muharriridan foydalaning, buning uchun siz ushbu tahrirlovchidan foydalanish uchun minimal ma'lumotga ega bo'lishingiz kerak. UHTTPd sozlash fayliga kirish uchun ushbu kodni konsolda yozishni boshlang:

vi/etc/config/uhttpd

Faylni tahrirlash uchun 'i' tugmasini bosing, keyin siz yozgan kod qatoriga o'ting '# list interpretator. "php = / usr / bin / php-cgi" '. Siz satr boshida "#" belgisini o'chirib tashlashingiz kerak, keyin qochish ("ESC" tugmachasi) tugmachasini bosishingiz kerak, tayyor bo'lgach, faylni saqlash uchun ": wq" buyrug'ini yozish va undan chiqish kerak. Siz uHTTPd serverini qayta ishga tushirishingiz kerak, buning uchun SSH buyruq konsoliga quyidagi kodni yozishingiz kerak:

/etc/init.d/uhttpd qayta ishga tushirish

6 -qadam: PHP5 va Python uchun Conector MySQL -ni o'rnatish

PHP5 va Python uchun Conector MySQL -ni o'rnatish
PHP5 va Python uchun Conector MySQL -ni o'rnatish

MySQL ma'lumotlar bazasini PHP va Python bilan ulash uchun modullarni o'rnatish va konfiguratsiyasini davom eting. PHP ulagichidan boshlaylik. Quyidagi kodni kiriting:

  1. opkg php5-mod-mysql-ni o'rnating
  2. sed -i ning; kengaytmasi = mysql.so, kengaytmasi = mysql.so, g '/etc/php.ini

Tayyor bo'lgach, uHTTPd serverini qayta ishga tushirishga hojat qolmaydi, u darhol foydalanishga tayyor bo'ladi. Endi Python ulagichi bilan davom eting, buning uchun siz quyidagi kodni kiritishingiz kerak:

opkg python-mysql-ni o'rnating

Oxirgi qadamda biz Arduino Yunni ID-20 RFID 125khz kartani o'quvchi bilan loyihamizga tayyor qilamiz. Bu qismni biz qilgan ishlar haqida fikr -mulohaza bilan yakunlang:

  • Biz MySQL -serverni Arduino Yun -ga o'rnatdik, so'ng uni test ma'lumotlarini kiritish bilan yakunlaymiz.
  • PHP -ni serverimizga o'rnating.
  • Biz PHP va Python uchun MySQL ulagichini o'rnatish va sozlash bilan yakunladik.

7 -qadam: Kodlar

Bu sohada biz ushbu loyiha uchun ishlatiladigan dasturlash kodlarini muhokama qilamiz. Biz Python kodi bilan ketamiz, u ikkita faylga bo'linadi: "comprobar.py", u ma'lumotlar bazasiga ulanadi va natija Yun Arduino -ni qidiradi va faylni boshqaradi. py ', o'quvchi ID-20 o'qigan har qanday kartani ro'yxatdan o'tgan foydalanuvchilar ma'lumotlar bazasida bo'lishidan qat'i nazar, yozib olish uchun javobgardir. Keyin PHP fayllarining tavsifi bilan davom eting: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Bu fayllar uchun redundaremos, chunki ularni tushunish oson. Nihoyat, Arduino eskizimiz sifatida ko'tariladigan kod bilan yakunlang.

8 -qadam: Python fayllari

Python fayllari
Python fayllari

Yuqorida aytib o'tganimizdek, bizning Python skriptlari kutubxona yoki ilgari o'rnatilgan "MySQLdb" klassi bilan ishlagan. Tahrirlovchimizda 'comprobar.py' deb nomlangan. Keling, kutubxonani MySQL ma'lumotlar bazasiga ulanish uchun import qilishdan boshlaylik, bu bizga Arduino Yun bilan muloqot qilish imkonini beradigan "sys" kutubxonasi:

  1. MySQLdb -ni import qilish
  2. sys import qilish

Ushbu kutubxonalar yoki sinflarni import qilgandan so'ng, biz sizning kodingizga o'zgaruvchilar qo'shamiz, bu bizning MySQL ma'lumotlar bazamizdagi ulanish ma'lumotlari bo'ladi:

  1. host = "127.0.0.1" # bizning MySQL serverimiz manziliga mos keladi.
  2. user = "your-seat" #-bizning ma'lumotlar bazamiz foydalanuvchisi.
  3. passw = "sizning parolingiz" foydalanuvchining paroli uchun. base = "arduino" # Bu siz foydalanadigan ma'lumotlar bazasining nomi.

Endi asosiy skript kodlaridan boshlang:

  1. rost bo'lsa:
  2. db = MySQLdb.connect (host, user, passw, base)
  3. cur = db.kursor ()
  4. resultado = cur.execute ("" "SELECT * FROM usuariosrfid WHERE rfid LIKE %s ORDER BY by" "", (sys.argv [1],))
  5. agar (natija == 1):
  6. chop etish 1
  7. sys.exit (1)
  8. boshqa:
  9. chop etish 2
  10. sys.exit (1)

Agar biz tushunsak, "cur.execute result = (" "" SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id "" "(sys.argv [1])) 'buyrug'i bilan biz so'rovimizni bajarish uchun o'zgaruvchini solishtiring. '(sys.argv [1])' - bu Arduino RFID kartasidagi barcha maydon ma'lumotlari bilan 'rfid' jadvali 'usuariosrfid' kodi bo'lib, u arduino -dan tenglik kodini va ma'lumotlar bazasida saqlangan kodlarni topadi. qaytarish 1, agar bu to'g'ri bo'lmasa va arduino kodi va bazaning bir qismi o'rtasida tenglik bo'lmasa, biz 2. qaytamiz. Bu raqamlar Arduino tomonidan qabul qilinadi. Biz keyingi "control.py" faylini davom ettiramiz. Bu fayl yuqoridagi kabi ishlaydi, faqat ta'mni stolga yozib qo'yish, saqlangan yozuvlar bizning Arduino Yun-ga ulangan ID-20 o'quvchi tomonidan yig'iladi, shuning uchun biz RFID o'quvchi ishlatadigan barcha ro'yxatdan o'tgan foydalanuvchilarni saqlab qolishimiz mumkin.

9 -qadam: PHP fayllari

Keyin fayllar bilan davom eting. "PHP" papkani serverimizdan saqlaydi, buning uchun esda tutingki, bu fayllar tayyor bo'lgandan so'ng, avtomatik ravishda IDE Arduino -ni ishlab chiqaradigan loyihamizda saqlanishi kerak, lekin siz ham eslab qolishingiz kerak. biz Yunning Arduino eskiziga chiqqanimizda, biz Wi -Fi orqali yuklaymiz, shuning uchun men uni Arduino, www.arduino qo'llanmasida qoldiraman. cc / en / Guide / Arduino Yun # toc14, bu haqida va fayllar serverda saqlanishi kerak bo'lgan bunday loyiha uchun MicroSD kartasini qanday tayyorlash kerakligini tushuntiradi. PHP fayllari 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar bo'ladi. php '' consulta.php '', 'configuracion.php', ular boshqasiga giperhavola qilinadi, asosiy menyuni har doim ishlaydigan va kirish mumkin. Ma'lumotlar bazamiz bilan bog'lovchi vazifasini bajaradigan 'configuracion.php' faylini tushuntiring. Tahririyatimizda biz quyidagi kodni faylda rejalashtiramiz:

  1. <? php
  2. / / Ma'lumotlar serveri va ma'lumotlar bazasi
  3. $ server = "localhost";
  4. $ username = "sizning o'rningiz";
  5. $ parol = "parol";
  6. $ database_name = "arduino";

Bu bizning ma'lumotlar bazamizga arduino -ga ulanishi kerak bo'lgan ma'lumotlar, biz Python skriptlarida ishlatadigan narsadir. Bizning skriptimiz ishlatilgan connect bayonotini dasturlashni yakunlang:

  1. $ conexion = mysql_connect ($ server, $ foydalanuvchi nomi, $ parol) yoki o'lib ketish ("Muammolar al tratar de Institutecer la conexion");
  2. $ bd_sel = mysql_select_db ($ database_name) yoki o'lib ketish ("Muammolar seleccionar la base de datos");
  3. ?>

Boshqa fayllar biriktirilgan.

10 -qadam: Nihoyat, Arduino YN dasturi

Biz ushbu qo'llanmaning asosiy qismiga o'tdik, biz Arduino Yun -ni dasturlashtiramiz, hech qanday tafsilot kodning barcha jihatlarini ajratib ko'rsatmaydi, chunki u juda keng, faqat quyidagi muhim fikrlarni eslatib o'tamiz:

  • Kod 6 ta asosiy funktsiyadan va 13 ta ikkilamchi funktsiyadan iborat bo'lib, ular faqat Serial LCD -ni ishlatishni qo'llab -quvvatlaydi.
  • Bizga faqat uchta sinf, "SoftwareSerial.h", import qilinadigan ID-20 va Serial LCD, "Bridge.h" asosiy klassi bilan ulanish uchun Linux va ATMEGA32U4 o'rtasidagi aloqa o'rnatiladi. va 'Process.h' klassi Linuxda maslahat jarayonlariga xizmat qiladi.
  • Faqat uchta pinni aniqlang, boshqalari bepul bo'lishi mumkin.

Kod biriktirilgan

11 -qadam: Yangi yilingiz bilan

Men buni sizga ehtiyotkorlik bilan davom ettirib, sizga Arduino Yun haqida ko'proq ma'lumot olishingizga yordam beraman. Barcha fayllarni oxirigacha qoldiring. Ispan tilida so'zlashuvchilar uchun men bu darslikni qoldiraman, lekin kerakli fayllar bilan ispan tilida. Umid qilamanki, sizda yangi 2014 yil muborak bo'lsin, bundan bahramand bo'ling va 2014 yilda muvaffaqiyat qozoning!

Tavsiya: