Tải bản đầy đủ (.docx) (24 trang)

Iot cho het hong phan loai san pham

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.37 MB, 24 trang )

Đồ án thiết kế hệ thống cơ điện tử

MỤC LỤC

1


Đồ án thiết kế hệ thống cơ điện tử

Danh Mục Hình

2


Đồ án thiết kế hệ thống cơ điện tử

I. TỔNG QUAN.
1.1. Đặt Vấn Đề.
Việc ứng dụng tự động hóa là xu thế chung trong công nghiệp hiện nay, hòa chung
vào quá trình tự động hóa trong sản xuất, khâu phân loại sản phẩm trong các dây chuyền
công nghiệp là một ví dụ điển hình. Trước kia, việc phân loại chủ yếu là dựa vào sức
người, công việc này đòi hỏi sự tập trung cao và có tính lặp lại nên các công nhân khó
đảm bảo được sự chính xác trong công việc. Chưa kể đến có những phân loại dựa trên
các chi tiết kĩ thuật rất nhỏ mà mắt thường khó có thể nhận ra. Điều đó sẽ ảnh hưởng trực
tiếp tới chất lượng sản phẩm và uy tín của nhà sản xuất. Ứng dụng băng chuyền và các kỹ
thuật để phân loại sản phẩm hoàn toàn tự động sẽ giảm chi phí lao động, nâng cao năng
suất và hiệu quả rất nhiều so với phân loại bằng thủ công. Bên cạnh việc phân loại sản
phẩm dựa vào kích thước, hình dáng bao bì, .các sản phẩmhiện nay còn đa dạng về số
lượng màu sắc khác nhau nên việc phân loại sản phẩm dựa vào màu sắc là thực sự cần
thiết.
Ví Dụ: Trong các dây chuyền sản xuất Gạch, đá granite hay trong chế biến Nông Sản


(như Cà Phê, Gạo ) người ta phân loại thành các sản phẩm loại một, loại hai . dựa vào
màu sắc của chúng.
1.2. Ý Tưởng.
Sử dụng Moudule cảm biến màu sắc TCS3200 phân biệt màu sau đó điều khiển động
cơ servo để đưa các màu khác nhau tới các vị trí khác nhau,sau đó sử dụng WeMos D1
Mini ESP8266 đưa sô liệu là số lượng các viên bi có màu trắng, xanh,đỏ lên mạng để
quan lí số lượng các màu của bi.
1.3. Mục Tiêu Hệ Thống.
-Phân loại được màu sắc theo yêu cầu
-Phân loại được 3 loại màu sắc khác nhau.
-Làm được cơ cấu phân loại màu đơn giản giá thành thấp.
-Thiết kế được cơ cấu cơ khí phân loại màu.
-Thu thập số liệu và truyền thông được lên mạng.
-Áp dụng hệ thống vào thực tế sản xuất.
-Áp dụng kiến thức IOT để thực hiện đồ án.

II.Phương Pháp Thực Hiện.
2.1. IoT.
2.1.1. IoT là gì?
Theo định nghĩa từ Wikipedia:
Internet of Things (IoT) là một kịch bản của thế giới, khi mà mỗi đồ vật, con
người được cung cấp một định danh của riêng mình, và tất cả có khả năng truyền tải, trao
đổi thông tin, dữ liệu qua một mạng duy nhất mà không cần đến sự tương tác trực tiếp

3


Đồ án thiết kế hệ thống cơ điện tử
giữa người với người, hay người với máy tính. IoT đã phát triển từ sự hội tụ của công
nghệ không dây, công nghệ vi cơ điện tử và Internet.[1]

