• Nenhum resultado encontrado

Ngoi Nha Thong Minh (1)

N/A
N/A
Protected

Academic year: 2021

Share "Ngoi Nha Thong Minh (1)"

Copied!
81
0
0

Texto

(1)

---o0o--- NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

Họ và tên sinh viên: Nguyễn Tiến Hưng Lớp: TD15A2.1

GVHD: ThS. Đỗ Hoàng Ngân Mi

I. Đề tài: "HỆ THỐNG GIÁM SÁT NGÔI NHÀ THÔNG MINH" II. Các tham số ban đầu:

- Nguồn cấp cho mạch động lực: 12V DC hoặc 220V AC - Nguồn cấp cho mạch điều khiển: 3.3V DC hoặc 5V DC

- Để phát hiện đối tượng và điều khiển các thiết bị sử dụng các bộ cảm biến, phần mềm blynk.

III. Nội dung cần khảo sát và thiết kế:

- Tổng quan về các hệ thống thông minh có trong thực tế.

- Tìm hiều một hệ thống điều khiển thông minh trong thực tế, từ đó tìm hiều quy trình công nghệ của một hệ thống điều khiển một đối tượng nào đó.

- Phân tích, đánh giá các mô hình của SV đã làm

- Thiết kế và chế tạo mô hình hệ thống giám sát ngôi nhà thông minh (điều khiển tối thiểu 5 đối tượng khác nhau, theo nhiệt độ, độ ẩm của đối tượng hoặc phạm vi giám sát)

- Phân tích, tính toán các bộ phận cơ khí và truyền động

- Tính chọn các phần tử và các thiết bị điều khiển, cảm biến … - Lập trình điều khiển hệ thống dùng arduino, esp8266

- Kết luận.

IV. Các phần cần phải làm và nộp: - Tập đồ án

- Bản vẽ sơ đồ nguyên lý A0.

- Đĩa CD gồm file Word đề tài và file Powerpoint - Mô hình chế tạo

V. Thời gian hoàn thành đồ án: 20 tháng 3 năm 2017

