
一个原型项目,可以在垃圾箱级别的任何地方监控并提供SMS警报。 ! q# P. r* X: c4 P7 c) R2 I ![]() 这个项目中使用的东西 硬件组件 Wilderness Labs(Netduino)Netduino3 WiFi × 1 超声波传感器 - HC-SR04(Generic) × 1 介绍 该项目的想法是使用物联网技术远程监控家庭或社会垃圾箱的垃圾级别。因此,这可以通过及时通知您当地的废物收集机构来避免垃圾箱溢出。 这里为了演示我使用Netduino 3 WiFi开发板和用于硬件构建的超声波传感器以及通过互联网连接ClickSend Cloud SMS服务的超声波传感器的原型项目。因此,这使得能够向任何移动电话号码发送SMS警报,而无需在世界任何地方使用专用SIM卡。 建立开发环境 在开发环境下下载各种软件,并按照安装过程中链接中提到的顺序进行操作。 对于Windows用户 Visual Studio 2015 。 .NET Micro Framework(.NETMF)v4.3.2 - QFE2 SDK .NETMF插件:Visual Studio 2015 Netduino SDK 您必须先在Wilderness Labs开发者网站上注册以下载.NETMF插件和Netduino SDK。对于Mac,请按照现场给出的步骤操作。 从这里开始,我们可以编写第一个测试样本测试代码。按照以下视频中显示的步骤创建第一个应用程序。您可以将Blinky 文件的代码从下面的代码部分复制到program.cs 您还可以按照链接上提到的步骤进行操作,这是创建应用程序的另一种方式:http ://developer.wildernesslabs.co/Netduino/Getting_Started/ 只有你需要记住的事情是将.NET Micro Framework 4.3 设置为目标框架,并且引用必须包含 - > Microsoft.Spot.Hardware,SecretLabs.NETMF.Hardware 和SecretLabs.NETMF.Harware.Netduino ![]() ![]() 必需的设置 否则您将收到如下所示的错误,红色下划线。 ![]() 通过创建控制台应用程序时会发生这种情况。因为默认情况下它不会添加Netduino所需的引用。因此,您必须手动添加。如果您遵循创建Netduino应用程序,那么默认情况下它会将这些文件放在引用中。 我已经展示了两个,因为我们需要按照这个程序进行下一步的解释。特别是如何添加各种需求的参考。 配置Netduino 3 Wifi的WiFi设置 要开始配置,您需要通过访问固件更新程序和配置工具下的相同下载链接来安装NetduinoDeploy 和STM32驱动程序(如果尚未安装)。 下面是Netduino板的不同模式下设备管理器的屏幕截图 ![]() 正常模式 ![]() 没有驱动程序的DFU模式 ![]() 安装了驱动程序的DFU模式 要将Netduino置于DFU模式,您需要按下板上的可用开关然后按下USB电源线保持按钮并在此版本之后。 完成后,启动NetduinoDeploy.WPF.exe并首先将Netduino的固件更新为最新版本。然后根据您的路由器继续添加WiFi设置。 ![]() ![]() 添加WiFi网络设置,对于我的路由器,它是WPA2和128位密钥加密。检查路由器供应商的站点以获取该信息。下面是截图给出的想法 - > ![]() 注意:如果您在执行固件更新或WiFi设置时遇到任何问题,因为我遇到了一些困难,最后通过论坛上的帮助解决了。所以你可以在论坛上发布任何困难或在下面评论 - >http://community.wildernesslabs. ... -to-the-wifi/634/36 接口超声波传感器 在这里,我使用HC-SR04超声波传感器来检测Bin内的填充水平。如图所示进行连接。 ![]() ![]() ![]() ![]() 在此之后创建测试应用程序并从代码部分复制UltrasonicSensorTest 的代码。如果仍然面临下面的问题评论,代码是简单的自我解释和评论。 ![]() ![]() 获取ClickSend Cloud API密钥 访问http://www.clicksend.com/in/ 并注册以在ClickSend Cloud SMS网关服务上创建您的帐户。对于试用服务,您可以获得一些初始余额。 ![]() ![]() 完成后,登录查看仪表板,您将获得使用服务所需的凭据。单击API Credential以复制您的用户名和API密钥。如下图所示 ![]() 仪表板 ![]() 凭据 此服务支持不同的协议(Rest,HTTP,SMTP,SMPP和FTP)。详细文档可在链接http://developers.clicksend.com/docs/上找到。 对于这个项目,我正在使用HTTP / HTTPS协议,其文档可以在链接http://clicksendhttpapiv2.docs.a ... nce/sms/send-an-sms上找到 在HTTP协议文档的上述链接中,您将找到测试方法和试用编号。您可以免费使用这些号码。以下是您可以尝试的一些测试。只需您的浏览器就可以执行这些测试。 使用测试号码,将您的用户名和密钥替换为 http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=+61411111111&message=hello 收到的回复: ![]() 对测试编号的回应 有了实数, http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=+917955555555&message=Hello%20Netduino 收到的回复: ![]() 有真实号码 ![]() 短信截图 Netduino3 WiFi上的HTTP / HTTPS请求测试 在这里,我将展示如何使用Netduino进行HTTP / HTTPS调用,并尝试使用上一节中显示的相同示例,使用Netduino而不是浏览器调用ClickSendAPI。 您可以在Link- http://developer.wildernesslabs.co/Netduino/Input_Output/Network/上获取示例代码。 它显示了Netduino如何连接到网络,然后获取IPAddress并最终向google.com发出简单的HTTP请求 让我们创建HTTP请求应用程序 ![]() 我复制了相同的代码但出现了错误,如下所示。 ![]() 错误指向红色框。另请查看标记的引用部分,因为在这里我们必须添加引用以删除这些错误。 只需右键单击References然后单击addreference,然后选择特定引用并单击OK。我们需要添加两个引用System.Http (与HttpWebRequest,WebRequest和HttpWebResponse相关)和System.IO (与StreamReader相关) ![]() ![]() ![]() ![]() 现在,查看下面的图像,所有错误都已成功删除。 ![]() 编译问题已解决但在运行期间遇到另一个问题后,将代码部署到电路板中,出现以下错误(错误:ff000000)。原因标有琥珀色的盒子。 ![]() 因此,代码中所需的更改是 bool _IsRunning; public bool IsRunning { get { return _IsRunning; } set { _IsRunning = value; } } ![]() 我已经上传了测试代码(httprequesttest代码)并进行了更正,因此请从下面的代码部分下载并试用。只需对注释进行更改,并使用测试编号和实数检查ClickSend API调用的两个条件。 if (goodToGo) { MakeWebRequest("http://google.com"); //MakeWebRequest("http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=+61411111111&message=hello"); //MakeWebRequest("http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=+YOURNUMBERWITHCOUNTRYCODE&message=hello"); } 收到的回复如下所示 ![]() ![]() 最终编码和工作演示 现在让我们开始创建一个最终的应用程序来测试实际的项目构思。创建一个新的SmartBin应用程序,然后从代码部分复制SmartBin最终代码。 ![]() ![]() 我添加了注释以了解应用程序的各种命名空间的需要。另外,不要忘记添加引用System.Http 和System.IO using System; //for nativeeventhandler using System.IO; //for StreamReader methods using System.Net; //for httpwebrequest and ipaddress methods using System.Threading; //for Thread method using Microsoft.SPOT; //for Debug.Print methods using Microsoft.SPOT.Hardware; //for OutPort,InterrupPort,etc using SecretLabs.NETMF.Hardware.Netduino; //for netduino hardware methods e.g Pins using Microsoft.SPOT.Net.NetworkInformation;//for networkinterface and related methods 对于最终代码,我将类App的MakeWebRequest()方法从protected更改为public public void MakeWebRequest(string url) 这样它可以从Program类的Main方法访问,如下所示 app.MakeWebRequest("http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=+61411111111&message=Please%20Empty%20WasteBin"); 代码的工作逻辑如下所示: HC_SR04 mUS = newHC_SR04(Pins.GPIO_PIN_D4, Pins.GPIO_PIN_D5); longinitialLevel; initialLevel =mUS.Ping(); byte cnt = 1; Debug.Print("Empty BinLevel:" + mUS.Ping().ToString() + "mm"); longcurrentLevel; floatfillPercent; while (true) { fillPercent = initialLevel - currentLevel; Debug.Print("Fill percentageof Bin is " + fillPercent.ToString() + "%"); if (fillPercent > 80) { if (cnt == 2) { Debug.Print("More than 80%Full"); Thread.Sleep(100); //replace with your ClickSend API credential and mobile phone number //app.MakeWebRequest("http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=+61411111111&message=Please%20Empty%20WasteBin"); app.MakeWebRequest("http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=YOUNUMBERWITHCOUNTRYCODE&message=Please%20Empty%20WasteBin"); cnt = 0; } } if (fillPercent > 50) { if (cnt == 1) { Debug.Print("More than 50%Full"); Thread.Sleep(100); //replace with your ClickSend API credential and mobile phone number //app.MakeWebRequest("http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=+61411111111&message=WasteBin%20is%20Half%20Filled"); app.MakeWebRequest("http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=YOUNUMBERWITHCOUNTRYCODE&message=WasteBin%20is%20Half%20Filled"); cnt = 2; } } if (fillPercent < 10) { Debug.Print("Emptied!"); cnt = 1; } Thread.Sleep(5000); } 当设备通电时,它连接到网络,然后它首先测量初始空箱水平。之后,它将继续测量当前计算的距离,随着废物水平的增加而减少。使用这些数据填充水平以百分比计算。 一旦填充百分比交叉保证金为50%,则通过SMS发送第一个警报,并在水平超过80%时发送最终警报。清空垃圾箱后,将重复该过程。 打包 您可以尝试一些包装亮点。 ![]() ![]() ![]() ![]() ![]() ![]() 项目的其他可能应用: 测量集装箱油位 测量水箱的水位 测量化学水平 谢谢! 原理图 ![]() 代码 using System; using System.Net; using System.Net.Sockets; using System.Threading; using Microsoft.SPOT; using Microsoft.SPOT.Hardware; using SecretLabs.NETMF.Hardware; using SecretLabs.NETMF.Hardware.Netduino; namespace Blinky { public class Program { public static void Main() { // create an output port (a port that canbe written to) and wire it to the onboard LED OutputPort led = new OutputPort(Pins.ONBOARD_LED, false); // run forever while (true) { led.Write(true); // turn on the LED Thread.Sleep(250); // sleep for 250ms led.Write(false); // turn off the LED Thread.Sleep(250); // sleep for 250ms } } } } 相关代码---
![]() |