Мазмуну:

MySQL, PHP5 жана Python менен Arduino YÚN жеткиликтүүлүгүн көзөмөлдөө: 11 кадам (сүрөттөр менен)
MySQL, PHP5 жана Python менен Arduino YÚN жеткиликтүүлүгүн көзөмөлдөө: 11 кадам (сүрөттөр менен)

Video: MySQL, PHP5 жана Python менен Arduino YÚN жеткиликтүүлүгүн көзөмөлдөө: 11 кадам (сүрөттөр менен)

Video: MySQL, PHP5 жана Python менен Arduino YÚN жеткиликтүүлүгүн көзөмөлдөө: 11 кадам (сүрөттөр менен)
Video: 1 - PHP - Сабак. Sumblime Text жана Wampserver орнотуу 2024, Ноябрь
Anonim
MySQL, PHP5 жана Python менен Arduino YÚN жеткиликтүүлүгүн көзөмөлдөө
MySQL, PHP5 жана Python менен Arduino YÚN жеткиликтүүлүгүн көзөмөлдөө

Салам достор!

Белгилүү болгондой, сентябрда Arduinoдун жаңы премьерасы Arduino YUN. Бул кичинекей досубузда Linux камтылган системасы бар, анын жардамы менен биз сиз ойлогондун баарын иштете алабыз (жок дегенде азырынча). Бул жаңы тактада маалымат аз болсо да, Arduino баракчасын (кийинчерээк байланыштыра турган) көрсөтмөдөн кетүү менен бирге, көптөгөн Linuxту бир аз билүү, Control Access мүмкүн болгон чоң долбоорду ишке ашыра алат. Бул жолу мен бул долбоорду кантип жасоону түшүндүрөм, бирок биздин Arduino аркылуу жетишерлик түрдө. Бул иштейт, биздин YUNда жайгашкан MySQL маалымат базасы серверине рахмат, бул маалымат базасы эки таблицаны сактайт, бирөө белгилүү бир RFID менен байланышкан колдонуучулар үчүн жана башка окурманыбыз аркылуу өткөн бардык карттардын эсебин жүргүзүү үчүн. PHP жана Python сценарийлерин программалоо тилдерин колдонуп, кээ бир негизги иштерди аткаруу жана биздин маалыматтар менен иштөө. Мындан тышкары, аппараттык чыгымдарда биз 16 белгиден турган сериялык ЖКнын жанында окурман ID-20, плюс RGB LEDди колдонобуз, бул биздин маалымат берүүчү мамлекеттерибиз болот. Биз бул кирүү контролун колдонуп, биз ойлогон, өзгөртө алган жана релени же башка идеяны кошо алабыз. Аны карталарыңыз бар жана рекорд каалаган жерде колдонсо болот. Эске салсак, бул документ бекер жарыяланган, коммерциялык колдонуу жана бошотулган өзгөртүүлөргө жол берилбейт. Бул ачык булак электроникасынын кеңири жолу деп үмүттөнөм. Ошентип, биз кийинки кадамга барабыз, партияларга керек!

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 * Basic 16x2 Character LCD 5V 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 * Buzzer https://www.sparkfun.com/products/7950 $ 1.95 * Somes Header PIN жана зым болжол менен $ 5.00. Жалпысынан Sparkfun дүкөнүнөн сатып алсаңыз, бардыгы 150 долларга жакын болот. Эгерде сиз Латын Америкасында жашасаңыз, анда мен тетиктерди www.olimex.cl сайтынан сатып алууну сунуштайт элем, бул абдан жакшы Чилилик электроника дүкөнү.

2 -кадам: Ассамблея

Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея

Кыскача түшүндүрүп жатып, жасай турган бир нече байланыш. RGB LED үчүн кызыл LED пин Ардуинонун 9 пининде болушу керек, жашыл LED Arduino пин 8де жана көк LED Arduino 7 пининде болушу керек. ID-20 үчүн сиз таблицада көрсөтүлгөндөй төмөндөгү пиндерди тийиштүү тартипте туташтырышыңыз керек, окурманы Arduino пинге туташтырыңыз: Pin ID-20 Arduino ID-20 / Arduino PIN 1-GND PIN 2-5V PIN 7 - GND PIN 9- PIN 10 ПИН 10- БУЗЗЕР ПИН 11- 5В Жана акырында, Сериялык ЖК туташтыргычы Arduino 5V жана GND казыктарына гана керек болот, ал эми LCD Serial RX пини пин 11ге өтөт. Arduino жөнүндө.