Kiểm tra tiến độ đồ án Đà Nẵng, ngày tháng 4 năm 2017 (Giáo viên HD ký mỗi lần SV đến Giáo viên hướng dẫn

(2)

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

(3)

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

(4)

LỜI NÓI ĐẦU

Ngày nay cùng với sự phát triển mạnh mẽ của các ngành khoa học kỹ thuật, công nghệ kỹ thuật điện tử mà trong đó là kỹ thuật tự động điều khiển đóng vai trò quan trọng trong mọi lĩnh vực khoa học kỹ thuật, quản lí, công nghiệp, cung cấp thông tin ... Do đó là một sinh viên chuyên ngành Điện tự động chúng ta phải biết nắm bắt và vận dụng nó một cách có hiệu quả nhằm góp phần vào sự phát triển nền khoa học kỹ thuật thế giới nói chung và trong sự phát triển kỹ thuật điện tử nói riêng. Bên cạnh đó còn là sự thúc đẩy sự phát triển của nền kinh tế nước nhà.

Như chúng ta đã biết,nhu cầu về cuộc sống ngày càng được nâng cao,nên nhu câu về sự tiện nghi trong ngôi nhà ở cũng không nằm ngoài xu thế đó. Ngoài ra các vụ việc đột nhập nhà ở không những gây thiệt hại lớn về tài sản của các gia đình mà còn tạo sự lo lắng cho nhiều người, ảnh hưởng đến an toàn trật tự của toàn xã hội.Theo khảo sát thì phần lớn các vụ trộm cắp tài sản của các gia đình chủ yếu xảy ra khi tất cả mọi người trong gia đình đều đã đi làm hoặc ngủ say. Nên có một hệ thống cảnh báo sẽ giảm được phần lớn thiệt hại. Các thiết bị trong nhà ở được điều khiển một cách tự động cũng như giám sát từ xa sẽ đem lại một cuộc sống thoải mái cho mọi thành viên trong gia đình.

Để giám sát được ngôi nhà và tài sản một cách 24/24 chúng ta cần phải có một phương tiện giám sát hiệu quả hơn, thông minh hơn.

Do đó, tôi chọn để tài “ Hệ thống giám sát ngôi nhà thông minh” làm đề tài tốt nghiệp của mình.

(5)

MỤC LỤC

LỜI NÓI ĐẦU ... 1

MỤC LỤC ... 2

CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI ... 6

1.1 VAI TRÒ VÀ ỨNG DỤNG CỦA ARDUINO HIỆN NAY ... 6

1.1.1 Giới thiệu về arduino... 6

1.1.2 Ứng dụng arduino trong thực tế ... 6

1.2 LÝ DO CHỌN ĐỀ TÀI ... 8

1.3 MỤC ĐÍCH CỦA ĐỀ TÀI ... 9

1.4 MỤC TIÊU VÀ PHẠM VI NGHIÊN CỨU ... 9

1.5 CÁC PHƯƠNG PHÁP NGHIÊN CỨU ... 9

CHƯƠNG 2: TỔNG QUAN VỀ HỆ THỐNG WIFI, GIỚI THIỆU CHIP ESP8622 VÀ BOARD ARDUINO UNO ... 10

2.1 GIỚI THIỆU VỀ CÔNG NGHỆ WIFI ... 10

2.1.1 Nguyên tắc hoạt động... 10

2.1.2 Các chuẩn kết nối ... 11

2.2 GIỚI THIỆU VỀ MODULE ESP8622 ... 14

2.2.1 Tổng quan về module esp8622 ... 14

2.2.2 Tính năng của chip esp8622 ... 14

2.2.3 Sơ đồ chân ... 15

2.2.4 Tập lệnh AT giao tiếp với Module ESP8266. ... 15

2.2.5 Các phương pháp kết nối thiết bị với esp8266 ... 17

2.3 GIỚI THIỆU VỀ BOARD ARDUINO ... 22

2.3.1 Cấu tạo phần cứng ... 22

2.3.2 Môi trường lập trình board mạch Arduino ... 23

2.3.3 Các loại Board mạch Arduino ... 23

2.3.5 Sơ đồ chân board arduino uno ... 26

2.3.6. Các thông số của board arduino uno ... 27

2.4 TỔNG QUAN VỀ PHẦN MỀM BLYNK ... 47

2.4.1 Giới thiệu phần mềm blynk ... 47

(6)

CHƯƠNG 3: THIẾT KẾ VÀ LẮP RÁP MÔ HÌNH NGÔI NHÀ THÔNG

MINH... 51

3.1 SƠ ĐỒ KHỐI TỔNG QUÁT CỦA HỆ THỐNG ... 51

3.2 KHỐI GIAO TIẾP MẠNG WIFI ... 52

3.3 KHỐI XỬ LÝ TRUNG TÂM ... 53 3.4 KHỐI CẢM BIẾN ... 54 3.4.2 Cảm biến nhiệt độ độ ẩm DHT22 ... 56 3.5 KHỐI CƠ CẤU CHẤP HÀNH ... 57 3.5.1 Rơ le ... 57 3.5.2 Động cơ servo ... 58 3.5.3 Còi báo động ... 60 3.5.4 Động cơ một chiều ... 61 3.6. KHỐI HIỂN THỊ LCD... 62 3.6.1Chức năng ... 62 3.6.2 Thiết kế: ... 63 3.7 KHỐI NGUỒN ... 65 CHƯƠNG 4. LẬP TRÌNH TRƯỜNG TRÌNH ĐIỀU KHIỂN ... 67

4.1 TRƯƠNG TRÌNH ĐIỀU KHIỂN ARDUINO ... 67

4.1.1 lưu đồ thuật toán ardiuno ... 67

4.1.2 Chi tiết trương trình điều khiển arduino ... 68

4.2 TRƯƠNG TRÌNH ĐIỀU KHIỂN ESP8266 ... 71

4.2.1 Lưu đồ thuật toán esp8266 ... 71

4.2.2 Chi tiết trương trình điều khiển esp8266 ... 72

CHƯƠNG 5. KIỂM TRA ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN ... 76

5.1. KIỂM TRA HỆ THỐNG ... 76

5.2. KẾT QUẢ ... 76

5.3 KẾT LUẬN ... 77

(7)

DANH MỤC CÁC HÌNH

Số hiệu

hình Tên hình Trang

1.1 Máy in 3D Makerbot điều khiển bằng Arduino Mega2560 7

1.2 Thiết bị UAV 7

1.3 Arduino Điều khiển nhà thông minh với Máy tính bảng và

smartphone 8

2.1 Nguyên tắc hoạt động của wifi 10

2.2 Các chuẩn kết nối wifi 11

2.3 Sơ đồ chân esp8622 15

2.4 Hình ảnh thực tế module esp8622 15

2.5 Kết nối Arduino Due và ESP-01 17

2.6 Kết nối với smartphone 18

2.7 Kết nối hai module esp8266 20

2.8 Lệnh AT kết nối hai esp8266 21

2.9 Sơ chân board Arduino Uno R3 26

2.10 Hình dạng thực tế board Arduino Uno R3 27

2.11 Sơ đồ chân của Atmega328 28

2.12 Arduino 31

2.13 Driver Software Installation. 31

2.14 Device Manager. 32

2.15 Right click và chọn ”Update Driver Software” 32 2.16 Click chọn “Browse my computer for driver software” 32

2.17 Driver 33 2.18 Arduino IDE. 33 2.19 Arduino Toolbar 34 2.20 IDE Menu 34 2.21 File menu. 34 2.22 Click Examples. 35 2.23 Edit menu 35 2.24 Sketch menu 36 2.25 Tool menu. 36

(8)

Số hiệu

hình Tên hình Trang

2.26 Chọn Board 37

2.27 Sơ đồ mạch ví dụ 1 38

2.28 Sơ đồ ví dụ 2 40

2.29. Led sáng dần từ led 1 đến led 10 và ngược lại. 42

2.30 Điều khiển tốc độ động cơ. 44

2.31 PWM 50%. 45

2.32 PWM 25%. 46

2.33 PWM 90%. 46

2.34 Giao diện điều khiển blynk 48

3.1 Sơ đồ tổng quát hệ thống 51

3.2 Hình ảnh thực tế esp8266 v12 52

3.3 Sơ đồ nối chân esp8266 52

3.4 Sơ đồ nối chân arduino 53

3.5 Cảm biến hồng ngoại 54

3.6: Sơ đồ nguyên lý khối thu phát hồng ngoại 56

3.7 Cảm biến DHT22 56

3.8 Module relay thực tế 57

3.9. Động cơ servo ngoài thực tế 59

3.10. Cấu tạo động cơ Servo 59

3.11 Cấu tạo chân vào ra động cơ servo 60

3.12 Đèn còi báo động 60

3.13 Động cơ một chiều 61

3.14 Cấu tạo động cơ một chiều 61

3.14 Nguyên lý hoạt động của động cơ DC 62

3.16 Khối hiển thị LCD 63

3.17 Sơ đồ mạch nguyên lý khối nguồn 65

(9)

CHƯƠNG I: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI

1.1 VAI TRÒ VÀ ỨNG DỤNG CỦA ARDUINO HIỆN NAY

1.1.1 Giới thiệu về arduino

Arduino: là một nền tảng mã nguồn mở được sử dụng để xây dựng các ứng dụng điện tử. Arduino gồm có board mạch có thể lập trình được ( thường gọi là vi điều khiển và các phần mềm hỗi trợ IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code và nạp chương cho board.

Arduino ngày nay rất phổ biến cho những người mới bắt đầu tìm hiểu về điện tử vì nó đơn giản, hiệu quả và dễ tiếp cận. Không giống như các loại vi điều khiển khác, Arduino không cần phải có các công cụ chuyên biệt để phục vụ việc nạp code, ví dụ để nạp code cho PIC cần phải có Pic Kit. Đối với Arduino rất đơn giản, ta có thể kết nối với máy tính bằng cáp USB.

Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY (là những người tự chế ra sản phẩm của mình) trên toàn thế giới trong vài năm gần đây, gần giống với những gì Apple đã làm được trên thị trường thiết bị di động. Số lượng người dùng cực lớn và đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại học đã làm cho ngay cả những người tạo ra chúng phải ngạc nhiên về m Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vị vua vào thế kỷ thứ 9 là King Arduin. Arduino chính thức được đưa ra giới thiệu vào năm 2005 như là một công cụ khiêm tốn dành cho các sinh viên của giáo sư Massimo Banzi, là một trong những người phát triển Arduino, tại trường Interaction Design Instistute Ivrea (IDII). Mặc dù hầu như không được tiếp thị gì cả, tin tức về Arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyền miệng tốt đẹp của những người dùng đầu tiên. Hiện nay Arduino nổi tiếng tới nỗi có người tìm đến thị trấn Ivrea chỉ để tham quan nơi đã sản sinh ra Arduino.

1.1.2 Ứng dụng arduino trong thực tế Máy in 3d

Một cuộc cách mạng khác cũng đang âm thầm định hình nhờ vào Arduino, đó là sự phát triển máy in 3D nguồn mở Reprap. Máy in 3D là công cụ giúp tạo ra các vật thể thực trực tiếp từ các file CAD 3D. Công nghệ này hứa hẹn nhiều ứng dụng rất thú vị trong đó có cách mạng hóa việc sản xuất cá nhân.

(10)

Hình 1.1 Máy in 3D Makerbot điều khiển bằng Arduino Mega2560 Thiết bị bay không người lái (UAV)

UAV là một ứng dụng đặc biệt thíchhợp với Arduino do chúng có khả năng xử lý nhiều loại cảm biến như Gyro, accelerometer, GPS…; điều khiển động cơ servo và cả khả năng truyền tín hiệu từ xa.

(11)

Điều khiển nhà thông minh (Smart Home)

Kết hợp với các module chức năng bluetooth hoặc wifi..., với các ứng dụng cài đặt trên máy tính bảng, smartphone hay trình duyệt web người dùng có thể thiết kế hệ thống điều khiển giám sát thông minh các thiết bị điện trong ngôi nhà của mình khi ở trong nhà hoặc từ bất cứ nới nào (được kết nối internet).

Hình 1.3 Arduino Điều khiển nhà thông minh với Máy tính bảng và smartphone 1.2 LÝ DO CHỌN ĐỀ TÀI

Kỹ thuật điều khiển và tự động hóa là ngành công nghệ liên quan đến việc ứng dụng các kỹ thuật cơ khí hiện đại, kỹ thuật điều khiển và kỹ thuật máy tính vào việc vận hành và điều khiển quá trình sản xuất.

Ngày nay, khi nhu cầu và thị hiếu con người ngày càng cao, yêu cầu về số lượng và chất lượng của các sản phẩm xã hội cũng không ngừng tăng, điều đó đòi hỏi các dây chuyền sản xuất trong công nghiệp ngày càng hiện đại, có mức độ tự động hóa ngày càng cao với việc sử dụng các kỹ thuật điều khiển hiện đại có trợ giúp của máy tính. Hệ thống điều khiển và tự động hóa có mặt trong mọi dây chuyền sản xuất của các ngành kinh tế khác nhau như: công nghiệp, nông nghiệp,

(12)

giao thông vận tải,…

Vì vậy một hệ thống điều khiển thông minh và hoàn toàn tự động là một xu thế tất yếu. Ưng dụng hệ thống thông minh vào điều khiển cac thiết bị nhà ở và sân vườn vẫn còn khá mới mẻ ở Việt Nam. Nhóm đã quyết ddingj chộn đề tài ngôi nhà thông minh để làm đề trài nguyên cứu của mình để đón đầu xu thế đó.

1.3 MỤC ĐÍCH CỦA ĐỀ TÀI

Nhóm xây dựng đề tài đã chọn theo hướng xây dựng hệ thống sử dụng arduino và esp8266 để quản lý ở nơi mà con người phải bỏ sức ra để thực hiện một công việc lặp đi lặp lại hằng ngày. Nhằm bỏ qua sự tác động của con người, con người sẽ không phải bận tâm quá nhiều đến việc quản lý ngôi nhà. Mang lại một cuộc sống thoải mái.

1.4 MỤC TIÊU VÀ PHẠM VI NGHIÊN CỨU

Nhóm thực hiện đề tài đã đặt ra mục tiêu nghiên cứu cụ thể như sau: tìm hiểu về nguyên tắc hoạt động của công nghệ số trên module Arduino và ESP8266. Biết cách ứng dụng trên ardunio IDE. Tìm hiểu hoạt động của cảm biến quang, cũng như cảm biến nhiệt độ và độ ẩm.

Do giới hạn về thời gian nghiên cứu cũng như kiến thức chuyên ngành nên nhóm thực hiện đề tài chỉ tập trung nghiên cứu một số vấn đề chính xoay quanh đề tài như: Tìm hiểu và cài đặt các công cụ hỗ trợ lập trình arduinon IDE. Tìm hiểu hoạt động của các thiết bị trong hệ thống.

1.5 CÁC PHƯƠNG PHÁP NGHIÊN CỨU

Chúng em khi thực hiện đề tài đã sử dụng các phương pháp nghiên cứu đề tài sau:

+ Phương pháp phân tích tổng hợp lý thuyết. + Phương pháp tham khảo tài liệu.

+ Phương pháp thực nghiệm. v Cụ thể:

+ Tìm hiểu Arduino phần cứng và tập lệnh

+ Viết chương trình điều khiển bằng phần mềm Arduino IDE + Thiết kế các bộ phận của mô hình

(13)

CHƯƠNG II: TỔNG QUAN VỀ HỆ THỐNG WIFI,

GIỚI THIỆU CHIP ESP8622 VÀ BOARD ARDUINO UNO

2.1 GIỚI THIỆU VỀ CÔNG NGHỆ WIFI

Wifi là viết tắt của từ Wireless Fidelity trong tiếng Anh, được gọi chung là mạng không dây sử dụng sóng vô tuyến. Wifi là loại sóng vô tuyến tương tự như sóng điện thoại, sóng truyền hình và radio. Hầu hết các thiết bị sử dụng điện tử hiện nay như : Smartphone, Máy tính bảng, Tivi, Laptop… đều có thể kết nối được Wi-Fi. Và Wifi là thứ gắn liền và không thể thiếu với đời sống của người dân trong hầu hết công việc cũng như giải trí hàng ngày

Kết nối Wifi dựa trên các loại chuẩn kết nối IEEE 802.11, và chủ yếu hiện nay Wifi hoạt động trên băng tần 54 Mbps và có tín hiệu mạnh nhất trong khoảng cách 100 feet gần 31 mét.

2.1.1 Nguyên tắc hoạt động

Hình 2.1 Nguyên tắc hoạt động của wifi

Truyền thông qua mạng không dây là truyền thông vô tuyến hai chiều.Cụ thể: Thiết bị adapter không dây (hay bộ chuyển tín hiệu không dây) của máy tính chuyển đổi dữ liệu sang tín hiệu vô tuyến và phát những tín hiệu này đi bằng một ăng-ten.

(14)

Thiết bị router không dây nhận những tín hiệu này và giải mã chúng. Nó gởi thông tin tới Internet thông qua kết nối hữu tuyến Ethernet.

Qui trình này vẫn hoạt động với chiều ngược lại, router nhận thông tin từ Internet, chuyển chúng thành tín hiệu vô tuyến và gởi đến adapter không dây của máy tính.

Sóng WIFI: Các sóng vô tuyến sử dụng cho WiFi gần giống với các sóng vô tuyến sử dụng cho thiết bị cầm tay, điện thoại di động và các thiết bị khác. Nó có thể chuyển và nhận sóng vô tuyến, chuyển đổi các mã nhị phân 1 và 0 sang sóng vô tuyến và ngược lại.

Tuy nhiên, sóng WiFi có một số khác biệt so với các sóng vô tuyến khác ở chỗ:

Chúng truyền và phát tín hiệu ở tần số 2.5 GHz hoặc 5GHz. Tần số này cao hơn so với các tần số sử dụng cho điện thoại di động, các thiết bị cầm tay và truyền

2.1.2 Các chuẩn kết nối

Hình 2.2 Các chuẩn kết nối wifi

Chúng truyền và phát tín hiệu ở tần số 2.4 GHz hoặc 5 GHz. Tần số này cao hơn so với các tần số sử dụng cho điện thoại di động, các thiết bị cầm tay và truyền hình. Tần số cao hơn cho phép tín hiệu mang theo nhiều dữ liệu hơn.

Chuẩn 802.11

IEEE 802.11 là một tập các chuẩn của tổ chức IEEE (tiếng Anh: Institute of Electrical and Electronic Engineers) bao gồm các đặc tả kỹ thuật liên quan đến hệ

(15)

thống mạng không dây. Chuẩn IEEE 802.11 mô tả một giao tiếp “truyền qua không khí” (tiếng Anh: over-the-air) sử dụng sóng vô tuyến để truyền nhận tín hiệu giữa một thiết bị không dây và tổng đài hoặc điểm truy cập (tiếng Anh: access point), hoặc giữa 2 hay nhiều thiết bị không dây với nhau.

Năm 1997, IEEE giới thiệu chuẩn mạng không dây đầu tiên và đặt tên nó là 802.11. Khi đó, tốc độ hỗ trợ tối đa của mạng này chỉ là 2 Mbps với bang tầng 2.4GHz.

Chuẩn 802.11b

IEEE đã mở rộng trên chuẩn 802.11 gốc vào tháng Bảy năm 1999, đó chính là chuẩn802.11b. Chuẩn này hỗ trợ băng thông lên đến 11Mbps, tương quan với Ethernet truyền thống.

802.11b sử dụng tần số vô tuyến (2.4 GHz) giống như chuẩn ban đầu 802.11. Các hãng thích sử dụng các tần số này để chi phí trong sản xuất của họ được giảm. Các thiết bị 802.11b có thể bị xuyên nhiễu từ các thiết bị điện thoại không dây (kéo dài), lò vi sóng hoặc các thiết bị khác sử dụng cùng dải tần 2.4 GHz. Mặc dù vậy, bằng cách cài đặt các thiết bị 802.11b cách xa các thiết bị như vậy có thể giảm được hiện tượng xuyên nhiễu này.

· Ưu điểm của 802.11b – giá thành thấp nhất; phạm vi tín hiệu tốt và không dễ bị cản trở.

· Nhược điểm của 802.11b – tốc độ tối đa thấp nhất; các ứng dụng gia đình có thể xuyên nhiễu.

Chuẩn 802.11a

Được phát triển song song cùng với chuẩn 802.11b, chuẩn 802.11a hỗ trợ tốc độ tối đa gần gấp 5 lần lên đến 54 Mpbs và sử dụng bằng tầng 5Ghz nhằm tránh bị nhiễu từ các thiết bị khác. Tuy nhiên, đây cũng là nhược điểm của chuẩn này vì phạm vi phát sẽ hẹp hơn (40-100m) và khó xuyên qua các vật cản như vách tường.

Chuẩn này thường được sử dụng trong các mạng doanh nghiệp thay vì gia đình vì giá thành của nó khá cao.

Chuẩn 802.11g

Năm 2003, chuẩn Wifi thế hệ thứ 3 ra đời và mang tên 802.11g. Chuẩn này được kết hợp từ chuẩn a và b. Được hỗ trợ tốc độ 54Mpbs như chuẩn a và sử dụng băng tầng 2.4GHz của chuẩn b vì vậy chuẩn này có phạm vi tín hiệu khá tốt (80-200m) và vẫn dễ bị nhiễu từ các thiết bị điện tử khác. Ngày nay, một số hộ gia đình vẫn còn sử dụng chuẩn này .

(16)

· Ưu điểm của 802.11g – tốc độ cao; phạm vi tín hiệu tốt và ít bị che khuất. · Nhược điểm của 802.11g – giá thành đắt hơn 802.11b; các thiết bị có thể bị xuyên nhiễu từ nhiều thiết bị khác sử dụng cùng băng tần.

Chuẩn 802.11n (hay 802.11 b/g/n)

Đây là chuẩn được sử dụng phổ biến nhất hiện nay và tương đối mới. Chuẩn WiFi 802.11n được đưa ra nhằm cải thiện chuẩn 802.11g bằng cách sử dụng công nghệ MIMO (Multiple-Input Multiple-Output) tận dụng nhiều anten hơn.

Chuẩn kết nối 802.11n hỗ trợ tốc độ tối đa lên đến 600 Mpbs, có thể hoạt động trên cả băng tần 2,4 GHz và 5 GHz, nếu router hỗ trợ thì hai băng tần này có thể cùng phát sóng song song. Chuẩn kết nối này đã và đang dần thay thế chuẩn 802.11g với tốc độ cao, phạm vi tín hiệu rất tốt (từ 100-250m) và giá thành đang ngày càng phù hợp với túi tiền người tiêu dùng.

· Ưu điểm của 802.11n – tốc độ nhanh và phạm vi tín hiệu tốt nhất; khả năng chịu đựng tốt hơn từ việc xuyên nhiễu từ các nguồn bên ngoài.

· Nhược điểm của 802.11n – chuẩn vẫn chưa được ban bố, giá thành đắt hơn 802.11g; sử dụng nhiều tín hiệu có thể gây nhiễu với các mạng 802.11b/g ở gần.

Chuẩn 802.11ac (hay chuẩn 802.11 a/b/g/n/ac)

Trong khoảng một năm trở lại đây chúng ta được nghe nhắc nhiều đến chuẩn Wi-Fi 802.11ac, hay còn gọi là Wi-Fi thế hệ thứ năm. Nó là chuẩn mạng không dây đang ngày càng xuất hiện nhiều hơn trên các router, máy tính và tất nhiên là cả các thiết bị di động như smartphone. So với Wi-Fi 802.11n đang được dùng phổ biến hiện nay, chuẩn 802.11ac mang lại tốc độ nhanh hơn.

Là chuẩn Wifi mới nhất được IEEE giới thiệu. Chuẩn ac có hoạt động ở băng tầng 5 GHz và tốc độ tối đa lên đến 1730 Mpbs khi sử dụng lại công nghệ đa anten trên chuẩn 802.11n cho người dùng trải nghiệm tốc độ cao nhất.

Hiện tại, chuẩn này được sử dụng trên một số thiết bị cao cấp của các hang điện thoại như Apple, Samsung, Sony,… Tuy nhiên, do giá thành khá cao nên các thiết bị phát tín hiệu cho chuẩn này chưa được phổ biến trên thị trường nên mặc dù các thiết bị này không hoạt động tối ưu khi sử dụng bởi sự hạn chế của các thiết bị phát.

Wifi Hotspot

Đây là tính năng mà thiết bị của bạn có thể phát sóng Wifi cho các thiết bị điện thoại, laptop, máy tính bảng khác. Nói cách khác tính năng này biến chiếc Smartphone thành một chiếc Modem wifi.

(17)

WiFi có thể hoạt động trên cả ba tần số và có thể nhảy qua lại giữa các tần số khác nhau một cách nhanh chóng. Việc nhảy qua lại giữa các tần số giúp giảm thiểu sự nhiễu sóng và cho phép nhiều thiết bị kết nối không dây cùng một lúc.

2.2 GIỚI THIỆU VỀ MODULE ESP8622 2.2.1 Tổng quan về module esp8622

Kít ESP8266 là kít phát triển dựa trên nền chíp Wifi SoC ESP8266 với thiết kế dễ dàng sửa dụng vì tích hợp sẵn mạch nạp sử dụng chíp CP2102 trên borad. Bên trong ESP8266 có sẵn một lõi vi sử lý vì thế bạn có thể trực tiếp lập trình cho ESP8266 mà không cần thêm bất kì con vi sử lý nào nữa. Hiện tại có hai ngôn ngữ có thể lập trình cho ESP8266, sử dụng trực tiếp phần mềm IDE của Arduino để lập trình với bộ thư viện riêng hoặc sử dụng phần mềm node MCU

Module ESP8266 là module wifi giá rẻ và được đánh giá rất cao cho các ứng dụng liên quan đến Internet và Wifi cũng như các ứng dụng truyền nhận sử dụng thay thế cho các module RF khác.

ESP8266 là một chip tích hợp cao, được thiết kế cho nhu cầu của một thế giới kết nối mới, thế giới Internet of thing (IOT). Nó cung cấp một giải pháp kết nối mạng Wi-Fi đầy đủ và khép kín, cho phép nó có thể lưu trữ các ứng dụng hoặc để giảm tải tất cả các chức năng kết nối mạng Wi-Fi từ một bộ xử lý ứng dụng.

ESP8266 có xử lý và khả năng lưu trữ mạnh mẽ cho phép nó được tích hợp với các bộ cảm biến, vi điều khiển và các thiết bị ứng dụng cụ thể khác thông qua GPIOs với một chi phí tối thiểu và một PCB tối thiểu.

2.2.2 Tính năng của chip esp8622 § SDIO 2.0, SPI, UART

§ 32-pin QFN ( Chip esp8266)

§ Tích hợp RF switch, balun, 24dBm PA, DCXO, and PMU

§ Tích hợp bộ xử lý RISC, trên chip bộ nhớ và giao diện bộ nhớ bên ngoài § Tích hợp bộ vi xử lý MAC / baseband

§ Chất lượng quản lý dịch vụ

§ Giao diện I2S cho độ trung thực cao ứng dụng âm thanh

§ On-chip thấp học sinh bỏ học điều chỉnh tuyến tính cho tất cả các nguồn cung cấp nội bộ

§ Kiến trúc giả miễn phí thế hệ đồng hồ độc quyền § Tích hợp WEP, TKIP, AES, và các công cụ WAPI

(18)

2.2.3 Sơ đồ chân

Hình 2.3 Sơ đồ chân esp8622

UTXD (TX) – chân truyền tín hiệu của module nối với chân RX của vi điều khiển URXD(RX) – chân truyền tín hiệu của module nối với chân RX của vi điều khiển RST – chân reset cứng của module. Reset xảy ra khi tín hiệu xuống mức thấp GPIO0, GPIO2, CH_PD nối với mức cao.

VCC: Nối với 3.3V GND: Nối với 0V

Hình 2.4 Hình ảnh thực tế module esp8622 2.2.4 Tập lệnh AT giao tiếp với Module ESP8266.

Khi sử dụng giao tiếp UART để gửi lệnh AT đến Module ESP 8266, chúng ta phải gửi kềm kí tư <CR><LF> để báo kết thúc lệnh.

Lệnh Kiểm tra kết nối: AT.

Kết quả trả về: OK nếu kết nối không bị lỗi. Lệnh Reset module: AT + RST.

(19)

Trả về: Ready sau khi reset thành công module. Lệnh kiểm tra phiên bản module: AT+GMR. Trả về môt dãy số là mã phiên bản module.

Lệnh cài đặt module hoạt động ở chế độ trạm phát wifi, điểm truy cập wifi: AT+CWMODE=3.

Trả về: Ok sau khi cài đặt thành công.

Lệnh tìm các mạng wifi đang có: AT+CWLAP.

Kết quả trả về là danh sách các mạng wifi mà module có thể bắt được. Lệnh truy cập vào mạng wifi khác.

AT+CWJAP=”<access_point_name>”,”<password>” Sau khi truy cập thành công, trả về : Ok.

Lệnh lấy đỉa chỉ IP của module. AT+CIFSR. Trả về một dãy số là địa chỉ IP của module.

Lệnh đặt tên và mật khẩu cho mạng wifi do module ESP8266 phát ra: AT+CIFSR=”tên_mang”,”mật_khẩu”,3,0.

Có thể sử dụng module ESP8266 ở hai chế độ: TCP Client hoặc TCP sever. Cài đặt module hoạt động ở chế độ TCP Client.

Cho phép module hoạt động ở chế độ đa kết nối, bằng cách gửi lệnh: AT+CIPMUX=1.

Sử dụng lệnh CIPSTART để chọn kênh kết nối (0-4), phương thức truyền(TCP/UDP), địa chỉ IP của website (or domain) và cổng kết nối. ví dụ: AT+CIPSTART=4,”TCP”,”google.com”,80

nếu thành công, module trả về: ok Linked.

Sử dụng lệnh AT + CIPSEND để báo kênh truyền và số byte của địa chỉ websever mình cần lấy dữ liệu

ví dụ: địa chỉ: “ GET / HTTP/1.0\r\n\r\n” có 18 byte. sẽ phải gửi lệnh: AT + CIPSEND=4,18.

Sau khi gửi lệnh này, module sẽ trả về dấu “>”.

Đến đây chúng ta sẽ gửi địa chỉ của websever mà chúng ta cần lấy dữ liệu. GET / HTTP/1.0

Module sẽ trả về SEND OK.

Và sau đó module sẽ trả về một loạt dữ liệu module nhận được từ web sever. (Chuỗi json: JavaScript Object Notation) , phân tích chuỗi json này để lấy được dữ liệu cần

(20)

thiết.

2.2.5 Các phương pháp kết nối thiết bị với esp8266

2.2.5.1 Truyền dữ liệu với wed server

Với demo này, chúng ta sẽ lập trình Arduino gửi AT commands để module ESP-01 thành 1 thiết bị Wifi, kết nối vào mạng Wifi xung quanh, gửi lệnh PING lên 1 web server và nhận response từ web server đó.

Về phần cứng, chúng ta sẽ kết nối Arduino Due và ESP-01 như hình sau:

Hình 2.5 kết nối Arduino Due và ESP-01

Công việc còn lại là lập trình board Due trên Arduino IDE để gửi các lệnh AT command cần thiết.

Flow chương trình trên Arduino sẽ như sau:

· Gửi lệnh “AT” để kiểm tra kết nối module với ESP-01 và đợi nhận “OK” từ ESP8266

· Gửi lệnh “AT+CWMODE=1” để module ESP-01 hoạt động như 1 thiết bị Wifi

· Gửi lệnh “AT+CWJAP=\”<tên mạng wifi>\”,\”<password>\” ” để chọn mạng Wifi và password để kết nối

Các bạn có thể thay thế <tên mạng wifi> và <password> tương ứng với mạng Wifi của mình nha

Sau khi lệnh này, chúng ta cần đợi vài giây để module ESP-01 tìm và kết nối vào mạng Wifi đã chọn, trong code chúng ta có thể đợi đến khi nhận được“OK” từ ESP8266

(21)

· Nhận PING response từ module ESP-01

2.2.5.2 Giao tiếp smarphone dùng esp8266

Trong demo này, chúng ta sẽ tạo 1 ứng dụng trong đó smartphone sẽ trao đổi dữ liệu với thiết bị có ESP8266. Chúng ta có thể sử dụng 1 wifi router trung gian giữa 2 thiết bị Wifi là ESP8266 và smartphone. Cách khác đơn giản và hiệu quả hơn là sử dụng ESP8266 như là 1 rounter để kết nối với smartphone, do đó sẽ không cần router trung gian nữa. Chúng ta sẽ chọn cách đơn giản bằng cách sử dụng module ESP-01 như 1 Access Point để smartphone có thể kết nối vào mạng Wifi tạo bởi module ESP-01. Đồng thời chúng ta cũng tạo TCP server và UDP server trên ESP8266 để truyền nhận dữ liệu với smartphone thông qua các port TCP, UDP

Về phần cứng chúng ta sẽ sử dụng board Arduino ATmega2560, module ESP-01 và iPhone như hình bên dưới:

Hình 2.6 kết nối với smartphone

2.2.5.3 Truyền dữ liệu TCP với smartphone

Các lệnh AT commands được sử dụng theo thứ tự như sau:

· Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01 · Gửi lệnh “AT+CWMODE=2” để module ESP-01 hoạt động như 1 Access Point

· Gửi lệnh “AT+CWSAP=\”ESP_HTelectronics\”,\”\”,5,0″ đẻ tạo mạng Wifi tên là “ESP_HTelectronics”, không security và không password

· Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP

· Gửi lệnh “AT+CIPSERVER=1,1234” để tạo 1 TCP server, port 1234 trên module ESP-01

(22)

· Liên tục kiểm tra dữ liệu nhận được từ port 1234 gửi lên từ ESP-01 và xử lý dữ liệu tương ứng

· Sau khi nạp code vào board ATmega2560, chúng ta sẽ dùng smartphone kết nối với module ESP-01 trong Wifi setting, sau đó mở app WIFI TCP Test Tool để truyền/nhận dữ liệu với board Arduino

Trên phone, chúng ta sẽ connect vào TCP port 1234 đã được mở trong ESP8266 và gửi dòng text “Who are you”, khi ESP-01 nhận được sẽ trả lời “I’m ESP_HTelectronics” lên smartphone và chúng ta thấy hiện trong phần Received data của app. Với nguyên lý này, chúng ta có thể tạo thiết bị IoT sử dụng ESP8266 để giao tiếp trực tiếp với Smartphone.

2.2.5.4 Truyền dữ liệu UDP với smartphone

Tương tự như demo trên, nhưng chúng ta sẽ thử truyền dữ liệu thông qua UDP server trên ESP8266

Các lệnh AT commands được sử dụng theo thứ tự như sau:

· Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01 · Gửi lệnh “AT+CWMODE=2” để module ESP-01 hoạt động như 1 Access Point

· Gửi lệnh “AT+CWSAP=\”ESP_HTelectronics\”,\”\”,5,0″ đẻ tạo mạng Wifi tên là “ESP_HTelectronics”, không security và không password

· Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP

· Gửi lệnh “AT+CIPSTART=0,\”UDP\”,\”255.255.255.255\”,1234,1234,2″ để tạo 1 UDP server, port 1234 trên module ESP-01

· Liên tục kiểm tra dữ liệu nhận được từ port 1234 gửi lên từ ESP-01 và xử lý dữ liệu tương ứng

Tương tự như demo trên, chúng ta sẽ mở app WIFI UDP Test Tool để truyền nhận dữ liệu với board ATmega2560 thông qua ESP-01

2.2.5.5 Giao tiếp giữa hai module ESP8266

Chúng ta đã đi qua 2 demo sử dụng 2 chế độ hoạt động của ESP8266 là chế độ thiết bị Wifi và chế độ Access Point. Trong phần demo này chúng ta sẽ tạo 1 ứng dụng trong đó 2 board arduino sẽ giao tiếp trực tiếp với nhau qua mạng Wifi được tạo bởi ESP8266. Chúng ta có thể ứng dụng demo này trong các mạng wireless sensor trong đó các thiết bị IoT là các node và nói chuyện trực tiếp với nhau mà không cần smartphone hay router hay web server ở trung gian.

(23)

board ATmega2560 và board Due cùng với 2 module ESP-01 như hình bên dưới:

Hình 2.7 kết nối hai module esp8266

Chúng ta sẽ lập trình board Due truyền AT commands để xác lập module ESP-01 thành 1 Access Point và 1 UDP server; và lập trình board ATmega truyền AT commands để xác lập module ESP-01 thành 1 thiết bị Wifi. Hai module ESP8266 sẽ kết nối trực tiếp với nhau và truyền/nhận dữ liệu thông qua UDP server/client.

Các lệnh AT commands truyền từ board Due như sau:

· Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01 · Gửi lệnh “AT+CWMODE=2” để module ESP-01 hoạt động như 1 Access Point

· Gửi lệnh “AT+CWSAP=\”ESP_HTelectronics\”,\”\”,5,0″ đẻ tạo mạng Wifi tên là “ESP_HTelectronics”, không security và không password

· Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP

· Gửi lệnh “AT+CIPSTART=0,\”UDP\”,\”255.255.255.255\”,1234,1234,2″ để tạo 1 UDP server, port 1234 trên module ESP-01

· Liên tục kiểm tra dữ liệu nhận được từ port 1234 gửi lên từ ESP-01 và xử lý dữ liệu tương ứng

(24)

· Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01 · Gửi lệnh “AT+CWMODE=1” để module ESP-01 hoạt động như 1 thiết bị Wifi · Gửi lệnh “AT+CWJAP=\”ESP_HTelectronics\”,\”\”” để kết nối vào mạng Wifi “ESP_HTelectronics” được tạo bởi thiết bị bên board Due. Sau lệnh này chúng ta cần đợi vài giây để module ESP-01 kết nối vào mạng Wifi. Chúng ta sẽ liên tục nhận dữ liệu từ ESP8266 đến khi nhận được “OK”

· Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP

· Gửi lệnh “AT+CIPSTART=0,\”UDP\”,\”192.168.4.1\”,1234,1234,2″ để kết nối vào UDP server, port 1234 trên server có địa chỉ IP là 192.168.4.1 Lưu ý địa chỉ IP mặc định của ESP8266 là 192.168.4.1, do đó chúng ta có thể hardcode trong code của UDP client. Nếu ESP8266 bên UDP Server thay đổi địa chỉ IP thì chúng ta cần thay đổi bên UDP client để 2 module ESP-01 có thể kết nối UDP với nhau

· Gửi dữ liệu là text “Who are you” vào UDP port đã kết nối · Nhận dữ liệu truyền lại từ UDP server bên board Due

Dưới đây là cửa sổ COM của board Due và board ATmega2560 khi hoạt động:

Hình 2.8 Lệnh AT kết nối hai esp8266

Done! Chúng ta đã demo quá trình nạp firmware cung cấp sẵn cho ESP8266 để hoạt động như 1 wifi độc lập và thực hiện 3 demo cho việc sử dụng AT commands để điều khiển module ESP-01 trong các ứng dụng giao tiếp qua mạng Wifi. Thông qua các demo, chúng ta có thể dùng ESP8266 để kết nối web server

(25)

trên internet thông qua 1 wireless router trong nhà, hoặc giao tiếp trực tiếp với smartphone, hoặc giao tiếp lẫn nhau trong 1 mạng wireless network. Tất cả chức năng trên có thể được thực hiện bằng cách gửi các lệnh AT commands đơn giản, dễ hiểu. Nếu chúng ta muốn thêm tính năng giao tiếp wifi cho 1 thiết bị có sẵn thì sử dụng firmware có sẵn của ESP8266 là tối ưu và tiết kiệm thời gian nhất; nhưng nếu chúng ta muốn sử dụng ESP8266 vừa giao tiếp wifi, vừa điều khiển thiết bị thì cần phải lập trình 1 firmware mới dùng bộ thư viện SDK của Espressif.

2.3 GIỚI THIỆU VỀ BOARD ARDUINO 2.3.1 Cấu tạo phần cứng

Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác. Một khía cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết nối với CPU của board với các module thêm vào có thể dễ dàng chuyển đổi, được gọi là shield. Vài shield truyền thông với board Arduino trực tiếp thông qua các chân khách nhau, nhưng nhiều shield được định địa chỉ thông qua serial bus I²C-nhiều shield có thể được xếp chồng và sử dụng dưới dạng song song. Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, và ATmega2560. Một vài các bộ vi xử lý khác cũng được sử dụng bởi các mạch Aquino tương thích. Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz (hoặc bộ cộng hưởng ceramic trong một vài biến thể), mặc dù một vài thiết kế như LilyPad chạy tại 8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do hạn chế về kích cỡ thiết bị. Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot loader cho phép đơn giản là upload chương trình vào bộ nhớ flash on-chip, so với các thiết bị khác thường phải cần một bộ nạp bên ngoài. Điều này giúp cho việc sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như là một bộ nạp chương trình.

Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board được lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy thuộc vào đời phần cứng. Các board Serial Arduino có chứa một mạch chuyển đổi giữa RS232 sang TTL. Các board Arduino hiện tại được lập trình thông qua cổng USB, thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232. Vài biến thể, như Arduino Mini và Boarduino không chính thức, sử dụng một board adapter hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các

(26)

phương thức khác. (Khi sử dụng một công cụ lập trình vi điều khiển truyền thống thay vì ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.)

Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng cho những mạch ngoài. Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân I/O kỹ thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6 chân input analog, có thể được sử dụng như là 6 chân I/O số. Những chân này được thiết kế nằm phía trên mặt board, thông qua các header cái 0.10-inch (2.5 mm). Nhiều shield ứng dụng plug-in cũng được thương mại hóa. Các board Arduino Nano, và Arduino-compatible Bare Bones Board và Boarduino có thể cung cấp các chân header đực ở mặt trên của board dùng để cắm vào các breadboard.

Có nhiều biến thể như Arduino-compatible và Arduino-derived. Một vài trong số đó có chức năng tương đương với Arduino và có thể sử dụng để thay thế qua lại. Nhiều mở rộng cho Arduino được thực thiện bằng cách thêm vào các driver đầu ra, thường sử dụng trong các trường học để đơn giản hóa các cấu trúc của các 'con rệp' và các robot nhỏ. Những board khác thường tương đương về điện nhưng có thay đổi về hình dạng-đôi khi còn duy trì độ tương thích với các shield, đôi khi không. Vài biến thể sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức độ tương thích khác nhau.

2.3.2 Môi trường lập trình board mạch Arduino

Thiết kế board mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại nhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm. Môi trường lập trình đơn giản dễ sử dụng, ngôn ngữ lập trình Wiring dễ hiểu và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.

Môi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Linux. Do có tính chất nguồn mở nên môi trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm

Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++. Và do ngôn ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùng hoàn toàn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn.

2.3.3 Các loại Board mạch Arduino

(27)

vào hoặc xuất tín hiệu ra là tùy bạn. 6 chân tương tự đầu vào 5V, độ phân giải 1024 mức. Tốc độ 16MHz, điện áp vào từ 7~12V, chân số có thể cấp điện áp ra 5V và 1A, nếu bạn điều khiển chân số ra tiêu tốn quá 1A thì Board sẽ bị hỏng.Kích thước broad5,5x7cm.

Arduino Micro Board này có thiết kế nhỏ, dành cho các không gian lắp đặt nhỏ, nhẹ. kích thước khoảng 5x2cm. Board này giống với Arduino Uno. Có 20 chân số, trong đó có 7 chân có thể phát xung PWM. 12 chân tương tự. Arduino Pro/Pro Micro Nhìn chung thiết kế giúp Arduino Uno. Có 2 loại, 3.3V và 5V. Nó không được thiết kế chân sẵn nên khi sử dụng bạn có thể hàn trực tiếp nhằm tiết kiệm không gian.

Arduino Nano Board này có kích thước nhỏ nhất. gồm 14 chân số (6 chân PWM) và 8 chân tương tự. Kích thước khoảng 2x4cm. Nhỏ gọn, dễ lắp đặt ở bất kỳ đâu.

Sau đây là các Board có thiết kế cao cấp hơn:

Arduino Mega Có thiết kế hoạt động tương tự Arduino UNO, tuy nhiên có số lượng chân vào ra lớn với 54 chân Số (14 chân PWM), 16 chân tương tự và 4 cổng truyền nối tiếp (RS232) dễ dàng giao tiếp với các board, thiết bị khác. Kích thước 5x10cm.

Arduino Leonardo Đây là board có thiết kế giống Arduino Micro, sự khác biệt lớn nhất giữa nó và các board khác là nó không có cổng USB dành cho việc lập trình. Mọi thứ được đặt trong 1 chip điều khiển, cho phép giao tiếp thông qua cổng COM ảo và cho phép nó giao tiếp với chuột và phím máy tính dễ dàng. Không giống như các Board khác, khi cổng nối tiếp mở thì nó sẽ không bị reset, để gỡ rối cho chương trình thì bạn cần giao tiếp qua lệnh Serial.prints() trong hàm Setup(). Arduino Due Đây là Board có thiết kế lớn và xấu nhất trong tất cả các Board, nó hoạt động ở điện áp 3.3V. Các chân số có mức logic ở 3,3V nên khi giao tiếp bạn cần phải nâng áp để có thể giao tiếp bình thường. Gồm 54 chân số ( 12 chân tương tự). 4 cổng nối tiếp tương tự Arduino Mega. Nó chạy bộ xử lý 32bit, 84MHz. nó xử lý nhanh hơn gấp 5 lần so với các Board arduino khác. Xử lý chương trình nhanh hơn 10 lần. Vì vậy nó đọc các chân đầu vào và đáp ứng nhanh hơn. Arduino Ethernet Như tên của nó, nó là 1 Arduino giống chức năng với UNO tuy nhiên nó được tích hợp Module Ethernet trong nó. có tích hợp thẻ SD.

(28)

2.3.4 Khả năng ghép nối của Arduino.

2.3.4.1 Ghép nối với các cảm biến.

Tất cả những cảm biến ghép nối được với vi điều khiển thì cũng ghép nối được với Arduino. Các cảm biến phổ biến gồm:

Cảm biến nước, cảm biến nhiệt đô/ độ ẩm, cảm biến hồng ngoại/ ánh sáng, cảm biến màu, cảm biến rung, cảm biến âm thanh, cảm biến siêu âm, cảm biến khí, cảm biến áp suất, cảm biến chuyển động, cảm biến khoảng cách, cảm biến dòng điện, cảm biến góc/ gia tốc, cảm biến Hall, cảm biến từ trường, cảm biến quang điện...

2.3.4.2 Ghép nối với các module chức năng.

Nếu có kiến thức và kỹ năng về thiết kế mạch điện tử người sử dụng có thể tự thiết kế các module chức năng ghép nối với Arduino. Tuy nhiên việc này đòi hỏi tốn thời gian chưa tính đến việc thiết kế bị lỗi phải thực chỉnh sửa và làm mới lại gây lãng phí.

Cộng đồng phát triển Arduino thiết kế và sản xuất hàng loạt các module chuẩn để kết nối với các Board mạch Arduino. Điều này giúp cho người thiết kế phần cứng "nhàn rỗi" hơn trong việc thiết kế và làm mạch in cho các ứng dụng và người sử dụng không phải bận tâm về các sai sót trong thiết kế phần cứng. Hiện nay có các module phổ biến sau:

- Module LED, LCD. - Module đo thông số điện. - Module nguồn. - Module RF. - Module Bluetooth. - Module wifi. - Module Xbee. - Module GSM/ GPRS/ 3G/ GPS. - Module Finger Printer.

- Module Driver. - Module Keypad. - Module Relay. - Module Thời gian....

(29)

2.3.5 Sơ đồ chân board arduino uno

(30)

Hình 2.10 Hình dạng thực tế board Arduino Uno R3 2.3.6. Các thông số của board arduino uno

2.3.6.1. Thông số kỹ thuật

Vi điều khiển ATmega328 họ 8bit

Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)

Tần số hoạt động 16 MHz

Dòng tiêu thụ khoảng 30mA

Điện áp vào khuyên dùng 7-12V DC

Điện áp vào giới hạn 6-20V DC

Số chân Digital I/O 14 (6 chân hardware PWM)

Số chân Analog 6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O 30 mA

Dòng ra tối đa (5V) 500 mA

Dòng ra tối đa (3.3V) 50 mA

Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader

SRAM 2 KB (ATmega328)

(31)

2.3.6.2 I/O Pins

Sơ đồ chân của vi điều khiển ATmega328P

Hình 2.11 Sơ đồ chân của Atmega328

· Digital: Các chân I/O digital (chân số 2 – 13 ) được sử dụng làm chân nhập, xuất tín hiệu số thông qua các hàm chính : pinMode(), digitalWrite(), digitalRead(). Điện áp hoạt động là 5V, dòng điện qua các chân này ở chế độ bình thường là 20mA, cấp dòng quá 40mA sẽ phá hỏng vi điều khiển.

· Analog :Uno có 6 chân Input analog (A0 – A5), độ phân giải mỗi chân là 10 bit (0 – 1023 ). Các chân này dùng để đọc tín hiệu điện áp 0 – 5V (mặc định) tương ứng với 1024 giá trị, sử dụng hàm analogRead().

· PWM : các chân được đánh số 3, 5, 6, 9, 10, 11; có chức năng cấp xung PWM (8 bit) thông qua hàm analogWrite().

· UART: Atmega328P cho phép truyền dữ liệu thông qua hai chân 0 (RX) và chân 1 (TX).

(32)

2.3.6.3 Bộ nhớ

Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:

32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu.

2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.

1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM.

2.3.6.4 Các cổng vào ra

Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối).

Một số chân digital có các chức năng đặc biệt như sau:

· 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết

· Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.

· Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.

· LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.

(33)

Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.

Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.

2.3.6.5 Nguồn

Có hai cách cấp nguồn chính cho bo mạch Uno: cổng USB và jack DC.

Giới hạn điện áp cấp cho Uno là 6 – 20V. Tuy nhiên, dải điện áp khuyên dùng là 7 – 12 V (tốt nhất là 9V). Lý do là nếu nguồn cấp dưới 7V thì điện áp ở ‘chân 5V’ có thể thấp hơn 5V và mạch có thể hoạt động không ổn định; nếu nguồn cấp lớn hơn 12V có thể gấy nóng bo mạch hoặc phá hỏng.

Các chân nguồn trên Uno:

- Vin : chúng ta có thể cấp nguồn cho Uno thông qua chân này. Cách cấp nguồn này ít được sử dụng.

- 5V : Chân này có thể cho nguồn 5V từ bo mạch Uno. Việc cấp nguồn vào chân này hay chân 3.3 V đều có thể phá hỏng bo mạch.

- 3.3V : Chân này cho nguồn 3.3 V và dòng điện maximum là 50mA. - GND: chân đất.

2.3.6.6 Trương trình arduino IDE

2.3.6.6.1 Cài đặt chương trình Arduino IDE

