GIAO TIẾP SDCARD

Một phần của tài liệu Thiết kế, thi công hộp điều khiển các thiết bị điện trong nhà (Trang 33)

Chƣơng 2 : CƠ SỞ LÝ THUYẾT

2.3 GIAO TIẾP SDCARD

a. Thẻ nhớ SD

Thẻ nhớ chuẩn SD (Secure Digital) là định dạng thẻ đƣợc phát minh bởi Panasonic và đƣợc phát triển bởi liên minh giữa Panasonic, SanDisk và Toshiba vào năm 2000. Hiệp hội này đƣợc thành lập nhằm mục tiêu đƣa ra tiêu chuẩn thẻ nhớ tốt hơn cho thiết bị cầm tay . Sƣ̉ du ̣ng dễ dàng trong lƣu trữ dữ liệu .Hiện tại có 3 tiêu chuẩn thẻ SD phổ biến là microSD, SDHC và SDXC tƣơng thích với hầu hết thiết bị.

Thẻ SDHC “High Capacity” (dung lƣợng lớn) đƣợc giới thiệu vào năm 2008, đánh dấu bƣớc phát triển mới cho dịng thẻ nhớ SD. Mức dung lƣợng lƣu trữ có thể từ 4 MB đến 64 GB.. Thẻ SDXC “Extended Capacity” (dung lƣợng mở rộng). Giới hạn lƣu trữ đƣợc mở rộng từ 64 GB lên 2000 GB (2 TB).

Bảng 2.2. Chƣ́c năng chân SDcard

MMC Pin Mini SDPin Micro SD Pin

Name I/O Logic Description

1 1 1 2 nCS I PP SPI Card Select [CS] 2 2 2 3 DI I PP SPI Serial Data in

[MOSI]

3 3 3 VSS S S Ground

4 4 4 4 VDD S S Power

5 5 5 5 CLK I PP SPI Serial Clock [SCK]

6 6 6 6 VSS S S Ground

7 7 7 7 DO O PP SPI Serial Data Output [MISO] 8 8 8 NC nIRQ . O . OD

Unused (memory card) Interrupt (SDIO card)

9 9 1 NC . . Unused

10 NC . . Reserved

11 NC Reserved

b. Truyền dẫn giữa SPI và Sdcard

- Lệnh truyền dữ liệu từ SPI của vi điều khiển đến SDcard có độ dài cố định 6 byte đƣợc

Hình 2.15.Dạng sóng truyền dữ liều khi giao tiếp Sdcard. Bảng 2.3. Mơ tả các bít truyền dữ liệu SDcard. Bảng 2.3. Mơ tả các bít truyền dữ liệu SDcard.

Vị trí bit 47 46 [45- 40] [39 – 8] [7 – 1] 0 Kích thƣớc 1 1 6 32 7 1 Giá trị 0 1 x x x 1 Mô tả Start bit Transmittion

bit

Command

index argument CRC7

End bit

Bảng 2.4. Bảng mã lệnh khi giao tiếp SDcard.

Mã lệnh Kí hiệu Mơ tả

CMD0 GO_IDLE_STATE Reset thẻ về trạng thái IDE.

CMD1 SEND_OP_CODE Yêu cầu thẻ gửi nội dung thông tin của Operating Condition Regiters.

CMD8 SEND_EXT_CSD Yêu cầu thẻ gửi thông tin các thanh ghi CSD(Card Specific Data) dƣới dạng block dữ liệu.

CMD9 SEND_CSD Yêu cầu thẻ gửi thông tin cụ thể của thanh ghi CSD.

CMD10 SEND_CID Yêu cầu gửi các thông tin CID(Card Information Data).

CMD12 STOP_TRANSMISSION Ngƣng trao đổi dữ liệu.

CMD16 SET_BLOCKLEN Thiết lập độ lớn tính theo byte của một block dữ liệu, giá trị mặc này đƣợc lƣu trong CSD.

CMD17 READ_SINGLE_BLOCK Đọc một block dữ liệu. CMD18 READ_MULTIPLE_BLO

CK

Đọc nhiều block dữ liệu. Số lƣợng block đƣợc thiết lập bởi lệnh CMD23.

CMD23 SET_BLOCK_COUNT Thiết lập số lƣợng block dữ liệu để ghi hoặc đọc.

CMD24 WRITE_BLOCK Ghi một block dữ liệu. CMD25 WRITE_MULTIPLE_BL

OCK

Ghi nhiều block dữ liệu. Số lƣợng block đƣợc thiết lập bởi lệnh CMD23.

CMD55 APP_CMD Thông báo cho thẻ nhớ lệnh tiếp theo là lệnh riêng của ứng dụng chứ không phải là lệnh chuẩn.

