Tôi có thể tự làm một mạch Arduino Uno không ?

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 heart và cả viết lách nữa.yes

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.

  1. Arduino là gì
  2. Muốn học Arduino cần những gì
  3. Chuyên mục Giới thiệu về Arduino

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 devil. 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!!! devil

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é angel

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é cheeky

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 cool

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 blush

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ứ angry, 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 cool

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

 

lên
54 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Các lệnh Linux và thủ thuật backup thẻ nhớ khi chơi với máy tính nhúng Orange Pi hay bất kỳ máy tính nhúng dùng nhân Debian

Bài của Tâm đã truyền cảm hứng cho mình để mình tìm hiểu và tổng hợp lại danh sách các lệnh này. Nó bao gồm các lệnh hệ thống, xem tiến trình, dùng gói, các tiến trình mạng và thủ thuật như thủ thuật backup. Các bạn nên xem qua bài viết của HACK NÃO nữa nhé.

lên
3 thành viên đã đánh giá bài viết này hữu ích.

Lập trình ATtiny45 hoăc ATtiny85 với Codebender

Hôm nay có vấn đề đụng đến attiny45 mà mình lại lười tải Arduino IDE 1.0.6 để lập trình cho dễ, thành ra quyết định dùng codebender để lập trình. Mình tìm trên cộng đồng mà không có bài nào nói về vấn đề này, nhưng lại có bài của ksp khá liên quan, chỉ cần chỉnh file boards.txt rồi up lên một tí là được. Nên mình quyết định viết bài cho anh em sau này gặp thì giải quyết cho dễ

lên
4 thành viên đã đánh giá bài viết này hữu ích.