Học Arduino cần những gì ?

Bài viết này hướng tới những người "đang dự định" và "mới bắt đầu" tìm hiểu về nền tảng Arduino: bạn học sinh trẻ tuổi muốn tìm hiểu cái mới hay những người không chuyên về điện tử đang muốn thử sức mình ở lĩnh vực này.

Khi bắt đầu học một cái gì đó, nhiều người thường không biết bắt đầu từ đâu. Học về Arduino cũng vậy. Do đó, sau một thời gian trải nghiệm với Arduino đủ dài, mình quyết định viết bài này để cho bạn thấy những gì mình từng trải qua. Bắt đầu của mình chỉ là một con số 0 - 0 kiến thức, 0 kinh nghiệm, 0 thiết bị, 0 người hướng dẫn và quan trọng là một chút tò mò. Bạn cũng như mình, nhưng ít nhất bạn cũng đã có người hướng dẫn, đó là Arduino.vn. Hãy bắt tay ngay với Arduino để thử thách khả năng sáng tạo của mình.

Sẽ rất khó khăn để bạn tiến lên từ chỗ không biết một thứ gì đó lên mức nắm bắt được nó, nhưng sẽ dễ dàng hơn cho bạn khi tiếp tục đi từ đây. Nói cho dễ hiểu là khoảng cách từ mức "0" lên mức "1" lớn hơn khoảng cách từ mức "1" lên mức "2" rất nhiều.

Lúc trước, mình chủ yếu nghiên cứu về phần mềm bởi nó dễ làm, nhanh đem lại kết quả. Nhưng mình có cảm giác như phần mềm là một thứ gì đó quá mơ hồ, chỉ đơn giản là vì người ta không thể cầm nắm hay đụng chạm vào nó dẫn đến khó có thể hiểu được tầm quan trọng của nó.

Trái lại, từ lúc tiếp xúc với Arduino, mình nhận thấy rằng mình có thể làm ra được nhiều thứ thiết thực và hay ho hơn những phần mềm mình đã làm được.

Hãy xem chiếc xe của mình này xem ...

Mình có thể điều khiển nó bất cứ lúc nào mình muốn, mình có thể trình diễn với bạn bè, cho mượn, nói chuyện về nó như mình đang làm. Những người bạn của mình rất thích nó, họ luôn tranh giành nhau cái điều khiển, họ thán phục mình, không phải vì sự ngưỡng mộ mà là vì họ thích sản phẩm mình làm ra. Cái xe thậm chí còn nhận được sự chú ý nhiều hơn cả người làm ra nó. 

... và đấy chính là Arduino. mình học và mình thực hành, mình sáng tạo. Điều đó tạo ra sự phấn khích rất đặc biệt mà những thứ khác khó có thể mang lại được.

Những yếu tố quan trọng để thành công

1. Đầu tiên là con người

1.1. Sự đam mê trong bản thân bạn là điều tối cần thiết nếu bạn muốn gắn bó lâu dài với Arduino. Mỗi công việc đều có những khó khăn nhất định, tìm hiểu và thực hành Arduino cũng vậy. Nếu không có đam mê thì mình chắc chắn rằng bạn sẽ sớm bỏ cuộc, chưa kể là tốn kém tiền bạc để mua sắp nhiều thứ.

Mình đến với Arduino vì đam mê và nhờ đó mà mình có được sự tự giác học tập, chủ động khám phá cái mới. Điều đó giúp mình nhanh chóng tiến bộ và nắm bắt được nhiều cơ hội cho bản thân: phát triển chuyên môn lẫn quan hệ xã hội.

Mình có cơ hội được làm giáo viên hướng dẫn đề tài dự thi Cuộc thi nghiên cứu khoa học cho học sinh phổ thông Intel ISEF cấp thành phố tại một trường THPT tư thục tại TP Hồ Chí Minh. Thực tình mà nói thì đám học sinh được mình hướng dẫn đề tài chả hứng thú gì mấy với công việc nên mình toàn phải đốc thúc tụi nó làm. Sau khi thi xong, tụi nó lặn mất tăm. Một số đứa khác được mình hướng dẫn (đi ngang qua chỉ đại thôi) tại những cuộc thi khác sau khi thi xong vẫn tiếp tục nghiên cứu, hoặc họ luôn tự giác nghiên cứu bất kể ngày đêm hay tình trạng dạ dày. 

