国外课栈 - 国外电子信息技术视频教程、电子书和博文栈

开始 Particle Argon 和Xenon

 二维码 27
发表时间:2019-01-09 13:38



如何设置Argon和Xenon

项目使用的东西:

硬件部分:

Particle Argon x 1

Particle Xenon x 1

面包板

LED


软件部分:

Particle Build Web IDE


故事

介绍

随着Particle推出了他们的第三代硬件。 Particle Argon,Boron和Xenon是Particle在IoT开发板世界中的最新产品,这次他们添加了网状网络。 这三款新电路板均采用Nordic nRF52840 SoC构建,包括一个ARM Cortex-M4F,1MB闪存和256k RAM。 该芯片支持蓝牙5和NFC。 进一步打破新阵容,Argon增加了Espressif公司的ESP32 Wifi,Boron带有ublox SARA-U260模块和LTE,以及X带有WiFi和蜂窝的Xenon,仅依靠蓝牙,但仍保留网状网络。



在这,我仅仅延时如何使用Argon和Xenon。首先,我们需要设置我们的Argon和Xenon


Particle Argon



Argon是一款功能强大的支持Wi-Fi的开发套件,可作为独立的Wi-Fi端点或支持Wi-Fi网关的Particle网络网络。 它基于Nordic nRF52840,内置电池充电电路,因此可以轻松连接Li-Po并在几分钟内部署您的本地网络。


特点


1.Espressif ESP32-D0WD 2.4Ghz Wi-Fi 协处理器

  • 板载4MB闪存

  • 支持802.11b/g/n

  • 802.11n(2.4GHz),最高150Mbps

2.Nordic 半导体 nRF52840 Soc

  • ARM Cortex-M4F 32位 处理器 64MHz

  • 1MB闪存,256KB内存

  • IEEE 802.15.4-2006:250 Kbps

  • 蓝牙 5:2 Mbps,1Mbps,500Kbps,125Kbps

  • 支持DSP指令,硬件加速浮点单元计算

  • ARM TrustZone CryptoCell-310 图形加密和安全模块

  • 高达+8 dBm TX功率(低至-20 dBm,步长为4 dB)

  • NFC-A标签

3.板载附加4MB SPI闪存

4.20个混合信号GPIO(6 x模拟,8 x PWM),UART,I2C,SPI

5.Micro USB 2.0全速(12 Mbps)

6.集成Li-Po充电和电池连接器

7.JTAG(SWD)连接器

8.RGB状态LED

9.重置和模式按钮

10.板载PCB天线

11.用于外部天线的u.FL连接器

12.符合Adafruit规格的尺寸和引脚

13.FCC,CE和IC认证

14.符合RoHS标准(无铅)


Argon框图

引脚标示

引脚图

引脚说明


1. Li + ==>此引脚内部连接到LiPo电池连接器的正极端子。


2. VUSB ==>此引脚内部连接到USB(+ ve)电源。


3. 3V3 ==>该引脚是板载3.3V稳压器的输出。


4. GND ==>系统接地引脚。


5. EN ==>器件使能引脚在内部上拉。要禁用该器件,请将此引脚连接到GND。


6. RST ==>低电平有效系统复位输入。该引脚内部上拉。


7. MD ==>此引脚内部连接到MODE按钮。 MODE功能为低电平有效。


8. RX ==>主要用作UART RX,但也可用作数字GPIO。


9. TX ==>主要用作UART TX,但也可用作数字GPIO。


10. SDA ==>主要用作I2C的数据引脚,但也可用作数字GPIO。


11. SCL ==>主要用作I2C的时钟引脚,但也可用作数字GPIO。


12. MO,MI,SCK ==>这些是SPI接口引脚,但也可以用作数字GPIO。


13. D2-D8 ==>这些是通用GPIO引脚。 D2-D8具有PWM功能。


14. A0-A5 ==>这些是模拟输入引脚,也可以作为标准数字GPIO。 A0-A5具有PWM功能。


如何设置Argon

有许多方法可以设置Particle设备。 设置Argon最简单的方法是使用手机(Andriod或iOS)和互联网连接。 在这里,我正在使用Andriod手机。


1.使用计算机的USB插入Argon,确保蓝色指示灯闪烁(聆听模式)。 当Argon处于聆听模式时,它正在等待您配置网状网络。 如果没有闪烁蓝色,要将Argon置于聆听模式,按住模式按钮三秒钟,直到RGB LED开始呈蓝色闪烁。

                                       聆听模式

2.在手机中打开Particle应用。 如果您没有从Play商店下载它。

         


