İçindekiler:

MySQL, PHP5 ve Python ile Arduino YÚN'ye Erişim Kontrolü: 11 Adım (Resimlerle)
MySQL, PHP5 ve Python ile Arduino YÚN'ye Erişim Kontrolü: 11 Adım (Resimlerle)

Video: MySQL, PHP5 ve Python ile Arduino YÚN'ye Erişim Kontrolü: 11 Adım (Resimlerle)

Video: MySQL, PHP5 ve Python ile Arduino YÚN'ye Erişim Kontrolü: 11 Adım (Resimlerle)
Video: How To Connect To SQL Server In Python 2024, Temmuz
Anonim
MySQL, PHP5 ve Python ile Arduino YÚN'nin Erişimini Kontrol Edin
MySQL, PHP5 ve Python ile Arduino YÚN'nin Erişimini Kontrol Edin

Merhaba arkadaşlar!

Bildiğiniz gibi, Eylül ayında Arduino'nun yeni prömiyer kalkanı Arduino YUN. Bu küçük arkadaşın, aklınıza gelebilecek her şeyi (en azından şimdiye kadar) çalıştırabileceğimiz bir Linux gömülü sistemi var. Bu yeni panoda çok az bilgi olsa da, Arduino sayfasını sağlayan kılavuzda (daha sonra bağlantı kurulacak) ve ayrıca birçok Linux hakkında biraz bilgi sahibi olarak, Kontrol Erişimi büyük bir projeyi gerçekleştirebilir. Bu sefer bu projenin nasıl yapıldığını anlatacağım, ancak özellikle Arduino'muz üzerinden yeterli bir şekilde. Bu çalışır, YUN'umuza yerleşecek olan MySQL veritabanı sunucusu sayesinde, bu veritabanı biri belirli bir RFID ile ilişkili kullanıcılar için ve diğeri okuyucumuzdan geçen tüm kartların kayıtlarını tutmak için iki tablo depolayacaktır. Bazı temel işlemleri gerçekleştirmek ve verilerimizle çalışmak için programlama dilleri PHP ve Python komut dosyalarını kullanırken. Ayrıca, donanım ek yükü, 16 karakterlik bir Seri LCD'nin yanında bir okuyucu ID-20 ve ayrıca bilgi verici durumlarımız olacak bir RGB LED kullanıyoruz. Bu erişim kontrolünü düşünebildiğimiz, değiştirebildiğimiz ve bir röle veya başka bir fikir ekleyebildiğimiz her şeyi kullanabiliriz. Kartınız olan ve kayıt istediğiniz her şeyde kullanılabilir. Bu belgenin ücretsiz yayın olduğunu, ticari kullanıma ve muaf değişikliklere izin verilmediğini hatırlayın. Umarım bu, Açık Kaynak elektroniğinin çok daha kapsamlı bir yoludur. Yani bir sonraki adıma geçiyoruz, tarafların ihtiyacı var!

Adım 1: Parçalar

Parçalar
Parçalar
Parçalar
Parçalar
Parçalar
Parçalar

Bu projeyi yapabilmek için ihtiyacımız olan: * Arduino YUN https://www.sparkfun.com/products/12053 $71.95 * RFID Okuyucu ID-20 (125 kHz) https://www.sparkfun.com/products/11828 34,95 $ * RFID Okuyucu Arası https://www.sparkfun.com/products/8423 0,95 $ * Temel 16x2 Karakter LCD 5V https://www.sparkfun.com/products/790 16,95 $ * Seri Etkin 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 ve tel yaklaşık 5,00 $. Toplamda, Sparkfun mağazasından satın alırsanız, her şey 150 $ 'a yakın olacak. Latin Amerika'da yaşıyorsanız, parçaları www.olimex.cl adresinden almanızı tavsiye ederim, çok iyi bir Şili elektronik mağazası.

Adım 2: Montaj

Montaj
Montaj
Montaj
Montaj
Montaj
Montaj

Yapılması gereken birkaç bağlantı, kısaca açıklayarak. RGB LED için kırmızı LED pin Arduino'nun 9 pininde, pin yeşil LED Arduino pin 8'de ve pin mavi LED Arduino'nun 7 pininde olmalıdır. ID-20 için aşağıdaki pinleri tabloda gösterildiği gibi ilgili sırayla, pin okuyucu Arduino pinine bağlamanız gerekir: Pin ID-20 - pin Arduino ID-20 / Arduino PIN 1 -- GND PIN 2 -- 5V PIN 7 -- GND PIN 9 -- PIN 10 PIN 10 -- BUZZER PIN 11 -- 5V Ve son olarak Seri LCD konnektör için Arduino'nun sadece 5v ve GND pinlerine ihtiyaç duyulurken, LCD Serial RX pini pin 11'e gider. Arduino'nun.