3 -кадам: Arduino Yun программасы

Arduino Yun программасы
Arduino Yun программасы

Биздин долбоорду ишке ашыруу үчүн, биз программалык камсыздоонун бир бөлүгүнөн башташыбыз керек, кээ бир файлдарды Arduino opkg Yun'га орнотуңуз:

  • MySQL Server
  • PHP5
  • Python 2.7 үчүн MySQLdb
  • PHP5тин MySQLге болгон режими

Эске салсак, Бриджде демейки боюнча Python 2.7 орнотулган, ошондуктан бул үчүн эч кандай жаңыртууну орнотуунун кажети жок. SSH журналын баштаңыз, биздин Arduino Yun'га кирүүгө батыныңыз, аларды киргизгенден кийин opkg тиркемелеринин тизмесин жаңыртуу үчүн төмөнкү буйрукту териңиз:

opkg жаңыртуу

4 -кадам: MySQL орнотуу

MySQL орнотуу
MySQL орнотуу

Эми биз MySQL Serverдин орнотулушун жана конфигурациясын түзөбүз, консолго төмөнкү буйруктарды териңиз:

  1. opkg libpthread libncurses libreadline mysql-серверин орнотуңуз
  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 –- күч
  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': сиз колдонгон RFID картанын кодун камтыган 'varchar' атрибуту мамычасы.

(Мен испан тилинде өзгөрмөлөрдү колдоном, анткени менин эне тилим жана мага c жагат:) Эми биз маалымат базабызды эч кандай көйгөйсүз конфигурациялай алабыз, андыктан биз "arduino" чалуусун MySQL түзөбүз. Сиз төмөнкү кодду теришиңиз керек:

mysqladmin -u root -p arduino түзөт

Биз орнотууда мурда киргизилген сырсөздү сурайбыз, биз базаны түзүүнү аягына чыгаруу үчүн тапшырабыз. Мунун баарын бүтүрүп, биз MySQLге суроо киргизебиз, консолго төмөнкү кодду теришиңиз керек:

mysql -root -p

Кайра биз сырсөздү сурайбыз, аны кайра тапшырышыңыз керек. MySQL консолундагы буйрукка киргенде, биз көрсөткүчтү ('mysql>') терүүгө даяр болуп көрүнүшүбүз керек. Биз жасай турган биринчи нерсе - 'arduino' маалыматтарынын үстүндө иштөө. Бул MySQL консолуна төмөнкү буйрукту терүү аркылуу жасалат:

Колдонуу arduino

