天天看點

【STM32 .Net MF開發闆學習-16】Zigbee遙控智能小車

Zigbee技術目前在物聯網領域和RFID一樣,受關注度非常高。日前中科院上海微系統與資訊技術研究所、無錫物聯網産業研究院等傳感器網絡标準工作組成員機關聯合釋出了名為VW628、WSNS1_SCBR的兩款中國自主知識産權的無線傳感網SoC晶片,其中WSNS1_SCBR為中國首款符合IEEE802.15.4g标準的驗證型全內建傳感網節點SoC晶片。

【STM32 .Net MF開發闆學習-16】Zigbee遙控智能小車

單個的Zigbee子產品非常小,其序列槽管腳為TTL電平,需要直接和MCU相連,具體接線管腳如下(簡便期間,我們隻接4根管腳):

序号

Zigbee子產品

紅牛開發闆

1

3(RX0)

PA2(USART2_TX)

2

4(TX0)

PA3(USART2_RX)

3

6(GND)

GND

4

7(VCC)

3.3v

開發闆上的控制程式如下(非常簡單,就是序列槽接收和小車控制程式):

//打開序列槽,并設定zigbee子產品為透明傳輸模式

  serial = new SerialPort("COM2", 115200, Parity.None, 8, StopBits.One);

     serial.Open();

     serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);  

    string strCommand = "---2-";

     byte[] byteData = System.Text.Encoding.UTF8.GetBytes(strCommand);

     serial.Write(byteData, 0, byteData.Length);

//讀取資料

     static void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)

     {

            if (serial.BytesToRead > 0)

            {

                byte[] bytData = new byte[serial.BytesToRead];

                serial.Read(bytData, 0, bytData.Length);

                serial.Write(bytData, 0, bytData.Length);

                string KeyName = "";

                switch (bytData[0])

                {

                    case 48:  //'0'

                        KeyName = "Forward";

                        MoveForward();

                        break;

                    case 49:  //'1'

                        KeyName = "Left";

                        MoveLeft();

                    case 50:  //'2'

                        KeyName = "Right";

                        MoveRight();

                    case 51:  //'3'

                        KeyName = "Back";

                        MoveBack();

                    case 52:  //'4'

                        KeyName = "Stop";

                        MoveStop();

                }

                Debug.Print(KeyName);

            }

 }     

為了便于控制,我們需要在PC上編寫一個最簡單的序列槽發送程式,以控制智能小車的運轉,相關代碼如下:

//序列槽

    SerialPort serial = null;

    public frmMain()

    {

        InitializeComponent();

        serial = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One);

        serial.Open();

        string strCommand = "---1-";

        byte[] byteData = System.Text.Encoding.UTF8.GetBytes(strCommand);

        serial.Write(byteData, 0, byteData.Length);           

    }        

    private void frmMain_FormClosed(object sender, FormClosedEventArgs e)

        serial.Close();

    }

    private void btnForward_Click(object sender, EventArgs e)

        serial.Write("0");

        serial.DiscardInBuffer();

    private void btnLeft_Click(object sender, EventArgs e)

        serial.Write("1");

    private void btnRight_Click(object sender, EventArgs e)

        serial.Write("2");

    private void btnBack_Click(object sender, EventArgs e)

        serial.Write("3");

    } 

    private void btnStop_Click(object sender, EventArgs e)

        serial.Write("4");

 }        

運作後的界面如下:

【STM32 .Net MF開發闆學習-16】Zigbee遙控智能小車

單擊相關按鈕,如果不出意外的話,在Zigbee通信範圍的智能小車應該已經動起來了。

相關控制視訊如下:

<a href="http://video.sina.com.cn/v/b/40292033-1804832611.html">http://video.sina.com.cn/v/b/40292033-1804832611.html</a>

(1)、小車底盤

(2)、四路直流電機驅動器

<a href="http://item.taobao.com/item.htm?id=7218717808">http://item.taobao.com/item.htm?id=7218717808</a>

(3)、.NET Micro Framework開發闆

   注:需要紅牛開發闆固件在 V1.0.0以上

繼續閱讀