Các bạn truy cập vào trang web http://arduino.cc/en/Main/Software và tải về chương trình Arduino IDE phù hợp với hệ điều hành của máy mình bao gồm Windown, Mac OS hay Linux. Đối với Windown có bản cài đặt (.exe) và bản Zip, đối với Zip thì chỉ cần giải nén và chạy chương trình không cần cài đặt.

(34)

Hình 2.12 Arduino 2.3.6.6.2. Cài đặt Driver

Sử dụng cáp USB kết nối Arduino với máy tính, lúc này bạn sẽ thấy đèn led power của bo sáng. Máy tính sẽ nhận dạng thiết bị và bạn sẽ nhận được thông báo:

“Device driver software was not successfully installed”

Hình 2.13 Driver Software Installation.

Bây giờ bạn click vào Start Menu chọn Control Panel kế đến chúng ta chọn System and Security, click System và sau đó chọn Device Manager.

(35)

Hình 2.14 Device Manager.

Chúng ta sẽ thấy cảnh báo màu vàng thiếu driver trên Arduino. Click chuột phải trên Arduino Uno icon sau đó chọn “Update Driver Software”

Hình 2.15 Right click và chọn ”Update Driver Software” Chọn “Browse my computer for driver software”.

(36)

Chọn đường dẫn tới folder “driver” nơi mà phần mềm Arduino được lưu trữ.

