电子发烧友App

硬声App

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

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

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用Windows Phone和Intel Edison实现家庭自动化

使用Windows Phone和Intel Edison实现家庭自动化

2022-10-20 | zip | 0.07 MB | 次下载 | 免费

资料介绍

描述

介绍

在最初的项目中,我使用了一个 LED,但当然你可以连接一个 5V 继电器来完成家庭自动化的工作。

请注意,这是我写的原始文章的一部分,并发布在 

本文将指导您完成将 Edison 与 Windows Azure 连接的过程,以及如何做一些很酷的事情,例如控制它。此示例将仅打开和关闭连接到 Edison 板上与 Arduino 分线板配对的任何数字引脚的 LED。让我们看看它是如何工作的。Azure 移动服务将充当 Edison 和控制器之间的桥梁(此处使用 Windows 手机应用程序)。Edison 将从移动服务表中读取属性值。Windows 手机应用程序将更新表中的值,因此我们将根据值对 Edison 代码进行更改。

先决条件

假定读者具有 Windows 手机应用程序开发的基本知识,并且可以将应用程序与 Azure 移动服务连接起来。如果您不熟悉为您的应用创建后端,请浏览此 链接。 

首先,让我们创建一个 Azure 移动服务。 有很多关于创建 Azure 移动服务的文章。按照此 链接 创建一个包含单个表的移动服务,并将其命名为 controltable 该表将包含一个名为“ status ”的列和另一个名为“ name ”的列。status列的值  将是 1 或 0,而 name 的值将设置为 Edison/Arduino。

现在我们将开发一个将添加/修改属性值的 Windows 手机应用程序。下图为我们展示了 Azure sql 表的截图。请注意,“设备”的属性值无关紧要。如果您愿意,您甚至可以排除此属性。

下一节将讨论 Windows 手机应用程序的开发。

Windows 手机应用程序

我们的应用程序将仅包含两个按钮:一个 打开 按钮和一个 关闭 按钮。该应用程序的屏幕截图如下所示。

pYYBAGNQx4uAQL4XAABAAu7rjao346.png
开发的移动应用程序截图
 

您可以忽略注销按钮,实际上,我正在尝试添加一些功能。现在这些按钮会是什么?这将更新“状态” 属性的值。当我们按下按钮时,“状态” 的值为1,否则为 0。 

不过有一点问题。如果什么都没有创建,要更新什么?为此,我们将部署应用程序两次。第一次,我们将创建表并分配一些默认值。下次我们将只更新以前更新的值。

现在,我们的应用程序已准备就绪。测试应用程序并检查“状态”的值是否正在更新。一旦它工作,然后你去。该应用程序已准备就绪。下一部分将集中讨论爱迪生代码。

爱迪生密码

让我们进入爱迪生。在开始为您的 Edison 编写代码之前,请按照 此处提到的初始步骤 配置您的 Edison。连接 Edison 后,记下您的通讯端口号。然后打开您的 Arduino IDE 并从板上选择 Intel Edison。如果您没有找到 Intel Edison 选项,则需要从“ Boards Manager” 选项下载必要的文件。

poYBAGNQx42AOqy8AABzJvpuGWM050.png
董事会经理
 

打开 Arduino IDE 后,前面会提到两个函数:Void setup() 和 void loop()。爱迪生有一个内置的 Wi-Fi我们将使用 Wi-Fi 将其连接到 Internet。所以我们的第一个行动是包含一个用于 Wi-Fi 的库。转到 Sketch ,包括库,然后 是 Wi-Fi 之后,让我们添加此代码以将其连接到 Wi-Fi。 

#include   
#include   
#include   
  
char ssid[] = "avirup171"//  your network SSID (name)   
char pass[] = "avirupbasu";    // your net ork password (use for WPA, or use as key for WEP)  
int keyIndex = 0;            // your network key Index number (needed only for WEP)  
  
void setup()  
{  
  pinMode(13,OUTPUT);  
  digitalWrite(13,HIGH);  
  Serial.begin(115200);  
  while (!Serial) {  
    ; // wait for serial port to connect. Needed for Leonardo only  
  }  
    
  // check for the presence of the shield:  
  if (WiFi.status() == WL_NO_SHIELD) {  
    Serial.println("WiFi shield not present");   
    // don't continue:  
    while(true);  
  }   
  
  String fv = WiFi.firmwareVersion();  
  if( fv != "1.1.0" )  
    Serial.println("Please upgrade the firmware");  
    
  // attempt to connect to Wifi network:  
  while (status != WL_CONNECTED) {   
    Serial.print("Attempting to connect to SSID: ");  
    Serial.println(ssid);  
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:    
    status = WiFi.begin(ssid, pass);  
    
  }  
}   

上面的代码负责通过 Wi-Fi 将 Edison 连接到互联网。此外,我们已将 PIN 13 设置为输出模式,当前状态为关闭。我们将使用 IDE 的串行监视器来监视该过程。现在,让我们转到 void loop()。从 Azure 检索数据是通过 http get 方法完成的。

void loop()
{
  send_request();  
  wait_response();  
  read_response();  
  end_request();  
  delay(100);  
}  

这些函数将从 Azure 表中检索数据。但是在深入研究这些方法之前,我们需要添加一些全局变量来将我们的 Edison 链接到 Azure 服务。添加这些全局变量:

const char* server= "server name URL";  //service URL  
const char* table_name= "Table name"; //Table name  
const charams_key="Your application key";  
char buffer[150];

应用程序密钥可以在 Azure 门户的管理密钥按钮中找到。现在,我们将为 void loop() 中的方法编写代码。

我们执行了一个 HTTP 请求并调用了 GET,我们之前已经指出了表的名称、服务器的名称和代码键;这允许正确检索数据。然后我们指定需要以什么格式检索数据并将其指定为 JSON。让我们为 wait_response() 编写代码。

然后我们需要读取检索到的数据。由于它是 JSON 格式,我们需要解析 JSON 字符串以获得我们想要的值。下面是示例字符串的示例。

{"id":"2492D996-C471-48F0-B3C9-F33E3B37477F","status":"0","name":"arduino"}

存在一个非常高效的库,称为 ArduinoJson。这将完成大部分解析。但是检索到的 JSON 字符串包含在 '[' 和 ']' 中。必须删除这些才能使库正常工作。因此,首先您需要在代码中包含该库并添加以下全局变量并添加:

#include     
   
#define RESPONSE_JSON_DATA_LINENNO 10    
    
int charIndex=0;    
StaticJsonBuffer<200> jsonbuffer;   

然后在您的read_response() 方法 中编写以下代码 : 

void read_response() 
{  
  boolean bodyStarted;  
  int jsonStringLength;  
  int jsonBufferCntr=0;  
  int numline=RESPONSE_JSON_DATA_LINENNO;  
  //Ignore the response except for the 10th line  
  while (client.available())   
  {  
    //Serial.println("Reading:");  
    char c = client.read();    
    if (c == '\n')  
    {  
      numline -=1;  
    }  
    else   
    {  
      if (numline == 0 && (c!='[')&& (c!=']') )  
      {  
        buffer[jsonBufferCntr++] = c;   
        buffer[jsonBufferCntr] = '\0';   
      }  
    }  
  }  
  Serial.println("Received:");  
  Serial.println(buffer);  
  Serial.println("");  
  parse();  
}  

上面的代码将读取响应,解析方法负责解码字符串。parse() 方法如下所示。在 parse() 方法本身中,我们将更改 PIN8 的状态。

void parse()  
{  
  StaticJsonBuffer<150> jsonbuffer;  
  JsonObject& root = jsonbuffer.parseObject(buffer);  
  if(!root.success())  
  {  
    Serial.println("PARSING FAILED!!!");  
    return;  
  }  
  int f= root["status"];  
  Serial.println("Decoded: ");  
  Serial.println(f);  
  if(f==0)  
    digitalWrite(8,LOW);  
  else  
    digitalWrite(8,HIGH);  

这里,在上面的代码中,f存储了status的属性值。然后,我们检查 f 的值并最终将 PIN 设置为 HIGH 或 LOW。

有关 ArduinoJson 库的详细文档,请访问此链接但是,这个库有一点问题。稍后将讨论。现在,我们将编写剩余方法的代码。  

现在,您将看到,当您编译代码时,您很可能会遇到一些错误。这些错误需要被删除。在进一步移动之前,请查看此问题文件 WString.h 遗漏了一些代码行。区别可以看这里您需要更新位于此处的文件。C:\Users\Username\AppData\Roaming\Arduino15\packages\Intel\hardware\i686\1.6.2+1.0\cores\arduino\WString.h  

更新后您的错误将得到解决。编译代码后,将其刻录到您的 Edison 中,然后您就完成了。当代码在您的 Edison 中烧毁时,取一个 LED,并将 LED 的较长腿连接到 PIN13,将较短的腿连接到 Gnd。较长的腿可以添加一个可选的 233 欧姆电阻器因此,我们通过 Windows Azure 控制的 Windows Phone 控制 Edison 已经准备就绪。 

下面附有一段视频,显示了它的功能,但 LED 连接到引脚 13。

 

 


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

评论

查看更多

下载排行

本周

  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次下载  |  免费