STM32 .Net MF开发板学习-16】Zigbee遥控智能小车

简介: Zigbee技术目前在物联网领域和RFID一样,受关注度非常高。日前中科院上海微系统与信息技术研究所、无锡物联网产业研究院等传感器网络标准工作组成员单位联合发布了名为VW628、WSNS1_SCBR的两款中国自主知识产权的无线传感网SoC芯片,其中WSNS1_SCBR为中国首款符合IEEE802.1

Zigbee技术目前在物联网领域和RFID一样,受关注度非常高。日前中科院上海微系统与信息技术研究所、无锡物联网产业研究院等传感器网络标准工作组成员单位联合发布了名为VW628、WSNS1_SCBR的两款中国自主知识产权的无线传感网SoC芯片,其中WSNS1_SCBR为中国首款符合IEEE802.15.4g标准的验证型全集成传感网节点SoC芯片。

其实封装好的Zigbee模块,使用起来和操作串口一样,特别是我们把其通信模式设置为透明传输模式,这时候我们已经感觉不到是在用Zigbee模块,而觉得是在用一条串口线。在之前写的《Zigbee在.Net Micro Framework系统中的应用》博文中相对详细的介绍了Zigbee相关模块的应用,感兴趣的网友,可以参考一下。
image.png

单个的Zigbee模块非常小,其串口管脚为TTL电平,需要直接和MCU相连,具体接线管脚如下(简便期间,我们只接4根管脚):
1.png
开发板上的控制程序如下(非常简单,就是串口接收和小车控制程序):

//打开串口,并设置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();

                        break;

                    case 50:  //'2'

                        KeyName = "Right";

                        MoveRight();

                        break;

                    case 51:  //'3'

                        KeyName = "Back";

                        MoveBack();

                        break;

                    case 52:  //'4'

                        KeyName = "Stop";

                        MoveStop();

                        break;

                }

                Debug.Print(KeyName);

            }

 }     

上面的程序进行了简化,关于小车PWM控制部分的代码,请参考我以前写的博文《用PWM驱动智能小车》及《红外遥控智能小车》。

为了便于控制,我们需要在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");

        serial.DiscardInBuffer();

    }

    private void btnRight_Click(object sender, EventArgs e)

    {

        serial.Write("2");

        serial.DiscardInBuffer();

    }

    private void btnBack_Click(object sender, EventArgs e)

    {

        serial.Write("3");

        serial.DiscardInBuffer();

    } 

    private void btnStop_Click(object sender, EventArgs e)

    {

        serial.Write("4");

        serial.DiscardInBuffer();

 }        

运行后的界面如下:

image.png

单击相关按钮,如果不出意外的话,在Zigbee通信范围的智能小车应该已经动起来了。

相关控制视频如下:

http://video.sina.com.cn/v/b/40292033-1804832611.html

(1)、小车底盘

 http://item.taobao.com/item.htm?id=7218838776

(2)、四路直流电机驱动器

http://item.taobao.com/item.htm?id=7218717808

(3)、.NET Micro Framework开发板

 http://item.taobao.com/item.htm?id=7117999726

注:需要红牛开发板固件在 V1.0.0以上

本文源码1:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/PCZigbee.rar

本文源码2:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/ZigbeeCar.rar

MF快速参考: .NET Micro Framework 快速入门

MF中文讨论组:http://space.cnblogs.com/group/MFSoft/

微软官方论坛:MSDN微软中文技术论坛(.NET Micro Framework)

开发板简明手册:http://blog.sina.com.cn/s/blog_6b938f630100kh0k.html

相关文章
|
6月前
|
传感器 数据采集 人工智能
基于STM32单片机的智能晾衣架设计与实现【开源免费】
随着智能家居的发展,传统晾衣架已经难以满足现代家庭对便捷、智能化的需求。基于STM32单片机的智能晾衣架能够实现自动升降、光照检测、风干控制、远程控制等功能,为家庭用户提供更智能、更舒适的晾晒体验。本项目以STM32F103C8T6为核心控制器,通过电机驱动模块、光照传感器、温湿度传感器、蓝牙/Wi-Fi通信模块,实现晾衣架的自动化与远程控制。
基于STM32单片机的智能晾衣架设计与实现【开源免费】
|
6月前
|
传感器 机器人 物联网
【免费开源】基于STM32的蓝牙小车/智能小车项目详解(附源码)
通过本项目,你可以系统掌握STM32外设控制、蓝牙通信、电机驱动和传感器数据处理技术,实现一辆可远程控制并具备避障功能的智能小车。该项目具有高度可扩展性,后续可增加循迹、自动寻路、摄像头等高级功能。
1450 43
【免费开源】基于STM32的蓝牙小车/智能小车项目详解(附源码)
|
4月前
|
人工智能 API 数据库
Semantic Kernel .NET 架构学习指南
本指南系统解析微软Semantic Kernel .NET架构,涵盖核心组件、设计模式与源码结构,结合实战路径与调试技巧,助你从入门到贡献开源,掌握AI编排开发全栈技能。
447 2
|
6月前
|
传感器 人工智能 监控
【免费开源】基于STM32的智能宠物喂食系统设计与实现(全流程技术详解)附源码
本项目基于STM32F103C8T6设计实现智能宠物喂食系统,支持定时喂食、远程控制、余粮检测、语音提示等功能,结合传感器与物联网技术,提升宠物喂养智能化水平,适用于家庭及嵌入式课程实践。源码开源,具备良好扩展性。
【免费开源】基于STM32的智能宠物喂食系统设计与实现(全流程技术详解)附源码
|
6月前
|
传感器 数据采集 安全
STM32与传感器技术结合打造智能行李箱 | 自动跟随与报警系统【免费开源】
本项目成功实现了基于STM32的智慧行李箱设计,采用了超声波测距、重力传感器和报警系统等技术,打造了一款智能且安全的行李箱。通过超声波测距模块,行李箱能够实时跟随主人并根据距离变化调整电机的速度与方向,确保小车始终保持与主人的相对位置。此外,重力测量模块能够检测行李箱内物品的重量,若超重则及时通过LED和蜂鸣器提醒主人,避免物品过重对行李箱造成损害或不便。
STM32与传感器技术结合打造智能行李箱 | 自动跟随与报警系统【免费开源】
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
606 0
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
219 8
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
1646 2
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
1948 0