Bạn có đang nhìn thấy sự khác biệt ? Nếu bạn đã thích một cái gì đó (như gấu chẳng hạn) thì bạn sẽ chơi với nó mà không cần lí do. Suy ngược lại, nếu bạn thích chơi với một cái gì đó (hay một bạn nữ nào đó chẳng hạn) mà không cần lí do thì bạn đã mê nó rồi, hehe.

1.2 Thực hành cũng là một yếu tố hết sức quan trọng. Có nhiều bạn học Arduino tuy là có đam mê thật nhưng lại không có điều kiện thực hành. Bởi thế mà học tới đâu quên tới đó, và càng học thì càng không hiểu. Đây là điều cực kì nguy hiểm bởi nó dễ đánh mất đi niềm đam mê của người học. Nếu bạn đã từng ngáp ngắn ngáp dài trong những giờ học Lịch sử hay Triết học, và cảm thấy vô cùng phấn khích khi xem bộ phim 3 chàng ngốc (3 Idiots) thì vấn đề ở đây cũng tương tự thế thôi. Nếu bạn chưa xem bộ phim này thì mình khuyên bạn nên xem kĩ.

1.3 Làm việc nhóm là một điều tối quan trọng giúp bạn mau chóng tiến bộ cũng như giảm thiểu rủi ro hay chi phí để nuôi niềm đam mê Arduino:

  • Mọi người cùng chia sẻ kiến thức với nhau.
  • Mọi người cùng nhau tìm một lỗi sai.
  • Cùng chia tiền mua chung đồ hay có thể mượn lẫn nhau.
  • Dễ dàng phối hợp khi đi thi.

Hay đơn giản hơn, hãy nhìn vào bức ảnh dưới đây và cùng suy ngẫm ...

1.4 Luôn tiến lên phía trước nếu không bạn sẽ tụt lại phía sau !

Đây là điều mình đã học được:

  • Điều 1: 1.01365 = 37.78

  • Điều 2: 0.99365 = 0.03

Và mình hiện tại đang ở 0.9999^365 :D Còn bạn thì sao ?

2. Thứ hai là "Doing ordinary things"

 

Ở đây mình chỉ đưa ra một ví dụ là một câu chuyện của một anh hacker vào cuối năm 2015 khiến cộng đồng hacker thực sự "hoang mang" :D. Mình xin trích dẫn nguyên văn lại từ https://github.com/NARKOZ/hacker-scripts

xxx: OK, so, our build engineer has left for another company. The dude was literally living inside the terminal. You know, that type of a guy who loves Vim, creates diagrams in Dot and writes wiki-posts in Markdown... If something - anything - requires more than 90 seconds of his time, he writes a script to automate that.

xxx: So we're sitting here, looking through his, uhm, "legacy"

xxx: You're gonna love this

xxx: smack-my-bitch-up.sh - sends a text message "late at work" to his wife (apparently). Automatically picks reasons from an array of strings, randomly. Runs inside a cron-job. The job fires if there are active SSH-sessions on the server after 9pm with his login.

xxx: kumar-asshole.sh - scans the inbox for emails from "Kumar" (a DBA at our clients). Looks for keywords like "help", "trouble", "sorry" etc. If keywords are found - the script SSHes into the clients server and rolls back the staging database to the latest backup. Then sends a reply "no worries mate, be careful next time".

xxx: hangover.sh - another cron-job that is set to specific dates. Sends automated emails like "not feeling well/gonna work from home" etc. Adds a random "reason" from another predefined array of strings. Fires if there are no interactive sessions on the server at 8:45am.

xxx: (and the oscar goes to) fucking-coffee.sh - this one waits exactly 17 seconds (!), then opens a telnet session to our coffee-machine (we had no frikin idea the coffee machine is on the network, runs linux and has a TCP socket up and running) and sends something like sys brew. Turns out this thing starts brewing a mid-sized half-caf latte and waits another 24 (!) seconds before pouring it into a cup. The timing is exactly how long it takes to walk to the machine from the dudes desk.

xxx: holy sh*t I'm keeping those

Trước khi bắt đầu dự án trong mơ của mình, bạn nên suy nghĩ về câu nói trên trước. Lời khuyên của mình cho những bạn mới bắt đầu tập tành làm dự án là nên làm những dự án có thể ứng dụng được trong chính căn nhà hay gia đình của bạn trước khi đi ra biển lớn.

