32 2 14MB
1
EBOOKS TỰ HỌC LẬP TRÌNH ARDUINO DÀNH CHO NGƯỜI MỚI BẮT ĐẦU TỪ A ĐẾN Z
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
2
MỤC LỤC A. GIỚI THIỆU VỀ ARDUINO .................................................................................. 15 I.
ARDUINO LÀ GÌ? ................................................................................................... 17
II. SƠ LƯỢC VỀ ARDUINO UNO R3 ........................................................................ 21 1. Một số thông số kỹ thuật như sau : ...................................................................... 22 2. Sơ đồ chân của Arduino Uno................................................................................ 23 III. SƠ LƯỢC BỘ KIT TỰ HỌC ARDUINO .............................................................. 25 1. Giới thiệu sơ lược về KIT TỰ HỌC: ................................................................... 25 2. Những lợi ích của Kit Tự Học Arduino: ............................................................. 25 3. Mục đích của bộ KIT TỰ HỌC: .......................................................................... 26 4. Một số bộ KIT TỰ HỌC ARDUINO: ................................................................ 27 IV. CÀI ĐẶT PHẦN MỀN IDE VÀ DRIVER ............................................................. 27 1. Cài đặt phần mền Arduino IDE: ......................................................................... 27 a.
Cài Java Runtime Environment (JRE). ................................................................ 27
b. Cài đặt Arduino IDE: ........................................................................................... 28 2. Cài đặt Driver đối với Arduino Uno, mê ga,…: ................................................. 30 a.
Cài đặt Driver: ...................................................................................................... 30
b. Nạp chương trình cho Arduino Uno (mega tương tự): ........................................ 32 3. Cài đặt Driver đối với Nano: ................................................................................ 34 a.
Giới thiệu board arduino Nano. ........................................................................... 34
b. Cài đặt driver cho Arduino Nano ......................................................................... 34 c.
Thông số kỹ thuật Arduino Nano: ....................................................................... 35
d. Nạp chương trình cho Arduino Nano: ................................................................. 36 B. NGÔN NGỮ LẬP TRÌNH ARDUINO ..................................................................... 40 I.
HÀM CHỨC NĂNG (FUNCTION): ...................................................................... 40 1. Hàm nhập xuất Digital I/O: .................................................................................. 41 a.
digitalWrite():....................................................................................................... 41
b. digitalRead(): ....................................................................................................... 42 c.
pinMode(): ........................................................................................................... 43
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
3
2. Hàm nhập xuất Analog I/O: ................................................................................. 45 a.
analogRead() ........................................................................................................ 45
b. analogReference () ............................................................................................... 46 c.
analogWrite() ....................................................................................................... 48
d. analogReadResolution ():..................................................................................... 49 e.
analogWriteResolution () ..................................................................................... 51
3. Hàm nhập xuất nâng cao I/O: ........................................................................... 53 a.
noTone(); .............................................................................................................. 53
b. pulseIn () .............................................................................................................. 53 c.
shiftIn(); ............................................................................................................... 54
d. shiftOut(); ............................................................................................................. 55 e.
tone(); ................................................................................................................... 58
4. Hàm thời gian: ....................................................................................................... 59 a.
delay() .................................................................................................................. 59
b. delayMicroseconds () ........................................................................................... 60 c.
micros() ................................................................................................................ 61
d. millis(); ................................................................................................................. 62 5. Hàm toán học: ........................................................................................................ 64 a.
abs() ...................................................................................................................... 64
b. constrain() ............................................................................................................ 64 c.
map() .................................................................................................................... 65
d. max() .................................................................................................................... 66 e.
min() ..................................................................................................................... 66
f.
sq() ....................................................................................................................... 67
g. sqrt() ..................................................................................................................... 67 6. Hàm lượng giác: .................................................................................................... 68 a.
cos() ...................................................................................................................... 68
b. sin() ...................................................................................................................... 68 c.
tan() ...................................................................................................................... 69
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
4
7. Hàm số ngẫu nhiên: ............................................................................................... 69 a.
random() ............................................................................................................... 69
b. randomSeed() ....................................................................................................... 70 8. Bits và Bytes: .......................................................................................................... 72 a.
Bit() ...................................................................................................................... 72
b. bitClear() .............................................................................................................. 73 c.
bitRead()............................................................................................................... 73
d. bitWrite() .............................................................................................................. 74 e.
bitSet() .................................................................................................................. 75
f.
lowByte() ............................................................................................................. 75
g. highByte() ............................................................................................................ 76 9. Hàm Ngắt (interrupt) ............................................................................................ 77 a.
interrupts() ............................................................................................................ 77
b. noInterrupts() ....................................................................................................... 78 10. Hàm Ngắt Ngoài: ................................................................................................... 79 a.
attachInterrupt() ................................................................................................... 79
b. detachInterrupt()................................................................................................... 81 11. Hàm Giao tiếp ........................................................................................................ 83 a.
Serial() .................................................................................................................. 83
12. Xử lý chuỗi: ............................................................................................................ 84 a.
Hàm isAlpha() ...................................................................................................... 84
b. Hàm isAscii() ....................................................................................................... 85 c.
Hàm isWhitespace() ............................................................................................. 86
d. Hàm isPrintable(): ................................................................................................ 87 e. Hàm isUpperCase(): ............................................................................................... 88 f. Hàm isHexadecimalDigit().................................................................................... 89 g. tolower: ................................................................................................................. 90 h. Hàm toupper() ........................................................................................................ 90 i. Hàm isLowerCase() ................................................................................................. 91 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
5
II. GIÁ TRỊ : .................................................................................................................. 92 1. Hằng số ................................................................................................................... 93 a.
Hằng số thực: ....................................................................................................... 93
b. Hằng số nguyên .................................................................................................... 93 c.
HIGH .................................................................................................................... 96
d. LOW..................................................................................................................... 97 e.
INPUT: ................................................................................................................. 98
f.
INPUT_PULLUP ................................................................................................. 98
g. OUTPUT .............................................................................................................. 99 h. LED_BUILTIN .................................................................................................... 99 i.
true ....................................................................................................................... 99
j.
false .................................................................................................................... 100
2. Kiểu dữ liệu: ......................................................................................................... 100 a.
void..................................................................................................................... 100
b. boolean ............................................................................................................... 101 c.
int: ...................................................................................................................... 102
d. unsigned int ........................................................................................................ 103 e.
char ..................................................................................................................... 104
f.
unsigned char ..................................................................................................... 104
g. byte ..................................................................................................................... 104 h. word ................................................................................................................... 105 i.
long..................................................................................................................... 105
j.
unsigned long ..................................................................................................... 105
k. short .................................................................................................................... 106 l. m.
float .................................................................................................................... 106 double ............................................................................................................. 107
n. array ................................................................................................................... 107 o. string................................................................................................................... 109 3. Chuyển đổi kiểu dữ liệu ...................................................................................... 111 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
6
a.
char() .................................................................................................................. 111
b. byte() .................................................................................................................. 111 c.
int() ..................................................................................................................... 112
d. word() ................................................................................................................. 112 e.
long() .................................................................................................................. 113
f.
float() .................................................................................................................. 113
4. Biến hằng, biến tĩnh: ......................................................................................... 114 a.
const - biến hằng ................................................................................................ 114
b. static - biến tĩnh .................................................................................................. 114 III. CẤU TRÚC ( STRUCTURE): ............................................................................... 116 1. Cấu trúc tổng thể:................................................................................................ 116 a.
setup() và loop() ................................................................................................. 116
2. Toán tử logic: ....................................................................................................... 117 3. Các toán tử so sánh. ............................................................................................ 117 4. Cấu trúc điều khiển:............................................................................................ 118 a.
Câu lệnh if…..else .............................................................................................. 118
b. switch / case ....................................................................................................... 119 c.
for ....................................................................................................................... 120
d. while ................................................................................................................... 122 e.
break ................................................................................................................... 122
f.
continue .............................................................................................................. 123
g. return .................................................................................................................. 124 h. goto..................................................................................................................... 124 5. Toán tử số học:..................................................................................................... 125 a.
Phép gán(=) ........................................................................................................ 125
b. Các phép cộng, trừ, nhân, chia trong Arduino ................................................... 125 c.
Phép chia lấy dư%.............................................................................................. 126
6. Cú pháp mở rộng ................................................................................................. 127 a.
dấu chấm phẩy ( ; ) ............................................................................................. 127
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
7
b. {} dấu ngoặc nhọn ............................................................................................. 127 c.
Comments - Viết ghi chú trong khi viết code Arduino...................................... 129
d. #define ................................................................................................................ 130 e.
#include .............................................................................................................. 130
7. Phép toán hợp nhất ............................................................................................. 131 a.
Cộng một 1 đơn vị (++) / trừ một 1 đơn vị (--) .................................................. 131
b. Các phép toán rút gọn += , -= , *= , /= .............................................................. 132 C. CẤU TRÚC CHƯƠNG TRÌNH ARDUINO VÀ BÀI HỌC LẬP TRÌNH TỪ CƠ BẢN ĐẾN NÂNG CAO.................................................................................................. 133 I. CẤU TRÚC CHƯƠNG TRÌNH ARDUINO VÀ CÁCH THÊM THƯ VIỆN VÀO IDE. ....................................................................................................................... 133 1. Cấu trúc chương trình Arduino: ....................................................................... 133 2. Hướng dẫn add thư viện cho Arduino IDE: ..................................................... 134 II. BÀI HỌC LẬP TRÌNH ARDUINO TỪ CƠ BẢN ĐẾN NÂNG CAO. ............. 139 1. Điều khiển LED đơn sáng nhấp nháy................................................................ 139 Nội dung chính.......................................................................................................... 139 Phần cứng ( Trên kit đã tích hợp sẵn chỉ cần nối dây là được) ................................ 139 Lắp mạch................................................................................................................... 139 Hình ảnh thực tế:....................................................................................................... 140 Code lập trình và giải thích ....................................................................................... 140 2. Thay đổi độ sáng của LED đơn. ......................................................................... 142 Nội dung chính: ........................................................................................................ 142 Phần cứng ( được tích hợp sẵn trên kit) nếu không có các bạn chuẩn bị: ................ 142 Lắp mạch................................................................................................................... 142 Hình ảnh thực tế:....................................................................................................... 143 Chương trình: ............................................................................................................ 143 3. Điều khiển đèn giao thông. ................................................................................. 144 Phần cứng cần chuẩn bị ( nếu sử dụng kit thì được tích hợp sẵn) ............................ 144 Lắp mạch: ................................................................................................................. 144 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
8
Hình ảnh thực tế:....................................................................................................... 145 Code lập trình: .......................................................................................................... 145 4. Điều khiển Rơ le 5Vdc 1, 2 kênh mức cao. ........................................................ 147 Giới thiệu thiệu chung: ............................................................................................. 147 Thông số kỹ thuật: .................................................................................................... 147 Phần cứng chuẩn bị: .................................................................................................. 147 Lắp mạch: ................................................................................................................. 148 Code chương trình: ................................................................................................... 148 Hình ảnh thực tế:....................................................................................................... 149 5. Điều khiển Công tắc tơ 3 pha: ............................................................................ 149 Giới thiệu công tắc tơ 3 pha: ..................................................................................... 149 Phần cứng chuẩn bị: .................................................................................................. 151 Lắp mạch: ................................................................................................................. 152 Code chương trình: ................................................................................................... 152 6. Đọc tín hiệu nút nhấn hiển thị lên serial monitor............................................. 153 Giới thiệu về nút nhấn: ............................................................................................. 153 Phần cứng chuẩn bị: .................................................................................................. 155 Sơ đồ nguyên lí: ........................................................................................................ 156 Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn): ................................ 156 Hình ảnh thực tế:....................................................................................................... 157 Lập trình:................................................................................................................... 157 7. Lưu giá trị nút nhấn. ........................................................................................... 159 Phần cứng chuẩn bị: .................................................................................................. 159 Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn): ................................ 159 Hình ảnh thực tế:....................................................................................................... 160 Lập trình:................................................................................................................... 160 8. Bật tắt LED khi nhấn nút nhấn. ........................................................................ 162 Phần cứng chuẩn bị: .................................................................................................. 162 Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn): ................................ 162 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
9
Hình ảnh thực tế:....................................................................................................... 163 Lập trình:................................................................................................................... 163 9. Bật tắt rơ le khi nhấn nút nhấn. ......................................................................... 165 Phần cứng chuẩn bị: .................................................................................................. 165 Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn): ................................ 165 Hình ảnh thực tế:....................................................................................................... 166 Lập trình:................................................................................................................... 166 10. Lập trình hiển thị led 7 đoạn đơn: .................................................................... 168 Giới thiệu led 7 đoạn đơn: ....................................................................................... 168 Phần cứng chuẩn bị: .................................................................................................. 169 Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn): ................................ 170 Lập trình:................................................................................................................... 170 Hình ảnh thực tế:....................................................................................................... 172 11. Hiển thị chữ cái, số ra module 4 led 7 đoạn. ..................................................... 173 Giới thiệu module 4 led 7 đoạn: ............................................................................... 173 Phần cứng chuẩn bị: .................................................................................................. 174 Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn): ............................................... 174 Hình ảnh thực tế:....................................................................................................... 175 Lập trình:................................................................................................................... 175 12. Lập trình hiển thị module led ma trận 8x8. ...................................................... 177 Giới thiệu module ma trận 8x8: ................................................................................ 177 Phần cứng chuẩn bị: ( tất cả được tích hợp trên Kit Tự Học)................................... 177 Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn): ............................................... 178 Hình ảnh thực tế:....................................................................................................... 178 Lập trình:................................................................................................................... 178 13. Hiển thị chữ lên màn hình LCD16x02. .............................................................. 183 Giới thiệu module LCD 16X02: ............................................................................... 183 Phần cứng chuẩn bị: ( tất cả được tích hợp trên Kit Tự Học)................................... 183 Lắp mạch( nếu các bạn đã có kit học thì chỉ việc nối dây): ..................................... 184 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
10
Hình ảnh thực tế:....................................................................................................... 185 Lập trình:................................................................................................................... 185 14. Kết hợp Module I2C với LCD16x02. ................................................................. 185 Giới thiệu module I2C cho LCD: ............................................................................. 185 Phần cứng chuẩn bị: ( tất cả được tích hợp trên Kit Tự Học)................................... 186 Lắp mạch( nếu các bạn đã có kit học thì chỉ việc nối dây): ..................................... 186 Lập trình:................................................................................................................... 187 Hình ảnh thực tế:....................................................................................................... 187 15. Đọc giá trị cảm biến quang trở hiển thị lên serial monitor. ............................ 188 Giới thiệu cảm biến quang trở: ................................................................................. 188 Phần cứng chuẩn bị: (được tích hợp trên Kit Tự Học) ............................................. 189 Lắp mạch( nếu các bạn đã có kit học thì chỉ việc nối dây): ..................................... 189 Hình ảnh thực tế:....................................................................................................... 189 Lập trình:................................................................................................................... 190 16. Đọc gái trị CB nhiệt độ LM35 hiển thị lên serial monitor. .............................. 191 Giới thiệu cảm biến nhiệt độ LM35: ........................................................................ 191 Phần cứng chuẩn bị: .................................................................................................. 192 Lắp mạch: ................................................................................................................. 192 Hình ảnh thực tế:....................................................................................................... 192 Lập trình:................................................................................................................... 192 17. Đọc giá trị CB nhiệt độ DS18B20 hiển thị lên serial monitor. ........................ 193 Giới thiệu cảm biến nhiệt độ DS 18B20: .................................................................. 193 Phần cứng chuẩn bị: .................................................................................................. 194 Lắp mạch: ................................................................................................................. 195 Lập trình:................................................................................................................... 195 18. Hiển thị giá trị CB nhiệt độ LM35 lên mà hình LCD. ..................................... 197 Phần cứng chuẩn bị: .................................................................................................. 197 Lắp mạch : ................................................................................................................ 197 Lập trình :.................................................................................................................. 197 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
11
Hình ảnh thực tế:....................................................................................................... 198 19. Đọc giá trị cảm biến mưa hiển thị lên serial monitor. ..................................... 199 Giới thiệu cảm biến mưa: ......................................................................................... 199 Phần cứng chuẩn bị: .................................................................................................. 200 Lắp mạch : ................................................................................................................ 200 Lập trình :.................................................................................................................. 200 Hình ảnh thực tế:....................................................................................................... 201 20. Đọc giá trị CB siêu âm SRF 05 hiển thị lên serial monitor. ............................ 202 Giới thiệu cảm biến siêu âm SRF05: ........................................................................ 202 Phần cứng chuẩn bị: .................................................................................................. 203 Lắp mạch : ................................................................................................................ 203 Hình ảnh thực tế:....................................................................................................... 204 Lập trình :.................................................................................................................. 205 Kết quả hiển thị lên Serial monitor : ......................................................................... 206 21. Đọc giá trị cảm biến độ ẩm đất hiển thị lên LCD16x02. .................................. 206 Giới thiệu cảm biến độ ẩm đất: ................................................................................. 206 Thông số kỹ thuật: .................................................................................................... 207 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn) .......................................................... 207 Lắp mạch : ................................................................................................................ 207 Hình ảnh thực tế:....................................................................................................... 208 Lập trình :.................................................................................................................. 208 Kết quả hiển thị lên Serial monitor : ......................................................................... 209 22. Đọc giá trị CB dò line hiển thị lên serial monitor và LCD. ............................. 209 Giới thiệu cảm biến dò line: ..................................................................................... 209 Thông số kỹ thuật: .................................................................................................... 210 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn) .......................................................... 210 Lắp mạch : ................................................................................................................ 211 Lập trình :.................................................................................................................. 211 Hình ảnh thực tế:....................................................................................................... 213 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
12
Kết quả hiển thị lên Serial monitor : ......................................................................... 213 23. Đọc giá trị điện áp khi điều chỉnh biến trở hiển thị lên serial ......................... 214 Giới thiệu về biến trở: ............................................................................................... 214 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn biến trở 10K) ..................................... 214 Lắp mạch : ................................................................................................................ 214 Lập trình :.................................................................................................................. 215 Hình ảnh thực tế:....................................................................................................... 216 Kết quả hiển thị lên Serial monitor : ......................................................................... 216 24. Hiển thị thời gian thực (DS1307) lên LCD và serial monitor.......................... 217 Giới thiệu về module DS1307: ................................................................................. 217 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn biến trở 10K) ..................................... 218 Lắp mạch : ................................................................................................................ 218 Lập trình :.................................................................................................................. 219 Hình ảnh thực tế:....................................................................................................... 221 Kết quả hiển thị lên Serial monitor : ......................................................................... 221 25. Hiển thị tốc độ đo bằng Encoder quay lên LCD............................................... 222 Giới thiệu về module Encoder quay: ........................................................................ 222 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn ) ......................................................... 222 Thông số kỹ thuật: .................................................................................................... 222 Lắp mạch: ................................................................................................................. 225 Lập trình :.................................................................................................................. 225 Hình ảnh thực tế:....................................................................................................... 228 26. Cài đặt và hiển thị nhiệt độ, độ ẩm (DTH11).................................................... 228 Giới thiệu về giao tiếp I2C: ...................................................................................... 228 Thông số kỹ thuật DHT11: ....................................................................................... 229 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn ). ........................................................ 229 Lập trình :.................................................................................................................. 231 Hình ảnh thực tế:....................................................................................................... 233 27. Điều khiển động cơ servo SG90: ........................................................................ 234 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
13
Giới thiệu về động cơ servo SG90:........................................................................... 234 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn ). ........................................................ 234 Lắp mạch: ................................................................................................................. 235 Lập trình :.................................................................................................................. 235 Hình ảnh thực tế:....................................................................................................... 236 28. Điều khiển động cơ bước stepper 28BYJ-48: .................................................. 237 Giới thiệu về động cơ bước stepper 28BYJ-48: ...................................................... 237 Thông số kỹ thuật: .................................................................................................... 237 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn ). ........................................................ 237 Lắp mạch: ................................................................................................................. 238 Lập trình :.................................................................................................................. 238 Hình ảnh thực tế:....................................................................................................... 240 29. Bật tắt LED bằng Remote hồng ngoại: ............................................................. 241 Giới thiệu về Remote hồng ngoại: ............................................................................ 241 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn ). ........................................................ 242 Mắt thu hồng ngoại: .................................................................................................. 242 Lắp mạch: ................................................................................................................. 243 Lập trình:................................................................................................................... 243 Hình ảnh thực tế:....................................................................................................... 246 30. Điều khiển động cơ bằng module L298n:.......................................................... 246 Giới thiệu về Module L298: ..................................................................................... 246 Thông số kỹ thuật: .................................................................................................... 247 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn ). ........................................................ 247 Lắp mạch................................................................................................................... 247 Lập trình:................................................................................................................... 248 31. Lập trình module Wifi ESP8266 V1 bằng Uno R3: ......................................... 250 Giới thiệu về module Wifi ESP8266 V1: ................................................................. 250 Thông số kỹ thuật: .................................................................................................... 250 Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn ). ........................................................ 251 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
14
Lắp mạch: ................................................................................................................. 251 Lập trình :.................................................................................................................. 252 Hình ảnh thực tế:....................................................................................................... 254
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
15
A. GIỚI THIỆU VỀ ARDUINO Điều khiển thứ gì đó một cách tự động, ngoài việc phải hoàn chỉnh kết cấu “phần cứng”, ta cần phải có mạch điện điều khiển và phải lập trình để mạch điện đó hoạt động theo ý mình. Lập trình thì không khó học, chỉ khó ở giai đoạn thiết kế mạch điều khiển là khó khăn nhất đối với những ai chưa biết về làm mạch thì càng khó hơn ( còn được gọi thiết kế truyền thống). Và phải trải qua rất nhiều công đoạn như sau:
Tuy nhiên có một thứ làm cho mọi chuyện trở nên rất dễ dàng, có tên gọi là “Arduino”. Và trải qua các công đoạn ngắn gọn như sau:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
16
So sánh các mô hình điều khiển được sử dụng bằng phương pháp thiết kế “truyền thống” và từ thiết kế bằng “Arduino”.
Phương pháp Truyền Thống
Phương pháp dùng Arduino
Kỹ Năng
• Hiểu biết chuyên sâu về • Chủ yếu tập trung tìm hiểu linh kiện điện tử. kết nối hệ thống, không cần quan tâm đến việc vẽ mạch, • Biết vẽ mạch, rửa mạch, in làm mạch in,… mạch,… • Biết lập trình ( việc lập trình • Biết lập trình ( việc lập dễ dàng do thư viện có sẵn trình khó khăn do module của các module được chuẩn tự thiết kế không có chuẩn hóa). hóa ).
Đối Tượng
• Chỉ dành cho những giới • Dành cho giới chuyên ngành, chuyên ngành điện - điện không chuyên, thậm chí là tử. học sinh cấp 1, 2,..
Thời Gian
• Thời gian hoàn thành rất • Thời gian hoàn thành rất nhanh. lâu 1 tuần, có thể từ 1 đến 2 tháng. • Thời gian chủ yếu tập trung • Thời gian tập trung chủ yếu vào hệ thống nên có thể làm vào làm mạch, ít thời gian được những hệ thống phức tạp hơn. để phát triển quy mô hệ thống.
Phát Triển
• Phát triển được kỹ năng • Phát triển được tư duy lập trình hệ thống. thiết kế mạch, in mạch, hàn,…
Chính vì sự tiện lợi như vậy, Arduino đã trở thành một hiện tượng trên toàn thế giới, nếu bạn lên mạng tìm kiếm và gõ vào Arduino, bạn sẽ thấy hàng ngàn ứng dụng khác nhau từ khắp mọi nơi trên thế giới sử dụng Arduino. Từ đó ta có thể thấy được tầm ảnh hưởng của Arduino đến nhường nào.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
17
I.
ARDUINO LÀ GÌ?
Arduino không phải là cái gì cao siêu hết, chỉ là sử dụng chip AVR với những thứ mà bạn sẽ cần đến như mạch giao tiếp (USB sang UART), mạch nguồn, có sẵn các chân vào/ra để giao tiếp với cảm biến và các thiết bị ngoại vi. Arduino rất đơn giản, dễ sử dụng, dễ code (ngôn ngữ tương tự như C/C++). Một trong những cái hay nhất của Arduino là nó hỗ trợ rất nhiều thư viện, rất tiện lợi.
Nếu bạn muốn điều khiển động cơ, sẽ có các mạch công suất tương thích hoàn toàn với Arduino. Nếu bạn muốn điều khiển qua mạng Internet, cũng có một mạch Ethernet/Wifi tương thích hoàn toàn với Arduino. Và còn rất nhiều thứ khác nữa.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
18
Arduino cũng có rất nhiều kích thước khác nhau, phù hợp cho nhiều mục đích sử dụng. Thông dụng nhất hiện nay là Arduino Uno nhỏ gọn dành cho những ai đang bắt đầu học về arduino.
II. ARDUINO LÀM ĐƯỢC NHỮNG GÌ? Một số các dự án thú vị đã được thực hiện bằng Arduino. Xe điều khiển:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
19
Mô hình máy bay 4 cánh:
Máy in 3D:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
20
Nhà thông minh:
Hệ thống tưới cây thông minh.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
21
Hiệu ứng LED:
III. SƠ LƯỢC VỀ ARDUINO UNO R3 Board Arduino Uno nhỏ gọn và đầy đủ tính năng phù hợp cho những ai mới bắt đầu học, Arduino Uno sử dụng chip Atmega328. Nó có 14 chân digital I/O, 6 chân đầu vào (input) analog, thạch anh dao động 16Mhz.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
22
1. Một số thông số kỹ thuật như sau : Chip
ATmega328
Điện áp cấp nguồn
5V
Điện áp đầu vào (input) (kiến
7-12V
nghị ) Điện áp đầu vào(giới hạn)
6-20V
Số chân Digital I/O
14 (có 6 chân điều chế độ rộng xung PWM)
Số chân Analog (Input )
6
DC Current per I/O Pin
40 mA
DC Current for 3.3V Pin
50 mA
Flash Memory
32KB (ATmega328) với 0.5KB sử dụng bootloader
SRAM
2 KB (ATmega328)
EEPROM
1 KB (ATmega328)
Xung nhịp
16 MHz
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
23
2. Sơ đồ chân của Arduino Uno.
• USB (1). Arduino sử dụng cáp USB để giao tiếp với máy tính. Thông qua cáp USB chúng ta có thể Upload chương trình cho Arduino hoạt động, ngoài ra USB còn là nguồn cho Arduino. • Nguồn ( 2 và 3 ). Khi không sử dụng USB làm nguồn thì chúng ta có thể sử dụng nguồn ngoài thông qua jack cắm 2.1mm ( cực dương ở giửa ) hoặc có thể sử dụng 2 chân Vin và GND để cấp nguồn cho Arduino. Bo mạch hoạt động với nguồn ngoài ở điện áp từ 5 – 20 volt. Chúng ta có thể cấp một áp lớn hơn tuy nhiên chân 5V sẽ có mực điện áp lớn hơn 5 volt. Và nếu sử dụng nguồn lớn hơn 12 volt thì sẽ có hiện tượng nóng và làm hỏng bo mạch. Khuyết cáo các bạn nên dùng nguồn ổn định là 5 đến dưới 12 vol. Chân 5V và chân 3.3V (Output voltage) : các chân này dùng để lấy nguồn ra từ nguồn mà chúng ta đã cung cấp cho Arduino. Lưu ý : không được cấp nguồn vào các chân này vì sẽ làm hỏng Arduino. GND: chân mass. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
24
• Chip Atmega328. Chip Atmega328 Có 32K bộ nhớ flash trong đó 0.5k sử dụng cho bootloader. Ngoài ra còn có 2K SRAM, 1K EEPROM. • Input và Output ( 4 và 5 ). Arduino Uno có các chân với chức năng input và output sử dụng các hàm pinMode(), digitalWrite() và digitalRead() để điều khiển các chân này (Analog : A0 đến A5) (digital : chân số 0 đến chân số 13). Cũng trên 14 chân này chúng ta còn một số chân chức năng đó là: Serial : chân 0 (Rx ), chân 1 ( Tx). Hai chân này dùng để truyền (Tx) và nhận (Rx) dữ liêu nối tiếp TTL. Chúng ta có thể sử dụng nó để giao tiếp với cổng COM của một số thiết bị hoặc các linh kiện có chuẩn giao tiếp nối tiếp. PWM (pulse width modulation): các chân 3, 5, 6, 9, 10, 11 trên bo mạch có dấu “~” là các chân PWM chúng ta có thể sử dụng nó để điều khiển tốc độ động cơ, độ sáng của đèn… SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK), các chân này hỗ trợ giao tiếp theo chuẩn SPI. I2C: Arduino hỗ trợ giao tiếp theo chuẩn I2C. Các chân A4 (SDA) và A5 (SCL) cho phép chúng tao giao tiếp giửa Arduino với các linh kiện có chuẩn giao tiếp là I2C • Reset (6): dùng để reset Arduino. Nhưng đối với những ai mới bắt đầu tìm hiểu về arduino thì rất khó khăn chưa kể đến là chưa biết gì về lập trình C, tuy thông tin tài liệu về arduino trên internet là rất nhiều nhưng thiếu gắn kết thì bộ Ebook này là một một giải pháp tuyệt vời nó ra đời để giúp những ai đang cảm giác thấy khó khăn trong lập trình arduino, nếu ai đang muốn học lập trình arduino nên một lần đọc qua. Nếu có sách không thì cũng chưa đủ chúng ta cần phải có thực hành, ứng dụng những cái mình học từ lý thuyết thì BỘ KIT TỰ HỌC ARDUINO ra đời và kết Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
25
hợp với EBOOKS này giúp bạn thấy việc học lập trình arduino không còn khó như ta nghĩ.
IV. SƠ LƯỢC BỘ KIT TỰ HỌC ARDUINO 1. Giới thiệu sơ lược về KIT TỰ HỌC: Để giúp các bạn tiếp cận Arduino một cách dễ dàng nhất, dễ hiểu nhất đặc biệt có thể giúp các bạn làm được những dự án, đề tài,…Thì sự ra đời của Kit Tự Học Arduino ( là bộ cơ bản nhất từ dễ đến khó và Có tài liệu hướng dẫn chi tiết kèm theo + CODE + Ebook lập trình điều khiển arduino ) cho người mới bắt đầu để giúp các bạn học sinh, sinh viên và những ai mới bắt đầu học lập trình điều khiển arduino thoát khỏi cảnh phải lay hoay đi tìm tài liệu để học.
2. Những lợi ích của Kit Tự Học Arduino: a. Tất cả các linh kiện trong bộ tự học này shop đã tạo điều kiện tốt nhất cho người thực hành ( ví dụ như led ma trận 8x8 đã được gắn vào board đồng,…). b. Trên board test mẫu ở hình trên 8 led đơn đã được kết nối với 8 điện trở 1k và đã đưa ra chân sẵn, cũng nhưbiến trở 10k đã đưa ra 3 chân. c. Có 3 nút nhấn nhỏ đã được gắn trên một module đã đi mạch sẵn và đã cho ra chân giúp việc kết nối dễ dàng. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
26
d. Dây cắm test có nhiều kích cỡ khác nhau. e. Kết nối giữa arduino và các module khác trong bộ tự học rất dễ dàng. f. Khi bạn mua bộ Kit Tự Học này thì được tặng kèm file hướng dẫn sử dụng Kit + CODE đối với từng module liên quan, các bạn không cần phải đi tìm tài liệu học. g. Trong file hướng dẫn sử dụng kit có tất cả hơn 25 bài học cơ bản liên quan, mỗi bài học điều có code mẫu kèm theo. h. Tất cả khách hàng mua kit tự học từ tdhshop đều được miễn phí dạy 1 buổi online. i. Được tặng kèm theo 18 ebook tài liệu học arduino bằng tiếng anh. j. Được tặng kèm theo 2 sổ tay Arduino ( LẬP TRÌNH ĐIỀU KHIỂN ARDUINO V1, V2 và 2 cuốn ebook này được tổng hợp lại và điều chỉnh cho phù hợp nhất), tổng hợp các lệnh, hàm,…cơ bản trong quá trình lập trình arduino. 3. Mục đích của bộ KIT TỰ HỌC: a. Điều khiển đèn led đơn ( nhấp nháy theo yêu cầu hay chạy theo hiệu ứng). b. Lập trình hiển thị số trên 1 led 7 đoạn. c. Biết lập trình module 4 led 7 đoạn hiển thị thời gian, chữ cái, số,… d. Biết lập trình led mat trận 8x8 hiển thị chữ cái, số, hiệu ứng,… e. Biết cách lấy tín hiệu Analog (tín hiệu tương tự) và tín hiệu Digital (tín hiệu số) từ cảm biến nhiệt độ, cảm biến ánh sáng,… f. Biết cách nối dây và điều khiển role ( để đóng ngắt thiết bị điện). g. Hiển thị được thông tin trên màn hình LCD. h. Đọc giá trị nhiệt độ hiển thị lên LCD 16X02 thông qua cảm biến nhiệt độ LM35. i. Điều khiển đóng ngắt thiết bị điện dựa vào cài đặt giá trị nhiệt độ. j. Lập trình điều khiển được động cơ chạy thuận nghịch và tăng giảm tốc độ cho động cơ. k. Lập trình điều khiển được động cơ sevor. l. Sử dụng remote hồng ngoại điều khiển tắt mở thiết bị điện thông qua role. m. Biết đọc về giá trị cảm biến độ ẩm đất để thực hiện yêu cầu gì đó mà ta cần phải làm. n. Và có nhiều ứng dụng khác trong quá trình thực hành cùng Kit Tự Học Arduino.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
27
4. Một số bộ KIT TỰ HỌC ARDUINO: • Kit Tự Học Arduino V1 các bạn có thể xem chi tết TẠI ĐÂY. • Kit Tự Học Arduino V2 các bạn có thể xem chi tết TẠI ĐÂY. • Kit Tự Học Arduino V3 các bạn có thể xem chi tết TẠI ĐÂY. • Kit Tự Học Arduino V4 các bạn có thể xem chi tết TẠI ĐÂY. • Kit Tự Học Arduino M1 các bạn có thể xem chi tết TẠI ĐÂY. • Kit Tự Học Arduino M2 các bạn có thể xem chi tết TẠI ĐÂY. • Kit Tự Học Arduino M3 các bạn có thể xem chi tết TẠI ĐÂY. • Kit Tự Học Arduino M4 các bạn có thể xem chi tết TẠI ĐÂY. Sự khác biệt giữa các KIT TỰ HỌC ARDUINO là số lượng bài học và số lượng Module. Giữa BỘ KIT loại V và M khác nhau ở chổ ( Bộ V sử dụng board Arduino Uno R3 Còn Bộ M sử dụng boardArduino Mê ga 2560).
V.
CÀI ĐẶT PHẦN MỀM IDE VÀ DRIVER
1. Cài đặt phần mềm Arduino IDE: a. Cài Java Runtime Environment (JRE). Vì Arduino IDE được viết trên Java nên bạn cần phải cài đặt JRE trước Arduino IDE. Link: http://www.oracle.com/technetwork/java/javase/downloads/jre8downloads-2133155.html
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
28
Bản JRE phổ biến nhất là bản dành cho Windows 32bit (x86) và Windows 64bit (x64) mình đã đánh dấu trong hình. Nhớ chọn "Accept License Agreement".
Việc cài đặt diễn ra rất đơn giản và nhanh chóng. b. Cài đặt Arduino IDE: • Bước 1: Truy cập địa chỉ: http://tdhshop.com.vn/tai-phan-men-arduinoide-cap-nhat-phien-ban-moi-nhat Hoặc: https://www.arduino.cc/en/Main/Software
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
29
Bước 2: Sau khi download xong, các bạn bấm chuột phải vào file vừa download arduino-1.8.5-windows.zip và chọn “Extract here” để giải nén.
Bước 3: Chạy file arduino.exe động Arduino IDE.
trong
thư
mục arduino-1.8.5\ để
khởi
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
30
Sau khi chạy file arduino.exe ta có giao diên Arduino IDE:
2. Cài đặt Driver đối với Arduino Uno, mê ga,…: a. Cài đặt Driver: Đầu tiên, các bạn chạy file dpinst-x86.exe (Windows x86) hoặc dpinstamd64.exe (Windows x64) trong thư mục driver của file phần mềm IDE mình tải về.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
31
Cửa sổ “Device Driver Installation Wizard” hiện ra, các bạn chọn Next để tiếp tục.
Khi có yêu cầu xác nhận cài đặt driver, chọn “Install”
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
32
Quá trình cài đặt đã hoàn tất. Bấm “Finish” để thoát.
b. Nạp chương trình cho Arduino Uno (mega tương tự): Bước 1: Khởi động Arduino IDE:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
33
Bước 2: Mở chương trình mẫu trên Arduino IDE (Blink)
Bước 3: Vào Tools các bạn chọn đúng nhé cái này rất quan trọng.
Kết quả ta có thể thấy Led chân số 13 (tích hợp trên board, led màu cam) của Arduino Uno sáng 1 giây và tắt 1 giây. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
34
3. Cài đặt Driver đối với Nano: a. Giới thiệu board arduino Nano. Board Arduino Nano là một trong những phiên bản nhỏ gọn của board Arduino. Arduino Nano có đầy đủ các chức năng và chương trình có trên Arduino Uno do cùng sử dụng MCU ATmega328P. Nhờ việc sử dụng IC dán của ATmega328P thay vì IC chân cắm nên Arduino Nano có thêm 2 chân Analog so với Arduino Uno.
b. Cài đặt driver cho Arduino Nano Arduino Nano được kết nối với máy tính qua cổng Mini - B USB và sử dụng chip CH340 để chuyển đổi USB sang UART thay vì dùng chip ATmega16U2 để giả lập cổng COM như trên Arduino Uno hay Arduino Mega, nhờ vậy giá thành sản phẩm được giảm mà vẫn giữ nguyên được tính năng, giúp Arduino giao tiếp được với máy tính, từ đó thực hiện việc lập trình. Trước hết chúng ta phải tải driver CH340 cho arduino nano TẠI ĐÂY:
Bước 1: Giải nén thư mục vừa tải về ⇒ mở thư mục CH341SER ⇒khởi động file SETUP.EXE
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
35
Bước 2: Nhấn chọn INSTALL
Bước 3: Hoàn tất cài đặt
c. Thông số kỹ thuật Arduino Nano: IC chính ATmega328P IC nạp và giao tiếp UART CH340 Điện áp hoạt động 5V - DC Điện áp đầu vào khuyên dùng 7-12V - DC Điện áp đầu vào giới hạn 6-20V - DC Số chân Digital I/O 14 (trong đó có 6 chân PWM) Số chân Analog 8 (độ phân giải 10bit, nhiều hơn Arduino Uno 2 chân) Dòng tối đa trên mỗi chân I/O 40mA Bộ nhớ flash 32KB với 2KB dùng bởi bootloader SRAM 2KB EEPROM 1KB Xung nhịp 16MHz Kích thước 0.73" x 1.70" Chiều dài 45mm
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
36
d. Nạp chương trình cho Arduino Nano: Bước 1: Khởi động Arduino IDE
Bước 2: Mở chương trình mẫu trên Arduino IDE (Blink)
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
37
Bước 3: Vào Tools các bạn chọn đúng nhé cái này rất quan trọng.
Kết quả ta có thể thấy Led chân số 13 (tích hợp trên board, led màu đỏ) của Arduino Nano sáng 1 giây và tắt 1 giây.
VI. GIỚI THIỆU PHẦN MỀM ( FRITZING) HỔ TRỢ VIỆC VẼ MẠCH NGUYÊN LÝ 1. Giới thiệu phần mềm Fritzing: Để vẽ một sơ đồ mạch điện ứng dụng hoàn chỉnh, phục vụ cho quá trình học tập và nghiên cứu thì bạn cần có nhiều kinh nghiệm và linh kiện điện tử để thử nghiệm. Một giải pháp hiệu quả cho tình huống này là sử dụng phần mềm Fritzing, bạn sẽ nhanh chóng tạo ra những sơ đồ mạch nguyên lý, sơ đồ lắp đặt có hình ảnh trực quan. Trong quá trình học lập trình Arduino chắc ai cũng đã nhìn thấy những hình ảnh mạch kết nối của Arduino với một số linh kiện như hình ở dưới. Đó là phần
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
38
mền Fritzing, hiện tại phần mềm này miễn phí và rất trực quan rất có ích cho ai học lập trình Arduino.
2. Dowload phần mềm Fritzing ( miễn phí): Các bạn click vào links sau nhé: http://fritzing.org/download/ tải phần mềm miễn phí với giao diện như sau:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
39
3. Hướng dẫn sử dụng phần mềm: Kết nối mạch trên Breadboard:
Chuyển qua sơ đồ nguyên lý:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
40
B. NGÔN NGỮ LẬP TRÌNH ARDUINO Ngôn ngữ lập trình Arduino có thể được chia thành ba phần chính: + Hàm chức năng (function). + Giá trị (các biến và các hằng số). + Cấu trúc (structure).
I.
HÀM CHỨC NĂNG (FUNCTION):
Điều khiển board Arduino và thực hiện các phép tính.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
41
1. Hàm nhập xuất Digital I/O: a. digitalWrite(): Miêu tả: Viết một giá trị HIGH hoặc một LOW cho một chân số của arduino. Nếu chân đã được cấu hình như một OUTPUT với pinMode(), điện áp của nó sẽ được thiết lập với giá trị tương ứng: 5V (hoặc 3.3V trên 3.3V) cho HIGH, 0V cho LOW. Nếu chân được cấu hình như là một INPUT, digitalWrite()sẽ cho phép ( HIGH) hoặc vô hiệu hóa ( LOW) pullup nội bộ trên chân đầu vào. Nên thiết lập pinMode() để INPUT_PULLUP cho phép các điện trở kéo lên bên trong. Cú pháp: digitalWrite(pin, value); Thông số: pin: Số của chân digital mà bạn muốn thiết đặt. value: HIGH hoặc LOW. Trả về: Không có. Ví dụ: Mã làm cho pin kỹ thuật số 13 OUTPUTvà chuyển đổi nó bằng cách luân phiên giữa HIGHvà LOWở tốc độ một giây. int led =13; void setup() { Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
42
pinMode(led, OUTPUT);
// led được nối với chân số 13.
} void loop() { digitalWrite(led, HIGH); // bật led delay(1000); // dừng chương trình 1 giây digitalWrite(led, LOW); // tắt led delay(1000); // dừng chương trình 1 giây } Ghi chú: Các chân đầu vào tương tự có thể được sử dụng như chân kỹ thuật số, được gọi là A0, A1, v.v ... b. digitalRead(): Miêu tả: Đọc giá trị từ một Chân số đã được chỉ định, hoặc là HIGH hoặc LOW. Cú pháp digitalRead(pin) Thông số pin: số chân digital bạn muốn đọc. Trả về HIGH hoặc là LOW Ví dụ: int led = 12; // LED kết nối với chân số 12. int nutnhan = 7; // nút nhấn kết nối với chân số 7 int val = 0; // biến để lưu trữ các giá trị đọc. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
43
void setup () { pinMode (led, OUTPUT); // chân số 12 là đầu ra. pinMode (nutnhan, INPUT); // thiết lập chân số 7 như đầu vào.
} void loop () { val = digitalRead (nutnhan); // đọc các pin đầu vào digitalWrite (led, val); // thiết lập giá trị của LED là giá trị của nút nhấn.
}
Ghi chú: Nếu chân không được kết nối với bất cứ thứ gì, digitalRead () có thể trở lại HIGH hoặc LOW (và điều này có thể thay đổi ngẫu nhiên). Các chân đầu vào tương tự có thể được sử dụng như chân kỹ thuật số, được gọi là A0, A1, v.v ...
c. pinMode(): Miêu tả: Cấu hình 1 pin quy định hoạt động như là một đầu vào (INPUT) hoặc đầu ra (OUTPUT). Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
44
Cú pháp: pinMode(pin, mode) Thông số: pin: số chân có chế độ bạn muốn thiết lập. mode: INPUT, OUTPUT, Hoặc INPUT_PULLUP. Trả về: Không có. Ví dụ: void setup() { pinMode (12, OUTPUT); // chân số 12 là đầu ra } void loop () { digitalWrite (12, HIGH); delay(1000); digitalWrite (12, LOW); delay(1000); }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
45
Ghi chú: Các chân đầu vào tương tự có thể được sử dụng như chân số, được gọi là A0, A1, v.v ...
2. Hàm nhập xuất Analog I/O: a. analogRead() Giới thiệu Nhiệm vụ của analogRead() là đọc giá trị điện áp từ một chân Analog (ADC). Board Arduino Uno có 6 pin từ A0 đến A5 (8 pin trên Mini và Nano, 16 pin trên Mega), bộ chuyển đổi tương tự 10-bit sang số. Điều này có nghĩa là nó sẽ lập bản đồ điện áp đầu vào từ 0 đến 5 volts thành các số nguyên từ 0 đến 1023. Điều này tạo ra độ phân giải giữa các lần đọc: 5 volts / 1024 đơn vị hoặc, 0,0049 volt (4,9 mV) trên một đơn vị. Dải đầu vào và độ phân giải có thể được thay đổi bằng cách sử dụng Hàm analogRead() cần 100 micro giây để thực hiện. Khi người ta nói "đọc tín hiệu analog", bạn có thể hiểu đó chính là việc đọc giá trị điện áp. Cú pháp analogRead (pin) ; Thông số pin: Số chân đầu vào tương tự để đọc từ (0 đến 5 trên hầu hết các bo Arduino, 0 đến 7 trên Mini và Nano, 0 đến 15 trên Mega) Trả về int (0 đến 1023). Ví dụ Ví dụ đọc giá trị điện áp trên analogPin và hiển thị nó.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
46
int analogPin = 4; // chân đọc giá trị analog A4 int val = 0; // lưu giá trị analog đọc về. void setup() { Serial.begin(9600); }
// giao tiếp serial
void loop() { val = analogRead(analogPin); // đọc giá trị analog ở chân A4 Serial.println(val); // hiển thị ra cửa sổ serial }
Ghi chú: Nếu pin đầu vào tương tự không kết nối với bất cứ thứ gì, giá trị trả về bởi analogRead () sẽ dao động dựa trên một số yếu tố (ví dụ: giá trị của các đầu vào analog khác...). b. analogReference () Miêu tả: Cấu hình điện áp tham chiếu được sử dụng cho đầu vào analog (tức là giá trị được sử dụng làm đầu vào). Các lựa chọn là: Board Arduino (Uno, Mega, v.v.) Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
47
DEFAULT: tham chiếu tương tự mặc định 5 volts or 3.3 volts.
INTERNAL: đặt mức điện áp với 1,1 volts trên ATmega168 hoặc ATmega328P và 2,56 volts trên ATmega8 (không dùng trên Arduino Mega).
INTERNAL1V1: đặt mức điện áp tối đa 1.1V (chỉ dành cho Arduino Mega)
INTERNAL2V56: đặt mức điện áp tối đa 2.56V (Arduino Mega)
EXTERNAL: điện áp được áp dụng cho chân AREF (chỉ từ 0 đến 5V) được sử dụng làm tham chiếu. Board SAMD của Arduino (Zero, v.v ...)
AR_DEFAULT: Đặt lại mức điện áp tối đa 3.3V
AR_INTERNAL: Đặt lại mức điện áp tối đa 2.23V
AR_INTERNAL1V0: Đặt lại mức điện áp tối đa 1.0V
AR_INTERNAL1V65: Đặt lại mức điện áp tối đa 1.65V
AR_INTERNAL2V23: Đặt lại mức điện áp tối đa 2.23V
AR_EXTERNAL: điện áp được áp dụng cho chân AREF được sử dụng làm tham chiếu. Board Arduino SAM (Do)
AR_DEFAULT: tham chiếu analog mặc định là 3.3V. Đây là tùy chọn duy nhất được hỗ trợ cho Due. Cú pháp analogReference(type); Thông số type: một trong các kiểu giá trị sau: DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, hoặc EXTERNAL (xem danh sách các tùy chọn như trong mô tả). Trả về Không có
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
48
Ghi chú Nếu bạn sử dụng kiểu EXTERNAL cho hàm analogReference thì bạn phải cấp nó một nguồn nằm trong khoảng từ 0-5V, và nếu bạn đã cấp một nguồn điện thỏa mãn điều kiện trên vào chân AREF thì bạn phải gọi dòng lệnh analogReference(EXTERNAL) trước khi sử dụng analogRead(). c. analogWrite() Miêu tả analogWrite() là lệnh xuất ra từ một chân trên mạch Arduino một mức tín hiệu analog (phát xung PWM). Người ta thường điều khiển mức sáng tối của đèn LED hay điều chỉnh tốc độ động cơ.
Tần số của tín hiệu PWM trên hầu hết các chân khoảng 490 Hz. Trên board Uno và các board tương tự, chân 5 và 6 có tần số khoảng 980 Hz. Bạn không cần gọi hàm pinMode() để đặt chế độ OUTPUT cho chân sẽ dùng để phát xung PWM trên mạch Arduino. Cú pháp: analogWrite([chân phát xung PWM], [giá trị xung PWM]); Giá trị mức xung PWM nằm trong khoảng từ 0 đến 255, tương ứng với mức duty cycle từ 0% đến 100% Trả về Không có. Ví dụ: Đoạn code dưới có chức năng làm sáng dần một đèn LED được kết nối vào chân số 2 trên mạch Arduino. int led = 2; void setup() { } Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
49
void loop() { for (int i = 0; i 250){ goto bailout;} //thêm nhiều câu lệnh nữa } } } bailout:
5. Toán tử số học: a. Phép gán(=) Giới thiệu Dùng để gán một giá trị cho một biến. Giá trị nằm trên phải, tên biến nằm bên trái ngăn cách nhau bởi 1 dấu bằng. Ví dụ int sensor; // Khai báo kiểu dữ liệu cho biến sensor là int sensor = analogRead(0); // đặt giá trị cho sensor là giá trị analog tại chân A0
b. Các phép cộng, trừ, nhân, chia trong Arduino Giới thiệu Những phép toán trên có nhiệm vụ thực hiện việc tính toán trong Arduino. Tùy thuộc vào kiểu dữ liệu của các biến hoặc hằng số mà kết quả trả về của nó có kiểu dữ liệu như thế nào. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
126
Ví dụ y = y + 3; x = x - 7; i = j * 6; r = r / 5; Cú pháp result = value1 + value2; result = value1 - value2; result = value1 * value2; result = value1 / value2; Tham số value1: là một số ở bất kỳ kiểu dữ liệu nào value2: là một số ở bất kỳ kiểu dữ liệu nào
c. Phép chia lấy dư% Giới thiệu Phép chia lấy dư là phép lấy về phần dư của một phép chia các số nguyên. Cú pháp = / ; Ví dụ x = 7 % 5; x = 9 % 5; x = 5 % 5; x = 4 % 5;
// x bây giờ là 2 // x bây giờ là 4 // x bây giờ là 0 // x bây giờ là 4
Tham khảo /* cập nhập lại giá trị trong hàm loop */ int values[10]; int i = 0; void setup() {} Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
127
void loop() { values[i] = analogRead(0); i = (i + 1) % 10; // giá trị của biến i sẽ không bao giờ vượt quá 9. } Lưu ý Phép chia lấy dư không khả dụng với kiểu dữ liệu float
6. Cú pháp mở rộng a. dấu chấm phẩy ( ; ) Giới thiệu Dùng để kết thúc một dòng lệnh. Ví dụ int ledPin = 13; Thủ thuật Giả sử bạn có quên dấu ";" này thì cũng không có vấn đề to tát lắm, chương trình dịch của Arduino sẽ tự động dò tìm lỗi này và thông báo chính xác dòng bị lỗi!
b. {} dấu ngoặc nhọn Giới thiệu Rất đơn giản, {} là một cặp dấu ngoặc nhọn, nên một khi bạn đã mở ngoặc thì phải đóng ngoặc lại cho nó! Nhiệm vụ của nó là cung cấp một cú pháp để gọi những lệnh cho những cấu trúc đặc biệt như (if, while, for,...)
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
128
Cách sử dụng Trong hàm và thủ tục
void myfunction( ){ ; } Vòng lặp
while () {
} do {
} while (); for (; ; ) {
} Lệnh rẻ nhánh if () {
} else if () {
}
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
129
c. Comments - Viết ghi chú trong khi viết code Arduino Giới thiệu Bạn rất khó ghi nhớ từng dòng code một trong một chương trình thật là dài, với những thuật toán phức tạp, vì vậy Arduino đã làm cho bạn một cú pháp để giải quyết vấn đề này, đó là Comments. Comments sẽ giúp bạn ghi chú cho từng dòng code hoặc trình bày nhiệm vụ của nó để bạn hoặc những người khác có thể hiểu được chương trình này làm được những gì. Và comments sẽ không được Arduino biên dịch nên cho dù bạn viết nó dài đến đâu thì cũng không ảnh hưởng đến bộ nhớ flash của vi điều khiển. Để comments trong Arduino, bạn có 2 cách. ( // chú thích code ), ( /* chú thích code */ ) Ví dụ
/* chương trình trên được viết bởi Phi Nguyen */ void setup() { pinMode(13, OUTPUT); // chân số 13 là chân OUTPUT } void loop() { digitalWrite(13, HIGH); // bật led trong vòng 3 giây delay(3000); digitalWrite(13, LOW); // tắt led trong vòng 1 giây delay(1000); }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
130
d. #define Giới thiệu #define là một đối tượng của ngôn ngữ C/C++ cho phép bạn đặt tên cho một hằng số nguyên hay hằng số thực. Trước khi biên dịch, trình biên dịch sẽ thay thế những tên hằng bạn đang sử dụng bằng chính giá trị của chúng. Quá trình thay thế này được gọi là quá trình tiền biên dịch (pre-compile). Cú pháp #define [tên hằng] [giá trị của hằng] Ví dụ #define pi 3.14 Nếu bạn viết code thế này ... #define pi 3.14 float a = pi * 2.0; // pi = 6.28 thì sau khi pre-compile trước khi biên dịch, chương trình của bạn sẽ như thế này: #define pi 3.14 float a = 3.14 * 2.0; // a = 6.28 e. #include Giới thiệu #include cho phép chương trình của bạn tải một thư viện đã được viết sẵn. Tức là bạn có thể truy xuất được những tài nguyên trong thư viện này từ chương trình của mình. Nếu bạn có một đoạn code và cần sử dụng nó trong nhiều chương trình, bạn có thể dùng #include để nạp đoạn code ấy vào chương trình của mình, thay vì phải chép đi chép lại đoạn code ấy. Cú pháp #include Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
131
Ví dụ Giả sử bạn có thư mục cài đặt Arduino IDE tên là ArduinoIDE, thư viện của bạn có tên là EEPROM (được lưu ở \ArduinoIDE\libraries\EEPROM\) Một đoạn code lưu ở file code.h nằm trong thư mục function của thư viện EEPROM thì được khai báo như sau:
7. Phép toán hợp nhất a. Cộng một 1 đơn vị (++) / trừ một 1 đơn vị (--) Giới thiệu Tăng hoặc trừ một biến đi 1 đơn vị. Cú pháp x++; // tăng x lên 1 giá trị và trả về giá trị cũ của x ++x; // tăng x lên 1 giá trị và trả về giá trị mới của x x-- ; // trừ x lên 1 giá trị và trả về giá trị cũ của x --x ; // trừ x lên 1 giá trị và trả về giá trị mới của x Tham số x: bất kỳ kiểu số nguyên nào (int, byte, unsigned int,...) Trả về Giá trị cũ của biến hoặc giá trị mới đã được cộng / hoặc bị trừ của biến ấy. Ví dụ x = 2; y = ++x; y = x--;
// x bây giờ có giá trị là 3, và y cũng có giá trị là 3 // x bây giờ đã trở lại với giá trị 2, nhưng y không đổi vẫn là 3
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
132
b. Các phép toán rút gọn += , -= , *= , /= Giới thiệu Cung cấp một số phép toán rút gọn để bạn gõ code trong đẹp hơn.
Cú pháp x += y; // giống như phép toán x = x + y; x -= y; // giống như phép toán x = x - y; x *= y; // giống như phép toán x = x * y; x /= y; // giống như phép toán x = x / y; Tham số x: mọi kiểu dữ liệu y: mọi kiểu dữ liệu hoặc hằng số Ví dụ x = 2; x += 4; // x bây giờ có giá trị là 6 x -= 3; // x bây giờ có giá trị là 3 x *= 10; // x bây giờ có giá trị là 30 x /= 2; // x bây giờ có giá trị là 15
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
133
C. CẤU TRÚC CHƯƠNG TRÌNH ARDUINO VÀ BÀI HỌC LẬP TRÌNH TỪ CƠ BẢN ĐẾN NÂNG CAO I.
CẤU TRÚC CHƯƠNG TRÌNH ARDUINO CÁCH THÊM THƯ VIỆN VÀO IDE.
VÀ
1. Cấu trúc chương trình Arduino: Trong một chương trình Arduino, bạn cần có tối thiểu 2 hàm hệ thống chính, bắt buộc phải có. Đó là setup() và loop()
Hàm setup() và loop() hoạt động như sau: Những lệnh trong setup() sẽ được chạy khi chương trình của bạn khởi động. Bạn có thể sử dụng nó để khai báo giá trị của biến, khai báo thư viện, thiết lập các thông số,… Sau khi setup() chạy xong, những lệnh trong loop() được chạy. Chúng sẽ lặp đi lặp lại liên tục cho tới khi nào bạn ngắt nguồn của board Arduino mới thôi.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
134
Quá trình của một chương trình có thể được miêu tả như sơ đồ dưới đây:
Ví dụ một chương trình điều khiển led cơ bản: int led = 13; // khai báo chân điều khiển led là chân số 13 của arduino void setup() { //toàn bộ đoạn code nằm trong hàm này chỉ được chạy duy nhất một lần khi chạy chương trình pinMode(led, OUTPUT); //sẽ được chạy 1 lần để khai báo chân ra của arduino } void loop() { // lặp lại mãi mãi sau khi chạy xong setup() digitalWrite(led, HIGH); //bật led delay(1000);
// bật led trong vòng 1 giây
digitalWrite(led, LOW); // tắt led delay(1000); // tắt led trong vòng 1 giây sau đó bật led và lặp lại quá trình. }
2. Hướng dẫn add thư viện cho Arduino IDE: Thư viện đóng vai trò vô cùng quan trọng trong việc lập trình điều khiển Ardunio. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
135
Nó cung cấp cho bạn một phương thức cực kỳ đơn giản để giao tiếp giữa các module và arduino. ( ví dụ như giúp việc giao tiếp giữa Arduino với module thời gian thực DS1307 trở nên dễ dàng hơn rất nhiều)
Thư viện trong Arduino chứa các mã nguồn có những đặc điểm chung, được xây dựng thành một gói bao gồm file: examples, .h, .cpp,...Nhằm giúp người sử dụng giải quyết được vấn đề nhanh chóng.
Một số thư viện có sẵn trong chương trình Arduino IDE như: Sevor, Stepper, EEPROM, Ethernet, SPI,... Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
136
Nhằm giúp người sử dụng giải quyết được vấn đề nhanh chóng, trong bài viết này tôi cài thư viện I2C làm ví dụ để cài vào thư viện cho Arduino IDE. Sau khi tải thư viện I2C về với file .zip (Tải tại đây) copy thư mục vào đường dẫn sau: ( lưu ý Arduino IDE chỉ hiểu những file .zip hoặc dạng folder.)
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
137
Sau khi tải về và lưu vào đường dẫn ở trên, Ta vào Sketch Include Library Add sau đó chọn file I2C vừa tải về:
Chọn Open để bắt đầu add thư viện I2C vào Arduino IDE:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
138
Nếu cửa sổ Arduino IDE báo dòng chữ dưới đây thì đã cài thành công.
Sau khi ài xong ta reset lại Arduino IDE và xem lại thư viện I2C đã có trong IDE chưa. Vậy là OK
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
139
II. BÀI HỌC LẬP TRÌNH ARDUINO TỪ CƠ BẢN ĐẾN NÂNG CAO. 1. Điều khiển LED đơn sáng nhấp nháy. Nội dung chính. Hôm nay, chúng ta sẽ tìm hiểu cách để điều khiển một con đèn led nhấp nháy. Phần cứng ( Trên kit đã tích hợp sẵn chỉ cần nối dây là được) 1 arduino uno, nano,… 1 trở 220 Ohm 1 led đơn Lắp mạch Ở bài này ta điều khiển led đơn sáng nhấp nháy theo yêu cầu của mình.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
140
Hình ảnh thực tế:
Code lập trình và giải thích Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. Trước tiên, cứ mỗi khi dùng một con LED, chúng ta phải pinMode OUTPUT chân Digital mà ta sử dụng cho con đèn LED. Trong ví dụ, chúng ta sử dụng chân LED là chân digital 12. Nên đoạn code sau cần nằm trong void setup() pinMode(12, OUTPUT); Để bật một con đèn LED, bạn phải digitalWrite HIGH cho chân số 12 (chân Digtal được kết nối với con LED). Đoạn code này nằm trong void loop() digitalWrite(12,HIGH); Dòng lệnh trên sẽ cấp một điện thế là 5V vào chân số Digital 12. Điện thế sẽ đi qua điện trở 220ohm rồi đến đèn LED (sẽ làm nó sáng mà không bị cháy, ngoài ra bạn có thể các loại điện trở khác đèn LED tắt. Và để thấy được trạng thái bật và tắt của đèn LED bạn phải dừng chương trình trong một khoảng thời gian đủ lâu để mắt cảm nhận được (nói vậy thôi, chứ bạn chỉ cần dừng chương trình trong vài miligiây là thấy được rồi). Vì vậy, hàm delay được tạo ra để làm việc này (Dừng hẳn chương trình bao nhiêu mili giây)!
code: /* Đoạn code làm nhấp nháy một đèn LED cho trước */ // Hàm setup chạy một lần duy nhất khi khởi động chương trình void setup() { pinMode(12, OUTPUT); } // Hàm loop chạy mãi mãi sau khi kết thúc hàm setup() void loop() { digitalWrite(12, HIGH); // bật đèn led sáng delay(5000);
// dừng chương trình trong 5 giây => thây đèn sáng được 5 giây
digitalWrite(12, LOW); delay(2000);
// tắt đèn led
// dừng chương trình trong 2 giây => thấy đèn tối được 2 giây
}
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
142
2. Thay đổi độ sáng của LED đơn. Nội dung chính: Hôm nay chúng sẽ tìm hiểu cách sử dụng các chân digital để xuất giá trị analog và ứng dụng chúng trong việc làm thay đổi độ sáng của đèn (làm mờ đèn). Phần cứng ( được tích hợp sẵn trên kit) nếu không có các bạn chuẩn bị: Arduino Uno, nano,… Breadboard. Dây cắm breadboard. 1 điện trở (hoặc 220 Ohm hoặc 1kOhm). 1 đèn LED đơn. Lắp mạch
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
143
Hình ảnh thực tế:
Lưu ý những chân digital có dấu ~ phía trước và những chân analog mới hỗ trợ analogWrite, Chương trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. int led = 6; // cổng digital mà LED được nối vào int giatribandau = 0; // mặc định độ sáng của đèn int tanggiatri = 5; // mỗi lần thay đổi độ sáng thì thay đổi với giá trị là bao nhiêu void setup() { // pinMode đèn led là OUTPUT pinMode(led, OUTPUT); } void loop() { //xuất giá trị độ sáng đèn LED Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
144
analogWrite(led, giatribandau); // Đoạn code này có nghĩa nếu độ sáng == 0 hoặc bằng == 255 thì sẽ đổi chiều của biến thay đổi độ sáng. Ví dụ, nếu đèn từ sáng yếu --> sáng mạnh thì fadeAmount dương. Còn nếu đèn sáng mạnh --> sáng yếu thì fadeAmmount lúc này sẽ có giá trị âm if (giatribandau == 0 || giatribandau == 255) { tanggiatri = - tanggiatri ; } //đợi 50 mili giây để thấy sự thay đổi của đèn delay(50); }
3. Điều khiển đèn giao thông. Phần cứng cần chuẩn bị ( nếu sử dụng kit thì được tích hợp sẵn) • Arduino Uno, Nano,… • Breadboard. • Dây cắm breadboard. • 3 điện trở 220 Ohm (hoặc 560 Ohm hoặc 1kOhm). • 3 LED đơn siêu sáng. Lắp mạch:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
145
Hình ảnh thực tế:
Code lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. // chương trình điều khiển đèn giao thông int red = 8; int yellow = 9; int green = 10; void setup(){ Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
146
pinMode(red,OUTPUT); pinMode(yellow,OUTPUT); pinMode(green,OUTPUT); } void loop(){ delay(15000); } void dengiaothong(){ digitalWrite(yellow,LOW); // tat den vang digitalWrite(green,LOW); // tat den xanh digitalWrite(red,HIGH); // bat den do delay(10000);// den đỏ sáng 10 giây.
digitalWrite(green,LOW); // tat den xanh digitalWrite(red,LOW); // tat den do digitalWrite(yellow,HIGH); // bat den vang delay(2000); // đèn vàng sáng 2 giây.
digitalWrite(yellow,LOW); // tat den vang digitalWrite(red,LOW); // tat den do digitalWrite(green,HIGH); // bat den xanh trong vong 15 giây } Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
147
4. Điều khiển Rơ le 5Vdc 1, 2 kênh mức cao. Giới thiệu thiệu chung: Module 1 Relay với opto cách ly nhỏ gọn, có opto và transistor cách ly giúp cho việc sử dụng trở nên an toàn với board mạch chính, mạch được sử dụng để đóng ngắt nguồn điện công suất AC ( quạt hay đèn,…) hoặc DC.
Role 1 kênh ( có 1 role) và 2 kênh ( 2 rơ le) trên thuộc loại kích mức cao. Tiếp điểm đóng ngắt gồm 3 tiếp điểm NC (thường đóng), NO(thường mở) và COM(chân chung) được cách ly hoàn toàn với board mạch chính. Ở trạng thái bình thường chưa kích NC sẽ nối với COM, khi có trạng thái kích COM sẽ chuyển sang nối với NO và mất kết nối với NC. Thông số kỹ thuật:
Sử dụng điện áp nuôi DC 5V. Relay mỗi Relay tiêu thụ dòng khoảng 80mA. Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc DC30V ~ 10A. Có đèn báo đóng ngắt trên mỗi Relay.
Phần cứng chuẩn bị: Arduino Uno, Nano,… Rơ le 1 ( hoặc 2) kênh mức cao. Dây cắm test board.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
148
Lắp mạch:
Code chương trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. // Code này sử dụng cho role mức cao int role = 11; // có thể sử dụng chân khác của arduino để điều khiển rơ le void setup() { pinMode(role, OUTPUT); // role được khai báo là chân ra } void loop() { Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
149
digitalWrite(role, HIGH); // bật role trong 10 giay delay(10000); digitalWrite(role, LOW);
// tắt role trong 4 giây
delay(4000); } Hình ảnh thực tế:
5. Điều khiển Công tắc tơ 3 pha: Giới thiệu công tắc tơ 3 pha: Công tắc tơ là gì?:
Công tắc tơ là khí cụ điện để đóng, ngắt thường xuyên các mạch điện động lực, từ xa, bằng tay (thông qua nút bấm) hoặc tự động có công suất lớn. Việc đóng cắt công tắc tơ có thể được thực hiện bằng nam châm điện, thủy lực hoặc khí nén. Thông thường sẽ sử dụng nam châm điện để đóng cắt công tắc tơ
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
150
Cấu tạo công tắc tơ:
Bao gồm các bộ phận chính: Cuộn cảm, nam châm điện, lò xo, lõi thép và các tiếp điểm.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
151
Nguyên lý hoạt động công tắc tơ:
-Khi cuộn hút công tắc tơ chưa được cấp điện, lò xo hồi vị đẩy lõi thép động cách xa khỏi lõi thép tĩnh. Các cặp tiếp điểm chính ở trạng thái mở. - Khi cấp điện vào cuộn hút của công tắc tơ, lõi thép tĩnh hút lõi thép động thắng được lực đẩy lò xo, từ đó đóng các tiếp điểm lại, đưa điện đi từ đầu vào Công tắc tơ tới đầu ra công tắc tơ. - Khi ngắt điện cấp vào cuộn hút công tắc tơ, lực hút không còn nữa, lò xo lại đẩy lõi thép động về vị trí ban đầu, các cặp tiếp điểm mở ra, ngắt điện ở đầu ra công tắc tơ. - Ngoài tiếp điểm chính để truyền tải điện 3 pha, công tắc tơ còn có thêm các tiếp điểm phụ để sử dụng trong các mạch điều khiển, mạch logic trung gian. Phần cứng chuẩn bị: Mạch arduino uno, nano, mê ga,… Công tắc tơ LS hàn quốc ( trong bài này sử dụng loại 18A). Module rơ le 5Vdc ( trong bài sử dụng loại kích mức cao). Dây cắm test và một số dây điện dân dụng hoặc công nghiệp.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
152
Lắp mạch:
Code chương trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. // Code này sử dụng cho role mức cao int role = 3;// sử dụng chân 3 để điều khiển rơ le đóng ngắt cuộn từ của công tắc tơ void setup() { pinMode(role, OUTPUT); // role được khai báo là chân ra } void loop() { digitalWrite(role, HIGH); // bật role trong 10 giây cũng như cấp điện cho cuộn từ 10 s delay(10000); digitalWrite(role, LOW); // tắt role trong 10 giây cũng như ngắt điện cho cuộn từ 10 s Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
153
delay(10000); }
// trong phần sau chúng ta sử dụng nút nhấn để bật tắt role đóng ngắt cuộn từ của công tắc tơ
6. Đọc tín hiệu nút nhấn hiển thị lên serial monitor. Giới thiệu về nút nhấn: Tôi sẽ giới thiệu cho các bạn những loại button ( nút nhấn) phổ biến hiện nay. Nút nhấn (Button) là gì? Bạn có thể tìm thấy nó ở mọi thứ trong cuộc sống, chẳng hạn như cái nút trong bàn phím máy tính của mình,…
Các loại button: Button có rất nhiều loại, và mỗi loại lại có ứng dụng riêng của nó. Vì vậy, chỉ cần s dụng hợp lý và sáng tạo các loại button - nút bấm, bạn sẽ làm nên những dự án. Nút nhấn thường có 2 loại chính: 2 chân và 4 chân ( thực chất 4 chân giống 2 chân chỉ giúp nó cố định và chắc chắn hơn).
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
154
Button (thường) (6mm hoặ c 12mm)
Đây là loại button rất phổ biến, loại button này cũng có các kính thước cạnh 6mm, 9mm hoặc 12m. Loại 6mm hay được dùng trong các dự án nhỏ và loại còn lại dùng cho các dự án lớn hơn.
Loại này tuy là 4 chân, nhưng thực chất cũng chỉ là 2 chân mà thôi, các bạn xem hình dưới.
Ưu điểm của loại có 4 chân này là nó khá vững và rất khó hư!
Button dán (button smd) Loại này khá là nhỏ, chỉ 2-3mm, vì vậy rât phù hợp cho những mạch yêu cầu về kích thước, bạn có thể tìm thấy nó trên con nano, nó chính là nút reset cho chú Arduino nano.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
155
Nút bấm công nghiệp: Những loại nút bấm này thường được dùng để chế tạo những đồ trong công nghiệp, hoặc những máy móc to lớn cần bấm nhiều và cần đèn trạng thái. Loại này đôi khi có đèn, đôi khi lại không. Với loại không có đèn thì cũng có 2 chân như các loại ở trên, còn loại có đèn thì có đến 4 chân (2 chân của button, 1 chân dương và 1 chân âm của led).
Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard Điện trở 10 kΩ. Nút nhấn 2 chân hoặc 4 chân (hoặc công tắc tương đương).
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
156
Sơ đồ nguyên lí:
Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn):
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
157
Hình ảnh thực tế:
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. int nutnhan = 2; // khai bao chan nut nhấn là chân D2 void setup() { Serial.begin(9600); //Mở cổng Serial ở baudrate 9600 để giao tiếp với máy tính pinMode(button, INPUT); //Cài đặt chân D2 ở trạng thái đọc dữ liệu } void loop() { int buttonStatus = digitalRead(nutnhan); //Đọc trạng thái button Serial.println(buttonStatus); //Xuất trạng thái button delay(200); //Chờ 200ms } Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
158
Khi bạn chưa nhấn nút, chân D2 được nối với GND qua một điện trở 10 kΩ, do đó lệnh digitalRead(nutnhan) sẽ trả về giá trị 0 (LOW). Khi bạn nhấn nút, chân D2 sẽ được nối trực tiếp với 5V và nối với GND thông qua 1 điện trở 10kΩ, lệnh digitalRead(nutnhan) sẽ trả về giá trị 1 (HIGH). Khi chưa nhấn nút, nếu bạn nối chân D2 với GND qua 1 điện trở thì người ta gọi điện trở này là điện trở pulldown. Trái lại, nếu bạn nối D2 với chân 5V qua một điện trở thì người ta gọi nó là điện trở pullup. Cách nối ở trên hình sử dụng cách nối điện trở pulldown. Sau khi upload code lên mạch Arduino, bạn bấm Ctrl + Shift + M để mở cửa sổ Serial Monitor để xem trạng thái nút nhấn được mạch Arduino gửi về máy tính.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
159
Trong câu lệnh: pinMode(button, INPUT); Bạn hãy sửa INPUT thành INPUT_PULLUP rồi tải lại code của bạn lên mạch Arduino. Bạn có thể tháo điện trở 10 kΩ ra và xem kết quả ... Đó là vì trong vi điều khiển ATmega328 của Arduino UNO đã có sẵn điện trở pullup tương tự điện trở pulldown mà bạn đang mắc, tuy nhiên nếu bạn khai báo là INPUT như mặc định thì nó sẽ không được sử dụng, trái lại việc khai báo INPUT_PULLUP sẽ kích hoạt điện trở này.
7. Lưu giá trị nút nhấn. Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard Điện trở 10 kΩ. Nút nhấn 2 chân hoặc 4 chân (hoặc công tắc tương đương).
Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn):
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
160
Hình ảnh thực tế:
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. int nutnhan = 2; // định nghĩa chân số 0 là button int t = 0; // khai báo biến int status1; // biến lưu các trạng thái nút nhấn // viết hàm chống dội boolean chong_doi() { int sta =!digitalRead(nutnhan); // đọc trạng thái nút nhấn } // khởi tạo void setup() { Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
161
Serial.begin(9600); pinMode(nutnhan,INPUT); } void loop() // vong lap { int buttonState = digitalRead(nutnhan); //Serial.println(buttonState); status1 = chong_doi(); if(status1==true) { { t=!t;// đảo trạng thái } while(status1==true){status1=chong_doi();} } Serial.println(t); } Sau khi upload code lên mạch Arduino, bạn bấm Ctrl + Shift + M để mở cửa sổ Serial Monitor để xem trạng thái nút nhấn được mạch Arduino gửi về máy tính.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
162
8. Bật tắt LED khi nhấn nút nhấn. Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard Điện trở 10 kΩ. Nút nhấn 2 chân hoặc 4 chân (hoặc công tắc tương đương). 1 trở 220 Ohm hoặc 470 Ohm. 1 led đơn.
Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn):
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
163
Hình ảnh thực tế:
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. int nutnhan = 8; // định nghĩa chân số 0 là button int led = 9, t=0; // khai báo led và biến int status1; // biến lưu các trạng thái nút nhấn // viết hàm chống dội boolean chong_doi() { int sta =!digitalRead(nutnhan); // đọc trạng thái nút nhấn } // khởi tạo void setup() { Serial.begin(9600); Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
164
pinMode(nutnhan,INPUT); pinMode(led,OUTPUT); } void loop() // vong lap { int buttonState = digitalRead(nutnhan); Serial.println(buttonState); status1 = chong_doi(); if(status1==true) { { t=!t; // đảo trạng thái } while(status1==true){status1=chong_doi();} } if(t==1) { digitalWrite(led,HIGH); } else { digitalWrite(led,LOW); } }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
165
9. Bật tắt rơ le khi nhấn nút nhấn. Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard Điện trở 10 kΩ. Nút nhấn 2 chân hoặc 4 chân (hoặc công tắc tương đương). 1 rơ le kích mức cao.
Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn):
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
166
Hình ảnh thực tế:
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. int nutnhan = 8; // định nghĩa chân số 0 là button int role = 9, t=0; // khai báo led và biến int status1; // biến lưu các trạng thái nút nhấn // viết hàm chống dội boolean chong_doi() { int sta =!digitalRead(nutnhan); // đọc trạng thái nút nhấn Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
167
} // khởi tạo void setup() { Serial.begin(9600); pinMode(nutnhan,INPUT); pinMode(led,OUTPUT); } void loop() // vong lap { int buttonState = digitalRead(nutnhan); Serial.println(buttonState); status1 = chong_doi(); if(status1==true) { { t=!t; // đảo trạng thái } while(status1==true){status1=chong_doi();} } if(t==1) { digitalWrite(role,HIGH); } else { digitalWrite(role,LOW); } } TỪ BÀI HỌC NÀY CÁC BẠN CÓ THỂ ĐIỀU KHIỂN ĐƯỢC CÔNG TẮT TƠ THEO Ý MÌNH THÔNG QUA NÚT NHẤN.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
168
10.
Lập trình hiển thị led 7 đoạn đơn:
Giới thiệu led 7 đoạn đơn: Trước khi vào lập trình, chúng ta hãy cùng đi vào tìm hiểu cấu trúc của LED 7 đoạn.
Thực ra cấu trúc của LED 7 đoạn gồm 8 LED đơn, nhìn lên hình trên chắc các bạn cũng thấy gồm có 7 đoạn và một dấu chấm nhỏ, mỗi đoạn và dấu chấm nhỏ đó là một LED đơn. Việc sử dụng LED 7 đoạn chúng ta có thể sử dụng để hiển thị các số, các chữ cái anphabet và nhiều kiểu ký tự khác nhau. Như trên hình các bạn đã thấy, một LED 7 đoạn đơn gồm 10 chân đó là các chân: a, b, c, d, e, f, g, 2 chân chung và chân dấu chấm tròn (DP). LED 7 đoạn gồm 2 loại đó là dương chung và âm chung. Trong bài học này chúng ta sẽ viết chương trình và tải vào Arduino để hiển thị các số từ 0-9 ( Loại âm chung).
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
169
Để LED hiển thị chúng ta phải làm cho 8 LED đơn như ở trên hiển thị, ví dụ ở đây 8 LED ở đây là các led mang kí tự a, b, c, d, e, f, g và một dấu chấm ở chân cuối. Bây giờ chúng ta thử suy nghĩ nếu chúng ta muốn hiển thị số 0 chúng ta phải làm thế nào? Nhìn vào hình LED hiển thị ở đầu bài chúng ta thấy: Để hiển thị số 0 thì chúng ta phải làm cho các LED đơn a, b, c, d, e, f phải sáng lên, dấu chấm và g phải tắt đi. Như vậy để tạo số 0 chúng ta phải thể hiện mã code hệ nhị phân (binary) là B111111100. Tương tự đối với số 1 thì có những cái LED nào sáng? Các bạn có thể viết được mã làm xuất hiện số 1 được không? Đó là: B01100000. Tương tự đối với các số 2. 3, 4, 5, 6, 7, 9. Để dễ hiểu hơn tôi xin đưa ra một bảng sau để các bạn dò. Lưu ý: sáng là 1, tắt là 0.
Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard. Dây test board. Điện trở 220 Ω. 1 led 7 đoạn đơn.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
170
Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn nút nhấn):
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. // Khai báo chân const int G = 8; // G= Arduino chân 8 const int F = 7; // F= Arduino chân 7 const int A = 2; // A = Arduino chân 2 const int B = 3; // B = Arduino chân 3 const int E = 6; // E = Arduino chân 6 Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
171
const int D = 5; // D = Arduino chân 5 const int C = 4; // C = Arduino chân 4 const int dp = 9; // dp = Arduino chân 9 const int second = 1000; // thiết lập với mili giây, 1000 milliseconds = 1 second const int digit = 10; // Số ký tự hiển thị10 digits (0 - 9) const int segment = 7; // Số thanh hiển thị trong LED (7) // Định nghĩa những thanh( led đơn) sáng byte digseg[digit][segment] = { { 1,1,1,1,1,1,0 }, // = 0 { 0,1,1,0,0,0,0 }, // = 1 { 1,1,0,1,1,0,1 }, // = 2 { 1,1,1,1,0,0,1 }, // = 3 { 0,1,1,0,0,1,1 }, // = 4 { 1,0,1,1,0,1,1 }, // = 5 { 1,0,1,1,1,1,1 }, // = 6 { 1,1,1,0,0,0,0 }, // = 7 { 1,1,1,1,1,1,1 }, // = 8 { 1,1,1,1,0,1,1 } // = 9 }; void setup() { // Định nghĩa chân xuất tín hiệu OUTPUT ……………………………………………………… writeDigit(digit); delay(second); } delay(4*second); }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
172
Hình ảnh thực tế:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
173
11.
Hiển thị chữ cái, số ra module 4 led 7 đoạn.
Giới thiệu module 4 led 7 đoạn: Đây là module tốn thời gian của bạn hơi nhiều đấy, module này nhiều chân và có khá là mới mẻ với những bạn nào mới bắt đầu học lập trình arduino. Và tất nhiên, bạn sẽ hiểu được cách để sử dụng chúng sau này, cho những dự án khác của bạn. Trong bài này tôi sử dụng loại Anode chung ( dương chung).
Trước tiên bạn add thư viện SevSeg vào IDE. Các bạn tải tại link sau: http://tdhshop.com.vn/tong-hop-cac-thu-vien-cho-arduino
Chú ý trường hợp bị chồng thư viện bạn cài bản IDE 1.0.6 để tránh trường hợp này. Chạy song song 2 phiên bản đều được.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
174
Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard 1 biến tở 10k. 1 module 4 led 7 đoạn loại dương chung. Dây cắm test board.
Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn):
Trường hợp trên ta không gắn điện trở cũng được. Tiếp đến ta nối biến trở 10k vào để tăng giảm độ sáng của led 7 đoạn.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
175
Hình ảnh thực tế:
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. #include "SevSeg.h" //Include thư viện SevSeg SevSeg myDisplay; // Khai báo biến myDisplay là đối tượng của thư viện SegSev int bientro = A0; void setup() { //Hàm Setup Serial.begin(9600); //Bật cổng Serial ở mức Baudrate là 9600 Serial.println("Ready"); int displayType = COMMON_ANODE; int digit1 = 8; //chân số 8 của arduino nối chân 12 của led 7 đoạn int digit2 = 12; int digit3 = 13; int digit4 = 2; int segA = 9; int segB = 11; int segC = 4; Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
176
int segD = 6; int segE = 7; int segF = 10; int segG = 3; int numberOfDigits = 4; // số dấu chấm myDisplay.Begin(displayType, numberOfDigits, digit1, digit2, digit3, digit4, segA, segB, segC, segD, segE, segF, segG, segDP); // Bắt đầu cho phép giao tiếp myDisplay.SetBrightness(100); //điều chỉnh độ sáng của Module LED } void loop(){ myDisplay.DisplayString("AbcD", 0b00001000); // Thể hiện chữ AbcD ra bảng LED, và dãy số 0b00001000 là vị trí dấu chấm. Bạn hãy thử thay những số 0 bằng số 1 hoặc ngược lại để kiểm nghiệm myDisplay.SetBrightness(getBrightness()); //độ sáng } int getBrightness() { // Hàm đọc giá trị độ sáng từ biến trở int value = analogRead(bientro); // Đọc giá trị biến trở và đưa vào biến value value = map(value,0,1023,0,100); // Chuyển đổi giá trị trong thang đo 0-1023 về thang đo 0 - 100 return value; // Trả về giá trị độ sáng }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
177
12.
Lập trình hiển thị module led ma trận 8x8.
Giới thiệu module ma trận 8x8: LED MATRIX 8x8 đơn giản chỉ là 64 con LED được sắp xếp với nhau theo dạng ma trận, thành 8 hàng và 8 cột, tức là 16 chân. Vì mỗi loại LED MATRIX có sơ đồ chân riêng nên các bạn hãy tra cứu datasheet của nó để có thể lắp mạch chính xác . Trong bài viết này mình sử dụng LED matrix " anode ( dương chung) ", có nghĩa là các chân điều khiển hàng của ma trận chính là cực dương của LED.
Phần cứng chuẩn bị: ( tất cả được tích hợp trên Kit Tự Học)
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard 1 module led ma trận 8x8 loại dương chung. Dây cắm test board.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
178
Lắp mạch( nếu các bạn đã có kit học thì đã lắp sẵn):
Hình ảnh thực tế:
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. const int row[8] = { Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
179
2, 7, 19, 5, 13, 18, 12, 16 }; const int col[8] = { 6, 11, 10, 3, 17, 4, 8, 9 }; int pixels[8][8]; int count = 1000; char str[] = "FABCDEDCBA"; int ptrChar = 0; const charMapType charBlank = { {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0} }; //Các bạn để ý những con số 1 nhé. const charMapType heart0 = { {0, 0, 0, 1, 1, 0, 0, 0}, Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
180
{0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 0}, {1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 1} }; const charMapType heart1 = { {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0} }; const charMapType heart2 = { …………………………………………………………………………….. digitalWrite(col[thisPin], HIGH); } Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
181
setupChar(); } void loop() { refreshScreen(); if(count-- == 0){ count = 1000; setupChar(); } } void setupChar(){ char c = str[ptrChar]; int offset = c - 'A'; const charMapType *cMap = charMap[offset]; for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { bool v = (*cMap)[x][y]; if(v){ pixels[x][y] = LOW; }else{ pixels[x][y] = HIGH; } } Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
182
} ptrChar++; if(ptrChar>=strLen-1){ ptrChar = 0; } } void refreshScreen() { for (int thisRow = 0; thisRow < 8; thisRow++) { digitalWrite(row[thisRow], HIGH); for (int thisCol = 0; thisCol < 8; thisCol++) { int thisPixel = pixels[thisRow][thisCol]; digitalWrite(col[thisCol], thisPixel); if (thisPixel == LOW) { digitalWrite(col[thisCol], HIGH); } } digitalWrite(row[thisRow], LOW); } }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
183
13.
Hiển thị chữ lên màn hình LCD16x02.
Giới thiệu module LCD 16X02: Trong bài này các bạn sẽ tìm cách điều khiển màn hình LCD bằng Arduino mà không sử dụng module I2C LCD. Chỉ cần Arduino bạn có thể điều khiển được LCD nhưng lại tốn khá nhiều chân của arduino, Ở phần tiếp theo chúng ta sẽ sử dụng module I2C để giải quyết vấn đề đó.
Phần cứng chuẩn bị: ( tất cả được tích hợp trên Kit Tự Học)
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard 1 module LCD 16x02. Dây cắm test board. 1 biến trở 10K.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
184
Lắp mạch( nếu các bạn đã có kit học thì chỉ việc nối dây):
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
185
Hình ảnh thực tế:
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. #include //Khai báo thư viện cho LCD ( Thư viện đã có sẵn) LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //noi voi chan LCD LAN LUOT : Rs, E, D4, D5, D6, D7 void setup() { //Thông báo đây là LCD 1602 lcd.print("DIEN – DIEN TU!"); //In ra màn hình lcd dòng chữ DIEN – DIEN TU } void loop() { lcd.setCursor(0, 1); // đặt con trỏ vào cột 0, dòng 1 lcd.print(" TDHShop"); // In ra dong chu }
14.
Kết hợp Module I2C với LCD16x02.
Giới thiệu module I2C cho LCD: Với module chuyển giao tiếp LCD sang I2C, các bạn chỉ cần 2 chân (SDA và SCL) của Arduino kết nối với 2 chân (SDA và SCL) của module là đã có thể hiển thị thông tin lên LCD. Ngoài ra có thể điều chỉnh được độ tương phản bởi biến trở Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
186
gắn trên module. Đây chính là Module chuyển giao tiếp I2C
Phần cứng chuẩn bị: ( tất cả được tích hợp trên Kit Tự Học)
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard 1 module LCD 16x02. 1 module I2C cho LCD. Dây cắm test board.
Trước hết ta phải add thư viện I2C vào phần mền Arduino IDE. Các bạn tải thư viện tại links sau: http://tdhshop.com.vn/tong-hop-cac-thu-vien-cho-arduino Lắp mạch( nếu các bạn đã có kit học thì chỉ việc nối dây):
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
187
Lưu ý : Với các dòng mega các bạn nối chân SCL vào SCL và SDA vào SDA.
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. // sau khi upload chương trình các bạn nhớ chỉnh biến trở xanh trên I2C nhé. // trường hợp sử dụng địa chỉ 0x27 không được thay bằng 0x3F. // Trên module I2C có biến trở chúng ta hãy điều chỉnh độ sáng của LCD. #include #include LiquidCrystal_I2C lcd(0x3F,16,2); // lưu ý ở đây có 2 địa chỉ ( 0x27) hoặc (0x3F) void setup() { lcd.init(); lcd.backlight(); lcd.print("TDHshop.com.vn"); } void loop() { } Hình ảnh thực tế:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
188
15. Đọc giá trị cảm biến quang trở hiển thị lên serial monitor. Giới thiệu cảm biến quang trở: Quang trở là một loại "vật liệu" điện tử rất hay gặp và được sử dụng trong những mạch cảm biến ánh sáng. Có thể hiểu một cách dễ dàng rằng, quang trở là một loại ĐIỆN TRỞ mà giá trị của nó thay đổi theo cường độ ánh sáng.
Nếu đặt ở môi trường có ít ánh sáng hoặc tối thì điện trở của quang trở sẽ tăng cao còn nếu đặt ở ngoài nắng, hoặc nơi có ánh sáng thì điện trở sẽ giảm. Quang trở không phân biệt chân. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
189
Phần cứng chuẩn bị: (được tích hợp trên Kit Tự Học)
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard. 1 quang trở. 1 điện trở 10K. Dây cắm test board.
Lắp mạch( nếu các bạn đã có kit học thì chỉ việc nối dây):
Hình ảnh thực tế:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
190
Bây giờ chúng ta upload chương trình đọc giá trị cảm biến quang trở cho arduino và xem giá trị của quang trở, nhớ là hãy thay đổi độ sáng của môi trường để xem sự thay đổi của quang trở (chẳng hạn bạn lấy bàn tay che ánh sáng chiếu trực tiếp vào qua ng trở chẳng hạn).
Lập trình: int quangtro = A5; //Thiết đặt chân analog đọc quang trở void setup() { // Khởi tạo cộng Serial 9600 Serial.begin(9600); } void loop() { int giatriQuangtro = analogRead(quangtro); // đọc giá trị quang trở Serial.println(giatriQuangtro); // Xuất giá trị ra Serial Monitor }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
191
16.
Đọc gái trị CB nhiệt độ LM35 hiển thị lên serial monitor.
Giới thiệu cảm biến nhiệt độ LM35: Cảm biến nhiệt độ LM35 là một loại cảm biến tương tự rất hay được ứng dụng trong các ứng dụng đo nhiệt độ thời gian thực ( nhưng vẫn còn sai số lớn) . Với kích thước nhỏ và giá thành rẻ là một trong những ưu điểm của nó. Vì đây là cảm biến tương tự (analog sensor) nên ta có thể dễ dàng đọc được giá trị của nó bằng hàm analogRead().
Nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra của LM35. → Đơn vị nhiệt độ: °C. → Nhiệt độ thay đổi tuyến tính: 10mV/°C Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng 2°C tới 150°C công suất tiêu thụ là 60uA. Cảm biến LM35 hoạt động bằng cách cho ra một giá trị hiệu điện thế nhất định tại chân Vout (chân giữa) ứng với mỗi mức nhiệt độ. Như vậy, bằng cách đưa vào chân bên trái của cảm biến LM35 hiệu điện thế 5V, chân phải nối đất, đo hiệu điện thế ở chân giữa bằng các pin A0 trên arduino (giống y hệt cách đọc giá trị biến trở), bạn sẽ có được nhiệt độ (0-100ºC) bằng công thức:
float temperature = (5.0*analogRead(A0)*100.0/1024.0); Với LM35, bạn có thể tự tạo cho mình mạch cảm biến nhiệt độ sử dụng LM35 và tự động ngắt điện khi nhiệt độ vượt ngưỡng tối đa, đóng điện khi nhiệt độ thấp hơn ngưỡng tối thiểu thông qua module rơ le...
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
192
Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard. 1 cảm biến nhiệt độ LM35. Dây cắm test board.
Lắp mạch:
Hình ảnh thực tế:
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
193
int sensorPin = A0;
// chân analog kết nối tới cảm biến LM35
void setup() { Serial.begin(9600); //Khởi động Serial ở mức baudrate 9600 // Bạn không cần phải pinMode cho các chân analog trước khi dùng nó } void loop() { //đọc giá trị từ cảm biến LM35 int reading = analogRead(sensorPin); //tính ra giá trị hiệu điện thế (đơn vị Volt) từ giá trị cảm biến float voltage = reading * 5.0 / 1024.0; // cứ mỗi 10mV = 1 độ C. // Vì vậy nếu biến voltage là biến lưu hiệu điện thế (đơn vị Volt) // thì ta chỉ việc nhân voltage cho 100 là ra được nhiệt độ! float temp = voltage * 100.0; Serial.println(temp); delay(1000); //đợi 1 giây cho lần đọc tiếp theo } 17. Đọc giá trị CB nhiệt độ DS18B20 hiển thị lên serial monitor.
Giới thiệu cảm biến nhiệt độ DS 18B20: Cảm biến nhiệt độ DS18B20 với dãy đo (-55°C đến +125°C) sai số ±0.5°C. Nhiệt độ ít bị chênh lệch hơn so với cảm biến nhiệt độ LM35.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
194
Về căn bản, cảm biến này cũng giống như LM35, các bạn có thể xem phần cảm biến LM35 ở phần trước. DS18B20 dùng cơ chế truyền tín hiệu 1-Wire. Nôm na với cái cơ chế này, chúng ta có thể đọc nhiều con DS18B20 cùng một lúc trên cùng 1 dây.
Sử dụng một chân data với 64bit serial code cho phép chúng ta dùng nhiều con trên cùng 1 chân digial (cơ chế 1-Wire) Có thể cấp nguồn từ 3 - 5.5V Đo từ -55°C đến +125°C sai số ±0.5°C nếu đang trong khoản -10°C đến +85°C
Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard. 1 cảm biến nhiệt độ DS18b20. 1 điện trở 4.7K. Dây cắm test board.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
195
Lắp mạch: Đối với loại không dây:
Đối với loại có dây:
Lập trình: Trước khi bắt tay vào lập trình ta cần phải tải hai thư viện sau và add vào thư viện cho arduino IDE: Thư viện thứ 1: OneWire.h Thư viện thứ 2: DallasTemperature.h Tải Tại Đây Cách add thư viện vào Ardunio IDE: Xem tại đây Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
196
Ta bắt tay vào lập trình sau khi add xong 2 thư viện trên. Code chương trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. #include #include // Chân nối với Arduino #define ONE_WIRE_BUS 2 //Thiết đặt thư viện onewire OneWire oneWire(ONE_WIRE_BUS); //Mình dùng thư viện DallasTemperature để đọc DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); sensors.begin(); } void loop(void) { sensors.requestTemperatures(); Serial.print("Nhiet do"); Serial.println(sensors.getTempCByIndex(0)); // Vì chỉ 1cảm biến nên dùng 0 //chờ 1 s rồi đọc giá trị cảm biến delay(1000); } Sau khi upload chương trình xong các bạn mở cổng Serial port xem kết quả nhé.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
197
18.
Hiển thị giá trị CB nhiệt độ LM35 lên mà hình LCD.
Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard. 1 cảm biến nhiệt độ LM35. Dây cắm test board. 1 Module I2C cho LCD. 1 LCD 16x02.
Lắp mạch :
Lập trình : Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. #include #include int sensorPin = A0; // chân analog kết nối tới cảm biến LM35 LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { Serial.begin(9600); //Khởi động Serial ở mức baudrate 9600 lcd.init(); lcd.backlight(); Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
198
lcd.print("NHIET DO"); } void loop() { //đọc giá trị từ cảm biến LM35 int reading = analogRead(sensorPin); //tính ra giá trị hiệu điện thế (đơn vị Volt) từ giá trị cảm biến float voltage = reading * 5.0 / 1024.0; // cứ mỗi 10mV = 1 độ C. // Vì vậy nếu biến voltage là biến lưu hiệu điện thế (đơn vị Volt) float temp = voltage * 100.0; Serial.println(temp); lcd.setCursor(0, 1); lcd.print("T ="); lcd.setCursor(5, 1); lcd.print(temp); delay(1000); //đợi 1 giây cho lần đọc tiếp theo }
Hình ảnh thực tế:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
199
19.
Đọc giá trị cảm biến mưa hiển thị lên serial monitor.
Giới thiệu cảm biến mưa: Chúng ta có thể dễ dàng nhận biết mưa bằng mắt thường hoặc cảm nhận ở da. Với tư tưởng ấy, các hệ thống điện tử phát hiện mưa cũng chia ra làm hai loại: thứ nhất là dùng camera để nhận biết và loại thứ hai là dùng cảm biến (tương tự da của con người). Trong môi trường Arduino, bạn có thể dùng cả 2 cách trên để phát hiện mưa. Tuy nhiên, để tiết kiệm chi phí và dễ dàng trong việc lập trình, cài đặt, người ta thường chọn phương pháp thứ hai. Vấn đề về phát hiện mưa thì cực kì đơn giản, nhưng để truyền dữ liệu cảm biến mưa về trung tâm xử lý thì khó hơn đôi chút.
Mạch cảm biến mưa gồm 2 phần: Mạch cảm biến mưa được gắn ngoài trời. Mạch điều chỉnh độ nhạy cần được che chắn. Mạch cảm biến mưa hoạt động bằng cách so sánh hiệu điện thế của mạch cảm biến nằm ngoài trời với giá trị định trước (giá trị này thay đổi được thông qua 1 biến trở màu xanh) từ đó phát ra tín hiệu đóng / ngắt rơ le qua chân D0(digital) hoặc AO(analog). Vì vậy, chúng ta dùng một chân digital hoặc analog để đọc tín hiệu từ cảm biến mưa.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
200
Khi cảm biến khô ráo (trời không mưa), chân D0 của module cảm biến sẽ được giữ ở mức cao (5V). Khi có nước trên bề mặt cảm biến (trời mưa), đèn LED màu đỏ sẽ sáng lên, chân D0 được kéo xuống thấp (0V). Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). 1 cảm biến mưa.
Lắp mạch :
Lập trình : Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. int rainSensor = 6; // Chân tín hiệu cảm biến mưa ở chân digital 6 (arduino) void setup() { pinMode(rainSensor,INPUT);// Đặt chân cảm biến mưa là INPUT, vì tín hiệu sẽ được truyền đến cho Arduino Serial.begin(9600);// Khởi động Serial ở baudrate 9600 } Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
201
void loop() { int value = digitalRead(rainSensor); //Đọc tín hiệu cảm biến mưa if (value == HIGH) { // Cảm biến đang không mưa Serial.println("Khong mua"); } else { Serial.println("Dang mua"); } delay(1000); // Đợi 1 giây cho lần kiểm tra tiếp theo. }
Hình ảnh thực tế:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
202
20. Đọc giá trị CB siêu âm SRF 05 hiển thị lên serial monitor. Robot khi ở chế độ tự động, nó phải lấy thông tin của môi trường xung quanh như: khoảng cách, nhiệt độ, ánh sáng ... Và tiến hành phân tích các dữ liệu đó, cuối cùng ra quyết định phù hợp. Ví dụ như robot tự tìm đường đi thì nó phải tính được xem phía trước có vật cản hay không, và tiến hành đi tới hay rẽ sang một hướng khác. Bài viết này sẽ hướng dẫn bạn đọc hiểu và sử dụng được một trong những cảm biến khoảng cách phổ biến - SRF05. Giới thiệu cảm biến siêu âm SRF05: Sóng siêu âm là một loại sóng cao tầng mà con người không thể nghe thấy được. Tuy nhiên, ta có thể thấy được sự hiện diện của sóng siêu âm ở khắp mọi nơi trong tự nhiên. Ta có các loài động vật như dơi, cá heo ... dùng sóng siêu âm để liên lạc với nhau, để săn mồi hay định vị trong không gian. Việc tính toán khoảng cách cũng còn phụ thuộc rất nhiều vào môi trường truyền dẫn, ví dụ như sóng âm truyền trong môi trường nước hay kim loại sẽ nhanh hơn rất nhiều so với sóng âm được truyền trong môi trường không khí. Lưu ý là sóng âm không thể truyền được trong môi trường chân không.
Cảm biến siêu âm SRF05 cũng hoạt động theo như nguyên tắc ở trên, thiết bị gồm có 2 loa - thu và phát - cùng với 5 chân để kết nối với Arduino, tầm hoạt động tối đa của cảm biến này nằm trong khoảng từ 1 đến 2m.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
203
Chức năng của các chân này như sau: 1. Vcc: cấp nguồn cho cảm biến. 2. Trigger: kích hoạt quá trình phát sóng âm. Quá trình kích hoạt khi một chu kì điện cao / thấp diễn ra. 3. Echo: bình thường sẽ ở trạng thái 0V, được kích hoạt lên 5V ngay khi có tín hiệu trả về, sau đó trở về 0V. 4. Gnd: nối với cực âm của mạch 5. OUT: không sử dụng Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO). 1 cảm biến SRF05. Breadboard còn gọi testboard. Dây cắm test board.
Lắp mạch : • Vcc: nối với nguồn 5V của Adruino • Gnd: nối với PIN GND. • Trigger: nối với PIN 8.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
204
• Echo: nối với PIN 7.
Hình ảnh thực tế:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
205
Lập trình : Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. const int trig = 8; // chân trig của HC-SR05 const int echo = 7; // chân echo của HC-SR05 void setup() { Serial.begin(9600); // giao tiếp Serial với baudrate 9600 pinMode(trig,OUTPUT); // chân trig sẽ phát tín hiệu pinMode(echo,INPUT); // chân echo sẽ nhận tín hiệu } void loop() { unsigned long duration; // biến đo thời gian int distance; // biến lưu khoảng cách /* Phát xung từ chân trig */ digitalWrite(trig,0); // tắt chân trig delayMicroseconds(2); digitalWrite(trig,1); // phát xung từ chân trig delayMicroseconds(5); // xung có độ dài 5 microSeconds digitalWrite(trig,0); // tắt chân trig /* Tính toán thời gian */ // Tính khoảng cách đến vật. distance = int(duration/2/29.1); /* In kết quả ra Serial Monitor */ Serial.print(distance); Serial.println("cm"); delay(200); } Giải tích code: Ta biết thời gian âm thanh truyền trong không khí ở 20°C là 344 m/s. Bằng quy tắc tam suất đơn giản ta có thể dễ dàng tính được sóng âm di chuyển 1 cm trong không khí sẽ mất 1000 / 344 * 100 ~= 29.1. Arduino cung cấp cho ta hàm pulseIn có tác dụng trả về thời gian (tính bằng milisec) kể từ khi hàm này được gọi cho đến khi có tín hiệu tại PIN chỉ định trước, hay trả về 0 nếu không nhận được tín hiệu / quá thời gian timeout. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
206
Kết quả hiển thị lên Serial monitor :
21.
Đọc giá trị cảm biến độ ẩm đất hiển thị lên LCD16x02.
Giới thiệu cảm biến độ ẩm đất:
Cảm biến phát hiện độ ẩm đất, bình thường đầu ra của cảm biến độ ẩm đất là digital (D0) và analog (A0), tùy các bạn có thể lựa chọn chân số (digital) hay chân tương tự (analog) để lập trình, Độ nhạy của cảm biến độ ẩm đất có thể điều chỉnh được (Bằng cách điều chỉnh biến trở màu xanh trên board mạch) cái này chỉ có tác dụng với chân digital (D0). Phần đầu dò được cắm vào đất để phát hiện độ ẩm, khi độ ầm của đất đạt ngưỡng thiết lập, đầu ra D0 sẽ chuyển trạng thái từ mức thấp lên mức cao.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
207
Thông số kỹ thuật:
Điện áp làm việc 3.3V ~ 5V. Có lỗ cố định để lắp đặt thuận tiện. PCB có kích thước nhỏ 3.2 x 1.4 cm. Sử dung chip LM393 để so sánh, ổn định làm việc.
Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn)
Mạch Arduino (ở đây mình sử dụng Arduino UNO). 1 cảm biến độ ẩm đất. Breadboard còn gọi testboard. Dây cắm test board. 1 rơ le 5VDC
Lắp mạch : Trong bài học này ta ứng dụng giá trị cảm biếm độ ẩm đất đọc về để điều khiển đóng ngắt rơ le 5Vdc.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
208
Hình ảnh thực tế:
Lập
trình : //Chương trình ĐỌC DỮ LIÊU TỪ CẢM BIẾN ĐO ĐỘ ẨM ĐẤT int CBDoAm = A1; //Nối chân ra của cảm biến đo độ ẩm với chân A1 #define role 12 //Chân nối với role 12 float doamdat; //Biến độ ẩm đất void setup() { Serial.begin(9600); //Khai báo các chân pinMode(role,OUTPUT); } void loop() { doamdat=analogRead(CBDoAm); Serial.print("Do am la:"); Serial.print(doamdat); //In ra độ ẩm đất (serial monitor) //Bơm nước khi đất khô( thông qua role) if(doamdat t1){ digitalWrite(role, LOW); lcd.setCursor(8,1); lcd.print("TAT QUAT"); } else if (setTempC nó có đến 64 * 64 = 4096 bước. #define IN1 8 // IN1 nối với chân D8 của arduino #define IN2 9 // IN2 nối với chân D9 của arduino #define IN3 10 // IN3 nối với chân D10 của arduino #define IN4 11 // IN4 nối với chân D11của arduino int Steps = 4096; int cstep = 0; void setup() { Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
239
Serial.begin(9600); pinMode(IN1, OUTPUT); // các chân IN quy định là các chân ra pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } void loop() { for(int x=0;xImport Library...---> Add Library....sau đó chọn file .zip mà bạn vừa tải về để có thể sử dụng thư viện. Các bạn có thể tham khảo cách add thư viện TẠI ĐÂY. Tiếp theo ta upload đoạn code (DOCFILEHEX) sau, các bạn mở cửa sổ Serial và bấm các nút của remote, tùy loại remote sẽ có giá trị trả về khác nhau và các bạn nên ghi lại giá trị file HEX để ta lập trình. Đấy là các giá trị HEX của tín hiệu được gửi từ remote, thử tất cả các nút của remote các bạn sẽ biết được IR codes của nó. // Chương trình (CODE) đọc giá trị HEX của từng nút nhấn của Remote hồng ngoại. #include // thư viện hỗ trợ IR remote const int receiverPin = 8; // chân digital 8 dùng để đọc tín hiệu Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
244
decode_results results; // lưu giữ kết quả giải mã tín hiệu void setup() { Serial.begin(9600); // serial baudrate 9600 irrecv.enableIRIn(); // start the IR receiver } void loop() { if (irrecv.decode(&results)) // nếu nhận được tín hiệu { Serial.println(results.value, HEX); // in ra Serial Monitor delay(200); irrecv.resume(); // nhận giá trị tiếp theo } } Sau khi đọc được từng giá trị file HEX của các nút nhấn, các bạn nên ghi lại. Tiếp theo ta nạp chương trình (dieukhienledbangremote) cho arduino sử dụng remote để bật tắt LED với những giá trị hex ta đã đọc được ở trên. // bật tắt led ở chân số 12 #include // thư viện hỗ trợ IR remote const int receiverPin = 8; // chân digital 8 dùng để đọc tín hiệu decode_results results; // lưu giữ kết quả giải mã tín hiệu const int RED = 12; // LED đỏ /* trạng thái của các LEDs*/ boolean stateRED = false; void setup() { Serial.begin(9600); // serial pinMode(RED, OUTPUT); pinMode(YELLOW, OUTPUT); pinMode(GREEN, OUTPUT); } void translateIR() { Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
245
switch(results.value) { case 0xFF30CF: stateRED = !stateRED; //ví dụ nhấn số 1(0xFF30CF: g tri hex số 1) digitalWrite(RED, stateRED); break; case 0xFF6897: stateRED = stateYELLOW = stateGREEN = false;//NHAN SO 0 digitalWrite(RED, 0); } } void loop() { if (irrecv.decode(&results)) // nếu nhận được tín hiệu { translateIR(); Serial.println(results.value, HEX); delay(200); irrecv.resume(); // nhận giá trị tiếp theo } }
Các hàm và lệnh trong của thư viện IR remote như:
o
IRrecv irrecv(receiverPin);: tạo đối tượng IRrecv mới có tên là irrecv sử dụng tham số là receiverPin.
o
decode_results results; : lưu kết quả giải mã được
o
irrecv.enableIRIn(); : bắt đầu giải mã tín hiệu IR
o
irrecv.decode(&results);: trả về true nếu có tín hiệu đến
o
irrecv.resume; : đợi tín hiệu IR tiếp theo.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
246
Hình ảnh thực tế:
30.
Điều khiển động cơ bằng module L298n:
Giới thiệu về Module L298:
Trong bài này, tôi sẽ hướng dẫn các bạn sử dụng IC L298 đã tích hợp sẵn mạch cầu H, ứng dụng trong việc điều khiển cùng lúc 2 động cơ theo chiều quay bất kì, kết hợp với Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
247
điều xung PWM có thể điều chỉnh tốc độ xoay của động cơ. PWM để cân bằng độ chênh lệch giữa 2 bánh xe.
Thông số kỹ thuật: Điện áp điều khiển: +6 V ~ +12 V. L298 gồm các chân:
12V power, 5V power: bên trong mạch có sử dụng IC điều hướng dòng điện, hoạt động với điện áp 5V, khi nối nguồn 12V mạch sẽ hoạt động với nguồn 12V, tuy nhiên mạch sẽ điều hướng dòng điện. o Điện áp 12V điều khiển động cơ để hoạt động. o Hạ điện áp xuống thành 5V và cấp nguồn cho IC. Như vậy khi cấp nguồn 9V: động cơ hoạt động với dòng 9V và IC của mạch sẽ hoạt động với điện áp 5V. Việc thiết kế có nhằm điều hướng thành 2 điện áp khác nhau giúp IC hoạt động ổn định và tách nguồn riêng biệt với động cơ. Power GND chân này là GND của nguồn cấp cho Động cơ. 2 Jump A enable và B enable, nếu bạn dùng Board để điều khiển động cơ bước thì giữ nguyên. Nếu điều khiển động cơ bình thường thì nối với chân PWM để điều khiển tốc độ. Gồm có 4 chân Input. IN1, IN2, IN3, IN4. Output A: nối với động cơ giảm tốc V1. bạn chú ý chân +, -. Nếu bạn nối ngược thì động cơ sẽ chạy ngược.
Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn ).
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard. Dây cắm test board. 1 động cơ bước giảm tốc V1 ( màu vàng ) có sẵn trên kit. 1 module L298 như hình trên.
Lắp mạch.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
248
Lập trình: Code lập trình sẽ được lưu trong file ( file_code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. #define ENA 8 //enable A on pin 8 #define ENB 3 //enable B on pin 3 #define IN1 7 //IN1 on pin 7 #define IN2 6 //IN2 on pin 6 #define IN3 5 //IN3 on pin 5 #define IN4 4 //IN4 on pin 4 void setup() { pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } void loop() { motorA(1, 25); //cho motor A chạy 25% tốc độ CHẠY THUẬN delay(5000); //chạy 25% trong 5 s motorA(3, 100); //thắng động cơ A motorB(1, 25); //cho motor B chạy 25% tốc độ. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
249
delay(5000); //chạy 25% trong 5 s motorA(2, 25); // cho motor A chạy 25% tốc độ CHẠY NGHỊCH delay(5000); //let motor A and motor B run for 5 seconds motorB(3, 50); //thắng động cơ B motorA(0, 100); //dừng động cơ A delay(5000); //đợi 5 s } //**************** Motor A control ***************** void motorA(int mode, int percent) { …………………………………………………………………………………… case 2: digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENB, duty); break; case 3: digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); analogWrite(ENB, duty); break; } }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
250
31.
Lập trình module Wifi ESP8266 V1 bằng Uno R3:
Giới thiệu về module Wifi ESP8266 V1: ESP8266 là một chip tích hợp cao - System on Chip (SoC), có khả năng xử lý và lưu trữ tốt, cung cấp khả năng vượt trội để trang bị thêm tính năng wifi cho các hệ thống khác hoặc đóng vai trò như một giải pháp độc lập. Module wifi ESP8266 v1 cung cấp khả năng kết nối mạng wifi đầy đủ và khép kín, bạn có thể sử dụng nó để tạo một web server đơn giản hoặc sử dụng như một access point.
Thông số kỹ thuật:
Wifi 802.11 b/g/n Wifi 2.4 GHz, hỗ trợ WPA/WPA2 Chuẩn điện áp hoạt động 3.3V Chuẩn giao tiếp nối tiếp UART với tốc độ Baud lên đến 115200 Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point Hỗ trợ các chuẩn bảo mật như: OPEN, WEP, WPA_PSK, WPA2_PSK, WPA_WPA2_PSK Hỗ trợ cả 2 giao tiếp TCP và UDP Tích hợp công suất thấp 32-bit CPU có thể được sử dụng như là bộ vi xử lý ứng dụng SDIO 1.1 / 2.0, SPI, UART
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
251
URXD(RX) — dùng để nhận tín hiệu trong giao tiếp UART với vi điều khiển VCC — đầu vào 3.3V GPIO 0 — kéo xuống thấp cho chế độ upload bootloader RST — chân reset cứng của module, kéo xuống mass để reset GPIO 2 — thường được dùng như một cổng TX trong giao tiếp UART để debug lỗi CH_PD — kích hoạt chip, sử dụng cho Flash Boot và updating lại module, nối với mức cao GND — nối với mass UTXD (TX) — dùng để truyền tín hiệu trong giao tiếp UART với vi điều khiển
Phần cứng chuẩn bị: (bộ kit đã tích hợp sẵn ).
Mạch Arduino (ở đây mình sử dụng Arduino UNO). Breadboard còn gọi testboard. Dây cắm test board. 1 Module wifi 8266V1.
Lắp mạch:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
252
Lập trình : Code lập trình sẽ được lưu trong file ( file_code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. Arduino Uno gửi lệnh điều khiển (tập lệnh AT) cho ESP8266 cũng bằng giao tiếp UART. Tuy nhiên board Arduino chỉ có 1 chân RX và 1 chân TX cho phép thực hiện giao tiếp UART. Điều đó dẫn đến 2 sự lựa chọn: a.
b.
Sử dụng chân RX và TX có sẵn trên Arduino để nạp code sau khi nạp code xong thì mới kết nối 2 chân đó với ESP8266. Với phương pháp này bạn phải thêm một khoảng thời gian delay ở hàm setup() để đảm bảo là sau khi kết nối ESP8266 với Arduino, thì ESP8266 vẫn nhận được đầy đủ các tập lệnh AT từ Arduino. Tuy nhiên, bạn không thể debug qua cổng Serial do cổng này đang đóng vai trò kết nối với ESP8266. Sử dụng SoftwareSerial để giả lập thêm 1 cổng Serial nữa để gửi tập lệnh AT cho ESP8266. Thư viện SoftwareSerial đã được trang bị sẵn trong Arduino IDE nên bạn không cần phải tải thêm. Với cách này thì bạn có thể debug thông qua Serial tuy nhiên code sẽ phức tạp hơn.
Ở ví dụ dưới đây tôi chọn phương án thứ nhất và chọn thời gian delay là 5s để kết nối chân TX và RX của Arduino với chân RX và TX của ESP8266 ngay sau khi nạp code thành công. * Lưu ý : TRONG QUÁ TRÌNH NẠP CODE CÁC BẠN NÊN RÚT DÂY TX VÀ RX RA KHỎI ARDUINO, KHI NẠP CODE XONG TA HÃY CẮM LẠI // Code chương trình bật tắt led chân số 13 của Arduino. #define LED_PIN 13 #define CMD_SEND_BEGIN "AT+CIPSEND=0" #define CMD_SEND_END "AT+CIPCLOSE=0" #define TDHshop_PROTOCOL_HTTP 80 #define TDHshop_PROTOCOL_HTTPS 443 #define TDHshop_PROTOCOL_FTP 21 #define TDHshop_PROTOCOL_CURRENT TDHshop_PROTOCOL_HTTP #define TDHshop_CHAR_CR 0x0D #define TDHshop_CHAR_LF 0x0A Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
253
#define TDHshop_STRING_EMPTY "" #define TDHshop_DELAY_SEED 1000 #define TDHshop_DELAY_1X (1*TDHshop_DELAY_SEED) #define TDHshop_DELAY_2X (2*TDHshop_DELAY_SEED) #define TDHshop_DELAY_3X (3*TDHshop_DELAY_SEED) #define TDHshop_DELAY_4X (4*TDHshop_DELAY_SEED) #define TDHshop_DELAY_0X (5*TDHshop_DELAY_SEED) bool hasRequest = false; void setup() { delay(TDHshop_DELAY_0X); Serial.begin(115200); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); initESP8266(); } void loop() { while(Serial.available()) { …………………………………………………………………………….. void deliverMessage(const String& msg, int dt) { Serial.println(msg); delay(dt); }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
254
Hình ảnh thực tế: Sau khi nạp code xong ta nối lại dây TX và RX và mở cổng Serial Monitor để xem arduino gửi lệnh lên ESP8266 như sau:
Tiếp đến trên máy tính hay điện thoại ta kết nối với Wifi có tên TDHshop.com.vn và nhập pass cho nó "123456789" . Tiếp theo mở trình duyệt Web lên và gõ địa chỉ mặc định của ESP8266 là : 192.168.4.1 hiển thị như sau:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
255
32.
Giao tiếp giữa 2 board Arduino với nhau.
Giới thiệu: Trong bài này tôi sẽ hướng dẫn bạn cách giao tiếp giữa 2 mạch Arduino bất kỳ. Trong nhiều dự án phức tạp thì 1 Arduino thì không thể thực hiện được, Vì vậy giao tiếp giữa 2 arduino với nhau giúp chúng ta gải quyết được vấn đề trên. Thư viện hổ trợ việc giao tiếp giữa 2 Arduino: Chúng ta sẽ sử dụng thư viện Serial Command để xây dựng các "câu lệnh". Các bạn tải thư viện TẠI ĐÂY thư viện thứ 13. Cách add thư viện các bạn có thểm xem TẠI ĐÂY. Phần cứng chuẩn bị:
Mạch Arduino (ở đây mình sử dụng Arduino UNO) (Truyền dữ liệu). Mạch Arduino hoặc Nano,… (ở đây mình sử dụng Arduino UNO) (Nhận dữ liệu). Breadboard còn gọi testboard. Dây cắm test board. 1 led đơn. 1 trở 220Ohm.
Lắp mạch:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
256
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. Chương trình ( code) upload cho Arduino Truyền lệnh: void setup() { Serial.begin(9600); // Bạn khởi tạo một cổng Serial tại baudrate 9600. } int Step = 0; void loop() { if (Step == 0) { Serial.println("LED_RED 1"); // Đèn đỏ sáng. 1 == HIGH } else if (Step == 1) { Serial.println("LED_RED 0"); // Đèn đỏ tắt . 0 == LOW } Step = (Step + 1) % 2; //Step sẽ tuần tự tuần hoàn các giá trị trong khoảng từ 0 ->1 delay(500); // Dừng 1/2 giây giữa các lần gửi } Chương trình ( code) upload cho Arduino nhận lệnh: #include #include // Khai báo biến sử dụng thư viện Serial Command SerialCommand sCmd; int red = 8; void setup() { Serial.begin(9600); / /Khởi tạo Serial ở baudrate 9600 . pinMode(red,OUTPUT); // Một số hàm trong thư viện Serial Command sCmd.addCommand("LED_RED", led_red); // Khi có câu lệnh tên là LED_RED sẽ chạy hàm led_red } void loop() { sCmd.readSerial(); //Bạn không cần phải thêm bất kỳ dòng code nào trong hàm loop này cả Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
257
} // hàm led_red sẽ được thực thi khi gửi hàm LED_RED void led_red() { //Đoạn code này dùng để đọc TỪNG tham số. Các tham số mặc định có kiểu dữ liệu là "chuỗi" char *arg; arg = sCmd.next(); int value = atoi(arg); // Chuyển chuỗi thành số digitalWrite(red,value); } 33.
Điều khiển LED RGB ( LED 3 màu).
Giới thiệu: Trong bài này, chúng ta sẽ tìm hiểu cách sử dụng LED RGB (Red Green Blue – Đỏ, Xanh Lá, Xanh Dương). Bạn có thể sử dụng hàm analogWrite của Arduino để điều khiển màu sắc của LED.
LED RGB (Đỏ, Xanh lá, Xanh dương) trông giống như đèn LED thông thường, tuy nhiên, cấu tạo bên trong của LED này thực sự gồm 3 đèn LED, một đỏ, một xanh lá và một xanh dương. Bằng cách điều khiển độ sáng của mỗi LED riêng biệt mà bạn có thể tạo ra màu sắc bất kì mà bạn muốn. Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
258
Để thay màu sắc của LED RGB, ta chỉ việc thay đổi độ sáng của từng con diode (led) trong con led rgb. Để thay đổi độ sáng của một con LED ta chỉ việc điều chỉnh điện áp xuất ra con LED, mà để điều chỉnh điện áp xuất ra con LED ta sẽ dùng xung PWM. Lắp mạch:
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. const int RED_PIN = 9; // led đỏ const int GREEN_PIN = 10; // led xanh lá const int BLUE_PIN = 11; // led xanh dương int DELAY_TIME = 500; // đơn vị là mili giây void setup() { pinMode(RED_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); pinMode(BLUE_PIN, OUTPUT); } void loop() { Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
259
maucoban(); // Gọi hàm maucoban } void maucoban() { // Tắt toàn bộ các led digitalWrite(RED_PIN, LOW); digitalWrite(GREEN_PIN, LOW); digitalWrite(BLUE_PIN, LOW); delay(DELAY_TIME); // Chỉ bật led đỏ ……………………………………… digitalWrite(RED_PIN, HIGH); digitalWrite(GREEN_PIN, LOW); digitalWrite(BLUE_PIN, HIGH); delay(DELAY_TIME); } Hình ảnh thực tế:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
260
34.
Hiển thị giá trị điện áp khi điều chỉnh biến trở.
Giới thiệu: Bài ví dụ này sẽ giới thiệu cho các bạn cách đọc giá trị điện áp gây ra bởi một biến trở. Biến trở chỉ đơn giản chỉ là một điện trở có thể thay đổi được trị số. Mạch Arduino không đọc trực tiếp điện trở này mà đọc gián tiếp qua điện áp mà biến trở gây ra.
Cấu tạo của biến trở:
Phần màu vàng là một lớp điện trở. Cây kim màu xanh được đè chặt xuống phần điện trở này. Giả sử có dòng điện đi từ 1 đến 2 thì nó sẽ phải qua phần màu vàng (được tô đỏ) và đó chính là điện trở hiện tại của biến trở. Bạn chỉ việc vặn cây kim để tăng giảm độ dài của vùng màu đỏ, qua đó tăng giảm giá trị điện trở.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
261
Phần cứng chuẩn bị: Arduino Uno, nano,… Breadboard. Dây cắm test breadboard. 1 biến trở 10K . Lắp mạch:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
262
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. void setup() { Serial.begin(9600); //Mở cổng Serial để giap tiếp | tham khảo //Serial } void loop() { //(value luôn nằm trong khoảng 0-1023) //xuất ra giá trị vừa đọc
Serial.println(value); int voltage; voltage = map(value,0,1023,0,5000); //chuyển thang đo của value //từ 0-1023 sang 0-5000 (mV) Serial.println(voltage); //xuất ra điện áp (đơn vị là mV) Serial.println(); //xuống hàng delay(200); //đợi 0.2 giây } 35.
Đọc giá trị cảm biến báo cháy hiển thị serial monitor.
Giới thiệu: Đây là loại cảm biến chuyên dùng để phát hiện lửa , thường được sử dụng trong hệ thông báo cháy. Tầm phát hiện trong khoảng 80cm, góc quét là 60 độ. Có thể phát hiện lửa tốt nhất là loại có bước sóng từ 760nm - 1100nm. Mạch được tích hợp IC LM393 so sánh để tạo mức tín hiệu => ta có thể chỉnh độ nhạy bằng biến trở.
Thông số kĩ thuật: Nguồn : 3.3V - 5V, 15mA Điên áp ra : 3.3 - 5V, đầu ra có cả analog và Digital. Khoảng cách : 80 cm Góc quét : 60 độ Kích thước : 3.2 x 1.4 cm Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
263
Phần cứng chuẩn bị: Arduino Uno, nano,… Breadboard. Dây cắm test breadboard. 1 cảm biến báo cháy (CB lửa) . Lắp mạch:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
264
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. //Cách nối dây: chân G nối GND, chân V+ nối nguồn 5V //Chân AO (Analog Output-tín hiệu ra Analog) nối chân A1 //Chân DO (Digital Output - tín hiệu ra on/off) nối chân 4 #define ChanAO 1//Chân A1 là chân để đọc tính hiệu Analog AO #define ChanDO 4//Chân 4 (bên digital) là chân để đọc tín hiệu Digital DO #define baochay 12//Chân để điều khiển đèn led báo cháy float giatriAO;//Biến chứa giá trị Analog AO float giatriDO;//Biến chứa giá trị Digital DO void setup() { Serial.begin(9600); pinMode(ChanDO, INPUT); //Định nghĩa chanDO (chân 4) là chân đọc tính hiệu vào pinMode(baochay,OUTPUT); //Định nghĩa chân báo cháy (chân 12) là chân xuất tín hiệu ra cho đèn led } void loop() { ………………………………………………………………. Serial.print(" Gia tri chan Digital: ");//In giá trị digital ra màn hình Serial.println(giatriDO); if(giatriAO0){ chucai = Serial.read(); } if(chucai =='a'){ // bật led 1 Serial.println(chucai); digitalWrite(LED1, HIGH); } if(chucai=='b'){ // tắt led 1 Serial.println(chucai); digitalWrite(LED1, LOW); } ……………………………………… } }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
277
Viết app điều khiển thiết bị điện bằng Bluetooth trên điện thoại Andriod: Trong bài viết này tôi xin giới thiệu cách viết app cho điện thoại Andriod bằng appinventor. Giao diện rất đơn giản và dễ sử dụng. Giao diện của Appinventor: (app cho điện thoại được lưu trong file code)
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
278
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
279
Hình ảnh thực tế:
40.
Sử dụng IC Max7219 để điều khiển led ma trận 8x8.
Giới thiệu: Với việc sử dụng IC Max7219 việc điều khiển led ma trận 8x8 trở nên dễ dàng hơn và được hổ trợ bởi những thư viện có sẵn. Ta có thể ghép nối nhiều module led 8x8 này lại với nhau.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
280
Thông số kĩ thuật: Module có thể điều khiển 8x8 điểm led chân cathode chung. Điện áp hoạt động: 5V Bên trái của module là chân ngõ vào và bên phải là chân ngõ ra. Phần cứng chuẩn bị: Arduino Uno, nano,… Dây cắm test breadboard. 1 module led 8x8 sử dụng IC MAX7219. Lắp mạch: Arduino
Module led 8x8
10 11 13 5V GND
CS DIN CLK VCC GND
Lập trình: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. #include #include Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
281
#include int pinCS = 10; //ARDUINO ket noi voi MAX_MATRIX7219 //CS ----- PIN10 //DIN ----- PIN11 //CLK ----- PIN13 int numberOfHorizontalDisplays = 1; //số trong Hiển thị theo chiều ngang int numberOfVerticalDisplays = 4; // Số trong hiển thị theo chiều dọc. ………………………………………………… String tape = "NHOM HOC LAP TRINH ARDUINO"; // ký tự muốn truyền lên matrix int wait = 100; // thời gian chạy chữ. int spacer = 1; // khoảng cách cách chữ int width = 5 + spacer; // độ rộng của font là 5 fixel void setup() { matrix.setIntensity(10); // cài đặt giá trị độ tương phản từ 0 đến 15. matrix.setRotation(3); } void loop() { for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) { matrix.fillScreen(LOW); delay(wait); } } Hình ảnh thực tế: Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
282
41.
Đo Tốc Độ Động Cơ Bằng Cảm Biến IR FC03.
Giới thiệu: Bài viết hướng dẫn cách sử dụng cảm biến đo tốc độ IR FC-03 kết hợp với vòng xoay encoder 15 lỗ, để xác định tốc độ của động cơ DC. Khi có tốc độ, ta có thể thực hiện điều chỉnh tốc độ của động cơ để cho xe chạy thẳng, thông qua mạch L298. Phần cứng chuẩn bị:
1 x Arduino Uno R3. 1 x Cảm biến tốc độ IR FC-03. 1 x Đĩa encoder 15 lỗ. 1 x động cơ.
CB tốc độ IR FC03: Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
283
Thông số kĩ thuật:
1 x Bộ thu phát ITR9608: Chân số 2 có chứa diode phát tia hồng ngoại, chân số 1 chứa 1 phototransistor để thu nhận tín hiệu hồng ngoại. 1 x IC LM393. VCC: cảm biến chịu được mức điện áp từ 3.3 - 5V. Chân này được nối với pin nguồn 5V của Arduino. GND: nối với pin nguồn GND của arduino. DO: chân cho tín hiệu số đi ra của cảm biến (High / Low). AO: chân cho tín hiệu tương tự đi ra từ cảm biến. Chân này tôi không sử dụng.
Nguyên lý hoạt động: Khi motor quay thì đĩa encoder quay, lúc này, giá trị ở chân DO của FC-03 chuyển đổi liên tục từ LOW sang HIGH và từ HIGH sang LOW. Nguyên nhân là do khi FC-03 được cấp điện, diode ở chân số 2 của ITR9608 phát ra tia hồng ngoại, nếu tia hồng ngoại được truyền thông qua lỗ của đĩa encoder, phototransistor nhận được tín hiệu và chuyển output của chân DO lên mức HIGH. Ngược lại, khi tia hồng ngoại bị cản bởi đĩa encoder, phototransistor không nhận được tín hiệu, chân DO được chuyển về mức LOW. Dựa vào nguyên lý ngày, để lấy được số vòng quay của động cơ trong một khoảng thời gian, ta chỉ cần đếm số lỗ mà FC-03 bắt được trong khoảng thời gian đó. Tức là ta sẽ đếm số lần mà pin 2 của Arduino chuyển từ HIGH sang LOW.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
284
Lắp mạch: Arduino
Module IR FC03
5VDC GND 2
VCC GND D0
Lập trình: #define PIN_DO 2 volatile unsigned int pulses; float rpm; unsigned long timeOld; #define HOLES_DISC 15 // số lổ trên đĩa encoder void counter() { pulses++; } void setup() { Serial.begin(9600); pinMode(PIN_DO, INPUT); attachInterrupt(digitalPinToInterrupt(PIN_DO), counter, FALLING);// khởi động interrupt } void loop() { if (millis() - timeOld >= 1000) { detachInterrupt(digitalPinToInterrupt(PIN_DO)); // ngưng interrupt để thực hiện tính toán rpm = (pulses * 60) / (HOLES_DISC); Serial.println(rpm); timeOld = millis(); pulses = 0; attachInterrupt(digitalPinToInterrupt(PIN_DO), counter, FALLING); // } } Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
285
42.
Điều khiển RGB LED sử dụng Module Bluetooth HC05 .
Giới thiệu:
Phần cứng chuẩn bị:
Mạch Arduino Uno, Nano,… Breadboard . Dây cắm test board. 1 led 3 màu dương chung ( anode). 3 điện trở 220Ohm.
Lắp mạch: Arduino
RGB LED
Bluetooth HC05
5VDC GND 2 Tx Rx
VCC GND D0
VCC GND Rx Tx
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
286
Lập trình cho arduino: #define max_char 12 char message[max_char]; char r_char; byte index = 0; int i; int redPin = 11; // Red RGB pin -> D11 int greenPin = 10; // Green RGB pin -> D10 int bluePin = 9; // Blue RGB pin -> D9 int redValue = 255; int greenValue = 255; int blueValue = 255; void setup() { pinMode(redPin,OUTPUT); pinMode(bluePin,OUTPUT); pinMode(greenPin, OUTPUT); Serial.begin(9600); } Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
287
void loop() { //while is reading the message while(Serial.available() > 0){ flag = 0; if(index < (max_char-1)){ r_char = Serial.read(); message[index] = r_char; ……………………………… for(i=0; i (8 - PADSIZE) 0) { digitalWrite(3, HIGH); } if (readString.indexOf("button3off") > 0) { digitalWrite(2 , LOW); } readString = ""; } } Sau khi lắp mạch như hình trên và ta nạp code bên dưới và nhập địa chỉ ip ta sẽ thấy giao diện điều khiển hiện ra.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
298
46.
Đọc giá trị cảm biến áp suất BM180 .
Giới thiệu về BM180: Hôm nay chúng ta cùng tìm hiểu về loại cảm biến đo áp suất BM180. Chuyên dùng trong các dự án về môi trường và nó cũng là một trong những giao tiếp I2C quen thuộc mà trong các bài trước có đề cập đến.
Đây là board mạch cảm biến áp suất BMP185 đơn giản, độ chính xác cao, tiết kiệm điện năng. BMP180 có khả năng đo lường áp suất trong khoảng 300 - 1100 hPa với sai số tuyệt đối dưới 0.02 hPa trong chế độ nâng cao độ phân giải. Cảm biến này hoạt động trong khoảng điện áp 1.8 tới 3.6V và hỗ trợ I/O 5V (Nhà sản xuất khuyên dùng nguồn 3.3V đã lọc sạch, ổn định). Nó được thiết kế để kết nối trực tiếp với vi điều khiển thông qua cổng giao tiếp I2C.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
299
Phần cứng chuẩn bị:
Mạch Arduino Uno, Nano,… 1 module cảm biến áp suất BM180. Dây cắm test board.
Lắp mạch: Arduino
Module BM180
3.3V GND A4 A5
Vin GND SDA SCL
Lập trình:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
300
Trước khi upload code các bạn cần cài thêm thư viện BM180 cho arduino IDE Tại link sau: http://tdhshop.com.vn/tong-hop-cac-thu-vien-cho-arduino Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. #include #include Adafruit_BMP085 bmp; void setup() { Serial.begin(9600); if (!bmp.begin()) { Serial.println("Could not find a valid BMP085 sensor"); while (1) {} } } void loop() { Serial.print("Temperature = "); Serial.print(bmp.readTemperature()); Serial.println(" *C"); …………………………………………………….. Serial.print("Real altitude = "); Serial.print(bmp.readAltitude(101500)); Serial.println(" meters"); Serial.println(); delay(500); }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
301
Hình ảnh thực tế: Sau khi lắp mạch và nạp chương trình cho arduino ta bật cổng serial moniter để xem kết quả như hình dưới nhé.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
302
47.
Chạy chữ trên led ma trận 8x8 sử dụng Bluetooth HC05.
Phần cứng chuẩn bị:
Mạch Arduino Uno, Nano,… 1 module Bluetooth hc05. Dây cắm Breadboard . 1 module led 8x8 sử dụng IC max7219. 1 điện thoại sử dụng hệ điều hành android.
Lắp mạch: Arduino
Module LED 8x8
Bluetooth
5VDC GND 5 6 7 8 9
VCC GND CS CLK DIN
VCC GND
TX RX
Lập trình cho arduino: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. Ta cần phải cài thêm thư viên MaxMatrix.h được lưu trong file code. Lưu ý trước khi nạp chương trình cho arduino ta không kết nối dây TX, RX với chân số 8, 9 của arduino . Sau khi đã nạp xong chúng ta hãy kết nối lại. #include #include #include PROGMEM const unsigned char CH[] = { 3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space 1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // ! 3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // " 5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // # Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
303
4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $ 5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // % 5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // & 1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // ' 3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // ( ………………………………………………………… 3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z 3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // { 1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // | 3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // } 4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~ }; int dIn = 7; // DIN pin of MAX7219 module int clk = 6; // CLK pin of MAX7219 module int cs = 5; // CS pin of MAX7219 module int maxInUse = 1; // số module MAX7219's kết nối MaxMatrix m(dIn, cs, clk, maxInUse); SoftwareSerial Bluetooth(8, 9); // BluetoothTx – Pin 8, RX – Pin 9 byte buffer[10]; char incomebyte; int scrollSpeed = 100; char text[100] = "Hello "; // test mẫu đoạn chữ Hello int brightness = 15; int count = 0; char indicator; void setup() { m.init(); } while (Bluetooth.available()) { incomebyte = Bluetooth.read(); ……………………………………………………. { if (*s < 32) continue; char c = *s - 32; memcpy_P(buffer, CH + 7 * c, 7); m.writeSprite(col, 0, buffer); m.setColumn(col + buffer[0], 0); col += buffer[0] + 1; Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
304
s++; } } Lập trình app Inventor cho điện thoại android. File app được để trong file code kèm theo.
Sau khi chúng ta đã cài đặt app cho điện thoại sử dụng hệ điều hành android và tiến hành kết nối Bluetooth của điện thoại với HC05 ( mật khẩu mặt định 1234 ). 48.
Điều khiển hiệu ứng RGB LED WS2812b.
Phần cứng chuẩn bị:
Mạch Arduino Uno, Nano,… Dây cắm Breadboard . Breadboard. 1 dãy led WS2812b gồm 10 led.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
305
Giới thiệu led WS2812B:
LED RGB WS2812B sử dụng chip WS2812B nên có thể lập trình để điều khiển màu sắc độ sáng. Dễ dàng điều khiển, tương thích với Arduino. Với lớp phủ Silicon bên ngoài có thể chống nước hoàn toàn, đảm bảo an toàn khi sử dụng trong môi trường ẩm ướt. Sử dụng điện áp 5 – 12V. Điều tuyệt vời về những LED này là chúng ta có thể kiểm soát ngay cả dải LED chỉ với một chân từ bo mạch Arduino. Lắp mạch: Arduino
RGB WS2812b
Nguồn riêng
GND D7
VCC GND Din
(5 VDC) GND
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
306
Lập trình cho arduino: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. Trước hết ta cần cài thêm thư viện FastLED, có kèm theo file. Lưu ý: nên cấp nguồn riêng cho led. #include #define LED_PIN 7 #define NUM_LEDS 11 CRGB leds[NUM_LEDS]; void setup() { FastLED.addLeds(leds, NUM_LEDS); } void loop() { for (int i = 0; i = 0; i--) { leds[i] = CRGB ( 255, 0, 0); FastLED.show(); delay(40); } } Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
307
49.
Mô phỏng hệ thống radar bằng cảm biến siêu âm SRF05.
Phần cứng chuẩn bị:
Mạch Arduino Uno, Nano,… Dây cắm Breadboard . Breadboard. 1 động cơ servo SG90. 1 cảm biến siêu âm srf05.
Lắp mạch: Arduino
SRF05
SERVO
5VDC GND 12 10 11
VCC GND
VCC GND S
TRIG ECHO
Lập trình cho arduino: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. #include const int trigPin = 10; const int echoPin = 11; long duration; int distance; Servo myServo; // Tạo đối tượng Servo để điều khiển Servo void setup() { pinMode(trigPin, OUTPUT); // Set chân trig là chân OUTPUT pinMode(echoPin, INPUT); // Set chân echo INPUT Serial.begin(9600); myServo.attach(12); // Chân Servo là chân 12 } void loop() { delay(30); Serial.print("."); Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
308
} } // Hàm tính khoảng cách bằng siêu âm int calculateDistance(){ digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); return distance; } Lập trình code cho processing: Trước hết chúng ta cần phải cài phần mềm PROCESSING theo link sau: https://drive.google.com/open?id=1La369RgmlIdG21q869ZbQTJJVsdD0AjB Sau đó ta cài đặt phần mềm Processing vào máy tính. Một phương thức điều khiển arduino bằng máy tính sử dụng ngôn ngữ Java tuy đã xuất hiện từ lâu nhưng nó rất hữu ích cho các dự án cần về giao diện điều khiển. Giao diện của phần mềm:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
309
Code lập trình trên processing: Code được lưu trong file code kèm theo. Trong quá trình chạy code processing cần phải kết nối arduino với máy tính.
Hình ảnh thực tế:
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
310
50.
Lập trình điều khiển module rơ le bán dẫn SSR .
Giới thiệu rơ le bán dẫn SSR:
- Relay SSR (Solid State Relay) hay còn gọi là Relay Rắn là loại relay sử dụng cấu trúc bán dẫn thay vì cấu trúc cơ học nên có độ bền và tuổi thọ cao. - Module Relay rắn SSR sử dụng nguồn DC 5V để kích Relay hoạt động đóng ngắt điện thế AC với công suất tối đa 250V 2A, module này chỉ dùng để đóng ngắt nguồn AC, không sử dụng được để đóng ngắt nguồn DC, trong Relay SSR có tích hợp sẵn opto cách ly (photo triac) nên sử dụng rất an toàn. - Module được thiết kế nhỏ gọn, ra chân đầy đủ, có led hiển thị trạng thái đóng ngắt, Ứng dụng đóng ngắt nguồn AC cần tần suất đóng ngắt nhiều và tuổi thọ cao. Khắc phục được những điểm còn hạn chế của role cơ. Thông số kĩ thuật: Số Relay: 1 Điện áp kích: 5VDC. Dòng tiêu thụ: 20mA/1 Relay SSR Điện áp đóng ngắt tối đa: 75 to 240VAC (50/60Hz). Dòng điện đóng ngắt: 0.1 - 2A. Có cách ly: Photo Triac Kích thước: 25*34*25 (L * W * H) Trọng lượng: 13 g.
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
311
Lắp mạch: Arduino
Module role SSR
5VDC GND 6
VCC GND CH1
Lập trình cho arduino: Code lập trình sẽ được lưu trong file ( file _code) riêng để tránh việc bị lổi, code bên dưới chỉ dưới dạng giải thích. // CHUONG TRINH DIEU KHIEN ROLE SSR BÁN DẪN // Thuộc loại kích mức thấp void setup() { pinMode(6, OUTPUT); } void loop() { Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802
312
digitalWrite(6, HIGH); // TAT ROLE delay(4000); // DOI 4 GIAY digitalWrite(6, LOW); // BAT ROLE delay(2000); // DOI 2 GIAY }
Tài liệu biên soạn bởi Phi Nguyen và một số tài liệu được tham khảo từ arduino.cc và cộng đồng arduino
Web: tdhshop.com.vn
Email: [email protected]
hotline: 01695 304 802