Như vậy có thể tạm hiểu, Internet of Things là khi tất cả mọi thứ đều được kết nối
với nhau qua mạng Internet, người dùng (chủ) có thể kiểm soát mọi đồ vật của mình qua
mạng mà chỉ bằng một thiết bị thông minh, chẳng hạn như smartphone, tablet, PC hay
thậm chí chỉ bằng một chiếc smartwatch nhỏ bé trên tay.
2.1.2. Tầm quan trọng của IoT.
IoT có ứng dụng rộng vô cùng, có thể kể ra một số thứ như sau [2]:
- Nhà thông minh (Smart Home): đây là ứng dụng được đứng đầu trên tất cả các
kênh được sử dụng để đánh giá, số công ty nghiêm cứu IoT cho nhà thông minh là
256 công ty và các công ty khởi nghiệp, số công ty đang hoạt động về nhà thông
minh nhiều hơn so với bất kỳ ứng dụng nào trong IoT như Nest, AlertMe, một số
tập đoàn đa quốc gia như Philips, Haier hoặc Belkin.
- Thiết bị có thể mang theo (Wearables): đã có nhiều sáng kiến về Wearables như
đồng hồ thông minh của Apple, máy huấn luyện thông minh của Sony, điều khiển
cử chỉ Myo, vòng đeo tay Looksee,...
-

Thành phố thông minh (Smart City): ứng dụng quản lý lưu lượng nước trong
phân phối nước, quản lý chất thải, an ninh đô thị và giám sát môi trường. Giải phát
IoT trong các khu vực của thành phố thông minh giải quyết vấn đề ùn tắt giao
thông, giảm thiểu tiếng ồn và ô nhiễm, giúp làm cho thành phố an toàn hơn.

-

Lưới điện thông minh (Smart grid): một lưới điện thông minh trong tương lai
hứa hẹn nâng cao hiệu quả, độ tin cậy và kinh tế của việc sử dụng điện dựa trên
hành vi của con người sử dụng điện và nhà cung cấp điện.

-

Internet công nghiệp (Industrial internet) là một trong những ứng dung đặt biệt

của IoT, được đánh giá với tiềm năng cao nhất của thị trường IoT. Hiện nay
internet công nghiệp không thể đạt mức phổ biến như nhà thông minh hoặc thiết bị
mang theo nhưng nó đang dần tăng trưởng.

-

Ô tô kết nối (Connected car): ô tô kết nối phát triển một cách từ từ, thực tế ít
được nhắc đến, tuy nhiên các nhà sản xuất ô tô lớn cũng như các công ty khởi
nghiệp cũng đang làm việc để đưa ra các giải pháp xe kết nối nổi tiếng là các tập
đoàn lớn: Google, Microsoft, Apple.

-

Bán lẻ thông minh (Smart retail): quảng cáo lân cận (Proximity – based
advertising – loại hình quảng cáo sử dụng công nghệ định vị để thông tin trực tiếp
với khách hàng thông qua thiết bị cầm tay) là một phần của bán lẻ thong minh
cũng đã bắt đầu tăng trưởng.

-

Chuỗi cung ứng thông minh (Smart supply chain): giải phát theo dõi hàng hóa
khi vận chuyển, hoặc trao đổi thông tin hàng tồn kho đã xuát hiện nhiều năm trên
thị trường, đến nay chuỗi cung ứng thông minh vẫn còn phát triển hạn chế.

-

IoT trong nông nghiệp: IoT sẽ biến nông nghiệp từ một lĩnh vực sản xuất định
tính thành một lĩnh vực sản xuất chính xác dựa vào những sô liệu thu những số
4



Đồ án thiết kế hệ thống cơ điện tử
liệu thu thập, tổng hợp và phân tích thống kê, từ việc phụ thuộc vào thời tiết, khí
hậu,..., người nông dân có thể tự chủ, điều chỉnh mọi thứ để đạt được hiệu quả như
mong muốn. []
Như vậy Tác động của IoT rất đa dạng, trên các lĩnh vực, đặc biệt trong lĩnh vực y
tế, Thiết bị IoT có thể được sử dụng để cho phép theo dõi sức khỏe từ xa và hệ thống
thông báo khẩn cấp. Các thiết bị theo dõi sức khỏe có thể dao động từ huyết áp và nhịp
tim màn với các thiết bị tiên tiến có khả năng giám sát cấy ghép đặc biệt, chẳng hạn như
máy điều hòa nhịp hoặc trợ thính tiên tiến. cảm biến đặc biệt cũng có thể được
2.2. Arduino Uno R3:

Hình2.1: Arduino Uno Board[]
2.2.1. Khái Niệm chung.
Arduino Uno R3 dùng vi điều khiển Atmega328. Bộ não này có thể xử lí những tác
vụ đơn giản như điều khiển LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm
một hệ thống đo nhiệt độ và độ ẩm,...và các ứng dụng khác.

