Tôi yêu Arduino gửi vào
- 75749 lượt xem
Trả lời
Câu trả lời là có, bạn có thể làm được.
Tự làm một mạch Arduino UNO trên một thanh breadboard là điều tôi ước ao từ lúc mới bắt đầu tìm hiểu Arduino. Ở đây, tôi không muốn nói đến một mạch Arduino thương mại, bởi vì qua quá trình tìm hiểu tôi thấy không cần phải làm một mạch Arduino UNO thương mại (do có đắt hơn các sản phẩm báo trên thị trường và lại cũng không có thương hiệu,...). Cái mạch Arduino mà tôi sẽ hướng dẫn các bạn làm sau đây là một mạch Arduino trên breadboard, bạn có thể tự lắp ráp và tự độ lại cho nó gọn hơn để có thể tự mình làm những "mạch nhúng Arduino" giá rẻ cho những dự án của mình.
Vì sao tôi lại muốn làm điều này
Bởi vì, tôi yêu thích Arduino và tôi đã từng trải qua việc làm nhiều dự án nho nhỏ cùng một lúc trong khi kinh phí đầu tư cho món này khó cao nên tôi không thể đầu tư mua nhiều mạch Arduino UNO hay promini được. Tôi tự hỏi, liệu có thể tự chế một mạch Arduino đơn giản hay không? Và đây là thành quả của tôi, và tôi muốn chia sẻ với mọi người.
Tôi nghĩ đây là một cách tốt để giúp tôi cải thiện trình độ Arduino bản thân, hehe và cả viết lách nữa.
Cùng tìm hiêu về Arduino
Trên Cộng đồng của chúng ta có rất nhiều bài viết về nhập môn Arduino, tôi cũng không giới thiệu lại làm gì cho nó loãng, chỉ cần các bạn đọc các bài viết sau là thích Arduino ngay.
Ok, vậy nếu bạn biết đến Arduino rồi thì cùng chiến nào.
Tự làm mạch Arduino UNO có khó không?
Xin thưa, tôi nghĩ nếu bạn hoàn thành bài viết này, sau đó tự ráp lại thì bạn chỉ mất 5 phút mà thôi. Thực sự nói nó khó thì cũng không khó, nhưng nó không dễ. Vì sao? Nó không khó bởi vì bạn chỉ cần ráp mạch còn vì sao nó phải ráp vào chỗ này, cái kia ráp vào chỗ kia, nhiệm vụ chuyên sâu của nó là gì thì không dễ tí nào! Tôi chỉ tìm hiểu về cách ráp cho nó hoạt động là được, vì dẫu sao thì tôi chỉ cần một mạch có thể gắn con vi điều khiển ATmega328 / 168 / 88 / 8 vào và chạy được skectch của tôi là được rồi. Như vậy dễ hơn hehe.
Phần cứng cần chuẩn bị
- Breadboard *hiển nhiên rồi* (sau này bạn tự làm mạch thì dùng bảng mạch loại A)
- Dây breadboard
- 2 con led siêu sáng (đỏ hoặc vàng hoặc xanh).
- 2 điện trở 220 Ohm (đỏ đỏ nâu) (trong hình, cứ đỏ đỏ là con này)
- 1 điện trở 10 kOhm (nâu đen cam) (trong này cứ thấy cam là con này)
- 2 tụ 10uF
- 1 IC 7805
- 1 thạch anh 16MHz (quan trọng nhé các tình êu)
- 2 con tụ 22pF
- 1 hàng header pin 1 hàng
- 1 button (nút bấm)
- FT232RL (hoặc những con USB to TTL tương tự nhé)
- Bạn có thể tháo con ATmega328 từ Arduino của bạn ra, hoặc nếu tự làm luôn mà chưa có con Arduino UNO nào bạn có thể mua một trong 3 con sau: ATmega328, ATmega168, ATmega88, hiện tại mình còn con 168 nên sẽ dùng con 168 hehe
- Bạn nên chuẩn bị cho mình một nguồn 9V (pin 9V và chụp đầu pin 9V) hoặc 12V để cấp nguồn cho con 7805 nhé
Cùng ráp mạch nào
Bước 1: Chuẩn bị năng lượng cho mạch
Việc đầu tiên bạn cần phải làm đó là cấp điện cho mạch, hehe, điện là máu của mạch điện tử mà.
Oki, bây giờ bạn sẽ lắp nguồn nuôi cho mạch tự chế này tại ô tròn năng lượng bên trái (chỗ có dấu + với dấu - ấy). Bời vì, chúng ta cần phải có một nguồn 5V để giữ cho vi điều khiển ATmega168 hoạt động ổn định nên ta sẽ dùng IC 7805 để hạn dòng lại, vì thế nguồn nuôi của ta phải lớn hơn 5V để con IC này hoạt động. Câu hỏi đặt ra là vì sao không dùng luôn 5V cấp nuôi mạch luôn mà lại dùng nguồn nuôi có áp lớn rồi lại hạ nó xuống? Bởi vì, trong thực tế, trong phải lúc nào hệ thống mạch của bạn cũng có sẵn 5V ngon ăn, mà nếu dùng mạch Arduino không có 7805 thì bạn phải làm một cách nào đó để nó 5V để nuôi cho mạch Arduino tự chế này,... nghĩ thôi là đấy chán rồi. Vậy sao không làm sẵn (hàn sẵn) một con vào mạch của mình luôn, sau đó khỏi phải lăn tăn với mấy vụ nguồn áp nữa . Dưới đây là sơ đồ chân của bé IC 7805, các bạn có thể dễ hàng đoán nghĩa những chân ở hình trên chứ, hehe. À mà nếu không thích, thì bạn cứ cấp thẳng 5V ở vị trí nguồn bên trái là xong, khỏi rườm rà.
Oki, bây giờ bạn sẽ gắn một con tụ 10uF vào 2 ô vuông (+) và (-) nhé. Thực sự nếu bạn quên bước này, thì con Arduino của bạn sẽ bị reset một cách bất thình lình... vì sao, vì nguồn ra cục 9V giảm nhanh lắm (hàng TQ) và như vậy là gây sụt áp rồi nguồn ra của con 7805 cũng bị nhiễu ==> mạch Arduino của bạn cũng bị nhiễu nên nó bị reset. À quên, đầu (+) nối với cực dương của tụ và đầu (-) nối với cực âm của tụ nhé.
À, xém nữa thì quên, các bạn có để ý là lắp như trên thì đèn LED xanh (góc trái) sẽ không sáng, nếu tinh ý thì bạn sẽ phát hiện ngay là mình chưa cấp nguồn cho cột bên trái, vì vậy nhớ mắc như hình dưới nhé.
Con LED, màu xanh xanh ở góc trái kia là để nhận biết bạn đã gắn nguồn vào hay chưa, ở đó mình dùng 1 con điện trở 220 ohm nhé. Làm thế cho giống cái đèn ON trên mạch Arduino với lại để debug nguồn 9V chứ nó mà rớt ra (cái chụp pin gà quá) thì còn biết là sửa hehe.
Rồi ok, bây giờ bạn đã có một nguồn 5V trên breadboard rồi, Yay!!!
Bước 2: Tìm hiêu về sơ đồ chân của bé ATmega168
mấy con mình liệt kê trên kia cũng vậy nhé
Oki, cái mà mình nhìn vô thấy ngay đó là các chân Digital, Analog, VCC, GND, khà khà, không phải dạng vừa đâu nhé. Nếu chúng ta làm thế nào mà nạp code được thì chắc chắn các chân này sẽ là chân "chương trình" rồi. Hehe, tìm hiểu những chân còn lại thôi. À, nếu bạn chưa biết về chân digital hay analog thì hãy quăng các từ in nghiêng vào mục tìm kiếm nhé .
Chân AREF bạn có thể nghiên cứu thêm ở đây. Oki, đến bước tiếp theo thôi, chứ mình cũng không rành
Bước 3: Nối tất cả những phần còn lại để hoàn thiện mạch
Hjx, vì không biết phải chia như thế nào nữa, nên thôi, chiến trong một bước rồi chia thành các bước con nhé bro
Hà hà, nhìn hình này thì các bạn biết ngay vì sao nối chân 22 vào GND rồi chứ , mình cũng "không biết tại sao luôn". Chân 19 chính là chân digital 13, để cho giống mạch thật, ta gắn vào đó để sau này "blink" chơi. HEHE. Mình dùng một con led màu đỏ và điện trở 220 ohm.
Oki, chân 21 là chân AREF, như đã nói ở bước trên, bạn nên đọc bài viết đó, bạn sẽ nắm được vấn đề ngay, nếu muốn nhanh thì nhớ là AREF kéo lên (gắn vào nguồn 5V) là được.
Chân 20 là chân AVCC (Supply voltage for the ADC converter), chân này được kéo lên khi chúng ta không muốn sử dụng bộ lọc low-pass filter, bộ low-pass-filter là một bộ lọc giúp chúng ta lọc nhiễu từ nguồn các chân analog. Trong thế giới Arduino, ta không dùng bộ này vị vậy ta kéo nó lên.
Tiếp,...
Ta sẽ cấp nguồn 5V vào chân số 7 (VCC). Mắc thêm chân số 8 vào cực âm nữa cho nó chắc ăn. lỡ chân 22 bên kia bị rớt ra thì còn chân GND bên này hehe.
Mạch Arduino sẽ tự động reset nếu chân reset bị kéo xuống đất (tức nối xuống âm), như vậy để reset mạch arduino tự chế ta dùng một button và mắc như hình trên, nếu chưa biết cách mắc button (tức là chưa biết vì sao) bạn mắc như vậy thì bạn đọc bài này nhé.
À, còn 2 con tụ 22pF và con thạch anh để tạo xung nhịp cho ATmega168 ở 2 chân XTAL1 (9) và XTAL2 (10) nữa là xong. Bây giờ bạn đã có một mạch Arduino tự chế hoàn chỉnh, chỉ cần gỡ con ATmega168 rồi gắn vào Arduino UNO nạp code rồi gắn qua đây là hoạt động rồi hehe. Tuy nhiên, đã chịu đọc bài của mình đến đây thì chịu khó đọc tiếp để làm luôn mạch nạp luôn, khỏi mất công "mua" con Arduino UNO làm gì...
Rồi ok, bây giờ bạn gắn 6 chân header ngang như hình nhé, rồi cũng gắn dây như hình luôn, chúng ta sẽ bàn sau. Nhưng mình sẽ đánh dấu từ phải qua trái từ 1 đến 6 với các chân như sau: GND, NC, 5V, TX, RX, NC. NC là not connect, do chuẩn con RS-TTL-232 nó vậy hehe.
Bước 4: Nạp code blink test chơi
Ok, mở example blink hoặc dùng code ở bài này nếu bạn mới bắt đầu.
Bạn gắn con FT232RL vào máy tính hoặc những con khác bất kỳ có nhiệm vụ tương tự (dùng từ khóa usb to ttl) và cài đặt driver cho nó (thường bạn google tên của con đó rồi thêm chữ driver phía sau là ra). Rồi bật Arduino IDE chọn serial port là port của con FT232RL nhé.
Bạn chọn board như hình dưới:
hoặc
- Arduino Duemilanove w/ATmega328
- Arduino Decimila, Duemilanove or Nano w/ATmega128
- ...
nói chung là tùy con mà bạn chọn thôi
Giờ bạn nối con FT232RL của bạn với 6 header pin lúc này (bằng dây nối breadboard cái) hoặc gắn nó lên thẳng breadboard cũng được. Ta xem chân CTS là DTR là NC rồi bạn nối với 6 chân header pin trên breadboard lúc nãy tôi đánh dấu là được!
Rồi, mỗi khi upload bạn nhớ giùm tôi những điều sau:
Bạn nhấn nút upload ở Arduino IDE rồi nhấn nút reset trên mạch Arduino rồi thả ra đợi cho đèn TX, RX nó ngừng nhấp nháy trên FT232RL (nếu có) hoặc Arduino IDE báo đã up thành công, rồi nhấn reset lần nữa, nạp của bạn đã được nạp xong. Nếu không được thì bạn tập lại vài lần là quen.
Bước 5: Làm mạch in
Mình có google một số mạch in để tự làm Arduino khá hay, lại giống với bài viết này nên chia sẻ với anh em luôn:
Nếu chưa biết ngõ làm mạch in như thế nào, thì bạn xem bài viết này của Davip Mạnh nhé.
Kết luận
Cuối cùng cũng có một bài viết hay ho lên với cộng đồng Arduino Việt Nam rồi, mọi người cho mình phản hồi tích cực nhé.