Hình 2.17 Driver

Click “Next” Windown tự động cài đặt driver, qua trình cài đặt driver hoàn tất. 2.3.6.6.3. Arduino IDE

Arduino IDE là nơi để soạn thảo code, kiểm tra lỗi và upload code cho arduino

(37)

Arduino Toolbar: có một số button và chức năng của chúng như sau :

Hình 2.19 Arduino Toolbar Verify : kiểm tra code có lỗi hay không

Upload: nạp code đang soạn thảo vào Arduino New, Open, Save : Tạo mới, mở và Save sketch

Serial Monitor : Đây là màn hình hiển thị dữ liệu từ Arduino gửi lên máy tính Arduino IDE Menu:

Hình 2.20 IDE Menu File menu:

(38)

Trong file menu chúng ta quan tâm tới mục Examples đây là nơi chứa code mẫu ví dụ như: cách sử dụng các chân digital, analog, sensor … Hình 11: Click Examples.

Hình 2.22 Click Examples. Edit menu:

(39)

Sketch menu

Hình 2.24 Sketch menu Trong Sketch menu :

Verify/ Compile : chức năng kiểm tra lỗi code. Show Sketch Folder : hiển thị nơi code được lưu.

Add File : thêm vào một Tap code mới. Import Library : thêm thư viện cho IDE