Hình 2.2: Vi điều khiển của Arduino Uno Board[]
2.2.2. Thông số kĩ thuật:
-

Vi điều khiển: Atmega 328 họ 8 bit
5


Đồ án thiết kế hệ thống cơ điện tử
-

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


-

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

-

Dòng tiêu thụ: 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 PWM)

-

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

-

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

-


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

-

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

-

Bộ nhớ Flash: 32KB với 0.5KB dùng để bootloader

-

SRAM: 2KB

-

EEROM: 1KB.[]

2.2.3 Các chận năng lượng.
-

GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn dùng các
thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với
nhau.

-

5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.


-

3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA.

-

Vin( Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương
của nguồn với chân này và cực âm của nguồn với chân GND.

-

IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở
chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy bạn không được lấy nguồn 5V từ
chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn.

-

RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với
việc chân RESET được nối với GND qua 1 điện trở 10KΩ.[]

2.2.4. Bộ nhớ sử dụng.
-

Vi điều khiển Atmega328 tiêu chuẩn sử dụng trên Arduino uno r3 có:

-

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.
6


Đồ án thiết kế hệ thống cơ điện 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.2.5. Các cổng vào/ra trên Arduino Board

Hình 2.3: Các cổng vào/ra trên Arduino Board.[]
Mạch 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).
-

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.

-

Arduino UNO Broad 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
7



Đồ án thiết kế hệ thống cơ điện tử
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.[]
2.2.6. Lập trình cho Arduino.
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng. Ngôn ngữ
này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung. Và Wiring lại là một
biến thể của C/C++. Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++.
Riêng mình thì gọi nó là “ngôn ngữ Arduino”, và đội ngũ phát triển Arduino cũng gọi
như vậy. Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ
hiểu. Nếu học tốt chương trình Tin học 11 thì việc lập trình Arduino sẽ rất dễ thở đối với
bạn.
Để lập trình cho Mạch Arduino, nhà phát triển cung cấp một môi trường lập trình
Arduino được gọi là Arduino IDE (Intergrated Development Environment) như hình
dưới đây.[]

Hình 2.4: Giao diện phầm mềm Arduino IDE[]
2.3. Moudule cảm biến màu sắc TCS3200.

Hình 2.5: Moudule cảm biến màu sắc TCS3200[]

8


Đồ án thiết kế hệ thống cơ điện tử

2.3.1

Khái niệm chung.
Moudule cảm biến màu sắc TCS3200 được dùng để phân loại màu sắc, cảm ứng và

hiệu chuẩn ánh sang mặt trời, kiểm tra dải đọc, kiểm tra màu sắc phù hợp.
2.3.2. Thông số kỹ thuật.
- Điện áp cung cấp: (2.7V đến 5.5V)
-

Chuyển đổi từ cường độ ánh sáng sang tần số với độ phân giải cao

-

Lập trình lựa chọn bộ lọc màu sắc khác nhau và dạng tần số xuất ra.

-

Điện năng tiêu thụ thấp. Giao tiếp trực tiếp với vi điều khiển.[]

-

Chức năng chân.
S0,S1 : Đầu vào chọn tỉ lệ tần số đầu ra .

-

S2,S3 : Đầu vào chọn kiểu photodiode.

-

OE : Đầu vào cho phép xuất tần số ở chân OUT.

-


OUT : Đầu ra là tần số thay đổi phụ thuộc cường độ và màu sắc.[]

2.3.3.

Linh kiện điện tử Module cảm biến màu TCS3200 với khả năng nhận biết 3 mầu cơ
bản RGB và 4 đèn LED trắng. Các TCS3200 có thể phát hiện và đo lường gần như tất cả
màu sắc có thể nhìn thấy. Ứng dụng bao gồm kiểm tra đọc dải, phân loại theo màu sắc,
cảm biến ánh sáng xung quanh và hiệu chuẩn, và kết hợp màu sắc, đó chỉ là một vài ứng
dụng. TCS3200 có các bộ tách sóng quang, có 2 bộ lọc màu sắc là bộ lọc màu đỏ, xanh
dương, hoặc màu xanh lá, hoặc không có bộ lọc ( rõ ràng). Các bộ lọc của mỗi màu được
phân bố đều khắp các mảng để loại bỏ sai lệch vị trí giữa các điểm màu. Bên trong là một
bộ dao động tạo ra đầu ra sóng vuông có tần số là tỷ lệ thuận với cường độ của màu sắc
lựa chọn.
2.3.4. Nguyên lý hoạt động cảm biến mầu của linh kiện điện tử TCS3200.
Cấu tạo cảm biến TCS3200 gồm 2 khối như hình vẽ phía dưới:

Hình 2.6:Cấu tạo cảm biến TCS3200[]
Khối đầu tiên là mảng ma trận 8x8 gồm các photodiode.Bao gồm 16 photodiode có
thể lọc màu sắc xanh dương (Blue),16 photodiode có thể lọc màu đỏ (Red),16 photodiode
có thể lọc màu xanh lá(Green) và 16 photodiode trắng không lọc (Clear).Tất cả
photodiode cùng màu được kết nối song song với nhau ,và được đặt xen kẽ nhau nhằm
mục đích chống nhiễu.

9


Đồ án thiết kế hệ thống cơ điện tử
Bản chất của 4 loại photodiode trên như là các bộ lọc ánh sáng có mầu sắc khác nhau.
Có nghĩa nó chỉ tiếp nhận các ánh sáng có cùng màu với loại photodiode tương ứng và
không tiếp nhận các ánh sáng có màu sắc khác.[]


Hình 2.7: nguyên lí làm việc cảm biến TCS3200[]
Việc lựa chọn 4 loại photodiode này thông qua 2 chân đầu vào S2,S3 :

Bảng 2.1:Chức năng các chân S2,S3.[]
Khối thứ 2 là bộ chuyển đổi dòng điện từ đầu ra khối thứ nhất thành tần số :

Bảng 2.2: Chức năng các chân S0,S1.[]
Tần số đầu ra của linh kiện điện tử TCS3200 trong khoảng 2HZ~500KHZ. Tần số
đầu ra có dạng xung vuông với tần số khác nhau khi mà màu sắc khác nhau và cường độ
sáng là khác nhau.
Ta có thể lựa chọn tỉ lệ tần số đầu ra ở các mức khác nhau như bảng trên cho phù hợp
với phần cứng đo tần số .
Ví dụ : Tần số khi S0 = H,S1=H - Fout = 500Khz thì:
S0=H,S1=L -Fout=100Khz
S0=L,S1=H -Fout=10Khz
S0=L,S1=L -Fout=0
10


Đồ án thiết kế hệ thống cơ điện tử
Ánh sáng trắng là hỗn hợp rất nhiều ánh sáng có bước sóng màu sắc khác nhau.
Khi ta chiếu ánh sáng trắng vào một vật thể bất kì. Tại bề mặt vật thể sẽ xảy ra hiện
tượng hấp thụ và phản xạ ánh sáng
Màu sắc bất kì được tổng hợp từ 3 mầu cơ bản Blue, Green, Red :

Hình 2.8: Cách tổng hợp các màu cơ bản.[]
2.4. WeMos D1 Mini ESP8266

Hình 2.9: WeMos D1 Mini ESP8266.[]

2.4.1. Khái niệm chung.
WeMos D1 Mini là board mạch được phát triển dựa trên Module Esp8266-12S, là
thiết bị nhỏ gọn được tích hợp Wifi để dễ dàng kết thực hiện các ứng dụng thu thập dữ
liệu và điều khiển thiết bị thông qua Wifi.
WeMos D1 Mini được hỗ trợ để nạp trực tiếp thông qua USB mà không cần thực hiện
các thao tác thủ công (sử dụng nút nhấn reset và flash) như NodeMCU nhằm đơn giản
hóa quá trình làm việc với board mạch.
11


Đồ án thiết kế hệ thống cơ điện tử
2.4.2. Thông số kỹ thuật.
- Vi điều khiển: ESP8266EX
-

Điện áp hoạt động: 3.3V

-

Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ
chân D0)

-

Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)

-

Bộ nhớ Flash: 4MB


-

Giao tiếp: Cable Micro USB

-

Nguồn áp: 5V được cung cấp qua cổng Micro USB

-

Wifi: 2.4 GHz

-

Hỗ trợ bảo mật: WPA/WPA2

-

Tích hợp giao thức TCP/IP

-

Kích thước: 34.2mmx25.6mm

-

Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua.[]
2.4.3. Sơ đồ chân WeMos D1 Mini ESP8266.

Hình 2.10: Sơ đồ chân WeMos D1 Mini ESP8266.[]

2.5. Động cơ RC Servo Futaba S3003.

12


Đồ án thiết kế hệ thống cơ điện tử

Hình 2.11: Động cơ RC Servo Futaba S3003
2.5.1. Khái niệm chung.
Động cơ RC Servo Futaba S3003 có các bánh răng được làm bằng nhựa và trọng
lượng nhẹ, có cách điều khiển tương tự như các servo phổ biến trên thị trường
MG996,MG995,…,thích hợp cho các ứng dụng chi phí rẻ, trọng lượng nhẹ phù hợp.
2.5.2. Thông số kĩ thuật.
- Điện áp hoạt động 4.8 ~ 6.0V
-

Xung yêu cầu: xung vuông điện áp đỉnh từ 3 ~ 5V

-

Nhiệt độ hoạt động: từ - 20 đến 60oC

-

Tốc độ hoạt động (4.8V); 0.23s / 60o khi không tải

-

Tốc độ hoạt động (6.0V); 0.19s / 60o khi không tải


-

Torque (4.8V): 3.2kg.cm

-

Torque (6.0V): 4.1kg.cm- Dòng điện tiêu thụ (4.8V): 7.2mA khi đứng yên.

-

Dòng điện tiêu thụ (6.0V): 7.2mA khi đứng yên.

-

Kiểu bánh răng: bánh răng nhựa.

-

Kích thước: 41 x 20 x 36mm

-

Khối lượng: 38g.[]

III. KẾT NỐI THỬ NGHIỆM NẠP CHƯƠNG TRÌNH
3.1. Chuẩn bị.
3.1.1. Phần cứng.
- Arduino Uno R3.
-


Moudule cảm biến màu sắc TCS3200.

-

WeMos D1 Mini ESP8266.

-

3 động cơ RC Servo Futaba S3003.[]

-

3.1.2. Phần mềm.
Phần mềm Arduino IDE.

-

Phần mềm Autodesk Inventor Professional
13


Đồ án thiết kế hệ thống cơ điện tử
-

Phần mềm MQTT Dashho
3.2. Cơ Cấu cơ khí.

Hình 3.1: Hệ thống cơ khí mô phỏng phần mềm inventer

Hình 3.2: Hệ thống cơ khí thực tế.

Khi bi rơi xuống lỗ động cơ servo chính sẽ quay 1 góc 900 đến cảm biến màu sau khi
nhận diện được màu sắc của viên bi động cơ servor tiếp tục quay một góc 90 0 đưa tớ lỗ để
chưa tới các rãnh màu đã được nhận diện, tại đây hai động cơ server phụ sẽ hoạt động
quay các cần gạc để đưa viên bi màu vào đúng rãnh màu của nó sau đó quay ngược lại
một góc 1800 và liếp tục nhận viên bi thứ hai mà thực hiện lại một chu trình mới.
3.3. Kế nối với phần mềm.
Đầu tiên cần tạo tài khoản trên Bở vì trang
web trên cung cấp server ảo giúp chúng ta tương thích với ứng dụng MQTT trên điện
thoại.
14


Đồ án thiết kế hệ thống cơ điện tử
Khi tạo xong tài khoản sẽ được các thông số như hình 3.3:

Hình 3.3: Thông số tài khoản
Sửa tên các mục trong Subscription cho phù hợp với yêu cầu, và tạo 3 Subscription
cho 3 màu bi phân loại.

Hình 3.4: Giao diện Subscription

15


Đồ án thiết kế hệ thống cơ điện tử