Nếu bạn làm dự án để chơi cho vui thì xin chúc mừng. Nếu bạn làm vì điều gì đó ngoài bản thân bạn, hãy nghĩ đến những người xung quanh bạn, những sự việc, vấn đề mà chính bạn đang gặp phải, bởi bạn chính là người hiểu rõ chúng nhất như anh chàng hacker ở trên đã làm. Cứ như vậy cho tới khi những điều lớn lao trở thành bình thường với bạn.

1.3. Thứ ba là tìm được cộng đồng để cùng chia sẻ

"Hãy nhớ rằng, tất cả chúng ta đều đã từng vấp ngã, tất cả. Đó là lí do vì sao chúng ta cảm thấy mạnh mẽ khi nắm chặt tay nhau" - Emily Kimbrough

Trong quá trình nghiên cứu Arduino, mình cũng đã từng vấp ngã, nghiên cứu thất bại. mình cũng từng làm hỏng nhiều thứ được mua bởi tiền lương của ba mẹ mình. mình cũng đã từng có ý định sẽ từ bỏ. Nhưng không, như bạn thấy, mình đã ở đây, đã viết bài viết này. Đó là bởi vì mình còn có bạn bè, những người luôn theo dõi mình, và mình không thể làm họ thất vọng. Một cộng đồng có thể truyền cho người ta một sức mạnh mà chính họ cũng không thể tưởng tượng được ...

  • Trí tuệ của một đội quân: cho dù bạn có thông minh đến đâu thì bạn cũng chỉ là 1 con người. "Một cây làm chẳng nên non - Ba cây chụm lại nên hòn núi cao". Nếu bạn đã từng tham gia vào cái "hợp tác xã" thời học sinh thì bạn sẽ tưởng tượng ra được sức mạnh của một tập thể to lớn đến mức nào.
  • Vượt qua giới hạn của bản thân: hôm nay có thể bạn chỉ biết làm một chiếc xe, nhưng có thể ngày mai sẽ có người nói cho bạn biết cách làm một cái máy bay. Vâng, bạn không thể biết những thứ mình không biết - đó chính là giới hạn của bạn, nhưng có thể người khác lại biết chúng và ngược lại. Chí ít thì lúc khó khăn cũng có thể có một số người trong cộng đồng có thể giúp đỡ được. Con người luôn có giới hạn, nhưng họ luôn có thể đẩy giới hạn đó đi xa hơn, bạn cũng vậy.
  • Ý tưởng: mình tin rằng bạn đã từng nghe câu chuyện về Flappy Bird. Thành công không đến với những kẻ thông minh nhưng có ý tưởng tồi, nhưng điều ngược lại thì luôn luôn đúng. Biết đâu được bạn sẽ tìm ra ý tưởng cho riêng mình trong một cuộc thảo luận, hay chỉ tình cờ nhìn thấy một điều gì đấy thì sao ...
  • Hỗ trợ lẫn nhau: trong những lúc mà bạn đã đánh mất đi niềm tin vào chính bản thân mình thì vẫn còn có một cộng đồng ngoài kia. Sẽ có những người chia sẻ với bạn, ở bên cạnh và giúp đỡ bạn. Nếu bạn không bỏ rơi người khác trong lúc họ gặp khó khăn, thì người khác cũng sẽ không bỏ rơi bạn trong những lúc như thế.
  • Động lực: bạn có thấy chiếc xe của mình ở trên không? mình không làm nó chỉ cho bản thân của mình chơi mà còn cho nhiều người khác chơi, và cho cả mục đích truyền bá Arduino đến cho nhiều người khác nữa. mình làm được vì mình có động lực, mình thấy vui khi nhìn người khác thích thú với sản phẩm do mình làm ra.

Ở Việt Nam hiện nay, mình được biết có 2 cộng đồng mạnh nhất sau:

Đầu tiên dĩ nhiên là Cộng đồng Arduino Việt Nam Arduino.vn. Chúng ta chủ yếu hoạt động online dựa trên các bài blog do mọi người cùng đóng góp liên quan đến nền tảng Arduino và các nền tảng khác như Raspberry Pi, Intel Galileo và điện tử nói chung. Sau một năm hoạt động

Gần đây thì đã có tổ chức thêm Cuộc thi sáng tạo với Arduino.vn kì đầu tiên. Bạn có thể xem kết quả kì thi tại đây.

2. Phần cứng

