Chip này có thể xử lí tín hiệu cho xe điều khiển từ xa, làmmột trạm đo nhiệt độ - độ ẩm và hiển thị lên man hình LCD,… Nguồn Arduin Uno R3 có thể được cấp nguồn qua: Thông qua cổng USB v
Trang 1- Thực hiện hoàn chỉnh đề tài nghiên cứu và ứng dụng vào đề tài thực tế.
- Phát triển đề tài và khắc phục hạn chế gặp phải
- Tìm hiểu và thiết kế thành công 8 Led đơn sáng tắt dùng Arduino Uno R3
3 ĐỐI TƯỢNG VÀ KHÁCH THỂ
3.1 Đối tượng nghiên cứu
8 Led đơn sáng tắt dùng Arduino Uno R3
3.2 Khách thể nghiên cứu
- Tham khảo thực tế các dạng Led đơn dùng Arduino Uno R3 có trên thị trường
- Vận dụng các kiến thức lý thuyết và thực hành được học trong các môm về mạchđiện tử và lập trình căn bản để thực hiện đề tài
4 NHIỆM VỤ NGHIÊN CỨU
Để thực hiện thành công đề tài “ THIẾT KẾ 8 LED ĐƠN SÁNG TĂT DÙNGARDUINO UNO R3” , người nghiên cứu đã bỏ ra nhiều thời gian để tìm hiểu về led,tham khảo cơ sở lý thuyết Trong phạm vi đề tài, người nghiên cứu thực hiện các nhiệm
vụ sau đây:
Trang 2- Đọc kỹ các tài liệu liên quan về mạch điện tử, lập trình căn bản.
- Bố trí các led
- Nối dây giữa các bóng led với board Arduino Uno R3
- Nạp code hiệu cho board Arduino Uno R3
- Tham khảo các led ngoài thực tế và thiết kế sao cho thẩm mỹ nhất
5 PHƯƠNG PHÁP NGHIÊN CỨU
5.1 Phương pháp nghiên cứu tài liệu
Nghiên cứu các đề tài như sau:
- Các giáo trình lý thuyết như: mạch điiện tử, lập trình căn bản,…
- Các sơ đồ nguyên lý, sơ đồ khối của các nhà sản xuất đề ra
- Tham khảo các thiết kế có sẵn trên wed và các tài liệu liên quan
5.2 Phương pháp nghiên cứu thực tiễn
- Tham khảo các ý kiến của các giảng viên chuyên ngành
- Tìm hiểu về các led có trên thị trường
Trang 3PHẦN NỘI DUNG Chương 1: GIỚI THIỆU CHUNG
1.1 ĐIỆN TRỞ
Điên trở là một linh kiện có tính cản trở dòng điện, điện trở tiêu thụ điện năng vàchuyển thành nhiệt năng và làm một số chức năng khác tùy vào vị trí điện trở trongmạch
Cấu tạo: được cấu tạo từ những vật liệu điện trở suất cao như: than, magie, kim loạiNIO2, oxit kim loại, dây quấn
Người ta sử dụng các vòng màu để hiển thị giá trị của điện trở
Kí hiệu:
Hình ảnh thực tế:
Hình 1.1 Hình dạng thực tế của một số điện trở cơ bản
Cách đọc điện trở 4 vòng màu:
Trang 4• Vạch màu thứ hai: chỉ giá trị hàng đơn vị trong giá trị điện trở.
• Vạch màu thứ ba: chỉ hệ số nhân với giá trị số mũ của 10 dùng nhân với giá trị điệntrở
• Vạch màu thứ tư: chỉ giá ntrij sai số của điện trở
• Điện trở dẫn điện càng tốt thì giá trị của nó càng nhỏ và ngược lại Giá trị điện trởđược tính theo đơn vị Ohm (Ω), kΩ, MΩ, hoặc GΩ
• Vòng màu của điện trở
Hình 1.2 Bảng cách đọc điện trở theo vòng màu
1.2 TỤ ĐIỆN
Tụ điện tích năng lượng dưới dạng năng lượng điện trường, sau đó năng lượng đượcgiải phóng ĐIều này được thể hiện ở đặc tính tích và phóng điện của tụ điện Tụ điện gồm 2bản cực làm bằng chất dẫn điện được đặt song song với nhau, ở giữa là lớp cách điện gọi làchất điện môi ( giấy tẩm dầu, mica, hay gốm, không khí) Chất cách điện được lấy làm tên gọicho tụ điện ( tụ giấy, tụ dầu, tụ gốm hay tụ không khí)
Có 2 loại tụ chính: tụ phân cực và tụ không phân cực Tụ phân cực có trị số lớn vàphân biệt âm dương
Ký hiệu:
Hình dạng của tụ:
Trang 5Hình 1.3 Hình dạng thực tế của một số loại tụ Đơn vị: đơn vị của tụ là Fara, 1 Fara có trị số rất lớn và trong thực tế người tadùng các đơn vị nhỏ hơn:
• Pico Fara(P), 1P=1/10-12 Fara
• Nano Fara(N), 1N=1/10-9 Fara
• Micro Fara(U), 1U=10-6 Fara
Cách đọc giá trị trên thân tụ:
• Đọc trực tiếp trên thân tụ
Sau trị số điện dung bao giờ cũng có trị số điện áp, điện áp ghi trên tụ chính là điện ápcực đại mà tụ có thể chịu được, nêu vượt quá giá trị này thì tụ có thể cháy nổ hay hư hỏng
1.3 LED
Cấu tạo của Led: Bản chất của LED là một đi-ốt, nó chứa một chíp bán dẫn có pha cáctạp chất để tạo ra một tiếp giáp P-N, kênh P chứa lỗ trống, kênh N chứa điện tử, dòng điệntruyền từ A-nốt (kênh P) đến K-tốt (kênh N), khi điện tử lấp đầy chỗ trống nó sinh ra bức
xạ ánh sáng, các bước sóng phát ra có màu khác nhau tùy thuộc vào tạp chất trong chipbán dẫn
Trang 7Hình 1.4 Cấu tạo của led Hoạt động của LED:
• giống như nhiều loại đi-ốt bán dẫn khác Tùy theo mức năng lượng giải phóng cao haythấp mà bước sóng ánh sáng phát ra khác nhau ( tùy màu sắc của LED sẽ khác nhau) Mứcnăng lượng (màu sắc của LED) hoàn toàn phụ thuộc vào cấu trúc năng lượng của các nguyên
tử chất bán dẫn
• Tùy vào từng loại LED mà điện áp phân cực thuận khác nhau Đối với LED thườngthì điện áp phân cực thuận khoảng 1,5V đến 2,5V; còn đối với LED siêu sáng thì điện áp phâncực thuận có thể lên tới 5V
• khi LED hoạt động bình thường thì cường độ điện từ 10mA đến 50mA
Hình dạng một số loại led:
Hình 1.5 Các loại led
1.4 BOARD ARDUINO UNO R3
Trang 8Hình 1.6 Hình dạng thực tế của Arduino UNO R3
1.4.1 Thông số kỹ thuât của Arduino Uno R3
Trang 9Bộ nhớ flash 32 KB (Atmega328) với 0,5KB dùng tới bootloader
Arduino Uno có thể sử dụng 3 vi điều khiển họi 8bit AVR là Atmega8,Atmega168, Atmega328 Chip này có thể xử lí tín hiệu cho xe điều khiển từ xa, làmmột trạm đo nhiệt độ - độ ẩm và hiển thị lên man hình LCD,…
Nguồn Arduin Uno R3 có thể được cấp nguồn qua: Thông qua cổng USB với mứcđiện áp 5v, nguồn ngoài dùng với điện áp là 7 – 12V DC và giới hạn là 6 – 20V Thôngthường bạn có thể sử dụng pin 9v để cấp nguồn cho Arduino
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 cho đầ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 cho nguồn ngoài 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
IO-REF: đ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
Lưu ý:
• Arduino Uno không có bảo vệ khi cắm ngược nguồn vào: do đó bạn phải hết
sức cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino Uno.Việc làm chập mạch nguồn vào sẽ làm Arduino không sử dụng được nữa Trong thờigian đầu tìm hiểu tốt nhất hãy sử dụng nguồn cấp qua cổng USB
• Các chân 3,3V và 5V trên Arduino: là các chân dùng để cấp nguồn ra cho các
thiết bị khác, không phải là các chân cấp nguồn vào Việc cấp nguồn sai vị trí có thểlàm hỏng board
• Cấp nguồn: khi cấp nguồn ngoài không qua cổng USB cho Arduino Uno với điện
áp dưới 6V có thể làm hỏng board
Trang 10• Cấp điện áp: khi cấp trên 3V vào chân RESET trên board có thể làm hỏng vi điều
khiển Atmega328
• Cường độ dòng điện vào/ra: ở tất cả các chân Digital và Analog của Arduino
Uno vượt quá 200mA sẽ làm hỏng vi điều khiển
• Cấp điện áp: trên 5,5V vào các chân Digital hoặc Analog bất kì của Arduino Uno
sẽ làm hỏng vi điều khiển
• Cường độ dòng điện: qua một chân Digital hoặc Analog bất kì của Arduino Uno
vượt quá 40mA sẽ làm hỏng vi điều khiển Do đó nếu không dùng để truyền nhận dữliệu, bạn phải mắc một điện trở hạn dòng
Bộ nhớ của Arduino Uno R3
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
trong bộ nhớ Flash của vi điều khiển Sẽ có khoảng vài KB trong số này sẽ được dùngcho bootloader nhưng thường thì ít khi nào phải sử dụng quá 20kb bộ nhớ này
• 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): tương tự như một chiếc ổ cứng mini – nơi có thể đọc và ghi dữ liệu vào đây
mà không phải lo bị mất khi mất điện giống như dữ liệu trên SRAM
Trang 11Hình 1.7 Hình dạng thực tế của Arduino UNO R3
1.4.4 Cổng vào/ra của Arduino Uno R3
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 đượ kết nối)
Một số chân digiatl có các chức năng đặc biệt như sau:
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ânnày Kết nối bluetooth thường thấy chính là kết nối Serial không dây Nếu không cần giaotiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiế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
năng thông thường, 4 chân này cong dùng để truyền phát dữ liệu bằng giao thức SPI vớicá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 nhấp nháy để bso 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
• Chân AREF: để đư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 áptrong khoảng từ 0V→2.5V với độ phân giải vẫn là 10bit
• 2 chân a4 (SDA) và A5 (SCL): hỗ trợ giao tiếp 12C/TWI với các thiết bị khác 1.4.5 Giới thiệu phần mềm Arduino IDE
Arduino Uno R3 được lập trình dự trên ngôn ngữ Wrring (đây là một số biến thể củaC/C++) Do vậy có thể nói ngôn ngữ lập trình Arduino bắt nguôn từ C/C++ phổ biến hiệnnay do đó rất dễ học, dễ hiểu Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạchArduino, nhóm phát triển dự án này đã cung cấp đến người dùng một môi trường lậptrình Arduino được gọi là Arduino IDE (Intergra ted Development Environment) Gồmcác thành phần chính:
Trang 12• Giao diện
Hình 1.8 Giao diện phần mềm Arduino 1.0.5
• Vùng lệnh: bao gồm các nút lệnh menu (File, Edit, Sketch, Tools, Help) Phía dưới
là các icon cho phép sử dụng nhanh các chức năng thường dùng của IDE được miêu tảnhư sau:
• Vùng viết chương trình: bạn sẽ viết các đoạn mã của mình tại đây Tên chương
trình của bạn được hiển thị ngay dưới các icon, ở đây nó tên là “Blink”
Trang 13Hình 1.9 Vùng viết chương trình của Arduino 1.0.5
• Vùng thông báo (debug): Những thông báo từ IDE sẽ được hiển thị tại đây Để ý
rằng góc dưới cùng bên phải hiển thị loại board Arduino và cổng COM được sử dụng.Luôn chú ý tới mục này bởi nếu chọn sai loại board hoặc cổng COM, bạn sẽ không thểupload được code của mình
Hình 1.10 Vùng thông báo của Arduino 1.0.5
• Một số lưu ý: Khi lập trình, các bạn cần chọn port (cổng kết nối khi gắn board
vào) và board (tên board mà bạn sử dụng) Giả sử, bạn đang dùng mạch Arduino Uno,
Trang 14và khi gắn vào máy tính bằng cáp USB nó được nhận là COM4 thì bạn chỉnh như thếnày là có thể lập trình được nhé.
Hình 1.11 Tùy chỉnh khi Arduino Uno thông qua cáp USB
Trang 15Chương 2: THIẾT KẾ VÀ THI CÔNG 2.1 LINH KIỆN
Các linh kiện cần chuẩn bị:
- Board Arduino Uno R3
- 8 bóng led
- 8 điện trở 150 Ohm
- 1 nguồn 5v + dầu dây nối
- 9 dây cáp 7 màu loại đực – đực hoặc đực – cái
2.2 SƠ ĐỒ KHỐI CỦA MẠCH
Hình 2.1 Sơ đồ khối của mạch led dùng Arduino Uno R3
~11
RX < 0
~9 8 7
~6 4
~3 2
D1 LED-BLUE R2
150 R3 150 R4 150 R5 150 R6 150 R7 150 R8 150
D2 LED-BLUE D3 LED-BLUE D4 LED-BLUE D5 LED-BLUE D6 LED-BLUE D7 LED-BLUE D8 LED-BLUE
Hình 2.2 Sơ đồ nguyên lý mạch 8 led đơn sáng tắt dùng Arduino Uno
Nguồn 5V hoặc 9V
Khối vi xử lý
Trang 16- Các chân dương của led hàn nối tiếp với nhau và nối với chân nguồn
- Các chân âm hàn nối với điện trở
Hình 2.3 Các chân dương hàn nối tiếp nhau
Hình 2.4 Hàn các điện trở vào chân âm của led
Trang 17Hình 2.5 Kết nối các led với board Arduino Uno R3
Bảng hướng dẫn nối led với board Arduino Uno R3
Trang 18Hình 2.6 Sản phẩm sau khi đã hoàn thành
2.6 GIỚI THIỆU MỘT SỐ HÀM TRONG PHẦN MỀM LẬP TRÌNH ARDUINO IDE
Các hàm nhập xuất Digital (digital I/O):
• pinMode(): Cấu hình 1 pin quy định hoạt động như là một đầu vào (INPUT) hoặc
đầu ra (OUTPUT) Xem mô tả kỹ thuật số ( datasheet) để biết thêm chi tiết vềcác chức năng của các chân
Cú pháp: pinMode(pin,mode)
Trong đó:
- pin: số của chân digital mà bạn muốn thiết đặt
- mode: INPUT, INPUT_PULLUP hoặc OUTPUT
- Trả về: không
Ví dụ:
Int ledPin = 10: // đèn LED được kết nối với chân digital 10
void setup()
Trang 19digitalWrite(ledPin, HIGH); // bật đèn led
delay(1000); // dừng trong 1 giây
digitalWrite(ledPin,LOW); // tắt đèn led
delay(1000); // dừng trong 1 giây
*Ghi chú: các chân Analog cũng có thể được sử dụng dưới dạng Digital I/O Ví dụ: A0, A1,A2,…
• digitalRead(): đọc tín hiệu từ một chân digital (được thiết đặt là INPUT) Trả về 2 giá trịHIGH hoặc LOW
Ví dụ này sẽ làm cho đèn led tại pin 10 nhận giá trị như giá trị tại pin 2
int ledPin = 10; // chân led 10
int inPin = 2; // button tại chân 2
int val = 0; // biến “val” dùng để lưu tín hiệu từ digitalRead
void setup()
{
pinMode(ledPin,OUTPUT); // đăt pin digital 10 là output
pinMode(inPin,INPUT); // đặt pin digital 2 là input
}
void loop()
Trang 20val = digitalRead(inPin); // đọc tín hiệu từ digital2
digitalWrite(ledPin, val); // thay đổi giá trị của đèn LED là giá trị của digital 2
Nếu một pin được thiết đặt là INPUT bởi pinMode() Lúc này digitalWrite sẽ bật (HIGH)hoặc sẽ tắt (LOW), hệ thống điện trở pullup nội bộ Chúng tôi khuyên bạn nên dùngINPUT_PULLUP nếu muốn bật hệ thống điện trở pullup nội bộ
Cú pháp: digitalWrite(pin,value)
Trong đó:
- Pin: số của chân digital mà bạn muốn thiết đặt
- Value: HIGH hoặc LOW
Trang 21int sensVal = analogRead(A2);
sensVal = constrain(sensVal, 10, 150); // giới hạn giá trị sensVal trong khoảng [10,150]
• pow(): là hàm dùng để tính lũy thừa của một số bất kì (có thể là số nguyên hoặc số thựctùy ý) pow() trả về về kết quả tính toán này
Cú pháp: pow([cơ số],[lũy thừa]};
Ví dụ:
Int luythua1 = pow(2,3);
Float luythua2 = pow(1.2,2,3);
Double luythua3 = pow(1.11111,1.11111);
• map(): là hàm dùng để chuyển một giá trị từ một thang đo này sang một giá trị ở thang đokhác Giá trị trả về của hàm map() luôn là một số nguyên
Cú pháp: map(val,A1,A2,B1,B2);
Trong đó:
- val là giá trị cần chuyển đổi
- A1,A2 là giới hạn trên và dưới của thang đo hiện tại
- B1,B2 là giới hạn trên và giới hạn dưới của thang đo cần chuyển tới
Trang 22• Delay(ms): Delay có nhiệm vụ dừng chương trình trong thời gian mili giây Và cứ mỗi
1000 mili giây = 1 giây
Trang 23Trước hết đề tài này có thể có thể được phát triển cao hơn như mạch led trái tim hoặcled quảng cáo Arduino còn làm được các robot đơn giản, điều khiển nhiệt độ và phát triểnchuyền động Đi cùng đó là một môi trường phát triển tích hợp (IDE) chạy trên các máytính cá nhân thông thường và cho phép người dùng viết các chương trình cho Arduinobằng ngôn ngữ C hoặc C++.
Sau một thời gian nghiên cứu và làm ra sản phẩm mạch 8 led đơn sáng tắt dùngArduino Uno R3 em thu được nhiều kiến thức của môn học từ làm mạch cho đến lập trìnhcác hiệu ứng theo ý muốn Đăc biệt với niên luận 1 này với sự hướng dẫn của thầy Đỗ Chí
Tâm tận tình hướng dẫn em hoàn thành đúng tiến độ Tuy đã có nhiều cố gắng nhưng em
vẫn còn nhiều thiếu xót, rất mong được sự giúp đỡ của thầy Em xin chân thành cảm ơn!