Биз маалымат базасындагы 'usuariosrfid' аталыш таблицасы бул долбоор үчүн колдонула турганына ишенебиз, бул кодду MySQL консолуна териңиз:

  1. TABLE `usuariosrfid` түзүү
  2. `id` int (255) NULL AUTO_INCREMENT эмес,
  3. `nombre` varchar (300) NULL эмес,
  4. `apellido` varchar (300) NULL эмес,
  5. `correo` varchar (300) NULL эмес,
  6. `rfid` varchar (300) NULL эмес,
  7. БАШКЫ АЧкыч (`id ')
  8. ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Эсиңизде болсун, MySQL консолундагы буйрук сабынын аягындагы ENTER баскычын басканда, ал ';' тапмайынча иштебей турганын унутпаңыз. Ошондуктан, коддун аягында ';' MySQLтин орнотулушун жана конфигурациясын бүтүрүү үчүн, биз базабыздын ичиндеги кээ бир сыноо талааларын толтурабыз. Төмөнкү саптарды териңиз:

  1. INSERT INTO `usuariosrfid` (` id`, `nombre`,` apellido`, `correo`,` rfid`) БААЛЫКТАРЫ
  2. (1, 'Педро', 'Суарес', '[email protected]', '1234a-12345-b-123c'),
  3. (4, 'Matias', 'Lopez', '[email protected]', '987a-9876b-987c');

Эми окурмандын жанынан өткөн бардык RFID коддорун камтыган 'ControlUsuarios' таблицасын түзүүнү улантыңыз, бул таблица 'id', 'rfid', 'дата' деген 3 талаадан турат.

  • 'id' - индекстөө үчүн ар бир жазуунун идентификаторун камтыган int талаасы же атрибуту.
  • 'rfid' атрибуту RFID тэг кодун камтыган 'varchar' тилкеси окурман тарабынан окулган.
  • 'дата' - бул картанын окулган күнүн камтыган 'varchar' атрибуту мамычасы.

"ControlUsuarios" столун түзүү үчүн, биз төмөнкү кодду MySQL консолуна киргизебиз:

  1. TABLE CREATE `ControlUsuarios` (
  2. `id` int (255) NULL AUTO_INCREMENT эмес,
  3. `rfid` varchar (300) NULL эмес,
  4. `fecha` varchar (300) NOT NULL,
  5. БАШКЫ АЧкыч (`id ')
  6. ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

Акыры 'exit;' териңиз MySQL Queryден чыгуу үчүн консолдо жана SHHге кайтуу үчүн PHP5 менен баштайбыз.

5 -кадам: PHP5ти орнотуу

PHP5 орнотуу
PHP5 орнотуу

PHP5тин орнотулушун жана конфигурациясын улантыңыз. Бул орнотуу MySQLке караганда жеңилирээк, андыктан аларга эч кандай чыгым болбошу керек. Биринчиден, Arduino Yun жүктөөдөн жана орнотуудан opkg пакетин орнотуңуз, андыктан Arduino SSH консолуна териңиз:

opkg php5 php5-cgi орнотуңуз

Жүктөлүп, PHP5 биздин Arduino Yunго орнотулгандыктан, uHTTPd түп файлын конфигурацияладык, http сервери Arduino, демек, бул http серверин гана колдонууну сунуштайм, анткени ал ар тараптуу жана конфигурацияда жеткиликтүү, Apache же Lighttpd кыйын эмес. сиз бул тармакта жаңы болгон учурда орнотуу үчүн. Муну конфигурациялоо үчүн 'vi' SSH файл редакторун колдонуңуз, бул үчүн сиз бул редакторду колдонуу үчүн минималдуу билимге ээ болушуңуз керек. UHTTPd жөндөөлөр файлына кирүү үчүн консолго бул кодду жаза баштаңыз:

vi/etc/config/uhttpd

Файлды түзөтүү үчүн 'i' баскычын басыңыз, андан кийин сиз жазган коддун сабына өтүңүз '# тизме котормочу. "php = / usr / bin / php-cgi" '. Сиз саптын башында "#" белгисин жок кылышыңыз керек, андан кийин качып кетүү ("ESC" баскычы) баскычын басыңыз, даяр болгондон кийин, файлды сактоо үчүн ": wq" буйругун теришиңиз керек. Сиз uHTTPd серверин өчүрүп күйгүзүшүңүз керек, бул үчүн SSHдин командалык консолуна төмөнкү кодду теришиңиз керек:

/etc/init.d/uhttpd өчүрүп күйгүзүү

6 -кадам: PHP5 жана Python үчүн Conector MySQL орнотуу

PHP5 жана Python үчүн Conector MySQL орнотуу
PHP5 жана Python үчүн Conector MySQL орнотуу

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 125khz карт окурманы менен долбоорубузга даяр кылабыз. Бул бөлүктү биз кылган иштерибиз боюнча Пикир билдирүү менен бүтүрүңүз:

  • Биз MySQL серверин Arduino Yunго орноттук, андан кийин аны конфигурациялап, тест маалыматтарын киргизүү менен аяктадык.
  • PHP комплементин биздин серверге орнотуңуз.
  • PHP жана Python үчүн MySQL Connector орнотуу жана конфигурациялоо менен аяктадык.

7 -кадам: Коддор

Бул аймакта биз бул долбоор үчүн колдонула турган программалоо коддорун талкуулайбыз. Биз Python коду менен кетебиз, ал эки файлга бөлүнөт: 'comprobar.py', ал маалымат базасына туташып, натыйжа Юн Ардуинону издейт жана файлдын көзөмөлү. py ', катталган колдонуучулардын маалымат базасында окурман ID-20 тарабынан окулган бардык карттарды жазуу үчүн жооптуу. Андан кийин PHP файлдарынын сүрөттөмөсүн улантыңыз, алар: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Бул файлдар үчүн redundaremos экөөнү тең түшүнүү оңой болгондуктан. Акырында биздин Arduino эскизи боло турган код менен бүтүрүңүз.

8 -кадам: Файлдар Python

Python файлдары
Python файлдары

Жогоруда айтылгандай, биздин Python сценарийлери мурда орнотулган китепкана же 'MySQLdb' классы менен иштечү. Редакторубузда 'comprobar.py' деп аталган. Китепкананы импорттоодон баштайлы, биздин MySQL маалымат базасына кошулуу үчүн, китепкананын 'sys', бул биздин Arduino Yun менен байланышууга мүмкүндүк берет:

  1. MySQLdb импорттоо
  2. sys импорттоо

Бул китепканаларды же класстарды импорттогондон кийин, биз кодго өзгөрмөлөрдү кошобуз, бул биздин 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 WHERE rfid LIKE %s ORDER BY by id" "," (sys.argv [1],))
  5. эгер (натыйжа == 1):
  6. басып чыгаруу 1
  7. sys.exit (1)
  8. башка:
  9. басып чыгаруу 2
  10. sys.exit (1)

Эгер биз түшүнсөк, сотто 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' буйругун аткарып, биздин сурообузду аткарыңыз. '(sys.argv [1])' - бул Arduino RFID картасынан келген код, бардык талаа маалыматтары менен 'rfid' стол 'usuariosrfid', бул ардуинодон теңчилик кодун жана маалымат базасында сакталган коддорду табат. кайтаруу 1, эгер бул туура эмес болсо жана arduino коду менен базанын айрымдары ортосунда теңчилик жок болсо, биз 2. кайтарып беребиз. Бул сандар Arduino тарабынан кабыл алынат. Биз кийинки 'control.py файлын уланта беребиз. Бул файл жогорудагыдай эле иштейт, столдун үстүндө гана таттуу сактоо, бул жазуулар биздин Arduino Yun менен байланышкан окурман ID-20 тарабынан чогултулат, андыктан биз RFID окурманыбызды колдонгон бардык катталган колдонуучуларды сактай алабыз.

9 -кадам: PHP файлдары

Андан кийин файлдарды улантыңыз. Бул папканы биздин серверден сактап турган 'Php', муну эстен чыгарбоо керек, бул файлдар даяр болгондо, биздин долбоордо сакталат, ал автоматтык түрдө IDE Arduino түзөт, сиз дагы эстешиңиз керек, бирок мен күтүп жатам муну биз Yun 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. <? php
  2. / / Маалыматтар сервери жана маалымат базасы
  3. $ server = "localhost";
  4. $ username = "сенин ордуң";
  5. $ password = "пароль";
  6. $ database_name = "arduino";

Бул биздин arduino маалымат базабызга туташуу үчүн керек болгон маалыматтар, биз Python сценарийлерибизде колдонгон нерсеге окшош болот. Биздин скриптти колдонгон connect билдирүүсүн программалоону бүтүрүңүз:

  1. $ conexion = mysql_connect ($ сервер, $ колдонуучунун аты, $ сырсөз) же өлүү ("Problemler al tratar de destlecer la conexion");
  2. $ bd_sel = mysql_select_db ($ database_name) же өлүп калуу ("Проблемалар селекционаровые база дата");
  3. ?>

Башка файлдар тиркелет.

10 -кадам: Акырында, Arduino YN программасы

Биз бул үйрөткүчтүн негизги бөлүгүнө кирдик, биздин Arduino Yun программасын, эч кандай деталдар коддун бардыгын баса белгилебейт, анткени ал абдан кеңири, болгону төмөнкү маанилүү ойлорду айт:

  • Код 6 негизги функциясынан жана 13 экинчилик функциясынан турат, алар Serial LCDди колдонуу үчүн гана колдоо болуп саналат.
  • Болгону үч класстын импорту болот, 'SoftwareSerial.h', биз ID-20 жана Serial LCD менен туташуу үчүн Serial тиркемесин киргизебиз, негизги класс 'Bridge.h' менен Linux менен ATMEGA32U4 ортосундагы байланышты түзөбүз, жана 'Process.h' классы Linuxта консультация процесстери үчүн кызмат кылат.
  • Башкалары бекер колдонулган үч гана казыкты аныктаңыз.

Код тиркелет

11 -кадам: Жаңы жылыңыз менен

Мен муну кылдаттык менен улантып, сизге кызмат кылып, Arduino Yun жөнүндө көбүрөөк маалымат алууга жардам берем. Бардык файлдарды аягына чейин тиркеп коюңуз. Испан тилинде сүйлөгөндөр үчүн мен бул окуу куралын калтырам, бирок керектүү файлдар менен испан тилинде. Мен сизди жаңы 2014 -жыл менен куттуктайм, андан ырахат алыңыз жана бул 2014 -жылы ийгиликтүү болуңуз!

Сунушталууда: