你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

SmartBin使用Netduino 3 WiFi

[复制链接]
木木&点点 发布时间:2019-3-8 10:37
一个原型项目,可以在垃圾箱级别的任何地方监控并提供SMS警报。
! q# P. r* X: c4 P7 c) R2 I
1.jpg
这个项目中使用的东西
硬件组件
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
2.1.jpg
2.2.jpg
必需的设置
否则您将收到如下所示的错误,红色下划线。
3.jpg
通过创建控制台应用程序时会发生这种情况。因为默认情况下它不会添加Netduino所需的引用。因此,您必须手动添加。如果您遵循创建Netduino应用程序,那么默认情况下它会将这些文件放在引用中。
我已经展示了两个,因为我们需要按照这个程序进行下一步的解释。特别是如何添加各种需求的参考。
配置Netduino 3 WifiWiFi设置
要开始配置,您需要通过访问固件更新程序和配置工具下的相同下载链接来安装NetduinoDeploy 和STM32驱动程序(如果尚未安装)。
下面是Netduino板的不同模式下设备管理器的屏幕截图
4.1.jpg
正常模式
4.2.jpg
没有驱动程序的DFU模式
4.3.jpg
安装了驱动程序的DFU模式
要将Netduino置于DFU模式,您需要按下板上的可用开关然后按下USB电源线保持按钮并在此版本之后。
完成后,启动NetduinoDeploy.WPF.exe并首先将Netduino的固件更新为最新版本。然后根据您的路由器继续添加WiFi设置。
5.1.jpg
5.2.jpg
添加WiFi网络设置,对于我的路由器,它是WPA2和128位密钥加密。检查路由器供应商的站点以获取该信息。下面是截图给出的想法 - >
6.jpg
注意:如果您在执行固件更新或WiFi设置时遇到任何问题,因为我遇到了一些困难,最后通过论坛上的帮助解决了。所以你可以在论坛上发布任何困难或在下面评论 - >http://community.wildernesslabs. ... -to-the-wifi/634/36
接口超声波传感器
在这里,我使用HC-SR04超声波传感器来检测Bin内的填充水平。如图所示进行连接。
7.png
8.1.jpg
8.2.jpg
8.3.jpg
在此之后创建测试应用程序并从代码部分复制UltrasonicSensorTest 的代码。如果仍然面临下面的问题评论,代码是简单的自我解释和评论。
9.1.jpg
9.2.jpg
获取ClickSend Cloud API密钥
访问http://www.clicksend.com/in/ 并注册以在ClickSend Cloud SMS网关服务上创建您的帐户。对于试用服务,您可以获得一些初始余额。
10.1.jpg
10.2.jpg
完成后,登录查看仪表板,您将获得使用服务所需的凭据。单击API Credential以复制您的用户名和API密钥。如下图所示
11.1.jpg
仪表板
11.2.jpg
凭据
此服务支持不同的协议(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
收到的回复:
12.jpg
对测试编号的回应
有了实数,
http://api-mapper.clicksend.com/http/v2/send.php?method=http&username=YOURUSERNAME&key=YOURAPIKEY&to=+917955555555&message=Hello%20Netduino
收到的回复:
13.jpg
有真实号码
14.png
短信截图
Netduino3 WiFi上的HTTP / HTTPS请求测试
在这里,我将展示如何使用Netduino进行HTTP / HTTPS调用,并尝试使用上一节中显示的相同示例,使用Netduino而不是浏览器调用ClickSendAPI。
它显示了Netduino如何连接到网络,然后获取IPAddress并最终向google.com发出简单的HTTP请求
让我们创建HTTP请求应用程序
15.jpg
我复制了相同的代码但出现了错误,如下所示。
16.png
错误指向红色框。另请查看标记的引用部分,因为在这里我们必须添加引用以删除这些错误。
只需右键单击References然后单击addreference,然后选择特定引用并单击OK。我们需要添加两个引用System.Http (与HttpWebRequest,WebRequest和HttpWebResponse相关)和System.IO (与StreamReader相关)
17.1.jpg
17.2.jpg
17.3.jpg
17.4.jpg
现在,查看下面的图像,所有错误都已成功删除。
18.png
编译问题已解决但在运行期间遇到另一个问题后,将代码部署到电路板中,出现以下错误(错误:ff000000)。原因标有琥珀色的盒子。
19.png
因此,代码中所需的更改是
bool _IsRunning;
public bool IsRunning
{
    get { return _IsRunning; }
    set { _IsRunning = value; }
}
20.png
我已经上传了测试代码(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");
}
收到的回复如下所示
21.1.jpg
21.2.jpg
最终编码和工作演示
现在让我们开始创建一个最终的应用程序来测试实际的项目构思。创建一个新的SmartBin应用程序,然后从代码部分复制SmartBin最终代码。
22.1.jpg
22.2.jpg
我添加了注释以了解应用程序的各种命名空间的需要。另外,不要忘记添加引用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%时发送最终警报。清空垃圾箱后,将重复该过程。
打包
您可以尝试一些包装亮点。
23.1.jpg
23.2.jpg
23.3.jpg
23.4.jpg
23.5.jpg
23.6.jpg
项目的其他可能应用:
测量集装箱油位
测量水箱的水位
测量化学水平
谢谢!
原理图
24.JPG
代码
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
           }
       }
    }
}
相关代码--- SmartBin-with-Netduino-3-WiFi-master.zip (20.83 KB, 下载次数: 0)
收藏 1 评论0 发布时间:2019-3-8 10:37

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版