3.登录您的Particle账户。 登录后,在“您的设备”窗口中,您将看到“+”按钮以添加新设备。 按“+”按钮,您将看到4个选项,选择设置网格设备。


4.然后它会要求打开蓝牙并选择我们要设置的设备(我们正在设置Argon)。 选择Argon

5.接下来,它将询问您是否已将天线连接到Argon。 如果已连接,请勾选方框并按下一步。

6.然后,它会要求您扫描设备上的条形码(Argon)。 之后,它将开始与您的设备配对,配对后会弹出如下所示的窗口。

7.之后,它将开始更新固件。 更新完,它会问你是否想在网状网络中使用它(我选择了是)。

8.然后,它会要求您连接WiFi。 因为我正面临着与安全WiFi网络连接的一些问题(将在即将推出的固件中修复)。 所以我创建了一个没有安全性的网络

9.连接后,它会要求您提供设备名称。

10.接下来,它会要求您提供网络名称并设置密码。 设置密码后,它将创建一个网络。

设置网关后,您将看到如下所示的窗口

您可以设置更多设备或选择我已完成。 我们的Argon现已准备就绪。 您可以看到设备的名称。

我们已成功设置您的设备。

11.现在转到Particle IDE

登录到您的帐户。 现在,我们将编程我们的Particle Argon。 首先单击星号选择您的设备(Argon)。 您可以看到我已经选择了Argon,如下所示

我们正在使用LED测试示例。 转到代码部分,您将看到示例应用。

选择闪烁LED,使用此应用程序单击使用此示例。

上传代码,请选择一个板,然后单击闪存。

连接

Particle LED GND ==> LED(-ve)

D2 ==>LED(+ ve)

一旦闪过,你会看到D2和D7指示灯将开始闪烁。


Particle Xenon

Xenon是一种低成本的网状开发板,可以作为Particle网络网络中的端点或转发器。 Xenon仅为网状网络,旨在用作物联网网络的端点。 它基于Nordic nRF52840,内置电池充电电路,因此可以轻松连接Li-Po并在几分钟内部署您的本地网络。


框图


引脚标示

引脚图

引脚描述


1. Li + ==>此引脚内部连接到LiPo电池连接器的正极端子。


2. VUSB ==>此引脚内部连接到USB(+ ve)电源。


3. 3V3 ==>该引脚是板载3.3V稳压器的输出。


4. GND ==>系统接地引脚。


5. EN ==>器件使能引脚在内部上拉。要禁用该器件,请将此引脚连接到GND。


6. RST ==>低电平有效系统复位输入。该引脚内部上拉。


7. MD ==>此引脚内部连接到MODE按钮。 MODE功能为低电平有效。


8. RX ==>主要用作UART RX,但也可用作数字GPIO。


9. TX ==>主要用作UART TX,但也可用作数字GPIO。


10. SDA ==>主要用作I2C的数据引脚,但也可用作数字GPIO。


11. SCL ==>主要用作I2C的时钟引脚,但也可用作数字GPIO。


12. MO,MI,SCK ==>这些是SPI接口引脚,但也可以用作数字GPIO。


13. D2-D8 ==>这些是通用GPIO引脚。 D2-D8具有PWM功能。


14. A0-A5 ==>这些是模拟输入引脚,也可以作为标准数字GPIO。 A0-A5具有PWM功能。


15. D4 ==> TX for Serial2。如果不使用Serial2,可以用作GPIO。


16. D5 ==> RX for Serial2。如果不使用Serial2,可以用作GPIO。


17. D6 ==> Serial2的CTS。如果不使用Serial2,可以用作GPIO。


18. D8 ==> Serial2的RTS。如果不使用Serial2,可以用作GPIO。


如何设置Particle Xenon(将Xenon添加到现有Particle网格网络)

1.首先,像我们为Xenon那样设置Xenon。 在“您的设备”窗口中,您将看到“+”按钮以添加新设备。 按“+”按钮,您将看到4个选项,选择设置网格设备。

选择Xenon

2.之后它会要求你扫描条形码。 扫描代码,它将开始配对。

3.配对完成后,它将开始更新固件。 更新后,它将搜索网状网络(设置Argon时为网状网络指定的名称)。

4.选择网状网络(在Xenon中设置网状网络时给出的名称)之后。 将Xenon添加到网状网络,它将要求您按住模式按钮使其处于侦听模式。

5.一旦你的Argon处于聆听模式,请按下一步。 然后,它会要求你扫描Argon上的条形码。一旦它与Argon配对,它将要求网状网络密码。

