Sơ đồ nguyên lý kết nối Arduino Uno với LCD

Một phần của tài liệu Mô hình nhà thông minh dùng ARDUINO và ESP8266 (Trang 73)

Chân SCL là chân dùng để tạo xung clock để chân SDA truyển dữ liệu từ bộ xử lý trung tâm sang LCD để hiển thị.

d. Module đọc RFID RC522 Thông số kĩ thuật: ▪ Điện áp: 3.3V ▪ Dòng điện:13-26mA ▪ Tần số hoạt động: 13.56MHz ▪ Khoảng cách hoạt động: 0 ~ 60 mm

▪ Cổng giao tiếp: SPI, tốc độ tối đa 10Мbps

▪ Kích thước: 40мм х 60мм

▪ Có khả năng đọc và ghi

Cách kết nối dây giữa Arduino Uno với module đọc RC522, được thể hiện trong hình 4.12 dưới đây:

- Chân RST của RC522 được nối vào chân số 8 của Arduino Uno

- Chân MISO của RC522 được nối vào chân số 12 của Arduino Uno

- Chân MOSI của RC522 được nối vào chân số 11 của Arduino Uno

- Chân SCK của RC522 được nối vào chân số 13 của Arduino Uno

- Chân SDA của RC522 được nối vào chân số 9 của Uno - Chân 3,3V của RC522 nối lên nguồn VCC và chân

GND của RC522 được nối với GND.

Hình 4.12: Sơ đồ nguyên lý kết nối Module đọc RFID vào Arduino Uno

- SDA(SS) chân lựa chọn chip khi giao tiếp SPI (kích hoạt mức thấp).

- SCK: chân xung trong chế độ SPI.

- MOSI(SDI): Master Data Out – Slave In trong chế độ giao tiếp SPI.

- MISO(SDO): Master Data In – Slave Out trong chế độ giao tiếp SPI.

- GND: chân nối mass. - RST: chân reset lại module. - VCC: nguồn 3.3V.

e. Còi Buzzer và đèn báo

Cịi Buzzer 5VDC có tuổi thọ cao, hiệu suất ổn định, chất lượng tốt, được sản xuất nhỏ gọn phù hợp thiết kế với các mạch còi buzzer nhỏ gọn, mạch báo động.

Đèn báo là led màu xanh lá và đỏ để báo trạng thái của hệ thống khi có tín hiệu từ ngồi vào hệ thống.

Thông số kỹ thuật buzzer:

▪ Nguồn: 3.5V - 5.5V

▪ Dòng điện tiêu thụ: <25mA

▪ Tần số cộng hưởng: 2300Hz ± 500Hz ▪ Biên độ âm thanh: >80 dB

▪ Nhiệt độ hoạt động: -20 °C đến +70 °C ▪ Kích thước: Đường kính 12mm, cao 9,7mm

Cách nối dây giữa Buzzer, led với Arduino Uno được thể hiện trong hình 4.14 dưới đây:

Hình 4.14: Sơ đồ ngun lý kết nối giữa cịi(buzzer) vào Arduino

Để buzzer hoạt động ổn định thì dịng cung cấp khá quan trọng để âm thanh phát ra được ổn định nên cần nối vào một con transitor lấy nguồn từ nguồn hệ thống và lấy chân tín hiệu từ Arduino kích cho buzzer hoạt động.

Sơ đồ 2 led tín hiệu được gắn trực tiếp và ngõ I/O của Arduino thông qua điện trở hạn dịng 220Ω vì ta có cơng thức R = (U –Vled)/Iled

Ta có nguồn cung cấp là 5V, cho Vled là 2V và Iled là 0.015A => R là 200Ω nhưng do điện trở khơng có loại 200Ω nên chọn loại 220Ω.

f. Nguồn

Board Arduino Uno sử dụng hết 21 chân (N). Dòng DC trên mỗi chân I/O (I1C) là 40mA.

IAr = I1C x N

= 40 x 21 = 840 mA

