Điều khiển mạch Arduino thông qua Wifi sử dụng mạch XBee.

Print

Giới thiệu, nội dung chính

Để giao tiếp giữa máy tính với board Arduino ta thường làm theo cách giao tiếp qua cổng USB kết nối giữa máy tính và board Arduino. Hôm nay, tôi xin giới thiệu đến các bạn yêu thích khám phá cách điều khiển Arduino thông qua module wifi XBee. Với cách thức lập trình và kết nối đơn giản sẽ giúp những bạn mới tìm hiểu có thể tiếp cận và hiểu dễ dàng. Trong bài viết này tôi sử dụng C# để lập trình cho giao diện trên máy tính.

Qua bài viết này, tôi hy vọng sẽ giúp các bạn có thể hiểu và nắm được cách giao tiếp với mạch Xbee một cách cơ bản nhất. Nào ta cùng tìm hiểu thôi!

Phần cứng

  1. Arduino board ( Arduino Due, các bạn có thể dùng UNO nhưng nhớ chú ý Serial và Serial1 trong file lập trình cho Ardunio)
  2. Mạch Wifi Xbee (XBee S68)
  3. Mạch set up Xbee 
  4. Dây cắm kết nối giữa Xbee và Arduino.
  5. Mạng Wifi

Thiết đặt thông số cho mạch Xbee

Để thiết lập thông số mang wifi cho mạch Xbee các bạn phải có mạch set up Xbee và phần mềm XCTU để dò mạng và thiết lập địa chỉ IP address. Ngoài ra cũng cần phần mềm Hercules để kiểm tra kết nối giữa máy tính và mạch Xbee xem được hay chưa, driver để nhận cổng USB. Tất cả phần mềm và Code lập trình mình đã add vào link ở dưới cuối bài, các bạn có thể download về và sử dụng. Mình sẽ tóm tắt các bước thiết lập thông số cho mạch Xbee như dưới đây:

Kiểm tra kết nối giữa máy tính và mạch Xbee

Để kiểm tra kết nối giữa máy tinh và mạch Xbee ta sử dụng phần mềm Hercules.

Chú ý mục Module Ip chính là IP của mạch Xbee wifi, port là từ số 2616 ở thông số CO source port quy đổi ra số Decimal ta được 9750.

Kết nối  phần cứng Arduino và Xbee

Phần này ta chú ý đến 4 chân của Xbee :

Lập trình giao diện máy tính 

Trong phần lập trình giao diện trên máy tính, tôi sử dụng C# để lập trình:

Code lập trình

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Net.Sockets;
  9. using System.Windows.Forms;
  10.  
  11. namespace GiaotiepwifiXbee
  12. {
  13. public partial class Form1 : Form
  14. {
  15. TcpClient XbeeIP;
  16. NetworkStream Xbeestream;
  17.  
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. }
  22.  
  23. private void connect_btn_Click(object sender, EventArgs e)
  24. {
  25. status.Text = "Dang ket noi...";
  26. Refresh();
  27. try
  28. {
  29. Int32 giatriport = Convert.ToInt32(portbox.Text);
  30. XbeeIP = new TcpClient(ipbox.Text, giatriport);
  31. Xbeestream = XbeeIP.GetStream();
  32. status.Text = "Da ket noi!";
  33. }
  34. catch
  35. {
  36. status.Text = "Khong ket noi duoc!";
  37. }
  38. }
  39.  
  40. private void button1_Click(object sender, EventArgs e)
  41. {
  42. Xbeestream.WriteByte(49);
  43.  
  44. button1.Enabled = false;
  45. button2.Enabled = true;
  46. }
  47.  
  48. private void button2_Click(object sender, EventArgs e)
  49. {
  50. Xbeestream.WriteByte(48);
  51.  
  52. button1.Enabled = true;
  53. button2.Enabled = false;
  54. }
  55.  
  56. }
  57. }

Lưu ý : Ở dòng Xbeestream.WriteByte() , số trong ngoặc là số ASCII (48 --> 0, 49 -->1). Mục đích khí nhấn nút on trên giao diện sẽ gửi về cổng Serial1 giá trị là 1 và off là 0.

Lập trình trên board Arduino

Trong đoạn code lập trình cho Arduino, mục đích tôi là ngõ ra I/O on và off. Tôi đã sử dụng chân số 13 tương ứng với Led để cho tiện việc thiết lập phần cứng.

Code lập trình

  1. int led = 13;
  2. byte data;
  3. void setup()
  4. {
  5. // Thiet lap toc do baud cho cong TX1 và RX1
  6. Serial1.begin(9600);
  7. pinMode(led, OUTPUT); // digital sensor is on digital pin 13
  8. }
  9.  
  10. void loop()
  11. {
  12. if (Serial1.available())
  13. {
  14. data = Serial1.read();// doc gia tri tu cong serial1(tuong ung voi TX1 va RX1)
  15. switch (data)
  16. {
  17. case '1' : digitalWrite (led,HIGH);break;
  18. case '0': digitalWrite (led,LOW);break;
  19. }
  20. }
  21. }

Lời kết

Đến đây là bạn đã hoàn thành việc giao tiếp của mình rồi, bạn sẽ thấy khí nhấn nút ON hoặc OFF trên màn hình thì đèn Led 13 mở hoặc tắt tương ứng. Chúc các bạn thành công và tìm được nhiều niềm vui hơn nữa trong việc lập trình nhé.

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

  HotLine: 0972 800 931 Ms Duyên