6.之后,它开始将Xenon加入网状网络。

7.加入网络后,为设备命名。

我们完成了Xenon的设置。

8.现在,打开Particle IDE。 选择Xenon并闪烁同样闪烁的示例。


如何从云端控制LED

在这里,我们将制作两个程序,一个是在Particle IDE中,另一个是用HTML从web控制LED。 在这里,我使用Particle Argon。为了控制云中的LED,我们必须使用particle.function()。Particle框架为我们自动创建了基于REST的API或通过互联网调用的结构化方式。 要访问该函数,我们按如下方式发出HTTP POST请求

/v1/devices/{DEVICE_ID}/{FUNCTION}


Particle.function()可以执行云端API请求。 最多可注册15个云函数,每个函数名称最多可包含12个字符。 仅在函数名称中使用字母,数字,下划线和短划线。


语法

bool success = Particle.function("functionKey", functionName);


//云函数必须返回整数,取一个字符串

int funcName(String extra)

{  

  return 0;

}


为了注册云功能,用户提供了函数,它是字符串名,用于构造POST请求和函数名,它是在应用程序中所调用函数的实际名称。 云函数必须返回一个整数; -1通常用于失败的函数调用。


Particle Web IDE中使用的程序。

//Program for controlling LED from the cloud
int led1 = D2;
voidsetup()
{
//Pin configuration
  pinMode(led1, OUTPUT);
 
 
// Declare a Particle.function so that we can turn the LED on and off from the cloud.
  Particle.function("cloud_led",ledToggle);
// When we ask the cloud for the function "cloud_led", it will employ the function ledToggle() from this app.
// Make sure both LEDs are off when we start
  digitalWrite(led1, LOW);
 
}
//Since we're waiting for input through the cloud this time,
//we don't actually need to put anything in the loop
voidloop()
{
  // Nothing to do here
}
// We're going to have a super cool function now that gets called when a matching API request is sent
// This is the ledToggle function we registered to the "cloud_led" Particle.function earlier.
int ledToggle(String command) {
 
  /* Particle.functions always take a string as an argument and return an integer.Since we can pass a string, it means that we can give the program commands on how the function should be used. In this case, telling the function "on" will turn the LED on and telling it "off" will turn the LED off.Then, the function returns a value to us to let us know what happened. In this case, it will return 1 for the LEDs turning on, 0 for the LEDs turning off,and -1 if we received a totally bogus command that didn't do anything to the LEDs.
   */
 
   if (command=="on") {
       digitalWrite(led1,HIGH);
       
       return1;
   }
   elseif (command=="off") {
       digitalWrite(led1,LOW);
       
       return0;
   }
   else {
       return-1;
   }
}


现在,是时候检查我们的新功能了。 最好的方法是从控制台。


它看起来如下所示

转到控制台中的设备选项卡,单击您刚刷新代码的设备行(Argon)。

您将看到如下所示的选项卡

在屏幕的右侧是一个功能框。 应该有一个标记为“cloud_led”。

如果您键入“on”(不带引号“)并单击call按钮,LED将亮起。


如果您输入“off”并单击call按钮,LED将熄灭。

如果你的LED使用控制台打开和关闭来检查。在转向HTML部分之前,我们需要做的事情。

1.设备ID ==>在设备部分中查找

2.访问令牌==>在设置部分中查找。

HTML


由于我们现在有设备ID和访问令牌,我们可以继续使用html文件。打开记事本,在其中编写代码并将其另存为an.html文件。 使用实际访问令牌将您的设备ID替换为您的实际设备ID和访问令牌。

Program
<!DOCTYPE>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<img src="index.png" style="max-width:100%;height:auto;">
<br>
<center>
<br>
<br>
<br>
<form action="https://api.particle.io/v1/devices/device_id/cloud_led?access_token=token" method="POST">
   Control LED from the cloud<br>
   <br>
   <input type="radio" name="arg" value="on">Turn the LED on.
   <br>
   <input type="radio" name="arg" value="off">Turn the LED off.
   <br>
   <br>
   <input type="submit" value="Submit">
</form>
</center>
</body>
</html>



你要做的是使用浏览器打开html文件。 您将看到如下所示的页面

经过一番修改。我做了简单的登录页面,成功登录后会重定向到主控页面。


program for login page
<html>
<head>
<title>Login Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body bgcolor = #40E0D0>
<i class="fa fa-mobile" style="font-size:48px;color:red"></i>
<i class="fa fa-wifi" style="font-size:48px;color:red"></i>
<i class="material-icons" style="font-size:48px;color:red">bluetooth_connected</i>
<i class="fa fa-cloud" style="font-size:48px;color:red"></i>
<br>
<form name="loginForm" method="post" action="Particle.html">
<table width="20%" bgcolor="0099CC" align="center">
<tr>
<td colspan=2><center><font size=4><b>Login Page</b></font></center></td>
</tr>
<tr>
<td>Username:</td>
<td><input type="text" size=25 name="userid"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="Password" size=25 name="pwd"></td>
</tr>
<tr>
<td ><input type="Reset"></td>
<td><input type="submit" onclick="return check(this.form)" value="Login"></td>
</tr>
</table>
</form>
<script language="javascript">
functioncheck(form)
{
if(form.userid.value == "default" && form.pwd.value == "default")
{
returntrue;
}
else
{
alert("Error, Enter valid Username or Password")
returnfalse;
}
}
</script>
</body>
</html>



代码


闪烁LED:使用在Arduino中

/ First, we're going to make some variables.


int led1 = D2;
int led2 = D7;

// Having declared these variables, let's move on to the setup function.
// The setup function is a standard part of any microcontroller program.
// It runs only once when the device boots up or is reset.

void setup(){

  // We are going to tell our device that D0 and D7 (which we named led1 and led2 respectively) are going to be output
  // (That means that we will be sending voltage to them, rather than monitoring voltage that comes from them)

  // It's important you do this here, inside the setup() function rather than outside it or in the loop function.

  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);

}

// Next we have the loop function, the other essential part of a microcontroller program.
// This routine gets repeated over and over, as quickly as possible and as many times as possible, after the setup function is called.
// Note: Code that blocks for too long (like more than 5 seconds), can make weird things happen (like dropping the network connection).   The built-in delay function shown below safely interleaves required background activity, so arbitrarily long delays can safely be done if you need them.

void loop() {
  // To blink the LED, first we'll turn it on...
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);

  // We'll leave it on for 1 second...
  delay(1000);

  // Then we'll turn it off...
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);

  // Wait 1 second...
  delay(1000);

  // And repeat!
}




登录页面 HTML:

<html>
<head>
<title>Login Page</title>
<metaname="viewport"content="width=device-width, initial-scale=1.0">
<linkrel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<linkhref="https://fonts.googleapis.com/icon?family=Material+Icons"rel="stylesheet">
</head>

<bodybgcolor = #40E0D0>


<iclass="fa fa-mobile"style="font-size:48px;color:red"></i>
<iclass="fa fa-wifi"style="font-size:48px;color:red"></i>
<iclass="material-icons"style="font-size:48px;color:red">bluetooth_connected</i>
<iclass="fa fa-cloud"style="font-size:48px;color:red"></i>
<br>


<formname="loginForm"method="post"action="Particle.html">
<tablewidth="20%"bgcolor="0099CC"align="center">

<tr>
<tdcolspan=2><center><fontsize=4><b>Login Page</b></font></center></td>
</tr>

<tr>
<td>Username:</td>
<td><inputtype="text"size=25name="userid"></td>
</tr>

<tr>
<td>Password:</td>
<td><inputtype="Password"size=25name="pwd"></td>
</tr>


<tr>
<td ><inputtype="Reset"></td>
<td><inputtype="submit"onclick="return check(this.form)"value="Login"></td>
</tr>

</table>
</form>
<scriptlanguage="javascript">
functioncheck(form)
{

if(form.userid.value == "default" && form.pwd.value == "default")
{
returntrue;

}
else
{
alert("Error, Enter valid Username or Password")
returnfalse;
}
}
</script>

</body>
</html>




LED控制页面HTML:

<!DOCTYPE>
<html>
<head>
<metaname="viewport"content="width=device-width, initial-scale=1.0">
</head>
<body>
<imgsrc="index.png"style="max-width:100%;height:auto;">
<br>
<center>
  <br>
  <br>
  <br>
  <formaction="https://api.particle.io/v1/devices/e00fce68857de2ce3bcda922/cloud_led?access_token=6c1e60f7bc502028dee2df04e148b351d7f74f2f"method="POST">
    Control LED from the cloud<br>
    <br>
    <inputtype="radio"name="arg"value="on">Turn the LED on.
    <br>
    <inputtype="radio"name="arg"value="off">Turn the LED off.
    <br>
    <br>
    <inputtype="submit"value="Submit">
  </form>
  </center>
  </body>
</html>


文章分类: 电子创客Particle
会员登录
登录
我的资料
留言
回到顶部