Tool memu:

Hình 2.25 Tool menu.

Trong Tool menu ta quan tâm các mục Board và Serial Port

Mục Board : các bạn cần phải lựa chọn bo mạch cho phù hợp với loại bo mà bạn sử dụng nếu là Arduino Uno thì phải chọn như hình:

(40)

Hình 2.26 Chọn Board

Nếu các bạn sử dụng loại bo khác thì phải chọn đúng loại bo mà mình đang có nếu sai thì code Upload vào chip sẽ bị lỗi.

Serial Port: đây là nơi lựa chọn cổng Com của Arduino. Khi chúng ta cài đặt driver thì máy tính sẽ hiện thông báo tên cổng Com của Arduino là bao nhiêu, ta chỉ việc vào Serial Port chọn đúng cổng Com để nạp code, nếu chọn sai thì không thể nạp code cho Arduino được.

2.3.6.6.1 Các nhóm hàm cơ bản

Một chương trình hiển thị trên cửa sổ giao diện được gọi là sketch.Sketch được tạo từ hai hàm cơ bản là setup () và loop () :

- Setup() : Hàm này được gọi khi một sketch khởi động, được sử dụng để khởi tạo biến, đặt các chế độ chân ( nhận hay xuất

tín hiệu ), khởi động một thư viện … Hàm setup() chỉ chạy một lần, sau khi cấp nguồn hoặc reset mạch.

