电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>带有Netduino的C#智能物联网交换机

带有Netduino的C#智能物联网交换机

2022-11-08 | zip | 0.03 MB | 次下载 | 免费

资料介绍

描述

智能物联网交换机

我研究这个话题已经有一段时间了(看看我以前的项目)。我是物联网的忠实粉丝,尤其是家庭自动化。这些应用程序有可能带来社会和生活水平的巨大变化。猜猜看,我必须通过一个新平台应用物联网:C#感谢 Wilderness Labs。

让我们开始吧!

1. 所需材料

  • 继电器模块(我在这个项目中使用了 2 通道继电器)
  • 原型面包板
  • DHT11 用于温度监测。
  • Android 设备(运行 Xamarin 应用程序)
  • 盒子(我用的是木制的)
 
poYBAGNonBiAVWWIAAno5AuPPKw077.jpg
所需材料!
 

2.Netduino 设置

Netduino 是一款开发板,可让您使用 C# 编写代码来创建 IoT 应用程序。它使用 .NET 微框架。它就像一个 Arduino,具有许多令人兴奋的附加功能,例如 -

  • 使用 WiFi 或以太网连接
  • SD 卡支持额外的持久存储(高达 2GB)。
  • 多得多.....

因此,要使用 Netduino,您将需要 Visual Studio 2015,它可以让您创建 .NET Micro Framework 应用程序。(请注意,仍然不支持 Visual Studio 2017)

 
poYBAGNonByAILL-AAGueMy4yzA929.png
Visual Studio 下载链接
 

继续从上面的链接下载 VS 2015 的社区版本。

现在,在您安装后,请按照以下说明进行操作 -

 
pYYBAGNonCGADYs1AAHtoo8alHg145.png
荒野实验室网站
 

 

设置此设备有些困难,因此我建议您加入其社区,该社区非常活跃且乐于助人。我使用了 N3 以太网,所以我不需要 Netduino 部署设置部分。但是由于提供的软件,设置起来很容易。

3. 接线连接

现在您已经完成了所有设置,请转到 Netduino Samples repo 并下载 Blink 程序,然后使用 VS2015 在您的 Netduino 上运行它以确保一切正常。

https://github.com/WildernessLabs/Netduino_Samples

 
poYBAGNonCSAb69oAAIKeufqDUk963.png
让 Binky 启动并运行
 

关注此视频以获得更多帮助。

 

在此之后,您将设置为我们的项目连接连接。按照下图进行连接。

 
poYBAGNonCuAWtAfAAq4sSyjpEw242.jpg
 

看看 Fritzing 的连接。

 
pYYBAGNonC-AdFoRAACdBMew2vI554.png
 

DHT11 的连接非常简单。

3.3V -传感器的 VCC

Gnd -传感器的 Gnd

数字引脚 2 -传感器的输出引脚

完成后,您就可以开始为您的项目编写代码了。

4. Netduino 的编码部分

现在,您的硬件已连接好,您已准备好对 Netduino 进行编码。我们将使用Netduino Samples Git repo 项目中提供的Request HandlerMapleServer Generation文件。将这些文件添加到您的 VS 项目中非常容易。此外,对于中继编码,我们将使用 Git 存储库的中继示例或连接的咖啡机示例。下面提供了指向我的 Git 存储库和 Netduino Samples Git 存储库的链接。

现在,要配置 DHT11 传感器,首先您需要 4 端子原始传感器,因为我使用的库只有在所有 4 个引脚都正确连接到电路板时才会运行。