Hình 3.5: Giao diện phần mềm MQTT Dashho sau khi chỉnh sửa.
3.4. Code Arduino Phân loại màu.
Kết nối Arduino, ESP8266 với máy tính. Khởi động Arduino IDE và tiến hành nạp
code cho Arduino

3.4.1. Arduino Code phần điều khiển động cơ.
#include <Servo.h>
const int s0 = 8;
const int s1 = 9;
const int s2 = 12;
const int s3 = 11;
const int out = 10;
int button = 13; // on off
int red = 0;
int green = 0;
int blue = 0;
Servo topServo;
Servo bottomServo1;
Servo bottomServo2;
int RUN=0; //chạy động 2 động cơ
int ledPinred = 5; // hằng số ledPin mang giá trị là chân digital đươc nối với led
int ledPinblue = 6; // hằng số ledPin mang giá trị là chân digital đươc nối với led
int ledPinwhite = 7; // hằng số ledPin mang giá trị là chân digital đươc nối với led
void setup()
{
Serial.begin(9600);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
16


Đồ án thiết kế hệ thống cơ điện tử
pinMode(s3, OUTPUT);
pinMode(out, INPUT);

digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
topServo.attach(2);
bottomServo1.attach(3);
bottomServo2.attach(4);
pinMode(ledPinred, OUTPUT); // Cài đặt đèn LED là OUTPUT
pinMode(ledPinblue, OUTPUT); // Cài đặt đèn LED là OUTPUT
pinMode(ledPinwhite, OUTPUT); // Cài đặt đèn LED là OUTPUT
}
void color() {
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s3, HIGH);
blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s2, HIGH);
//count OUT, pGreen, GREEN
green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
delay(100);
}
void quay()
{
switch (RUN) {
case 1://red
bottomServo1.write(110);
//delay(500);
bottomServo1.write(80);// servo 1 gạt cần về bên phải
for(int i = 92; i >= 0; i--) {
i=i-1;
topServo.write(i);

delay(1);}
delay(2000);
bottomServo1.write(110);
topServo.write(180);
RUN=0;
delay(500);
break;
case 2:// blue
bottomServo2.write(65);
//delay(500);
17


Đồ án thiết kế hệ thống cơ điện tử
bottomServo2.write(90);// servo 1 gạt cần về bên phải
for(int i = 92; i >= 0; i--) {
i=i-1;
topServo.write(i);
delay(1);}
delay(2000);
bottomServo2.write(65);
topServo.write(180);
RUN=0;
delay(500);
break;
case 3://white
for(int i = 92; i >= 0; i--) {
i=i-1;
topServo.write(i);
delay(1);}

delay(2000);
topServo.write(180);
RUN=0;
delay(500);
break;
case 0:
break;
}
delay(300);
}
void loop()
{
int buttonStatus = digitalRead(button);
if (buttonStatus == HIGH) {
topServo.write(180);
delay(500);
for(int i = 180; i> 92; i--) {
topServo.write(92);
delay(1);}
bottomServo1.write(110);
delay(500);
bottomServo2.write(65);// sai vì sẽ giữ nguyên vị trí cần gạt
delay(500);
delay(1);
color();
18


Đồ án thiết kế hệ thống cơ điện tử
Serial.print("R :");

Serial.print(red, DEC);
Serial.print(" G : ");
Serial.print(green, DEC);
Serial.print(" B : ");
Serial.print(blue, DEC);
Serial.println();
// đỏ
if( red{
Serial.println(" - (Red Color)"); \
RUN=1;
digitalWrite(ledPinred, HIGH);// xuất tính hiệu để esp8266 biết là pi đỏ
delay(1200);
digitalWrite(ledPinred, LOW);
quay();
}
// xanh dương
else if ( blue{
Serial.println(" - (Blue Color)");
RUN=2;
digitalWrite(ledPinblue, HIGH);// xuất tính hiệu để esp8266 biết là pi xanh
delay(1200);
digitalWrite(ledPinblue, LOW);
quay();
}
// white
else if(red<550 & blue<500 & green<500)
{
Serial.println(" - (White Color)");

RUN=3;
digitalWrite(ledPinwhite, HIGH);// xuất tính hiệu để esp8266 biết là pi trắng
delay(1200);
digitalWrite(ledPinwhite, LOW);
quay();
}
else{
Serial.println();
RUN=3;
quay();
}
19


Đồ án thiết kế hệ thống cơ điện tử
delay(300);
}
}
3.4.2. ESP8266 Code truyền số lượng bi lên mạng.
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
extern int r=0;// red
int a,b;
extern int bl=0;//blue
int c,d;
extern int w=0;// white
int e,f;
void nhandl(char * tp, byte * nd, unsigned int length)
{
String topic(tp);

String noidung= String((char*)nd);
noidung.remove(length);
Serial.println(topic);
Serial.println(noidung);
if(topic=="chay")
{
if(noidung=="1")
digitalWrite(D0,HIGH);
if(noidung=="0")
digitalWrite(D0,LOW);
}
}
WiFiClient g;
PubSubClient MQTT("m13.cloudmqtt.com", 16097, nhandl, g);
// Các thông số trên được lấy ra từ Details trong mục 3.3
void setup() {
Serial.begin(115200);
WiFi.begin("tenwifi", "matkhau");
while (1)
{
delay(100);
if (WiFi.status() == WL_CONNECTED)
break;
}
Serial.println("Da vao duoc internet");
while (1)
20


Đồ án thiết kế hệ thống cơ điện tử

{
delay(100);
if (MQTT.connect("nhut", "lwleyrgz", "1DqKE1rpowWJ"))
// Các thông số trên được lấy ra từ Details trong mục 3.3
break;
}
Serial.println("Da vao duoc MQTT");
MQTT.subscribe("chay");
pinMode(D0, OUTPUT);
digitalWrite(D0,LOW);
pinMode(D1, INPUT);//red
pinMode(D2, INPUT);//blue
pinMode(D5, INPUT);//white
a=0;
b=0;
c=0;
d=0;
e=0;
f=0;
}
void loop(){
red();
blue();
white();
MQTT.loop();
MQTT.publish("do",String(r).c_str());// xuất dữ liệu
MQTT.publish("xanh",String(bl).c_str());
MQTT.publish("trang",String(w).c_str());
}
void red(){

delay(200);
if(digitalRead(D1) == 1)
{
while(a==b)
{
b=b+1;
r = r + 1;
Serial.print("red la: ");
Serial.println(r);
}
}
delay(200);
21


Đồ án thiết kế hệ thống cơ điện tử
if (digitalRead(D1) == 0)
{
a=0;
b=0;
}}
void blue(){
delay(200);
if(digitalRead(D2) == 1)
{
while(c==d)
{
d=d+1;
bl = bl + 1;
Serial.print("blue la: ");

Serial.println(bl);
} }
delay(200);
if (digitalRead(D2) == 0)
{
c=0;
d=0;
}}
void white(){
delay(200);
if(digitalRead(D5) == 1)
{
while(e==f)
{
f=f+1;
w = w + 1;
Serial.print("white la: ");
Serial.println(w);
}
}
delay(200);
if (digitalRead(D5) == 0)
{
e=0;
f=0;
}}

22



Đồ án thiết kế hệ thống cơ điện tử

IV. KẾT QUẢ VÀ KẾT LUẬN.
4.1. Kết quả.
- Thiết kế và hoàn thành hệ thống cơ khí để phân loại màu.
-

Sử dụng ESP8266 truyền thông được số lượng bi lên trên dao diện phần mềm
MQTT Dashho trên điện thoại.

-

Phân biệt được các viên bi có màu đỏ, trắng, xanh.

-

Hệ thống phân loại màu đơn giản dễ sử dụng.

Hình 4.1: Hệ thống phân loại các bi màu

Hình 4.2: Giao điện phân mềm MQTT Dashho hiển thị số lượng bi

23


Đồ án thiết kế hệ thống cơ điện tử
4.2. Hạn chế.
- Tốc độ phân loại các viên bi màu còn còn chậm.
-


Khi phân biệt màu cần cách ly nguồn ánh sáng bên ngoài tránh cảm biến màu bị
nhiễu.

-

Giá thành để hoàn thành sản phẩm còn cao.

-

Khả năng áp dụng vào thực tế còn thấp.

V. TÀI LIỆU THAM KHẢO.

24



×