c. Khởi tạo Sdcard:

Ở trạng thái không hoạt động (Idle) Sdcard chỉ chấp nhận mã lệnh CMD0, CMD1, CMD41, CMD58.Các bƣớc khởi tạo Sdcard :

- Gửi lệnh CMD1 đƣa Sdcard rời trạng thái IDE.

- Nếu muốn thay đổi độ dài của khối dữ liệu thì gửi lệnh CMD16,mặc định là 512 Byte.

Quá trình truyền nhận dữ liệu giữa vi điều khiển và Sdcard:

- Trong quá trình trao đổi dữ liệu, một hoặc nhiều khối dữ liệu sẽ đƣợc gửi hoặc nhận sau đáp ứng lệnh.

- Một khối dữ liệu sẽ đƣợc vận chuyển giống nhƣ một gói dữ liệu bao gồm 3 trƣờng: Data Tocken, Data Block, CRC.

Đọc một khối dữ liệu:

- Tham số (argument) trong lệnh CMD17 xác định địa chỉ bắt đầu của khối dữ liệu cần đọc.

- Sau khi vi điều khiển nhận đƣợc một Data Token thích hợp, bộ điều khiển sẽ bắt đầu nhận dữ liệu và 2 bytes CRC theo sau Data token.

- Vi điều khiển phải nhận 2 bytes CRC mặc dù có thể khơng dùng đến nó. - Nếu có lỗi xuất hiện, thì Error token sẽ đƣợc nhận thay vì Data packet.

Sơ đồ đọc một khối dữ liệu trên Sdcard đƣợc trình bày nhƣ hình 2.16

Hình 2.16.Đọc một khối dữ liệu trên Sdcard.

Đọc nhiều khối dữ liệu:

Hình 2.17.Đọc nhiều khối dữ liệu trên Sdcard.

- Tham số lệnh CMD18 xác định địa chỉ bắt đầu của một dãy khi dữ liệu liên tiếp. - Khi lệnh CMD18 đƣợc chấp nhận, hoạt động đọc khối dữ liệu sẽ đƣợc diễn ra, dữ

- Sau khi Host nhận đƣợc Response thích hợp, bộ điều khiển sẽ bắt đầu nhận dữ liệu.

- Hoạt động nhận dữ liệu chỉ kết thúc khi gửi lệnh CMD12, dữ liệu nhận đƣợc theo sau lệnh CMD12 khơng có ý nghĩa, do đó nó cần đƣợc bỏ qua trƣớc khi nhận Respose cho lệnh CMD12.

2.5 PHƢƠNG PHÁP ĐIỀU CHỈNH ĐIỆN ÁP XOAY CHIỀU MỘT PHA.

Điều chỉnh độ sáng đèn tức là điều chỉnh điện áp qua đèn bằng cách điều khiển góc mở triac kết hợp PWM từ vi điều khiển. Trong một chu kỳ của sóng điện áp AC, một

thyristor (triac) sẽ chỉ cho phép một phần điện áp qua đèn, nhƣ hình bên dƣới: a) b)

Hình 2.18.Dạng sóng điện áp trong phƣơng pháp điều chỉnh điện áp xoay chiều.

Cả hai dạng sóng trên đều xuất phát từ một mạch điện, khác nhau đó là dạng sóng hình a) đèn sẽ sáng hơn hình b), đó là vì triac hình a) dẫn sớm hơn. Thời điểm mà triac bắt đầu dẫn gọi là góc mở α và đƣợc tính từ gốc điểm 0 của điện áp AC. Điểm này là điểm khi điện áp bằng 0V và xuất hiện 2 lần trong mối chu ký sóng AC. α càng nhỏ thì triac dẫn sớm hơn do đó đèn sáng hơn và ngƣợc lại góc mở α lớn thì triac dẫn trễ hơn, đèn sáng yếu. Một chu kỳ sóng đầy đủ là 3600 (2Π), vì điện áp bằng 0V xảy ra 2 lần trong một

chu kỳ, nên α có thể thay đổi từ 0-1800 (0- Π), khi α = 0o, toàn bộ điện áp sẽ chạy qua tải, và khi α = 180o sẽ khơng có điện áp qua tải.

Mạch phát hiện điểm 0:

Hình 2.19.Mạch điều chỉnh độ sáng cơ bản dùng vi xử lý

Mạch phát hiện điểm 0 là phần quan trọng nhất khi thiết kế mạch điều chỉnh độ sáng đèn. Mạch này có nhiệm vụ phát hiện dạng sóng điện áp vào khi sóng này đi qua điểm 0V, đồng thời ngõ ra của mạch sẽ xuất một xung gửi về vi xử lý báo hiệu phát hiện điểm 0, lúc này xử lý sẽ nhảy vào chƣơng trình ngắt, tính tốn gửi các xung kích góc mở triac.

Giả sử điện áp AC có chu ký 50Hz, tức là mỗi chu kỳ sẽ mất 1/50 = 20ms, trong mỗi 20ms, dạng sóng sẽ qua điểm 0V hai lần, một ở đầu và một ở giữa chu kỳ (10ms). Khoảng thời gian từ 1-10ms sẽ quyết định độ sáng đèn, ví dụ, nếu ta muốn đèn sáng một nữa, thì vi điều khiển phải gửi một xung ở giữa mỗi nữa chu kỳ. Nhƣ vậy, một xung phải đƣợc gửi sau 5ms kể từ dạng sóng vào đi qua điểm 0 để kích mở triac.

2.6 TÌM HIỂU VỀ HỆ ĐIỀU HÀNH ANDROID 2.6.1 Khái niệm Android 2.6.1 Khái niệm Android

Android là hệ thống tuần tự các phần mềm cho thiết bị di động bao gồm hệ điều hành, các trình điều khiển phần cứng và các ứng dụng cơ bản.

Hình 2.20.Kiến trúc hệ điều hành Android

Kiến trúc hệ điều hành chính là các thành phần (component), các lớp (layer) cấu nên một hệ điều hành và các thành phần hay các lớp này phải có mối quan hệ với nhau về cấp bậc và chúng phải đƣợc thể hiện rõ trong sơ đồ kiến trúc.

Thì kiến trúc hệ điều hành chia làm 5 lớp chính là lớp ứng dụng (Application), lớp khung ứng dụng (Application Framework), lớp thƣ viện (Libraries), lớp thực thi Android (Android Runtime), lõi Linux (Linux Kernel).

2.6.2.1 Lớp ứng dụng (Application)

Android đã bao gồm một bộ các ứng dụng chính nhƣ trình nhận email, trình nhận tin SMS, lịch, bản đồ, trình duyệt web, danh bạ và các chƣơng trình phụ trợ khác. Tất cả các ứng dụng sử dụng ngôn ngữ lập trình Java.

Nhờ Android cung cấp nền tảng phát triển mở, các nhà phát triển có thể xây dựng các ứng dụng đa dạng và sáng tạo. Các nhà phát triển có thể dùng các phần cứng thiết bị, lấy thơng tin vị trí, chạy ngầm các dịch vụ, thiết lập cảnh báo, thêm thông báo vào thanh trạng thái và nhiều cái khác nữa.

Các nhà phát triển có thể tác động sâu vào khung API mà các ứng dụng chính đang dùng. Kiến trúc ứng dụng đƣợc thiết kế đơn giản để tái sử dụng lại cácthành phần trong ứng dụng đó.

Tất cả các ứng dụng nền là một bộ các dịch vụ và hệ thống, bao gồm các thành phần chính:

View System:đa dạng và có thể tùy biến bao gồm: danh sách (listView), lƣới

(gridView), textbox, nút (Button), và các View khác.

Content Provider: cho phép ứng dụng lấy dữ liệu từ ứng dụng khác hay chúng chia sẽ dữ liệu với nhau, ..v..v...

Resource Manager: cho phép truy xuất các nguồn tài nguyên cục bộ nhƣ chuỗi

tĩnh, hình ảnh và tập tin khai báo giao diện, ..v..v...

Notification Manager: cho phép ứng dụng trình bày cảnh báo trên thanh trạng

thái.

Activity Manager: quản lý vòng đời ứng dụng. 2.6.2.3 Lớp thƣ viện (Libraries)

Hệ điều hành Android cung cấp cho các ứng dụng hệ thống và cho các nhà phát triển một bộ thƣ viện viết bằng ngôn ngữ C/C++. Để sử dụng thƣ viện này các nhà phát triển phải thông qua khung ứng dụng (Application Framework).

Thƣ viện bao gồm các thành phần đáng quan tâm:

Surface Manager: quản lí giao diện bao gồm lớp giao diện 2D và 3D.

Media Framework: một bộ thƣ viện hỗ trợ đọc, ghi lại nhiều định dạng âm

thanh, video, hình ảnh nhƣ: MPEG4, MP3, AAC, JPG, PNG..v..v...

SQLite: hệ thống cơ sở dữ liệu có kích thƣớc nhỏ nhƣng mạnh mẽ cho tất cả ứng

dụng.

SGL: hệ thống đồ họa 2D cơ sở.

