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