Dịng tiêu thụ cảm biến khí gas (MQ2) là 180 mA. Dòng tiêu thụ cảm biến thân nhiệt (PIR) là 65 mA. Dòng tiêu thụ cảm biến mưa là 20 mA.

Dòng tiêu thụ cảm biến nhiệt độ, độ ẩm (DHT22) là 2.5 mA. Dòng tiêu thụ module RC22 là 13 mA.

Dòng tiêu thụ module động cơ DC giảm tốc :200mA

Tổng dòng điện tiêu thụ là: I = IAr +IMQ2+IPIR +Imưa +IDHT22+IRC522+IDC = 1320.5 mA

Theo tính tốn thì sẽ cấp dịng tối thiểu là 1320.5 mA vì vậy nhóm sử dụng adapter 12V 5A để cấp nguồn cho Arduino và sử dụng module LM2596 để cấp nguồn cho ESP8266, LCD, buzzer, led, servo.

Mạch giảm áp DC có khả năng giảm áp từ 30V xuống 1,5V mà vẫn đạt hiệu suất cao (92%). Thích hợp cho các ứng dụng chia nguồn, hạ áp, cấp cho các thiết bị như camera, motor, robot, …

Thông số kỹ thuật:

- Điện áp đầu vào: Từ 3V đến 30V

- Điện áp đầu ra: Điều chỉnh được trong khoảng 1,5V đến 30V - Dòng đáp ứng tối đa là 3A

- Hiệu suất: 92% - Cơng suất :15W

4.1.6 Sơ đồ ngun lý tồn mạch:

Dưới đây là sơ đồ nguyên lý toàn mạch thể hiện tất cả các khối và kết nối các thiết bị lại với nhau rồi cắm vào Arduino Uno.

Hình 4.16: Sơ đồ nguyên lý kết nối toàn mạch

4.2 THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM

4.2.1 Yêu cầu thiết kế

Trong mục phần mềm này, chúng ta phân ra 2 phần:

+ App Blynk và giao tiếp dữ liệu lên Blynk cloud server.

+ Code cho vi điều khiển Arduino và ESP8266. Chúng ta lần lượt đi vào từng phần:

+ App Blynk và giao tiếp dữ liệu lên Blynk cloud server.

Phần App trong luận văn này gồm hai phiên bản: + Phiên bản cài lên Smart Phone.

+ Phiên bản cài lên Panel được đặt tại phòng khách (dùng Smart Phone thay thế). Về giao diện thì nhìn chung, cả hai phiên bản đều giống nhau. Chỉ khác ở chỗ, phiên bản dành cho Panel sẽ được thiết kế nằm ngang theo chiều ngang của smart phone.

o Tại trang chủ giao diện của app, sẽ có các vùng điều khiển chính và vùng để hiện thị thơng số của các giá trị cảm biến. o Tiếp theo vào các màn hình con, ta sẽ có vùng để điều khiển

từng thiết bị, ở vùng này, ngoài việc điều khiển thiết bị, ta còn hiển thị trạng thái của từng thiết bị, ví dụ thiết đang được bật hay tắt.

o App Blynk được tải trên ứng dụng App Store hoặc Google Play và lập trình bằng ngơn ngữ C hoặc C++.

Phần cloud server, thì trong đề tài IoT khơng thể khơng có một cloud server để giúp chúng ta phát triển đề tài. Nó giúp chúng ta lưu trữ và sử dụng dữ liệu. Cloud cần phải đảm bảo các yếu tố: nhanh, ổn định và bảo mật. Ngồi ra, vì đang là sinh viên, khả năng tài chính cịn hạn hẹp, nên Cloud mà ta chọn sẽ cần có gói miễn phí để dùng và Blynk có cung cấp gói miễn phí cho ta dùng thử.

4.2.2 Phân tích

+ Về phần mềm để điều khiển:

Chúng ta sẽ chỉ có lựa chọn: app trên điện thoại hoặc máy tính bảng để điều khiển do thiết kế không muốn điều khiển bằng nút nhấn và điện thoại thông minh khá gần gũi với mọi tầng lớp trong xã hội và dễ dàng cài đặt.

Qua các phân tích ưu điểm và nhược điểm trên, dùng App (Blynk) là lựa chọn tốt nhất. Vì nó nhiều ưu điểm hơn so với 2 lựa chọn còn lại.

Ưu điểm như sau: Tiện lợi cho người dùng, tốc độ thực thi nhanh, có thể sử dụng ở bất cứ nơi đâu. Các kỹ sư dễ dàng thiết kế và lập trình.

+ Về phần server cloud:

Hiện nay chúng ta có rất nhiều dịch vụ server cloud, có nhiều giao thức có thể dùng trong lĩnh vực IoT hiện nay.

Qua quá trình tìm hiểu và nghiên cứu thì em chọn Blynk Clound kết hợp với Google Assistant và IFTTT để có thể điều khiển ứng dụng bằng giọng nói qua server Blynk cloud được dùng cho luận văn này, với khá nhiều ưu điểm mà đã được em trình bày ở phần trên.

4.2.3 Sơ đồ khối tổng quát. + Phần App và Blynk Cloud: + Phần App và Blynk Cloud:

Hình 4.18: Sơ đồ khối tổng quát phần mềm

Trong sơ đồ này, chúng ta có 2 phần quan trọng là phần App và Blynk Cloud. Chúng sẽ giao tiếp với phần cứng thông qua mạng wifi.

4.2.4 Sơ đồ khối chi tiết

Blynk Cloud App Phần cứng

Trong sơ đồ khối tổng quát ở trên, chúng ta sẽ giao tiếp giữa phần mềm và phần cứng thông qua Blynk Cloud và App.

+ App:

Nhìn vào sơ đồ khối, ta thấy, App có nhiệm vụ gửi lệnh điều khiển từ người dùng. Ngồi ra App cịn có chức năng tiếp nhận dữ liệu từ phần cứng đưa lên.

Trong phần app thì có 2 phiên bản:

+ Phiên bản dành cho panel: thì cả phần cứng và panel đều phải truy cập chung một mạng wifi. App sẽ gửi lệnh trực tiếp xuống phần cứng trong phạm vi cục bộ.

+ Phiên bản dành cho smart phone: thì chỉ cần smart phone truy cập vào internet thông qua kết nối wifi là được, thì ở bất cứ đâu, app vẫn có thể điều khiển phần cứng được.

+ Blynk Cloud:

Blynk Cloud có nhiệm vụ trung gian giữa phần cứng và App.

Blynk Cloud có nhiệm vụ chính là lưu giữ và cập nhật trạng thái của các thiết bị. Để có thể điều khiển thiết bị từ xa qua smart phone, thì chúng ta phải gửi lệnh lên Blynk Cloud. Đồng thời phần cứng sẽ quét giá trị từ Blynk Cloud, tiếp nhận giá trị từ App gửi, sau đó sẽ điều khiển thiết bị.

Ngồi ra Blynk Cloud cịn có nhiệm vụ lưu giữ dữ liệu từ phần cứng gửi lên. Sau đó sẽ gửi lên App để người dùng theo dõi.

+ Lưu đồ giải thuật để chạy code

Trong đề tài này, chúng ta có tổng cộng 2 vi điều khiển: gồm 1 NodeMCU ESP8266, 1Arduino Uno R3. Trong đó, ESP8266 và Arduino Uno đảm nhận vai trò tách bạch nhau, chúng được kết nối với nhau ở hệ thống phần cứng để hỗ trợ điều khiển.

Ta có:

NodeMCU ESP8266 chuyên điều khiển đèn các phòng, điều khiển động cơ DC của giàn phơi và hiển thị giá trị nhiệt độ, độ ẩm lên app Blynk.

