資料介紹
描述
智能物聯網交換機
我研究這個話題已經有一段時間了(看看我以前的項目)。我是物聯網的忠實粉絲,尤其是家庭自動化。這些應用程序有可能帶來社會和生活水平的巨大變化。猜猜看,我必須通過一個新平臺應用物聯網:C#感謝 Wilderness Labs。
讓我們開始吧!
1. 所需材料
- Netduino 3(以太網或 WiFi)
- 繼電器模塊(我在這個項目中使用了 2 通道繼電器)
- 原型面包板
- DHT11 用于溫度監測。
- Android 設備(運行 Xamarin 應用程序)
- 盒子(我用的是木制的)
2.Netduino 設置
Netduino 是一款開發板,可讓您使用 C# 編寫代碼來創建 IoT 應用程序。它使用 .NET 微框架。它就像一個 Arduino,具有許多令人興奮的附加功能,例如 -
- 使用 WiFi 或以太網連接
- SD 卡支持額外的持久存儲(高達 2GB)。
- 多得多.....
因此,要使用 Netduino,您將需要 Visual Studio 2015,它可以讓您創建 .NET Micro Framework 應用程序。(請注意,仍然不支持 Visual Studio 2017)
繼續從上面的鏈接下載 VS 2015 的社區版本。
現在,在您安裝后,請按照以下說明進行操作 -
?
設置此設備有些困難,因此我建議您加入其社區,該社區非常活躍且樂于助人。我使用了 N3 以太網,所以我不需要 Netduino 部署設置部分。但是由于提供的軟件,設置起來很容易。
3. 接線連接
現在您已經完成了所有設置,請轉到 Netduino Samples repo 并下載 Blink 程序,然后使用 VS2015 在您的 Netduino 上運行它以確保一切正常。
https://github.com/WildernessLabs/Netduino_Samples
關注此視頻以獲得更多幫助。
在此之后,您將設置為我們的項目連接連接。按照下圖進行連接。
看看 Fritzing 的連接。
DHT11 的連接非常簡單。
3.3V -傳感器的 VCC
Gnd -傳感器的 Gnd
數字引腳 2 -傳感器的輸出引腳
完成后,您就可以開始為您的項目編寫代碼了。
4. Netduino 的編碼部分
現在,您的硬件已連接好,您已準備好對 Netduino 進行編碼。我們將使用Netduino Samples Git repo 項目中提供的Request Handler和MapleServer 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 教程,并為該項目使用了相同的應用程序。
現在一切都完成了,該項目已準備好運行。這是顯示項目工作的視頻教程。
該視頻是我以前的項目之一,但工作原理是相同的。我無法獲得 Netduino 教程視頻,因為我的 Netduino 板目前遇到一些問題,我的板開始工作后將立即更新視頻。
感謝大家閱讀這個項目。請尊重并與您的朋友分享。:-)
- 如何使用反射內存交換機 0次下載
- 以太網交換機是什么 以太網交換機的使用方法 15次下載
- 如何區別數據中心交換機與普通交換機 3次下載
- H3C交換機的配置命令大全 5次下載
- H3C交換機詳細配置實例詳細資料手冊免費下載 185次下載
- 工業以太網交換機簡介及其與普通交換機的區別介紹 17次下載
- 華為交換機 5次下載
- 交換機基礎配置 0次下載
- 交換機接口配置 0次下載
- 交換機VLAN配置 0次下載
- 交換機STP配置 0次下載
- 交換機路由配置 0次下載
- 交換機GVRP配置 0次下載
- 交換機GMRP配置 0次下載
- 寬帶網交換機箱監控系統
- 反射內存交換機與普通交換機的區別 172次閱讀
- 二層交換機和三層交換機有什么區別 502次閱讀
- 廣域網交換機與局域網交換機的區別 508次閱讀
- 匯聚交換機和核心交換機區別 2766次閱讀
- 到底什么是交換機?交換機接口大揭秘 1182次閱讀
- 二層交換機和三層交換機的區別 1.1w次閱讀
- 交換機的6種配置模式 8646次閱讀
- 光纖交換機和普通交換機的區別 8269次閱讀
- 網管交換機和非網管交換機有什么區別 1.1w次閱讀
- 如何選擇合適交換機 關于接入交換機幾大問題 5473次閱讀
- 工控交換機和工業交換機的區別 2363次閱讀
- 核心交換機與普通交換機的區別 2.7w次閱讀
- 萬兆交換機與千兆交換機的區別 1.2w次閱讀
- 網管型交換機與非網管型交換機有什么區別 4.8w次閱讀
- 網管型交換機比普通交換機有哪些明顯優勢 2723次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多