Đánh giặc thì cần vũ khí, nghiên cứu Arduino cũng cần có "vũ khí" thì mới đánh được giặc dốt. Có phần cứng tức là bạn có khả năng thực hành, có thực hành thì sẽ hiểu nhanh, nhớ lâu và biết vận dụng những gì mình học được. mình tin chắc rằng bạn sẽ nhớ mãi cái cảm giác lần đầu tiên làm việc với Arduino, bởi mình và nhiều người như mình cũng như thế.

1. Arduino Starter kit

Hiện nay có rất nhiều bộ Arduino Starter kit đang được bán ở Việt Nam có thể giúp bạn bước đầu nắm vững về Arduino. Một bộ Arduino Starter kit thường sẽ có những thứ này:

Ngoài ra, bạn cũng có thể mua phần cứng để thực hành theo các bài viết tại mục Tự học Arduino được cung cấp bởi Arduino.vn. Bằng cách này, bạn có thể linh hoạt hơn trong việc:

  • Giảm chi phí mua sắm 
  • Tự do lựa chọn các bài học theo sở thích của bản thân.
  • Đọc thêm một số bài viết ngoài lề, điển hình là bài viết mà bạn đang đọc trên đây :D

Bên cạnh đó, các nội dung tại đây cũng có thể được cập nhật những kiến thức mới nhất hay bổ sung thêm nội dung mới.

Tuy nhiên, cũng có một điểm trừ là các bài viết vẫn chưa có nội dung thống nhất với nhau, do đó có thể làm người học bối rối đôi chút nhưng mình nghĩ đây không phải là vấn đề quá nghiêm trọng.

2.2 Đọc thêm tài liệu

Sau khi vọc hết các dự án trong bộ Arduino Starter kit hoặc trong mục Tự học Arduino , bạn có thể tìm hiểu thêm nhiều điều thú vị khác qua các bài viết trên Arduino.vn như:

Trên đây là một số bài viết được tác giả dày công biên soạn và giải thích rõ ràng cụ thể được đăng tải trong thời gian gần đây nhất. bạn có thể tìm đọc thêm nhiều bài viết có những ý tưởng thú vị khác. 

Nếu bạn có khả năng đọc hiểu tiếng anh ở mức trung bình trở lên, bạn có thể tìm đọc một số quyển sách sau:

  1. Getting Started with Arduino: The Open Source Electronics Prototyping Platform (Make) 3rd Edition: Quyển sách này được viết bởi Massimo Banzi (một trong 5 người đồng sáng lập nền tảng Arduino) và Michael Shiloh (trưởng nhóm giáo dục của Arduino). Quyển này thuộc dạng sách giáo khoa cần phải có cho bất cứ ai muốn học Arduino và cũng đang được store.arduino.cc bán như là tài liệu tham khảo chính thức.
  2. Arduino Workshop: A Hands-On Introduction with 65 Projects 1st Edition: Quyển này được viết bởi John Boxall - founder và cũng là chủ của trang tronixstuff.com. John Boxall bắt đầu đăng các bài viết lên trang này từ năm 2012 và cho đến nay thì số lượng bài viết đã là cực khủng, bao gồm đến 61 bài hướng dẫn học Arduino với đủ thứ thiết bị khác nhau. Nếu thích học Arduino qua các dự án thực tế thì quyển này phù hợp với bạn.
  3. Arduino Cookbook 3rd Edition: Quyển sách này dày hơn cả 2 quyển trước cộng lại. Để đọc hiểu được quyển này thì điều kiện đầu tiên là bạn phải đọc và thực hành nội dung của một trong hai quyển ở trên trước. Mình chưa đọc quyển này nhưng theo lời tác giả thì nó thích hợp cho những người muốn tận dụng sức mạnh của máy tính (computer) để tương tác với môi trường bên ngoài, hay những người đang đi tìm lời giải cho một vấn đề nào đó. Quyển này cũng không đề cập nhiều đến lý thuyết cơ bản về điện cũng như lập trình như 2 quyển trước.

3. Lập trình

Ở đây bạn cần 2 thứ đó là tư duy lập trình và kiến thức về vi điều khiển trên Arduino để phục vụ lập trình và tận dụng được hết sức mạnh của nó.

Trên thực tế, ta cần khả năng lập trình nhiều hơn. Tuy nhiên, nó cũng không khó hơn là bao so với mấy cái bài tập tin học lớp 11 trong chương trình phổ thông.

Trước tiên, bạn cần:

  • Arduino Driver để máy tính của mình giao tiếp được với mạch Arduino.
  • Arduino IDE để lập trình và tải chương trình lên mạch Arduino của mình. 

Hãy tham khảo bài viết Cài đặt driver và Arduino IDE để rõ hơn nhé.

Và đây là một chương trình mẫu điều khiển 1 cho đèn Led nhấp nháy.

int led = 13;

void setup() {
    pinMode(led, OUTPUT);         //Thiết lập chân số 13 trên mạch là chân xuất tín hiệu
}

void loop()
{
    digitalWrite(led, HIGH);      //LED sáng
    delay(1000);                  //Đợi 1000 mili giây
    digitalWrite(led, LOW);       //LED tắt
    delay(1000);                  //Đợi 1000 mili giây
}

Ngôn ngữ lập trình Arduino được thiết kế dựa trên C. Do đó bạn đã biết lập trình Pascal ở trường phổ thông thì việc lập trình Arduino cũng chẳng có gì khác biệt nhiều ngoài cú pháp chương trình. Nếu bạn đã biết C rồi thì đây là một lợi thế rất lớn.

Với kiến thức về vi điều khiển trên Arduino, nó cũng tương tự như việc bạn học toán thì sẽ tự biết cách dùng các loại máy tính như fx 570-MS hay fx 570-ES (cách bấm máy để giải phương trình bậc 2, phương trình 2 ẩn, tìm giới hạn của hàm số,...) , làm việc nhiều với Arduino thì dần sẽ nắm được. Nếu không sử dụng sâu các chức năng trên vi điều khiển thì người dùng bình thường cũng rất hiếm khi dụng đến những kiến thức này.

Nếu bạn chấp nhận nghiên cứu một cách trâu bò, bạn có thể tìm đọc quyển Arduino Microcontroller Processing for Everyone!: Third Edition (Synthesis Lectures on Digital Circuits and Systems) 3rd Edition.

Đừng quá lo lắng vì tôn chỉ của nền tảng Arduino là luôn đơn giản tối đa mọi quy trình, giúp người dùng có thể dễ dàng thể hiện những ý tưởng sáng tạo của mình mà không bị gò bó như những nền tảng khác. Vì vậy, mình xếp yếu tố "Lập trình" nằm ở cuối cùng, tức là ít quan trọng hơn so với 2 yếu tố "Con người" "Phần cứng". Nếu bạn quyết tâm, bạn sẽ học được.

Lời gửi gắm cuối cùng

Trong quá trình làm việc với Arduino, hãy luôn nhớ rằng những gì bạn đang tiếp xúc chỉ là bề nổi của tảng băng chìm. Vì vậy, đừng ngần ngại tìm hiểu sâu vào những kiến thức, linh kiện điện tử làm nên Arduino (mặc dù chúng không đơn giản gì mấy) bởi chính những thứ đó mới có thể đưa bạn xuống một thế giới mới sâu hơn nằm bên dưới tảng băng này. Nếu chỉ mải đi loanh quanh trên bề mặt của tảng băng, tới một lúc nào đó bạn sẽ chẳng còn gì để học nữa !

Nhớ rằng: "Bắt đầu từ những điều đơn giản. Kết thúc bằng những điều vĩ đại", đừng làm ngược lại :3

 

Cập nhật: 01/03/2016

lên
29 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

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Điện trở

Điện trở là một đại lượng vật lí biểu thị đặc tính cản trở dòng điện của một vật có khả năng cho dòng điện chạy qua. Vật nào dẫn điện càng tốt thì điện trở của nó càng nhỏ và ngược lại. Trong kĩ thuật, có một loại linh kiện điện tử thụ động cũng được gọi là điện trở mà khả năng cản trở dòng điện của nó đã được xác định (có định lượng rõ ràng).

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

highByte()

highByte() là hàm trả về một chuỗi 8 bit kề với 8 bit cuối cùng của một chuỗi các bit. Như vậy, nếu dữ liệu đưa vào một chuỗi 16bit thì highByte() sẽ trả về 8 bit đầu tiên, nếu dữ liệu đưa vào là một chuỗi 8bit hoặc nhỏ hơn, highByte() sẽ trả về giá trị 0. Một số nguyên bất kì cũng được xem như là một chuỗi các bit, vì bất kì số nguyên nào cũng có thể biểu diễn ở hệ nhị phân dưới dạng các bit "0" và "1".

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