Arduino Uno R3: chuyên điều khiển đóng mở cổng bằng RFID, hiển thị giá trị nhiệt độ, độ ẩm lên LCD và điều khiển các cảm biến hoạt động đúng chức năng của

nó sau khi có giá trị được trả về từ cảm biến.

Đối với ESP8266 , code chương trình chúng ta sẽ làm việc xuyên suốt cùng với

Blynk Cloud. Vì vậy, Blynk được xem là thành phần khá quan trọng trong thuật toán của chúng ta.

Chúng ta sẽ thiết kế lưu đồ giải thuật của ESP8266 chuyên điều khiển đèn và động cơ DC như sau:

Giải thích lưu đồ như sau:

Đầu tiên vào, chương trình sẽ kết nối với mạng wifi đã được cài đặt sẵn trong code chương trình. Nếu khơng tìm thấy wifi, thì chương trình sẽ khơng thể tiếp tục. Trên Serial Monitor của Arduino IDE thì chuỗi “……………….” Cứ chạy mãi cho đến lúc chương trình tìm thấy wifi.

Nếu tìm thấy mạng wifi đã được cài đặt trước, thì chương trình sẽ tiếp tục. Chương trình quét để lấy giá trị data giao tiếp qua cổng Serial giữa Arduino và ESP8266, các giá trị này sẽ được cập nhật theo thời gian thực lên server Blynk để hiện thị giá trị nhiệt độ, độ ẩm lên app Blynk. Ngồi ra, server Blynk cịn nhận data từ app Blynk gửi về từ các phím ảo để điều khiển đèn và động cơ theo thời gian thực.

Ví dụ: Đèn phịng khách có hai giá trị 0 và 1. Trên App Blynk sẽ có phím ảo dùng thay thế cho cơng tắc đèn . Công tắc ảo ta set ở 2 chế độ, nếu set giá trị 0 thì đèn tắt, set giá trị 1 thì đèn tắt. Ta thiết lập tương tự đối với tất cả các thiết bị đèn còn lại.

Đối với điều khiển động cơ, ở app Blynk ta dùng phím ảo để điều khiển chiều và tốc độ của động cơ thể hiện trên app, các giá trị điều khiển sẽ được cập nhật đồng thời lên Blynk Cloud để có thể điều khiển thiết bị hoạt động đúng theo yêu cầu.

Dưới đây là những dòng lệnh để thực hiện chức năng bật tắt thiết bị và cập nhật giá trị lên Blynk Cloud.

Hình 4.20: Code điều khiển nạp cho ESP8266.

Về phần cảm biến

Chúng ta giải thích thuật tốn chương trình như sau:

Dữ liệu cảm biến sẽ được các thiết bị cảm biến thu thập và đưa vào khối vi điều khiển Arduino Uno.

Khối vi điều khiển sẽ so sánh với ngưỡng cho trước, nếu quá ngưỡng thì sẽ bật hệ thống cảnh báo gồm còi buzz .

Hình 4.21: Lưu đồ dành cho cảm biến khí gas.

Code phần cảm biến:

Thuật tốn để đóng mở cổng bằng RFID:

Mỗi thẻ từ có một mã định dạng riêng. Trong chương trình, ta sẽ quy định một thẻ master làm thẻ chính. Lưu ý: thẻ master khơng xóa được Từ thẻ master này, ta có thêm hoặc xóa các thẻ phụ để phục vụ cho việc thêm /xóa thẻ. Khi có thẻ được scan vào, hệ thống sẽ kiểm tra xem ID thẻ có được lưu trong hệ thống hay khơng. Nếu có thì hệ thống sẽ tiến hành mở cửa và sau 10 giây sẽ đóng lại hiển thị lên LCD. Nếu ID là thẻ lạ thì hệ thống sẽ báo sai thẻ và hiển thị lên LCD.

