Mündəricat:
- Addım 1: Parçalar
- Addım 2: Quraşdırma
- Addım 3: Arduino Yun proqramlaşdırılması
- Addım 4: MySQL -in quraşdırılması
- Addım 5: PHP5 -in quraşdırılması
- Addım 6: PHP5 və Python üçün Conector MySQL -in quraşdırılması
- Addım 7: Kodlar
- Addım 8: Python faylları
- Addım 9: PHP faylları
- Addım 10: Nəhayət, Arduino YN Proqramı
- Addım 11: Yeni iliniz mübarək
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Salam dostlar!
Bildiyiniz kimi, sentyabr ayında Arduinonun yeni premyerası Arduino YUN. Bu kiçik dostun düşünə biləcəyiniz hər şeyi işlədə biləcəyimiz bir Linux quraşdırılmış sistemi var (ən azından indiyə qədər). Bu yeni lövhədə çox az məlumat olsa da, Arduino səhifəsini (daha sonra əlaqələndirəcək) təmin edən bələdçidən ayrılmaqla yanaşı bir çox Linux haqqında bir az məlumat əldə edərək, Control Access -in böyük bir layihəsini həyata keçirə bilər. Bu dəfə bu layihənin necə ediləcəyini izah edəcəyəm, ancaq Arduino vasitəsi ilə kifayət qədər xüsusi bir şəkildə. Bu, YUN -da yerləşəcək bir verilənlər bazası serveri olan MySQL sayəsində işləyir, bu verilənlər bazası, oxucumuzdan keçən bütün kartların qeydlərini aparmaq üçün biri müəyyən bir RFID ilə əlaqəli istifadəçilər üçün və digər bir cədvəl saxlayacaq. Proqramlaşdırma dillərindən PHP və Python skriptlərindən istifadə edərkən bəzi əsas işləri yerinə yetirmək və məlumatlarımızla işləmək olar. Üstəlik, aparat yükü, 16 simvollu bir Serial LCD-nin yanında bir oxucu ID-20 istifadə edirik, üstəlik məlumat verən dövlətlərimiz olacaq bir RGB LED. Bu giriş nəzarətindən düşünə biləcəyimiz, dəyişdirə biləcəyimiz və bir röle və ya başqa bir fikir əlavə edə biləcəyimiz hər şeyi istifadə edə bilərik. Kartlarınız olduğu və rekord istədiyiniz hər yerdə istifadə edilə bilər. Xatırladaq ki, bu sənəd pulsuz nəşrdir, kommersiya məqsədləri üçün istifadə və azad edilmiş dəyişikliklərə icazə verilmir. Ümid edirəm ki, bu açıq mənbə elektronikasının daha geniş bir yoludur. Növbəti mərhələyə keçirik, tərəflərə lazımdır!
Addım 1: Parçalar
Bu layihəni həyata keçirmək üçün aşağıdakılara sahib olmalıyıq: * Arduino YUN https://www.sparkfun.com/products/12053 71.95 $ * RFID Reader ID-20 (125 kHz) https://www.sparkfun.com/products/11828 $ 34.95 * RFID Reader Breakout https://www.sparkfun.com/products/8423 $ 0.95 * Əsas 16x2 Karakterli LCD 5V https://www.sparkfun.com/products/790 $ 16.95 * Serial Aktiv LCD Sırt Çantası 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 * Somes Header Pin və tel təxminən $ 5.00. Ümumiyyətlə, Sparkfun mağazasından alsanız, hər şey 150 dollara yaxın olacaq. Latın Amerikasında yaşayırsınızsa, hissələri www.olimex.cl saytından almağı məsləhət görürəm, çox yaxşı bir Şili elektronika mağazasıdır.
Addım 2: Quraşdırma
Bir neçə əlaqəni qısaca izah edərək izah edin. RGB LED üçün qırmızı LED pimi Arduinonun 9 -cu pinində, yaşıl LED -in Arduino pin -8 -də, mavi LED -in isə Arduinonun 7 -ci pinində olmalıdır. ID-20 üçün aşağıdakı pinləri cədvəldə göstərildiyi kimi müvafiq qaydada bağlamalısınız, oxucunu Arduino pininə bağlamalısınız: 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 Və nəhayət, Serial LCD konnektoru üçün yalnız Arduinonun 5v və GND pinləri lazım olacaq, LCD Serial RX pin isə pin 11-ə gedir. Arduino -dan.
Addım 3: Arduino Yun proqramlaşdırılması
Layihəmizi həyata keçirmək üçün proqramın bir hissəsindən başlamalıyıq, bəzi faylları Arduino opkg Yun -a yükləməmiz lazımdır:
- MySQL Server
- PHP5
- Python 2.7 üçün MySQLdb
- MySQL üçün PHP5 modu
Xatırladaq ki, Bridge -də default olaraq Python 2.7 quraşdırılmış olaraq gəlir, buna görə heç vaxt bunun üçün heç bir yeniləmə yükləməyinizə ehtiyac yoxdur. SSH daxil olmağa başlayın, Arduino Yun -a daxil olmağa cəsarət edin, işə saldıqdan sonra opkg tətbiq siyahısını yeniləmək üçün aşağıdakı əmri yazın:
opkg yeniləməsi
Addım 4: MySQL -in quraşdırılması
İndi MySQL Serverin qurulmasını və konfiqurasiyasını quracağıq, konsolda aşağıdakı əmrləri yazın:
- opkg libpthread libncurses libreadline mysql-server qurun
- sed -i 's, ^datadir.*, datadir =/srv/mysql/, g' /etc/my.cnf
- sed -i 's, ^tmpdir.*, tmpdir = /tmp /, g' /etc/my.cnf
- mkdir -p /srv /mysql
- mysql_install_db –güc
- /etc/init.d/mysqld başlanğıcı
- /etc/init.d/mysqld aktiv edin
- mysqladmin -u kök şifrəsi 'tu-nueva-clave'
Kodlarımızı daxil etməyi bitirdikdən və MySQL serverini işə saldıqdan sonra manipulyasiya edəcək verilənlər bazasını konfiqurasiya etməlisiniz. Ancaq kodları yazmağa başlamazdan əvvəl masamızı daşıyan sahələri anlamalıyıq. İdarə heyəti 5 kursdan ibarət olacaq, 'id', 'name', 'name', 'email', 'rfid' bəzilərini bazara çıxarmaq üçün onlardan istifadə haqqında qısa bir açıqlama verəcəyəm.
- 'id': İstifadəçi ID -yə təyin edilmiş nömrəni bizə bildirəcək sahə və ya atribut int sütunu olacaqmı, bu nömrə eyni verilənlər bazası tərəfindən təyin ediləcək və qeydlərimizi indeksləşdirməyin yolu olacaq.
- 'nombre': atribut sütunu 'varchar' olacaq, kart istifadəçimizin tanındığı adla göstərilə bilər.
- 'apellido': atribut sütunu 'varchar' olacaq, istifadəçimizin əlaqəli olduğu soyadla göstərilə bilər.
- 'correo': əlaqəli istifadəçinin e-poçtunu ehtiva edən 'varchar' atribut sütunudur.
- 'rfid': istifadə etdiyiniz RFID kartının kodunu ehtiva edən 'varchar' atribut sütunudur.
(Dəyişənləri ispan dilində istifadə edəcəyəm, çünki mənim ana dilimdir və c -ni sevirəm:) İndi verilənlər bazamızı problemsiz konfiqurasiya edə bilərik, buna görə də MySQL -də 'arduino' çağırışı yaradırıq. Aşağıdakı kodu yazmalısınız:
mysqladmin -u root -p arduino yaradın
Quraşdırmada əvvəllər daxil etdiyimiz şifrəni soruşuruq, bazanın yaradılmasını başa çatdırmaq üçün təqdim edəcəyik. Bütün bunları bitirdikdən sonra sorğunu MySQL -ə daxil edirik, konsolda aşağıdakı kodu yazmalısınız:
mysql -kök -p
Yenə şifrəni soruşuruq, yenidən daxil etməlisiniz. MySQL konsol əmrinə daxil olduqdan sonra göstərici ('mysql>') yazmağa hazır görünməlidir. Etəcəyimiz ilk şey, 'arduino' məlumatları üzərində işləmək üçün bazanı hərəkət etdirməkdir. Bu, MySQL konsolunda aşağıdakı əmri yazaraq edilir:
Arduino istifadə edin
Verilənlər bazasındakı 'usuariosrfid' ad cədvəlinin bu layihə üçün istifadə edəcəyinə inanırıq, bu kodu MySQL konsoluna yazın:
- Cədvəl yaradın `usuariosrfid` (
- `id` int (255) NULL AUTO_INCREMENT DEĞİL,
- `nombre` varchar (300) NULL DEYİL,
- `apellido` varchar (300) NULL DEYİL,
- `correo` varchar (300) NULL DEYİL,
- `rfid` varchar (300) NULL DEYİL,
- İLK AÇAR ("id")
- ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;
* Unutmayın ki, MySQL konsolunda əmr satırının sonundakı ENTER düyməsini basarkən ';' tapana qədər işləməyəcək. Buna görə kodun sonunda ';' MySQL -in quraşdırılmasını və konfiqurasiyasını başa çatdırmaq üçün bazamızdakı bəzi test sahələrini doldururuq. Aşağıdakı sətirləri daxil edin:
- INSERT INTO `usuariosrfid` (` id`, `nombre`,` apellido`, `correo`,` rfid`) VALUES
- (1, 'Pedro', 'Suarez', '[email protected]', '1234a-12345-b-123c'),
- (4, 'Matias', 'Lopez', '[email protected]', '987a-9876b-987c');
İndi oxucudan keçən bütün RFID kodlarını yerləşdirəcək 'ControlUsuarios' cədvəlinin yaradılmasına davam edin, bu cədvəl 'id', 'rfid', 'date' 3 sahədən ibarətdir.
- 'id', indeksləmə üçün hər bir qeydin idini ehtiva edən sahə və ya atribut int sütunudur.
- 'rfid' atributu, oxucu tərəfindən oxunan RFID etiket kodunu ehtiva edən 'varchar' sütunudur.
- 'tarix', kartın oxunduğu tarixi ehtiva edən 'varchar' atribut sütunudur.
'ControlUsuarios' cədvəlini yaratmaq üçün MySQL konsoluna aşağıdakı kodu daxil edirik:
- CƏDVƏL YARAT `ControlUsuarios` (
- `id` int (255) NULL AUTO_INCREMENT DEĞİL,
- `rfid` varchar (300) NULL DEYİL,
- `fecha` varchar (300) NULL DEYİL,
- İLK AÇAR ("id")
- ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;
Sonda 'exit;' yazın MySQL sorğusundan çıxmaq və SHH -ə qayıtmaq üçün konsolda PHP5 ilə başlaya bilərik.
Addım 5: PHP5 -in quraşdırılması
PHP5 -in quraşdırılmasına və konfiqurasiyasına davam edin. Bu quraşdırma MySQL -dən daha asandır, buna görə də onlara heç bir şey xərcləməməlidir. Əvvəlcə Arduino Yun yükləmə və quraşdırma ilə opkg paketini qurun, buna görə Arduinonun SSH konsoluna yazın:
opkg php5 php5-cgi qurun
Arduino Yun -a yüklədikdən və PHP5 qurduqdan sonra kök faylı uHTTPd -ni konfiqurasiya etdik, Arduino -nu standart olaraq gətirən http serveri, yalnız bu http serverindən istifadə etməyi məsləhət görürəm, çünki daha çox yönlü və konfiqurasiyada əlçatandır, Apache və ya Lighttpd daha çətindir. bu sahədə yeni olduğunuz zaman qurmaq. Bunu konfiqurasiya etmək üçün 'vi' SSH fayl redaktorundan istifadə edin, bunun üçün bu redaktoru istifadə etmək üçün minimum bilgiyə malik olmalısınız. UHTTPd parametrlər faylına daxil olmaq üçün bu kodu konsolda yazmağa başlayın:
vi/etc/config/uhttpd
Dosyanı redaktə etmək üçün 'i' düyməsini basın, sonra yazdığınız kod sətrinə gedin '# siyahı tərcüməçisi. "php = / usr / bin / php-cgi" '. Satırın əvvəlində '#' simvolunu silməlisiniz, sonra qaçış ('ESC') düyməsinə basmalısınız, hazır olduqdan sonra faylı saxlamaq üçün ': wq' əmrini yazmalısınız. UHTTPd serverini yenidən başlatmalısınız, bunun üçün SSH komanda konsoluna aşağıdakı kodu yazmalısınız:
/etc/init.d/uhttpd yenidən başladın
Addım 6: PHP5 və Python üçün Conector MySQL -in quraşdırılması
MySQL verilənlər bazasını PHP və Python ilə birləşdirmək üçün modulların quraşdırılmasına və konfiqurasiyasına davam edin. PHP bağlayıcısından başlayaq. Aşağıdakı kodu daxil edin:
- opkg php5-mod-mysql quraşdırın
- sed -i 's,; uzantı = mysql.so, uzantı = mysql.so, g' /etc/php.ini
Hazır olduqdan sonra dərhal istifadəyə hazır olan uHTTPd serverini yenidən başlatmağa ehtiyac olmayacaq. İndi Python bağlayıcısına davam edin, bunun üçün aşağıdakı kodu daxil etməlisiniz:
opkg python-mysql yükləyin
Bu son addımla, Arduino Yun kartımızı ID-20 RFID 125khz kart oxuyucusu ilə layihəmizə hazır vəziyyətə gətirəcəyik. Gördüyümüz işlərin geribildirimi ilə bu hissəni bitirin:
- MySQL serverini Arduino Yun -a quraşdırdıq, sonra test məlumatlarının daxil edilməsi ilə bitən konfiqurasiya etdik.
- PHP tamamlayıcısını serverimizə quraşdırın.
- Həm PHP, həm də Python üçün MySQL Connector -in quraşdırılması və konfiqurasiyasını bitirdik.
Addım 7: Kodlar
Bu sahədə bu layihə üçün istifadə ediləcək proqramlaşdırma kodlarını müzakirə edirik. Python kodu ilə ayrılırıq və iki fayla bölünür: 'comprobar.py', verilənlər bazasına qoşulacaq və nəticədə Yun Arduino axtaracaq və 'nəzarət' faylı. py ', qeydiyyatdan keçmiş istifadəçilərin verilənlər bazasında oxucu ID-20 tərəfindən oxunan hər hansı bir kartı qeyd etməkdən məsuldur. Sonra PHP fayllarının təsviri ilə davam edin: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Anlamaq asan olduğu üçün bu faylları redundaremos. Nəhayət, Arduino eskizimiz kimi yüksələcək kodu bitirin.
Addım 8: Python faylları
Daha əvvəl də qeyd edildiyi kimi, Python skriptlərimiz əvvəllər quraşdırılmış kitabxana və ya 'MySQLdb' sinfi ilə işləyirdi. Redaktorumuzda '.py' ilə 'comprobar.py' adlı bir fayl yaradaraq başlayın, bu halları www.sublimetext.com saytından yükləyə biləcəyiniz Sublime Text 3 redaktoru Pythonda proqramlaşdırma üçün istifadə etməyi məsləhət görürəm. Kitabxananı Arduino Yun ilə ünsiyyət qurmağımıza imkan verən MySQL verilənlər bazamıza, kitabxana 'sys' ə qoşulmaq üçün idxal etməklə başlayaq:
- MySQLdb idxal edin
- sys idxal edin
Bu kitabxanaları və ya sinifləri idxal etdikdən sonra kodunuza MySQL verilənlər bazamızdan olan əlaqə məlumatları olacaq dəyişənlər əlavə edirik:
- host = "127.0.0.1" # MySQL serverimizin ünvanına uyğundur.
- user = "your-seat" # verilənlər bazamızın istifadəçisidir.
- passw = "parolunuz" istifadəçinin şifrəsidir. base = "arduino" # İstifadə etdiyiniz verilənlər bazasının adı budur.
İndi əsas skript kodlarından başlayın:
- Doğru halda:
- db = MySQLdb.connect (host, user, passw, base)
- cur = db.kursor ()
- resultado = cur.execute ("" "SELECT * FROM usuariosrfid WHERE rfid LIKE %s ORDER BY by id" "", (sys.argv [1],))
- əgər (nəticə == 1):
- çap 1
- sys.exit (1)
- başqa:
- çap 2
- sys.exit (1)
Fikrimizcə, 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' sorğusunu yerinə yetirmək üçün əmri dəyişənlə müqayisə edin. '(sys.argv [1])', bütün sahə məlumatları olan 'rfid' cədvəli 'usuariosrfid' olan Arduino RFID kartından olan koddur və arduinodan bərabərlik kodunu və ya verilənlər bazasında saxlanılan kodları tapacaq. qayıt 1, əgər bu doğru deyilsə və arduino kodundan bazanın bir hissəsi ilə bərabərlik yoxdursa, 2 -ni qaytaracağıq. Bu ədədlər Arduino tərəfindən alınacaq. Növbəti 'control.py faylına davam edirik. Bu fayl yuxarıda olduğu kimi eyni şəkildə işləyir, yalnız bir ləzzəti bir masada saxlamaqla, bu qeydlər Arduino Yun ilə əlaqəli oxucu ID-20 tərəfindən toplanacaq, buna görə RFID oxuyucumuzdan istifadə edən bütün qeydiyyatdan keçmiş istifadəçiləri saxlaya bilərik.
Addım 9: PHP faylları
Sonra fayllara davam edin. Qovluğu serverimizdən saxlayacaq 'Php', bunun üçün bu faylların hazır olduqdan sonra avtomatik olaraq IDE Arduino yaradan layihəmizin skit -də saxlanılmasının vacib olduğunu unutmayın, gözləsəm də xatırlamalısınız. bu, Yun Arduino eskizimizə qalxdığımız zaman Wi -Fi üzərindən yükləyirik, buna görə də Arduino www.arduino ilə eyni səhifədə qoyuram. cc / en / Guide / Arduino Yun # toc14, bu barədə daha çox məlumat verir və faylların serverdə saxlanılması lazım olan bu cür layihə üçün MicroSD kartını necə hazırlamalısınız. PHP faylları 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar olacaq. php '' consulta.php ',' configuracion.php ', hər zaman işləyən və əlçatan bir əsas menyu saxlamaq üçün digərinə köprü veriləcək. Verilənlər bazamızla birləşdirici kimi işləyən 'configuracion.php' faylını izah edin. Redaktorumuzda faylda aşağıdakı kodu planlaşdırırıq:
- <? php
- / / Məlumat serveri və verilənlər bazası
- $ server = "localhost";
- $ istifadəçi adı = "oturacağınız yer";
- $ parol = "parol";
- $ database_name = "arduino";
Python skriptlərimizdə istifadə etdiyimiz arduino verilənlər bazasına qoşulmaq üçün lazım olan məlumatlar bunlardır. Skriptimizi istifadə edən connect ifadəsini proqramlaşdırmağı bitirin:
- $ conexion = mysql_connect ($ server, $ istifadəçi adı, $ parol) və ya ölmək ("Problemlər çox çətin");
- $ bd_sel = mysql_select_db ($ database_name) və ya ölmək ("Problemlərin həlli");
- ?>
Digər fayllar əlavə olunur.
Addım 10: Nəhayət, Arduino YN Proqramı
Arduino Yun proqramlaşdıraraq bu təlimatın əsas hissəsinə çatdıq, heç bir detal kodun hamısını vurgulamayacaq, çünki olduqca genişdir, yalnız aşağıdakı vacib məqamları qeyd edin:
- Kod, yalnız Serial LCD istifadə üçün bir dəstək olan 6 əsas funksiyadan və 13 ikincil funksiyadan ibarətdir.
- Yalnız Linux və ATMEGA32U4 arasında əlaqə quracağımız əsas 'Bridge.h' sinfi olan ID-20 və Serial LCD ilə əlaqə qurmaq üçün Serial Attached daxil edəcəyimiz 'SoftwareSerial.h' üç sinif idxal olun. və 'Process.h' sinfi Linux -da məsləhətləşmə proseslərinə xidmət edəcək.
- Başqalarını pulsuz istifadə edən yalnız üç pin təyin edin.
Kod əlavə olunur
Addım 11: Yeni iliniz mübarək
Sizə xidmət etmək və Arduino Yun haqqında daha çox məlumat əldə etməyiniz üçün bunu titizliklə davam etdirirəm. Bütün faylları sonuna əlavə edin. İspan dilində danışanlar üçün bu təlimatı lazımlı sənədlərlə birlikdə İspan dilində buraxıram. Ümid edirəm yeni iliniz mübarək, bundan zövq alın və bu 2014 -cü ildə uğurlar!