- Loop(): Sau khi khởi tạo hàm setup(), hàm loop() sẽ được khởi tạo và thiết lập các giá trị ban đầu. Như tên gọi,

hàm loop tạo các vòng lặp liên tục, có cho phép sự thay đổi và đáp ứng. Chức năng tương tự như vòng lặp while() trong C,

(41)

Ví dụ1 : Cấu trúc cơ bản một chương trình: // Ví dụ nhấp nháy led 1s

// các hàm sử dụng : setup(); loop(); pinMode(); digitalWrite(); delay(); // hàm setup() : quy định chức năng các chân sử dụng

void setup() {

// đặt chân số 13 là chân xuất tín hiệu. pinMode(13, OUTPUT);

}

// hàm loop : các câu lệnh trong hàm sẽ được chạy liên tục theo chu kỳ. void loop() {

digitalWrite(13, HIGH); // bật LED bằng cách đưa tín hiệu điện áp // chân 13 lên mức cao (HIGH)

delay(1000); // tạo trễ 1000 ms = 1s

digitalWrite(13, LOW); // tắt LED bằng cách đưa tín hiệu điện áp chân // 13 xuống mức thấp (LOW).

delay(1000); // trễ 1s }

// kết thúc chương trình.

(42)

Ví dụ 2: Bật tắt led bằng nút bấm // bật tắt led bằng nút bấm

// thêm phần khai báo biến // gán tên cho các chân sử dụng :

const int buttonPin = 2; // chân số 2 : buttonPin const int ledPin = 13; // chân số 13 : ledPin // khai báo các biến

int buttonState = 0; // biến đọc trạng thái của nút nhấn void setup() {

// khởi tạo chân ledPin là OUTPUT pinMode(ledPin, OUTPUT); // khởi tạo chân button là INPUT pinMode(buttonPin, INPUT); }

void loop()

// đọc trạng thái nút nhấn và gán giá trị cho biến buttonState buttonState = digitalRead(buttonPin);