Ngồi ra, hệ thống có bảo mật bằng cách scan đúng thẻ master đã được lưu trên dữ liệu hệ thống . Để thêm thẻ mới hoặc xóa dữ liệu cho thẻ đã có data trên hệ thống, trạng thái LCD hiển thị trên là STATE WAITING. Sau đó , ta scan thẻ master vào rồi scan tiếp thẻ mới để thêm thẻ mới vào dữ liệu. Tương tự cho việc xóa thẻ đã có dữ liệu, sau khi scan thẻ master thì ta scan tiếp thẻ đã có data để xóa dữ liệu thẻ đã có ra khỏi hệ thống.

94

CHƯƠNG 5. THI CÔNG HỆ THỐNG

5.1. GIỚI THIỆU

Ban đầu , nhóm thực hiện cắm dây hệ thống để kiểm tra các linh kiện, module và tiến hành viết code chạy thử, hệ thống cắm dây được thể hiện ở hình 5.1 bên dưới.

Hình 5.1. Hệ thống lúc chưa vẽ mạch (cắm dây)

Sau q trình tính tốn và thiết kế chọn các thiết bị hợp lý nay tiến hành thi công PCB, lắp ráp và test mạch.

5.2 THI CƠNG HỆ THỐNG

5.2.1 Thi cơng bo mạch hệ thống

Sau khi thiết kế xong sơ đồ nguyên lý và tiến hành vẽ mạch PCB 1 lớp thủ cơng. Với kích thước board là 120 x 80 mm. Với lớp bottom để gắn Arduino Uno và ESP8266 vào. Còn lớp top dùng để kết nối nguồn 5V và 12V, LCD, module đọc RFID RC522 và động cơ Servo. Hình 5.2 thể hiện sơ đồ đi dây khi đã phủ đồng. Hình 5.3 thể hiện sơ đồ schematic vẽ bằng Proteus.

Hình 5.3. Mạch vẽ bằng Proteus thể hiện sơ đồ schematic.

5.2.2 Lắp ráp và kiểm tra bo mạch hệ thống

Quy trình lắp ráp – kiểm tra mạch:

Bước 1: Rửa board đồng sạch sẽ bằng nước rửa mạch sau khi ủi mạch và

tiến hành khoan lỗ.

Bước 2: Hàn tất cả các hàng rào, buzzer, led, điện trở, transistor vào board đồng. Đo kiểm tra các hàng rào, buzzer, led, điện trở, transistor có kết nối với nhau như PCB không.

Bước 3: Gắn board arduino vào mạch vừa hàn xong. Đo kiểm tra từng chân từ arduino ra port đã kết nối hết chưa.

kiểm tra từng chân từ Arduino ra port đã kết nối hết chưa.

Bước 5: Gắn đầu bus của LCD,các cảm biến, module RC522 vào mạch vừa hàn xong. Kết nối LCD, ma trận phím, servo vào các đầu bus bằng các dây bus. Đo kiểm tra từng chân của các thiết bị đã kết nối hết chưa.

Bước 6: Cấp nguồn 12V vào Arduino, cấp nguồn 5V cho buzzer và LCD, Dùng đồng hồ đo áp ở ngõ vào và ngõ ra gắn với các module và các cảm biến.

Bước 7: Cuối cùng nạp chương trình và test chương trình có đạt như u

cầu ban đầu khơng.

5.3 ĐĨNG GĨI VÀ THI CƠNG MƠ HÌNH

5.3.1. Đóng gói bộ điều khiển

Sau khi kiểm tra mạch hoạt động tốt ta tiến hành bước thi cơng mơ hình.

5.3.2. Thi cơng mơ hình

Mơ hình bằng giấy foam kết nối bằng keo .

Hình 5.6. Hình dạng mặt bên mơ hình Thể tích mơ hình tính theo cơng thức : Thể tích mơ hình tính theo cơng thức :

V = AxBxC = 30x30x14 = 12 600 cm3

Với A, B, C lần lượt là chiều dài, rộng, cao của mơ hình cửa

Một phần của tài liệu Mô hình nhà thông minh dùng ARDUINO và ESP8266 (Trang 73)