Adım 3: Arduino Yun'un Programlanması

Arduino Yun'un Programlanması
Arduino Yun'un Programlanması

Projemizi yapmak için, yazılımın bir kısmı ile başlamamız gerekiyor, Arduino opkg Yun'a bazı dosyalar kuruyoruz:

  • MySQL Sunucusu
  • PHP5
  • Python 2.7 için MySQLdb
  • PHP5'ten MySQL'e Mod

Bridge'de varsayılan olarak Python 2.7 yüklü olarak geldiğini hatırlayın, bu nedenle bunun için hiçbir zaman güncelleme yüklemeniz gerekmez. SSH'yi kaydetmeye başlayın, Arduino Yun'umuza girmeye cesaret edin, onları başlattıktan sonra, opkg uygulama listesini güncellemek için aşağıdaki komutu yazın:

opkg güncellemesi

Adım 4: MySQL Kurulumu

MySQL'in Kurulumu
MySQL'in Kurulumu

Şimdi MySQL Server kurulumunu ve konfigürasyonunu gerçekleştireceğiz, konsola aşağıdaki komutları yazın:

  1. opkg kurulum 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 –-kuvvet
  6. /etc/init.d/mysqld başlangıç
  7. /etc/init.d/mysqld etkinleştir
  8. mysqladmin -u kök parola 'tu-nueva-clave'

Kodlarımızı girmeyi bitirip MySQL sunucusunu başlattıktan sonra, manipüle edecek veritabanını yapılandırmalısınız. Fakat kodları yazmaya başlamadan önce tablomuzu taşıyan alanları anlamamız gerekiyor. Kurul 5 dersten oluşacaktır, 'id', 'isim', 'isim', 'e-posta', 'rfid' bunlardan bazılarını pazarlamak için kullanımları hakkında kısa bir açıklama yapacağım.

  • 'id': Kullanıcı kimliğine atanan numarayı bize bildirecek olan alan veya öznitelik int sütunu, bu numara aynı veritabanı tarafından atanır ve kayıtlarımızı indekslemenin yolu olacaktır.
  • 'nombre': nitelik sütunu ' varchar ' olacaktır, kart kullanıcımızın tanımlandığı isimle belirtilebilir.
  • ' apellido': nitelik sütunu ' varchar ' olacak, kullanıcımızın ilişkili olduğu soyadı ile belirtilebilir.
  • ' correo': ilişkili kullanıcının e-postasını içerecek olan ' varchar ' nitelik sütunudur.
  • ' rfid': kullandığınız RFID kartının kodunu içerecek olan ' varchar ' nitelik sütunudur.