using System;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
namespace Glovebox.Netduino.Drivers {
   public class DHT11 : DhtSensor{
       //private OutputPort m_op;
       //private OneWire m_ow;
       private OneWireBus.Device m_dev;
       public DHT11(Cpu.Pin data1, Cpu.Pin data2):base(data1,data2,Port.ResistorMode.Disabled)
       {
        //   m_op = new OutputPort(pin, false);
       }
       public float ConvertAndReadTemperature() {
           var data = 0L;
           // if reset finds no devices, just return 0
           if (m_ow.TouchReset() == 0)
               return 0;
           // address the device
           m_ow.WriteByte(Command.MatchROM);
           WriteBytes(m_dev.Address);
           // tell the device to start temp conversion
           m_ow.WriteByte(Command.StartTemperatureConversion);
           // wait for as long as it takes to do the temp conversion,
           // data sheet says ~750ms
           while (m_ow.ReadByte() == 0)
               System.Threading.Util.Delay(1);
           // reset the bus
           m_ow.TouchReset();
           // address the device
           m_ow.WriteByte(Command.MatchROM);
           WriteBytes(m_dev.Address);
           // read the data from the sensor
           m_ow.WriteByte(Command.ReadScratchPad);
           // read the two bytes of data
           data = m_ow.ReadByte(); // LSB
           data |= (ushort)(m_ow.ReadByte() << 8); // MSB
           // reset the bus, we don't want more data than that
           m_ow.TouchReset();
           // returns C
           // F would be:  (float)((1.80 * (data / 16.00)) + 32.00);
           return (float)data / 16f;
       }
       public void StartConversion() {
           // if reset finds no devices, just return 0
           if (m_ow.TouchReset() == 0)
               return;
           // address the device
           m_ow.WriteByte(Command.MatchROM);
           WriteBytes(m_dev.Address);
           // tell the device to start temp conversion
           m_ow.WriteByte(Command.StartTemperatureConversion);
       }
       public float ReadTemperature() {
           var data = 0L;
           // reset the bus
           m_ow.TouchReset();
           // address the device
           m_ow.WriteByte(Command.MatchROM);
           WriteBytes(m_dev.Address);
           // read the data from the sensor
           m_ow.WriteByte(Command.ReadScratchPad);
           // read the two bytes of data
           data = m_ow.ReadByte(); // LSB
           data |= (ushort)(m_ow.ReadByte() << 8); // MSB
           // reset the bus, we don't want more data than that
           m_ow.TouchReset();
           // returns C
           // F would be:  (float)((1.80 * (data / 16.00)) + 32.00);
           return (float)data / 16f;
       }
       public static float ToFahrenheit(float tempC) {
           return (9f / 5f) * tempC + 32f;
       }
       private void WriteBytes(byte[] data) {
           for (var i = 0; i < data.Length; i++)
               m_ow.WriteByte(data[i]);
       }
       private static class Command {
           public const byte SearchROM = 0xF0;
           public const byte ReadROM = 0x33;
           public const byte MatchROM = 0x55;
           public const byte SkipROM = 0xCC;
           public const byte AlarmSearch = 0xEC;
           public const byte StartTemperatureConversion = 0x44;
           public const byte ReadScratchPad = 0xBE;
           public const byte WriteScratchPad = 0x4E;
           public const byte CopySratchPad = 0x48;
           public const byte RecallEEPROM = 0xB8;
           public const byte ReadPowerSupply = 0xB4;
       }
   }
}

这是我要使用的库的代码。只需通过“使用”命令将其添加到 DHT11 显示文件中,然后将 D5 引脚配置为输出并在调试窗口上打印其状态。而已!

这是中继代码:

using System;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using System.Threading;
namespace Relay
{
   public class Program
   {
       public static void Main()
       {
           // create an output port (a port that can be written to) and connect it to Digital Pin 2
           OutputPort relay = new OutputPort(Pins.GPIO_PIN_D2, false);
           OutputPort relay = new OutputPort(Pins.GPIO_PIN_D3, false);
           // run forever
           while (true)
           {
               relay.Write(true); // turn on the LED
               Thread.Sleep(500); // sleep for 1/2 second
               relay.Write(false); // turn off the relay
               Thread.Sleep(500); // sleep for 1/2 second
           }
       }
   }
}

让我们通过创建一个 Xamarin 应用程序来控制它,从而使开发板变得智能。

5. Xamarin 应用程序部分

现在我们已经准备好这些东西,我们将创建一个简单的 Xamarin 应用程序,该应用程序显示开关的状态(打开或关闭),并有 2 个按钮可以将开关的状态从关闭更改为打开。

以下是 2 个代码片段,可帮助您更多地了解上述功能。

获取状态代码片段

public async Task<bool> GetLightSwitchStatus()
{    
    using (var s = new Sockets.Plugin.TcpSocketClient())  
    {       
        await s.ConnectAsync(NetduinoIp, Port);    
        byte[] data = new byte[2];        
        data[0] = ReadLightSwitchState;     
        data[1] = ReadLightSwitchState;       
        s.WriteStream.Write(data, 0, 2);    
        s.ReadStream.Read(data, 0, 1);      
        return data[0] == ByteTrue;   
    }
}

上面这段代码向服务器请求开关状态,并根据灯开关的状态返回真或假。

设置状态代码片段:

public async Task SetLightSwitchStatus(bool on)
{
    using (var s = new Sockets.Plugin.TcpSocketClient())
    {
        await s.ConnectAsync(NetduinoIp, Port);
        byte[] data = new byte[2];   
        data[0] = WriteLightSwitchState;  
        data[1] = (byte)(on ? ByteTrue : ByteFalse);    
        s.WriteStream.Write(data, 0, 2);
    }
}

这段代码向服务器发送一个请求,告诉服务器应该将电灯开关设置为哪个状态。

请注意所有信息交换是如何通过字节完成的,第一个字节告诉服务器请求哪个操作,而第二个字节在必要时包含数据。

我已经使用 cssharpguy 的教程来创建我的简单应用程序。这是视频教程

 

我遵循了连接的 CoffeeMaker 教程,并为该项目使用了相同的应用程序。

 
pYYBAGNonDOAWQ2OAAG8_TFm9G0639.png
 

现在一切都完成了,该项目已准备好运行。这是显示项目工作的视频教程。

 

该视频是我以前的项目之一,但工作原理是相同的。我无法获得 Netduino 教程视频,因为我的 Netduino 板目前遇到一些问题,我的板开始工作后将立即更新视频。

感谢大家阅读这个项目。请尊重并与您的朋友分享。:-)


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费