Libc: thƣ viện hệ thống C đƣợc rút ra từ thƣ viện hệ thống C chuẩn. 2.6.2.4 Lớp thực thi Android (Android Runtime)

Android sử dụng máy ảo Dalvik để chạy các ứng dụng viết bằng ngôn ngữ Java. Máy ảo Dalvik là là máy ảo đƣợc tinh chỉnh dành riêng cho thiết bị di động chạy trên nền Android. Khác với máy ảo Java chạy trên các thiết bị di động có hỗ trợ Java đời cũ, máy ảo Dalvik có thể giúp thiết bị chạy nhiều máy ảo cùng lúc (thể hiện tính Đa Nhiệm).

Máy ảo Dalvik chạy nhiều tập tin định dạng .dex đƣợc tối ƣu hóa cho máy có bộ nhớ thấp. Máy ảo Dalvik lệ thuộc vào lõi Linux cho các tính năng cơ bản nhƣ là luồng và quản lý bộ nhớ mức độ thấp.

2.6.2.5 Lõi Linux (Linux Kernel)

Android dựa trên nền Linux phiên bản 2.6 cho các chƣơng trình hệ thống chính nhƣ an ninh, quản lý bộ nhớ, quản lý tiến trình, mạng và mẫu trình điều khiển thiết bị.

Nhân Linux cũng đóng vai trị nhƣ là lớp ảo giữa phần cứng và phần còn lại của kiến trúc Android.

2.6.3 Sơ lƣợc về lập trình ứng dụng cho android 2.6.3.1 Ngơn ngữ lập trình 2.6.3.1 Ngơn ngữ lập trình

Ngơn ngữ lập trình chính thức của Android là Java. Mặc dù các ứng dụng trên

Android đƣợc phát triển dựa trên nền tảng Java, nhƣng Android không hỗ J2ME và J2SE, là hai ngơn ngữ lập trình phổ dụng cho các thiết bị di độngdựa trên máy ảo Java của Sun.

2.6.3.2 Mơi trƣờng lập trình cho Android

Android SDK bao gồm các công cụ riêng lẻ nhƣ: debugger, các thƣ viện, trình giả lập điện thoại Android, các tài liệu hỗ trợ và code mẫu.

Mơi trƣờng lập trình (IDE) chính thức của Android là Eclipse (từ phiên bản 3.2) với sự hỗ trợ của plugin Android Development Tools (ADT). Tuy nhiên, ngƣời lập trình có thể sử dụng bất kỳ một IDE hay trình soạn thảo văn bản nào để viết code Java và XML rồi biên dịch nên ứng dụng hồn chỉnh bằng cách sử dụng dịng lệnh (command lines).

Ứng dụng Android đƣợc đóng gói thành các file .apk và đuợc lƣu trong thƣ mục /data/app của hệ điều hành Android.Java Development Kit (JDK) 5.0.

2.6.4Các thành phần cơ bản của một ứng dụng android 2.6.4.1 Activity

Là thành phần quan trọng nhất của bất kỳ một ứng dụng Android nào. Thuật ngữ Activity chỉ một việc mà ngƣời dùng có thể thực hiện trong một ứng dụng Android. Do gần nhƣ mọi activity đều tƣơng tác với ngƣời dùng, lớp Activity đảm nhận việc tạo ra một cửa sổ (window) để ngƣời lập trình đặt lên đó một giao diện ngƣời dùng với setContentView(View). Một activity có thể mang nhiều dạng khác nhau: Một cửa sổ toàn màn hình (full screen window), một cửa sổ floating (với windowsIsFloating) hay nằm

Hình 2.21.Vịng đời của activity 2.6.4.2 Intent 2.6.4.2 Intent

Intent đƣợc sử dụng với phƣơng thức startActivity() để mở một Activity, và dùng với broadcastIntent để gởi nó đến bất kì BroadcastReceiver liên quan nào, và dùng với startService(Intent), bindService(Intent, ServiceConnection, int) để giao tiếp với các Service chạy dƣới nền.

Intent cung cấp một chức năng cho phép kết nối hai chƣơng trình khác nhau trong quá trình thực thi (runtime) (Cung cấp khả năng cho phép hai chƣơng trình khác nhau giao tiếp với nhau). Chức năng quan trọng và đƣợc sử dụng nhiều nhất của một Intent là mở một Activity, nơi mà nó có thểđƣợc dùng nhƣ một vật kết nối các Activity lại với nhau (Truyền thông tin giữa hai Activity khác nhau).

Hình 2.22.Sử dụng Intent để trao đổi thơng tin giữa hai chƣơng trình 2.6.4.3 Service 2.6.4.3 Service

Một service là một thành phần của ứng dụng, thể hiện mong muốn ứng dụng thực hiện các hành động trong khi không tƣơng tác với ngƣời dùng hoặc cung cấp chức năng cho các ứng dụng khác sử dụng. Nói một cách đơn giản, service là các tác vụ (task) chạy ngầm dƣới hệ thống nhằm thực hiện một nhiệm vụ nào đó. Mỗi class Service phải chứa thẻ <service> đƣợc khai báo trong file AndroidManifext.xml. Services có thể đƣợc bắt đầu bởi Context.startService() và Context.bindservice()

Cũng nhƣ các đối tƣợng của ứng dụng khác, services chạy trên luồng (Thread) của tiến trình chính. Có nghĩa là nếu service dự định chạy các hành vi có cƣờng độ lớn hoặc các hành vi có thể gây nghẽn mạch, nó sẽ tự sinh ra luồng (Thread) của chính nó để làm

Hình 2.23.Vịng đời của service 2.6.4.4 View 2.6.4.4 View

View là thành phần cơ bản để xây dựng giao diện ngƣời dùng cho 1 ứng dụng Android. View là 1 lớp căn bản của widgets (widgets đƣợc dùng để tạo các nút nhấn, text fields,...).

Chƣơng 3 THIẾT KẾ HỆ THỐNG HỆ THỐNG

3.1THIẾT KẾ HỆ THỐNG 3.1.1 Sơ đồ khối hệ thống 3.1.1 Sơ đồ khối hệ thống

Theo mục đích, nhiệm vụ của để tài nhóm đã thiết kế sơ đồ khối trong hình 3.1

Hình 3.1.Sơ đồ khối của hệ thống.

Hệ thống gồm 7 khối:

 Khối điều khiển ARM Cortex M3 STM32F103VET6 có chức năng nhận, xử lý tín hiệu từ cảm biến, điều khiển màn hình GLCD và xuất ngõ ra điều khiển mạch công suất.

 Khối đọc SD CARD: đọc, giải mã file hình ảnh, âm thanh mp3.

 Khối hiển thị dùng GLCD 7” hiển thị nhiệt độ, thời gian, trạng thái thiết bị, giao tiếp với ngƣời dùng.

 Khối giải mã và phát nhạc Mp3 VS1003B.

 Khối công suất điều khiển các ngõ ra 220V, đồng thời cung cấp nguồn cho GLCD và khối điều khiển.

KHỐI ĐIỀU KHIỂN KHỐI PHÁT NHẠC KHỐI SD CARD KHỐI HIỂN THỊ KHỐI CẢM BIẾN KHỐI CÔNG SUẤT KHỐI BLUETOOTH 0

 Khối cảm biến nhiệt độ, độ ẩm.

 Khối giao tiếp bluetooth với điện thoại Android dùng module HC-05.

3.1.2 Thiết kế khối mạch cơng suất.

Mục đích của mạch cơng suất là dùng để cung cấp nguồn điện cho mạch điều khiển và màn hình LCD. Ngồi ra cịn có 8 ngõ ra 220VAC và một ngõ ra 0-12VDC.

Mạch công suất gồm các khối sau:

+ Khối mạch nguồn xung 220VAC12VDC-2A. + Khối mạch nguồn 12VDC5VDC.

+ Khối mạch phát hiện điểm 0. + Khối các ngõ ra 220VAC. + Khối ngõ ra 012VDC.

3.1.2.1 Mạch nguồn 12V/2A

Mạch nguồn 12V sử dụng module nguồn xung với các thông số: + Điện áp vào 100-240VAC.

+ Tần số 50-50Hz. + Ngõ ra 12VDC-2A.

+ Độ gợn nhiễu điện áp 100mVpp. + Hiệu suất: 80%.

+ Nhiệt độ hoạt động: 0-50ºC.

Hình 3.2.Module nguồn xung 12V-2A.

3.1.2.2 Mạch nguồn 5V/3A

Hình 3.3.Mạch nguồn 5V sử dụng LM2576.

Các yêu cầu: VINmax = 15V, VOUT = 5V, ILOAD(max) = 3A.

Mạch sử dụng IC LM2567-5V,với ngõ vào 12V lấy từ mạch nguồn xung.

LM2576 là loại IC nguồn switching rất thông dụng trên thị trƣờng và có khả năng hoạt động đƣợc với điện áp vào lên tới 40V đối với các loại thông thƣờng hoặc tới 57V

Một phần của tài liệu Thiết kế, thi công hộp điều khiển các thiết bị điện trong nhà (Trang 33)

Tải bản đầy đủ (PDF)

(87 trang)