(Değişkenleri İspanyolca kullanacağım çünkü ana dilim ve c'yi seviyorum:) Artık veritabanımızı sorunsuz bir şekilde yapılandırabiliriz, bu nedenle bir ' arduino ' çağrısı MySQL oluşturuyoruz. Aşağıdaki kodu yazmalısınız:

mysqladmin -u root -p arduino oluştur

Kurulumda daha önce girdiğimiz şifreyi istiyoruz, tabanın oluşturulmasını tamamlamak için göndereceğiz. Tüm bunları bitirdik, sorguyu MySQL'e giriyoruz, konsola aşağıdaki kodu yazmalısınız:

mysql -root -p

Tekrar şifre istiyoruz, tekrar göndermeniz gerekiyor. MySQL konsol komutunun içine girdikten sonra, işaretçimiz ('mysql>') yazmaya hazır görünmelidir. Yapacağımız ilk şey, üzerinde çalışmak için 'arduino' verilerinin tabanını taşımak. Bu, MySQL konsoluna aşağıdaki komutu yazarak yapılır:

arduino KULLAN

Veritabanındaki 'usuariosrfid' isim tablosunun bu proje için kullanacağına inanıyoruz, MySQL konsoluna şu kodu yazın:

  1. TABLO OLUŞTUR `usuariosrfid` (
  2. 'id' int(255) NULL DEĞİL AUTO_INCREMENT,
  3. "nombre" varchar(300) NULL DEĞİL,
  4. "apellido" varchar(300) NULL DEĞİL,
  5. "correo" varchar(300) NULL DEĞİL,
  6. "rfid" varchar(300) NULL DEĞİL,
  7. BİRİNCİL ANAHTAR (`id`)
  8. ) MOTOR=MyISAM VARSAYILAN CHARSET=latin1 AUTO_INCREMENT=0;

* MySQL konsolunda komut satırının sonunda ENTER tuşuna bastığınızda, ';' bulana kadar çalışmayacağını unutmayın. Bu nedenle, kodun sonunda ';' MySQL'in kurulumunu ve konfigürasyonunu tamamlamak için üssümüzdeki bazı test alanlarını dolduruyoruz. Aşağıdaki satırları yazın:

  1. 'usuariosrfid' ('id', 'nombre', 'apellido', 'correo', 'rfid') DEĞERLERİNE EKLE
  2. (1, 'Pedro', 'Suarez', '[email protected]', '1234a-12345-b-123c'),
  3. (4, 'Matias', 'Lopez', '[email protected]', '987a-9876b-987c');

Şimdi okuyucu tarafından geçen tüm RFID kodlarını içerecek olan 'ControlUsuarios' tablosunun oluşturulmasına devam edin, bu tablo 'id', 'rfid', 'date' olmak üzere 3 alandan oluşmaktadır.

  • 'id', indeksleme için her kaydın kimliğini içerecek olan alan veya öznitelik int sütunudur.
  • 'rfid' niteliği, okuyucu tarafından okunan RFID etiket kodunu içeren 'varchar' sütunudur.
  • 'tarih', kartın okunduğu tarihi içerecek olan 'varchar' nitelik sütunudur.

'ControlUsuarios' tablosunu oluşturmak için MySQL konsoluna aşağıdaki kodu giriyoruz:

  1. CREATE TABLO `ControlUsuarios` (
  2. 'id' int(255) NULL DEĞİL AUTO_INCREMENT,
  3. "rfid" varchar(300) NULL DEĞİL,
  4. "fecha" varchar(300) NULL DEĞİL,
  5. BİRİNCİL ANAHTAR (`id`)
  6. ) MOTOR=MyISAM VARSAYILAN CHARSET=latin1 AUTO_INCREMENT=0;

Son olarak 'çıkış' yazın; konsolda MySQL Sorgusundan çıkmak ve PHP5 ile başlayabilmemiz için SHH'ye dönmek için.

Adım 5: PHP5'in Kurulumu

PHP5'in Kurulumu
PHP5'in Kurulumu

PHP5'in kurulumu ve konfigürasyonu ile devam edin. Bu kurulum MySQL'den daha kolaydır, bu yüzden onlara hiçbir maliyeti olmamalıdır. İlk olarak, Arduino Yun indirme ve yüklemesinden opkg paketini kurun, bu nedenle Arduino'nun SSH konsoluna şunu yazın:

opkg php5 php5-cgi'yi kurun

Arduino Yun'umuza indirildikten ve PHP5 kurulduktan sonra, Arduino varsayılanını getiren http sunucusu olan uHTTPd kök dosyasını yapılandırdık, Apache veya Lighttpd'yi değil, yapılandırmada daha çok yönlü ve erişilebilir olduğu için yalnızca bu http sunucusunu kullanmanızı öneririm. Bu alanda yeni olduğunuzda kurmak için. Bunu yapılandırmak için 'vi' SSH dosya düzenleyicisini kullanın, bunun için bu düzenleyiciyi kullanmak için minimum bilgiye sahip olmanız gerekir. uHTTPd ayar dosyasına erişmek için konsola bu kodu yazmaya başlayın:

vi /etc/config/uhttpd

Dosyayı düzenlemek için 'i' tuşuna basın, ardından yazdığınız kod satırına gidin '# list yorumlayıcı. "php = / usr / bin / php-cgi"'. Satırın başındaki '#' karakterini silmeli, ardından kaçış ('ESC' tuşu) tuşuna basmalısınız, hazır olduğunuzda, dosyayı kaydetmek ve çıkmak için ': wq' komutunu yazmalısınız. uHTTPd sunucusunu yeniden başlatmalısınız, bunun için SSH'nin komut konsoluna aşağıdaki kodu yazmalısınız:

/etc/init.d/uhttpd yeniden başlat

Adım 6: PHP5 ve Python için Conector MySQL Kurulumu

PHP5 ve Python için Conector MySQL Kurulumu
PHP5 ve Python için Conector MySQL Kurulumu

MySQL veritabanını PHP ve Python ile bağlamak için modüllerin kurulumu ve konfigürasyonu ile devam edin. PHP bağlayıcısıyla başlayalım. Aşağıdaki kodu yazın:

  1. opkg php5-mod-mysql'yi kurun
  2. sed -i 's,;extension=mysql.so, extension=mysql.so, g' /etc/php.ini

Hazır olduğunda, hemen kullanıma hazır olan uHTTPd sunucusunu yeniden başlatması gerekmeyecektir. Şimdi Python için bağlayıcıya devam edin, bunun için aşağıdaki kodu girmelisiniz:

opkg python-mysql'yi kurun

Bu son adım ile Arduino Yun'umuzu ID-20 RFID 125khz kart okuyucu ile projemize hazır hale getirmiş olacağız. Bu bölümü, yaptıklarımızın Geri Bildirimi ile tamamlayın:

  • MySQL sunucusunu Arduino Yun'umuza kurduk, ardından test verilerinin eklenmesiyle biteni yapılandırdık.
  • PHP tamamlayıcısını sunucumuza yükleyin.
  • Hem PHP hem de Python için MySQL Connector kurulumunu ve konfigürasyonunu tamamladık.

7. Adım: Kodlar

Bu alanda, bu proje için kullanılacak programlama kodlarını tartışıyoruz. İki dosyaya bölünmüş Python koduyla ayrılıyoruz: veritabanına bağlanacak ve sonuç içindeyse Yun Arduino'yu arayacak olan 'comprobar.py' ve 'kontrol. py ', kayıtlı kullanıcıların veritabanında olsun veya olmasın okuyucu ID-20 tarafından okunan herhangi bir kartı kaydetmekten sorumludur. Ardından PHP dosyalarının açıklamasına devam edin: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ', ' guardar.php'' konsülta.php ', 'configuracion.php'. Bu dosyalar için redundaremos, her ikisi de anlaşılması kolay olduğu için. Sonunda Arduino taslağımız olarak çıkacak olan kodla bitirin.

Adım 8: Dosyalar Python

Dosyalar Python
Dosyalar Python

Daha önce bahsedildiği gibi, Python betiklerimiz, önceden kurulmuş olan 'MySQLdb' kütüphanesi veya sınıfı ile çalıştı. Editörümüzde '.py' ile 'comprobar.py' adında bir dosya oluşturarak başlayın, bu durumları www.sublimetext.com web sitesinden indirebileceğiniz Sublime Text 3 editörü Python'da programlama için kullanmanızı öneririm. Arduino Yun'umuzla iletişim kurmamızı sağlayacak olan 'sys' kitaplığı olan MySQL veritabanımıza bağlanmak için kitaplığı içe aktararak başlayalım:

  1. MySQLdb'yi içe aktar
  2. ithalat sistemi

Bu kitaplıkları veya sınıfları içe aktardıktan sonra, kodunuza MySQL veritabanımızdan bağlantı verileri olacak değişkenler ekliyoruz, kemik:

  1. host = "127.0.0.1" # MySQL sunucumuzun adresine karşılık gelir.
  2. user = "koltuğunuz" # veritabanımızın kullanıcısıdır.
  3. passw = "parolanız" kullanıcının şifresi içindir. base = "arduino" # Bu, kullandığınız veritabanının adıdır.

Şimdi temel komut dosyası kodlarıyla başlayın:

  1. Doğru iken:
  2. db= MySQLdb.connect(host, user, passw, base)
  3. cur = db.cursor()
  4. resultado = cur.execute("""SELECT * FROM usuariosrfid WHERE rfid LIKE %s ORDER BY id""", (sys.argv[1],))
  5. eğer (sonuç == 1):
  6. 1 yazdır
  7. sistem.çıkış(1)
  8. Başka:
  9. 2 yazdır
  10. sistem.çıkış(1)

Farkına varırsak, sorgumuzu yürütmek için 'cur.execute sonuç = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' komutunu kullanarak değişkeni karşılaştırın '(sys.argv [1])', tüm alan verileriyle birlikte Arduino RFID kartından gelen kod olan 'rfid' tablosu 'usuariosrfid', arduinodan eşitlik kodunu ve veritabanında saklanan veya kodlarını bularak, 1 döndürür, bu doğru değilse ve arduino'dan gelen kod ile bazın bazı kodları arasında eşitlik yoksa 2 döndürürüz. Bu sayılar Arduino tarafından alınacaktır. Bir sonraki dosya olan 'control.py' ile devam ediyoruz. Bu dosya yukarıdaki ile aynı şekilde çalışır, sadece bir tabloda bir tat bırakır, kaydedilen bu kayıtlar Arduino Yun'umuza bağlı ID-20 okuyucu tarafından toplanacaktır, böylece RFID okuyucumuzu kullanan tüm kayıtlı kullanıcıları tutabiliriz.

9. Adım: Dosyalar PHP

Ardından dosyalara devam edin. Klasörü sunucumuzdan tutacak olan 'Php', bunu yapmak için bu dosyaların hazır olduktan sonra skeçte kaydedilmesi gerektiğini unutmayın, otomatik olarak IDE Arduino'yu oluşturan projemizde skeçte kaydedilmesi gerektiğini de tahmin ediyorum, ancak bunu da hatırlamanız gerekiyor. Bu, Arduino taslağımız Yun'a gittiğimizde, Wi-Fi üzerinden yükleme yapıyoruz, bu yüzden onu aynı sayfada Arduino, www.arduino kılavuzunda bırakıyorum. cc / tr / Guide / Arduino Yun # toc14, bu konuda daha fazla bilgi veren ve dosyaların sunucuda saklanması gereken bu tür projeler için MicroSD kartı nasıl hazırlamanız gerektiğini anlatıyor. PHP dosyaları 10'dan fazla 'danışmanRelacion.php', 'konsültasyonControl.php', 'indeks.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar' olacaktır. php ' ' Consulta.php ', 'configuracion.php', her zaman çalışan ve erişilebilir temel bir menüyü sürdürmek için diğerine köprü olacak. Veritabanımızla bir bağlayıcı işlevi gören 'configuracion.php' dosyasını açıklamanız yeterli. Editörümüzde, dosyada aşağıdaki kodu planlıyoruz:

  1. <? php
  2. // Veri sunucusu ve veritabanı
  3. $ sunucu = "localhost";
  4. $ kullanıcı adı = "koltuğunuz";
  5. $şifre = "şifre";
  6. $ veritabanı_adı = "arduino";

Bunlar, arduinodaki veritabanımıza bağlanması gereken veriler, Python betiklerimizde kullandığımızla aynı olacaktır. Komut dosyamızı kullanan connect ifadesini programlamayı bitirin:

  1. $conexion=mysql_connect($sunucu, $kullanıcı adı, $şifre) or die("Problemas al tratar de establecer la conexion");
  2. $bd_sel=mysql_select_db($veritabanı_adı) or die("Problemas al seleccionar la base de data");
  3. ?>

Diğer dosyalar ektedir.

Adım 10: Son olarak Arduino YÚN Programı

Bu öğreticinin ana kısmına geldik, Arduino Yun'umuzu programlıyoruz, oldukça kapsamlı olduğu için hiçbir ayrıntı tüm kodu vurgulamayacak, sadece aşağıdaki önemli noktalardan bahsedeceğiz:

  • Kod, yalnızca Seri LCD kullanımını destekleyen 6 ana işlev ve 13 ikincil işlevden oluşur.
  • ID-20 ve Serial LCD ile bağlanmak için Serial Attached gireceğimiz sadece üç sınıf, 'SoftwareSerial.h' içe aktarılmalıdır, Linux ve ATMEGA32U4 arasında bağlantı kuracağımız 'Bridge.h' ana sınıfı. ve 'Process.h' sınıfı Linux'ta danışma süreçlerine hizmet edecek.
  • Diğerlerini ücretsiz kullanan sadece üç pin tanımlayın.

kod ektedir

Adım 11: Yeni Yılınız Kutlu Olsun

Sizlere hizmet etmek ve Arduino Yun hakkında daha fazla bilgi edinmenize yardımcı olmak için buna titizlikle devam ediyorum. Tüm dosyaları sonuna ekli bırakın. İspanyolca dilini konuşanlar için, bu öğreticiyi gerekli dosyalarla birlikte İspanyolca olarak bırakıyorum. Umarım mutlu bir yeni yıl geçirirsiniz, bu 2014'ün tadını çıkarın ve başarılı olun!

Önerilen: