Header và IO

Một phần của tài liệu Hệ thống bãi giữ xe thông minh và access control ứng dụng công nghệ RFID (Có code) (Trang 59)

Hình 3.5 GPIO và Header của Raspberry Pi

GPIO:

- (General Purpose Input and Output): giống như các chân của vi điều khiển, các IO của Raspberry Pi cũng được sử dụn để xuất tín hiệu ra led, thiết bị hoặc đọc tín hiệu từ các nút nhấn, công tắc….Ngoài ra còn có các IO tích hợp các chuẩn truyền dữ liệu UART, I2C và SPI.

Hình 3.6 Sơ đồ chân GPIO của Raspberry Pi

- Chú ý, Raspberry Pi có hai cách đánh số chân GPIO. Cần xác định rõ đang chọn cách đánh số chân nào để viết code lập trình cho chính xác.

- Cổng DSI (Display Serial Interface): cổng này dùng để kết nối với LCD hoặc màn hình OLED.

- Cổng CSI (Camera Serial Interface): cổng này dùng để kết nối module riêng của Raspberry Pi.

Hình 3.7 Module camera dành riêng cho Raspberry Pi

3.2 Cài đặt hệ điều hành cho Raspberry Pi:

3.2.1 Hệ điều hành cho Raspberry Pi:

 Raspberry Pi dùng thẻ nhớ thay vì ổ cứng, hệ điều hành được cài đặt trên thẻ nhớ. Nhờ đó Raspberry Pi cho ta khả năng linh động rất cao, bạn chỉ cần đổi thẻ nhớ có cài sẵn hệ điều hành là có thể dùng nhiều hệ điều hành khác nhau trên cùng một module Raspberry Pi.  Raspberry Pi hỗ trợ nhiều hệ điều hành khác nhau, tùy thuộc vào mục đích sử dụng như:

RASPBIAN, PIDORA, OPENELEC, RASPBMC…Chúng ta có thẻ download miễn phí tại trang web của Raspberry Pi.

 Ở đề tài luận văn này, chúng em chọn hệ điều hành Raspbian, đây là hệ điều hành chính thức và phổ biến nhất dành cho Raspberry Pi.

Hình 3.8 Hệ điều hành Raspbian

3.2.2 Cài đặt hệ điều hành và khởi động Raspberry Pi:

 Chuẩn bị một thẻ nhớ MicroSD 16GB class 10  Download hệ điều hành Raspbian

 Download và cài đặt phần mềm “Win32 Disk Imager” – phần mềm này dùng để ghi file hệ điều hành vào thẻ nhớ.

Hình 3.9 Ghi hệ điều hành vào thẻ nhớ

 Cắm thẻ nhớ vào máy tính, chọn hệ điều hành đã download và “Write” hệ điều hành vào thẻ nhớ.

 Vậy là chúng ta đã cài đặt xong hệ điều hành cho Raspberry Pi.

3.2.2.2 Khởi động Raspberry Pi:

 Sau khi cài xong hệ điều hành vào thẻ nhớ, chúng ta cắm thẻ nhớ vào Raspberry Pi, cấp nguồn và Raspberry Pi sẽ tự động khởi động theo hệ điều hành có trong thẻ nhớ.

 Mặc định của Raspbian, username: pi và password: raspberry  Để hiển thị, màn hình Raspberry Pi sau khi khởi động có 2 cách:

- C1: nếu có màn hình LCD có dây kết nối HDMI, chúng ta chỉ cần kết nối với Raspberry Pi để hiển thị

- C2: nếu không có sẵn màn hình LCD ta có thể dùng màn hình laptop để hiển thị màn hình Raspberry Pi sau khi khởi động. Cách này sẽ tiết kiệm chi phí hơn, sau đây chúng em xin trình bày rõ hơn.

3.2.2.3 Khởi động Raspberry Pi không cần màn hình LCD:

 B1: tìm địa chỉ IP của Raspberry Pi:

- Để không dùng màn hình LCD, chúng ta phải kết nối Raspberry Pi và laptop hiển thị cùng mạng (có thể cắm Raspberry Pi và latptop vào modem ADSL để modem cấp IP động cho cả hai hoặc kết nối Raspberry Pi trực tiếp với laptop bằng cap ethernet ròi dùng Wifi cấp IP)

- Nếu dùng Wifi để cấp IP động, ta thực hiện như hình:

- Sau khi đã cấp IP động cho Raspberry Pi, ta phải tìm IP đó. Để đơn giản ta có thể dùng phần mềm Advanced IP Scanner.

Hình 3.10 Giao diện phần mềm Advanced IP Scanner (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.11 Địa chỉ IP Raspberry Pi

 B2: Cài đặt phần mềm Xming X Server for windows cho laptop. Phần mềm này dùng để hiển thị màn hình Raspberry Pi thay cho màn hình LCD. Mở Xming sau khi cài đặt.

 B3: dùng phần mềm Putty để kết nối Raspberry Pi từ laptop như hình:

Hình 3.13 Các bước cấu hình Putty để kết nối Raspberry Pi  B4: Sau khi click Open, Putty sẽ hiển thị màn hình như sau:

Hình 3.15 Gõ lệnh “lxsession” để hiển thị màn hình Raspberry Pi

Hình 3.16 màn hình Raspberry Pi sau khi khởi động

3.3 Cấu hình cơ bản cho Raspberry Pi sau khi khởi động:

 Sau đây là các bước cấu hình sau khi khởi động, việc cấu hình này giúp việc sử dụng Raspberry Pi trở nên dễ dàng hơn.

 Bật terminal trên Raspberry Pi và gõ lệnh:

Hình 3.17 Giao diện terminal Raspberry Pi

Hình 3.18 Setup Raspberry Pi

 Thay đổi User Password (Change User Password - 2): chọn mục này để thay đổi password cho Raspberry Pi

 Internationalisation Options:  Addvanced Options:

 Update và Upgrade: cập nhật và nâng cấp các phần mềm và firmware cho Raspberry Pi. Gõ các lệnh sau trong Terminal: (lưu ý phải kết nối internet cho Pi)

sudo apt-get update sudo apt-get upgrade

 Thay đổi password root user, dùng lệnh sau:

sudo passwd root

Sau đó cập nhật password mới cho root user

Hình 3.19 Thay đổi password cho root user

3.4 Real time clock (RTC) cho Raspberry Pi:

Raspberry Pi là một mini computer được thiết kế với chi phí cực thấp, vì thế nó không được kèm theo thời gian thực (real time clock). Thay vào đó, PI có thể dùng kết nối Internet trong qua Ethernet hoặc Wifi để cập nhật thời gian tự động từ server NTP (network time protocol). Điều này, gây ra một số khó khăn trong trường hợp Raspberry hoạc động trong môi trường không có Internet hoặc Internet có sự cố.

Ở đề tài luận văn này, chúng em sẽ khắc phục nhược điểm này cho Raspberry Pi bằng cách trang bị cho Raspberry Pi một module thời gian thực.

Hình 3.20 Module thời gian thực DS1307

 DS 1307 Board: sử dụng giao thức I2C cho phép đếm giây, phút, giờ, ngày trong tuần, ngày trong tháng và năm. Có sẵn pin backup, cho phép duy trì thời gian ngay cả khi mất điện.  Sử dụng module này kèm theo Raspberry Pi thì ngay cả khi tắt Pi hoặc không có Internet

chúng ta vẫn có được thời gian chính xác.  Kết nối dây:

- VCC trên DS1307 nối với GPIO 5V của Pi - GND trên DS1307 nối với GPIO GND của Pi - SDA trên DS1307 nối với GPIO SDA0 của Pi - SCL trên DS1307 nối với GPIO SCL0 trên Pi

3.4.2 Cấu hình giao thức I2C giữa module DS1307 và Raspberry Pi:

Do module DS1307 sữ dụng giao thức I2C, nên ta phải cấu hình I2C cho Raspberry Pi. Điều này cho phép module DS1307 sẽ khởi động cùng với Pi và Raspberry Pi sẽ nhận thời gian từ DS1307.

Sau đây là các bước cấu hình:  B1: Mở terminal và gõ lệnh:

sudo nano /etc/modules (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.221 Mở file modules trên Raspberry Pi  B2: Thêm 2 dòng sau đây vào cuối file được mở ra:

i2c-bcm2708 i2c-dev

Hình 3.22 Sửa file modules Ctrl + X Y  Save file

 B3: Khởi động Raspberry Pi để việc thay đổi có hiệu lực, dùng lệnh:

sudo reboot

 B4: Sau khi khởi động lại Pi, chúng ta cài đặt các I2C-tools, dùng lệnh:

sudo apt-get install python-smbus sudo apt-get install i2c-tools

 B5: Chỉnh sửa file raspi-blacklist.conf, dùng lệnh:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

Hình 3.23 Mở file raspi-blacklist.conf

Bỏ chọn 2 dòng “blacklist spi-bcm2708” và “blacklist i2c-bcm2708” bằng cách thêm dấu “#” trước mỗi dòng

Hình 3.24 Bỏ chọn 2 dòng Ctrl + X Y  Save file

Chú ý: nếu trong file này không có 2 dòng nêu trên thì chúng ta không cần làm gì cả

 B7: Xác định xem Raspberry Pi có nhận module DS1307 hay không, dùng lệnh:

sudo i2cdetect –y 1

Hình 3.25 Kiểm tra kết nối module DS1307

Nếu module DS1307 kết nối thành công với Raspberry Pi thì terminal sẽ hiển thị ID của DS1307, ở đây ID = 68 (chú ý: sau khi cấu hình chạy thành công mở lại file này thì ID = UU)

Hình 3.26 Kết nối DS1307 với Raspberry Pi thành công  B8: Run module DS1307, sử dụng các lệnh sau:

sudo modprobe rtc-ds1307

sudo bash nhập password root user

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device

Hình 3.27 Run module DS1307 Dùng lệnh “exit” để thoát khỏi root user

 B9: kiểm tra thời gian hiện tại và ghi thời gian vào DS1307: Kết nối Internet để Raspberry Pi lấy thời gian tự động

Dùng lệnh sau:

sudo hwclock -w ghi thời gian hệ thống vào DS1307

 B10: Thêm DS1307 vào kernel Raspberry Pi để Pi sẽ tự nạp module DS1307 khi khởi động Mở file modules và thêm dòng “rtc-ds1307” vào cuối file

Hình 3.28 Thêm DS1307 vào kernel Raspberry Pi

 B11: cấu hình file rc.local cho phép module DS1307 khởi động cùng với Raspberry Pi Dùng lệnh:

sudo nano /etc/rc.local mở file rc.local

Sau đó thêm 2 dòng sau đây vào cuối file (trước dòng exit 0) (adsbygoogle = window.adsbygoogle || []).push({});

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device sudo hwclock –s

Hình 3.29 Cấu hình file rc.local

3.6 Cấu hình serial port trên Raspberry Pi:

Uart trên Raspberry Pi có tên là /dev/ttyAMA0, đế sử dụng Uart ta phải thực hiện một số bước cấu hình như sau:

 Cài đặt Pyserial để dùng python lập trình giao tiếp Uart Các bước thực hiện:

-B1: tải file pyserial-2.7.tar.gz(md5) có thể tải trên laptop ròi dùng USB chép vào thư mục /home/pi

Hình 3.30 Tập tin pyserial-2.7.tar.gz -B2: giải nén tập tin pyserial-2.7.tar.gz  tập tin pyserial-2.7

Hình 3.31 Thư mục sau khi giải nén

-B3: cài đặt pyserial-2.7

Hình 3.32 Các câu lệnh mở file và cài đặt

Dùng lệnh “sudo python setup.py install” để cài đặt pyserial bằng terminal Chú ý:

 Phiên bản pyserial đang cài đặt là phiên bản 2.7 khi cài đặt có thể cảnh báo là “không tương thích với python-3” nhưng vẫn sử dụng được.

 Nếu không sử dụng được có thể cài đặt pyserial3 bằng lệnh sau:  “sudo apt-get install python3-serial”

- Cấu hình file /boot/cmdline.txt:

Khi mở file ta thấy các dòng như sau:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Hình 3.33 File cmdline.txt sau khi chỉnh sửa - Cấu hình file /etc/inittab:

Ở cuối file ta sẽ thấy dòng lệnh sau:

#Spawn a getty on Raspberry Pi serial line

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 Bỏ dòng lệnh này bằng cách thêm dấu “#” ở đầu dòng, như hình

Hình 3.34 File /etc/inittab sau khi chỉnh sửa

3.7 Cài đặt GPIO cho Raspberry Pi:

Để có thể dùng python điều khiển các chân GPIO của Raspberry Pi, ta phải tiến hành cài đặt thư viện bổ trợ.

Các bước cài đặt như sau:

 B1: tải file Rpi.GPIO-0.2.0.tar.gz(md5) và đặt ở thư mục /var/tmp  B2: tiến hành cài đặt bằng các lệnh theo hình sau:

Hình 3.35 Các câu lệnh cài đặt Rpi.GPIO-0.2.0

3.8 Webserver cho bộ access control:3.8.1 Cài đặt webser trên Raspberry Pi: 3.8.1 Cài đặt webser trên Raspberry Pi:

3.8.1.1 Cài đặt Apache web server:

Apache là một ứng dụng web server phổ biến nhất trên thế giới và có thể cài đặt trên Raspberry Pi.

Cài đặt Apache bằng câu lệnh: (adsbygoogle = window.adsbygoogle || []).push({});

sudo apt-get install apache2 –y

Hình 3.36 Cài đặt Apache

Mặc định Apache sẽ chạy một file test HTML sau khi cài đặt xong. Để kiểm tra chỉ cần mở trình duyệt lên, gõ địa chỉ IP của Raspberry Pi. Nếu Apache cài đặt thành công chúng ta sẽ nhìn thấy trang như sau:

Hình 3.37 Cài đặt Apache thành công

3.8.1.2 Cài đặt PHP:

Mặc định Apache chỉ hỗ trợ cái file HTML, tuy nhiên chúng ta có thể cài thêm modules bổ trợ PHP và Apache có thể làm việc được với web động.

Cài đặt PHP bằng lệnh:

Hình 3.38 Cài đặt PHP

3.8.2 Cài đặt cơ sở dữ liệu: 3.8.2.1 Cài đặt MySQL: 3.8.2.1 Cài đặt MySQL:

MySQL là một database server rất phổ biến, nhiều máy chủ trên thế giới đang sử dụng MySQL cho các website của mình.

Cài đặt MySQl bằng lệnh:

sudo apt-get install mysql-server php5-mysql –y

Hình 3.39 Cài đặt MySQL

Trong quá trình cài MySQL, chúng ta sẽ được yêu cầu nhập mật khẩu root của MySQL, chúng ta phải ghi nhớ mật khẩu này để thao tác về sau. Ở đây chúng em chọn mật khẩu root là “root”. Chú ý mật khẩu root của MySQL khác mật khẩu root của Raspbian.

Hình 3.40 Mật khẩu root MySQL

3.8.2.2 Cài đặt phpmyadmin:

Cài đặt phpmyadmin theo các bước sau:

 B1: dùng lệnh sudo apt-get install phpmyadmin để cài đặt phpmyadmin

Hình 3.41 Cài đặt phpmyadmin  B2: chọn Apache là default webserver cho phpmyadmin

Hình 3.42 Chọn Apache là default webserver cho phpmyadmin  B3: configure phpmyadmin

Hình 3.43 Configure phpmyadmin  B4: chỉnh sửa file cấu hình của Apache

Hình 3.44 Lệnh mở file cấu hình Apache

Hình 3.45 Sửa file cấu hình Apache

3.8.2.3 Cấu hình IP tĩnh (static IP cho Raspberry Pi):

Để nhúng webserver trên Raspberry Pi ta phải cấu hình IP tĩnh cho Raspberry Pi. Để làm được điều này ta phải sửa file /etc/network/interfaces. Các bước thực hiện như sau:

 B1: Mở file /etc/network/interfaces, ta sẽ thấy những dòng như sau:

auto lo

iface lo inet lockback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet manual

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp

 B2: Sửa các dòng file /etc/network/interfaces như hình: (adsbygoogle = window.adsbygoogle || []).push({});

3.8.2.4 Cài đặt thư viện MySQLdb:

Để có thể kết nối và thao tác với database mysql bằng Python chúng ta phải cài thêm tư viện bổ trợ mysqldb.

Để cài đặt mysqldb, dùng lệnh sau:

sudo apt-get install python-mydqldb

Hình 3.47 Cài đặt thư viên mysqld

Chương 4 : TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH

4.1 Giới thiệu ngôn ngữ lập trình C#:

4.1.1 Tổng quan về ngôn ngữ lập trình C#:

Ngôn ngữ C# (C – Sharp) được phát triển bởi đội ngũ kỹ sư của Microsoft trong đó hai người dẫn đầu là Anders Hejsberg và Scott Wiltamuth. Cả hai đều là những người nổi tiếng, trong đó Anders Hejsberg được biết đến là tác giả của Turbo Pascal, một ngôn ngữ lập trình PC phổ biến. Và ông đứng đầu nhóm thiết kế Borland Delphi, một trong những thành công đầu tiên của việc xây dựng môi trường phát triển tích hợp (IDE) cho lập trình client/server.

4.1.2 Đặc điểm ngôn ngữ lập trình C#: 4.1.2.1 C# là ngôn ngữ khá đơn giản 4.1.2.1 C# là ngôn ngữ khá đơn giản

Chỉ khoảng 80 từ khóa và hơn mười kiễu dữ liệu được dựng sẵn. Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi nó thực thi những khái niệm lập trình hiện đại. C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần, lập trình hướng đối tượng và hơn nữa nó được sáng tạo ra dựa trên những ưu điểm của C++, Java, Smalltalk và bổ sung thêm những phần mới. Những tính chất đó hiện diện trong một ngôn ngữ lập trình hiện đại.

Trong C#, kiểu giá trị được cấp phát trên stack (ngăn xếp) và thời gian sống của chúng bị giới hạn trong phạm vi mà chúng khai báo.

Kiểu Mô tả

Object Lớp cơ sở của tất cả các đối tượng trong C# String Dãy các ký tự ở dạng Unicode

Sbyte Số nguyên có dấu 8 bits Short Số nguyên có dấu 16 bits Int Số nguyên có dấu 32 bits Long Số nguyên có dấu 64 bits Byte Số nguyên không dấu 8 bits Ushort Số nguyên không dấu 16 bits Unit Số nguyên không dấu 32 bits Ulong Số nguyên không dấu 64 bits Float Số chấm động có độ chính xác đơn Double Số chấm động có độ chính xác đôi Bool Kiểu logic – True or False

Char Ký tự Unicode

Decimal Số tập phân có 28 chữ số có nghĩa Bảng 4..1 Các kiểu cũa C#

4.1.2.2 C# là ngôn ngữ hướng đối tượng:

Không như các ngôn ngữ thủ tục, C# không quan tâm đến dữ liệu toàn cục hay các hàm toàn cục. Tất cả dữ liệu và phương thức được chứa trong khai báo cấu trúc hoặc class. Đây là khái niệm chính trong bất kỳ ngôn ngữ hướng đối tương nào. Tất cả dữ liệu và các phương thức khai báo trên dữ liệu cần phải được đóng gói như một đơn vị chức năng. Các dơn vị chức năng này là những đối tượng có thể sữ dụng lại, chúng độc lập và có thể tự hoạt động.

4.1.2.3 Khai báo lớp trong C#:

Ngôn ngữ C# chứa những từ khóa cho việc khai báo những kiểu lớp đối tượng mới và những phương thức hay thuộc tính của lớp và cho việc thực thi, đóng gói, kế thừa và đa hình

Một phần của tài liệu Hệ thống bãi giữ xe thông minh và access control ứng dụng công nghệ RFID (Có code) (Trang 59)