// dùng hàm if kiểm tra trạng thái nút nhấn // nếu nhấn nút : buttonState = HIGH if (buttonState == HIGH) { // bật LED digitalWrite(ledPin, HIGH); } else { // tắt LED digitalWrite(ledPin, LOW); } }

(43)

Hình 2.28 Sơ đồ ví dụ 2 2.3.6.6.2 Các nhóm cấu trúc lệnh cơ bản

Các chương trình Arduino có thể được chia thành : nhóm cấu trúc, nhóm biến và hằng , nhóm hàm.

Trên trang Arduino.cc có đầy đủ và chi tiết các hàm, lệnh, phép toán cùng cách thức sử dụng cũng như các ví dụ đi kèm. Chúng ta sẽ tìm hiểu các hàm cơ bản trước : setup() ; loop () ; pinMode() ; digitalRead(); digitalWrite(); analogWrite() ; …

Một vài ví dụ:

Mỗi hàm, lệnh hay thuật ngữ trong phần này đều được giải thích rất ngắn gọn, rõ ràng, dễ dàng áp dụng.

- Hàm pinMode(pin, mode):thiết lập một chân cụ thể là chân nhận hay xuất tín hiệu.

Trong đó: pin là chân sẽ được thiết lập; mode là một trong các chế độ INPUT. OUTPUT hoặc INPUT_PULLUP (Arduino 1.0.1)

(44)

Ví dụ :

int ledPin =13; // Led được nối với chân số 13

void setup () {

pinMode ( ledPin, OUTPUT); // thiết lập cho chân ledPin là chân

//xuất tín hiệu

}

void loop () {

… }

Hàm digitalRead(pin): đọc giá trị từ một chân digital. Trong đó: pin là chân digital mà chúng ta muốn đọc Giá trị trả về : HIGH hoặc LOW

Ví dụ :

int ledPin = 13; // nối Led với chân số 13 int inPin = 7; // nối nút nhấn với chân số 7

int val = 0; // biến để ‘lưu tạm ’ giá trị đọc được void setup(){

pinMode(ledPin, OUTPUT); // thiết lập chân số 13 là chân xuất ` // tín hiệu.

pinMode(inPin, INPUT); // thiết lập chân số 7 là chân nhận tín // hiệu

}

void loop(){

val = digitalRead(inPin); // đọc giá trị từ chân inPin và gán cho // biến val

digitalWrite(ledPin, val); // }

(45)

2.3.6.7 Giao tiếp Arduino với một số linh kiện điện tử.

2.3.6.7.1 Led sáng dần từ led 1 đến led 10 và ngược lại.

Hình 2.29. Led sáng dần từ led 1 đến led 10 và ngược lại. Code chương trình. byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; int direction = 1; int currentLED = 0; void setup() { for (int x=0; x<10; x++) { pinMode(ledPin[x], OUTPUT);} } void loop() { for (int x=0; x<10; x++) { digitalWrite(ledPin[x], LOW);

(46)

} digitalWrite(ledPin[currentLED], HIGH); currentLED += direction; if (currentLED == 9) {direction = -1;} if (currentLED == 0) {direction = 1;} delay(500); } Giải thích chương trình.

Trong Project này chúng ta sử dụng 10 chân digital để điều khiển 10 led, để cho chương trình ngắn gọn thì ở đây tôi sử dụng mảng 1 chiều gồm 10 phần tử trong đó chứa 10 vị trí chân led mà ta sử dụng trong project

byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; Tiếp tục khai báo 2 biến integer là :

int direction = 1; int currentLED = 0;

Trong hàm setup() tôi sử dụng một vòng lặp để định nghĩa mode cho các chân led. Tôi nghĩ là không khó để hiểu được các câu lệnh này.

Tiếp theo là hàm loop(), đầu tiên tôi tắt tất cả các led bằng các câu lệnh: for (int x=0; x<10; x++) {

digitalWrite(ledPin[x], LOW);}

Sau đó cho sáng led đầu tiên bằng câu lệnh : digitalWrite(ledPin[currentLED], HIGH);

Vì ta đã khai báo currentLED = 0 nên mãng sẽ truy xuất phần tử đầu tiên trong mãng có giá trị là 4 vì thế led ở vị trí chân digital số 4 sẽ sáng.

currentLED += direction;

Tăng currentLED lên 1 đơn vị ( direction =1 ). Vòng lặp tiếp theo sẽ là led ở chân digital 5 sáng và cứ như thế cho đến led ở chân số 13 sáng, thì lúc này currentLED == 9, câu lệnh “ if (currentLED == 9) {direction = -1;}” sẽ thực hiện và led sẽ sáng ngược lại từ led 10 xuống led thứ 1.

Hai câu lệnh :

if (currentLED == 9) {direction = -1;} if (currentLED == 0) {direction = 1;}

dùng để quy định chiều sáng của led là tăng dần hay giảm dần. Nếu là Led thứ 10 sang thì tiếp theo sẽ giảm xuống led thứ 9 và ngược lại nếu led thứ 0 sang thì chu

(47)

kỳ tiếp theo led 1 sẽ sáng. 2.3.6.7.2 Điều khiển tốc độ động cơ bằng PWM. Hình 2.30 Điều khiển tốc độ động cơ. Code chương trình. int potPin = 0; int transistorPin = 9; int potValue = 0; void setup() { pinMode(transistorPin, OUTPUT);} void loop() { potValue = analogRead(potPin) / 4; analogWrite(transistorPin, potValue); } Giải thích chương trình.

Như trong sơ đồ mạch ta thấy biến trở được nối với chân A0, transistor được nối với chân số 9 thông qua điện trở 1k. Như vậy ta khai báo 2 biến chứa vị trí chân

(48)

cho biến trở và transistor. int potPin = 0;

int transistorPin = 9;

Biến integer potValue chứa giá trị đọc được từ chân A0. int potValue = 0

Một câu hỏi đặt ra ở đây là nếu chúng ta không kết nối transistor điều khiển động cơ vào chân số 9 mà thay vào đó là chân số 1 hoặc 2 để điều khiển tốc độ động cơ thì có được không ?.

Câu trả lời là Không. Vậy tại sao Không ?

Tôi sẽ trả lời câu hỏi này sau. Nhưng trước hết tôi nói về PWM. PWM (pulse width modulation) là phương pháp điều chế dựa trên sự thay đổi độ rộng của chuổi xung dẫn đến sự thay đổi điện áp ra.

Để tạo ra được PWM trên Arduino thì chúng ta sử dụng lệnh analogWrite(Pin, Value);

Trong đó:

Pin: là vị trí chân, đối với Arduino Uno thì chỉ có các chân 3, 5, 6, 9, 10 & 11 mới có chức năng tạo PWM. Vậy chúng ta có thể trả lời được câu hỏi bên trên, các chân digital còn lại của có thể đọc hoặc xuất 2 giá trị là 0 và 1 mà thôi.

Value: Giá trị nằm trong khoảng 0 đến 255.

Để hiểu rõ hơn về PWM tôi sẽ minh hoạ qua ví dụ sau.

Nếu tôi sử dụng lệnh analogWrite(transistorPin, 127); thì dạng xung ở chân 9 ( transistorPin = 9) sẽ như hình dưới và giá trị trung bình ngõ ra sẽ là 2,5V (50% ).

Hình 2.31 PWM 50%.

Referências

Documentos relacionados

Municipal de Cinfães, determina, nos termos e para efeitos do disposto no nº 5 do artigo 61º do Código dos Contratos Públicos, e de acordo com a informação do Júri do

Vale destacar que para realizar o cálculo das horas úteis, considerou- se o período remanescente da licença maternidade de uma das auditoras (de janeiro a maio de

Para Mar- tinelli e Almeida (1997 apud MILLS), as 07 etapas de uma negociação são: preparar-se, explorar as necessidades, sinalizar a movimentação, testar propostas, trocar

Trindade MLZH, Caldas MA, Ramires JAF, Rochitte CE, Tsutsui JM, Nicolau JC, Mathias W Avaliação da extenção transmural do infarto agudo do miocárdio pela ecocardiografia com

Como resultado do mapeamento das atividades diárias e da definição das atividades definidas como críticas ao trabalho dos colaboradores avaliados, foram

Desde 1920, pesquisadores brasileiros e estrangeiros têm efetuado coleta de germoplasma das espécies e raças silvestres de algodoeiro do Brasil. hirsutum L raça marie

Após a identificação do ZIKV no Brasil e a declaração de emergência em saúde pública muitos trabalhos científicos trataram do tema sobre zika em relação aos aspectos

Foi oferecido um minicurso voltado para alunos da sétima série do Ensino Fundamental em uma escola da rede pública de ensino de Ceilândia, a fim de discutir e comparar as médias