<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://mobinets.cn/site/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yangxuan</id>
	<title>MobiNetS - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://mobinets.cn/site/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yangxuan"/>
	<link rel="alternate" type="text/html" href="http://mobinets.cn/site/Special:Contributions/Yangxuan"/>
	<updated>2026-04-15T07:03:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.0</generator>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1013</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1013"/>
		<updated>2019-09-26T08:46:58Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Change lora parameters online */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，打开IDE --&amp;gt; Tools --&amp;gt; 开发板 --&amp;gt; 选择Arduino/Genuino UNO（因为我们使用的是UNO型号的板子），然后：Tools --&amp;gt; 端口(选择开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(13); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(7);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;No reply, is LoRa server running?&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
当我们需要修改lora节点的通信参数，但是却无法手动去更改的时候（比如节点已经布置到各个区域，不可能再一个一个去现场修改），我们就需要在网关处发送命令，让节点收到命令后自己修改掉参数。&lt;br /&gt;
要实现这样的功能，主要需要两点：&lt;br /&gt;
*'''arduino板子的软重置'''。我们修改了参数，需要重启一下板子，以新的参数进行通信。这里arduino为我们提供了一个函数：'''resetFunc().''' 当程序执行到这里的时候，板子会重新启动&lt;br /&gt;
*'''一块掉电后仍能保存数据的区域'''。光是能重启，那么板子还是原来的参数，我们要修改参数，通过网关发射参数过去后，节点收到参数，需要保存在一个区域，掉电了后，这里的数据还在。所以重启后读这里面的数据，就能读到新的参数。这块掉电保存的区域，在Arduino里叫做'''EEPROM''',我们使用的UNO型号的Arduino开发板，EEPROM的大小为 1KB，但是我们就放几个参数是完全够用的。&lt;br /&gt;
*下面例程代码：&lt;br /&gt;
**'''Client'''&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;EEPROM.h&amp;gt;  //需要用到EEPROM&lt;br /&gt;
&lt;br /&gt;
 void(*resetFunc)(void) = 0;  //将函数入口设为0，&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 int TxPower;&lt;br /&gt;
 int SpreadingFactor;&lt;br /&gt;
 int CodingRate4;&lt;br /&gt;
 const unsigned int Buffer_len = 15;//接收要修改的参数的长度：&amp;quot;Reset,传输功率,扩频因子,码率,&amp;quot; 。网关按照这样的格式发命令给节点&lt;br /&gt;
 struct&lt;br /&gt;
 {&lt;br /&gt;
  char Buffer[Buffer_len];&lt;br /&gt;
  bool isGetCommand;   //是否获取到command数据&lt;br /&gt;
  bool isParseData; //是否解析完成&lt;br /&gt;
  char TxPower[3];    //发送功率 12-20&lt;br /&gt;
  char SpreadingFactor[3];   //扩频因子 7-12&lt;br /&gt;
  char CodingRate4[2]; //码率5-8&lt;br /&gt;
 } Command;  &lt;br /&gt;
&lt;br /&gt;
 void setup()  //初始化内容&lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);      //定义波特率9600&lt;br /&gt;
  Serial.println(&amp;quot;Wating...&amp;quot;);&lt;br /&gt;
  Command.isGetCommand = false;&lt;br /&gt;
  Command.isParseData = false;&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  TxPower = EEPROM.read(0); //先读取传输功率，来判断是否写入过参数&lt;br /&gt;
  if (TxPower == 0||TxPower == 255) //如果还没有写入，设置默认的通信参数&lt;br /&gt;
  {&lt;br /&gt;
    TxPower = 20;  //初始化传输功率为13&lt;br /&gt;
    SpreadingFactor = 12;&lt;br /&gt;
    CodingRate4 = 5;&lt;br /&gt;
    }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    SpreadingFactor = EEPROM.read(1);&lt;br /&gt;
    CodingRate4 = EEPROM.read(2);&lt;br /&gt;
    }&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(TxPower);&lt;br /&gt;
  Serial.println(TxPower); //检查一下传输功率&lt;br /&gt;
  rf95.setSpreadingFactor(SpreadingFactor);&lt;br /&gt;
  Serial.println(SpreadingFactor);//检查一下扩频因子&lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
  Serial.println(CodingRate4);&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
 void loop()   &lt;br /&gt;
 {&lt;br /&gt;
  Send_Message(); //发送数据&lt;br /&gt;
  Command_Get();  //接收命令 &lt;br /&gt;
  Command_Parse();//解析数据&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Send_Message()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to lora Server&amp;quot;);&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello,this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data,sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent(); &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Command_Get()&lt;br /&gt;
 {&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      if(buf[0] == 'R')  //Reset&lt;br /&gt;
      {&lt;br /&gt;
        memcpy(Command.Buffer, buf, Buffer_len);//将lora传过来的数据拷贝到结构体buffer里面，15位&lt;br /&gt;
        Command.isGetCommand = true; //如果收到Reset命令，就表示得到了数据        &lt;br /&gt;
        }    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
      Serial.println(&amp;quot;No message&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Command_Parse()&lt;br /&gt;
 {&lt;br /&gt;
  char *subString;&lt;br /&gt;
  char *subStringNext;&lt;br /&gt;
  if (Command.isGetCommand)&lt;br /&gt;
  {&lt;br /&gt;
    Command.isGetCommand = false;&lt;br /&gt;
    Serial.println(&amp;quot;**************&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    for (int i = 0 ; i &amp;lt;= 3 ; i++) //将命令切分，依次放入对应的数组中&lt;br /&gt;
    {&lt;br /&gt;
      if (i == 0)&lt;br /&gt;
      {&lt;br /&gt;
        if ((subString = strstr(Command.Buffer, &amp;quot;,&amp;quot;)) == NULL)&lt;br /&gt;
          Serial.println(&amp;quot;error1&amp;quot;);  //解析错误&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        subString++;&lt;br /&gt;
        if ((subStringNext = strstr(subString, &amp;quot;,&amp;quot;)) != NULL)&lt;br /&gt;
        {&lt;br /&gt;
          switch(i)&lt;br /&gt;
          {&lt;br /&gt;
            case 1:memset(Command.TxPower,'\0',3);memcpy(Command.TxPower, subString, subStringNext - subString);break; //获取传输功率&lt;br /&gt;
            case 2:memset(Command.SpreadingFactor,'\0',3);memcpy(Command.SpreadingFactor, subString, subStringNext - subString);break; //获取扩频因子&lt;br /&gt;
            case 3:memset(Command.CodingRate4,'\0',2);memcpy(Command.CodingRate4, subString, subStringNext - subString);break;  //获取码率&lt;br /&gt;
            default:break;&lt;br /&gt;
          }&lt;br /&gt;
          subString = subStringNext;&lt;br /&gt;
          Command.isParseData = true;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
          Serial.println(&amp;quot;error2&amp;quot;);  //解析错误&lt;br /&gt;
          Command.isParseData = false;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }//for &lt;br /&gt;
  }//if (Command.isGetCommand) &lt;br /&gt;
  if(Command.isParseData) //如果解析完成，就执行更新函数&lt;br /&gt;
    {&lt;br /&gt;
      Command.isParseData = false; //解析完成，标志位置位假，并且重启&lt;br /&gt;
      reset_f(); //解析完成，写入参数并重启&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void reset_f()&lt;br /&gt;
 {&lt;br /&gt;
  EEPROM.update(0,atoi(Command.TxPower)); //将TxPower更新到第一个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  EEPROM.update(1,atoi(Command.SpreadingFactor)); //将SpreadingFactor更新到第二个位置&lt;br /&gt;
  delay(300); &lt;br /&gt;
  EEPROM.update(2,atoi(Command.CodingRate4)); //将CodingRate4更新到第三个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  resetFunc(); //将修改的参数写入了EEPROM，然后重置。&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
**'''Server'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 bool send_flag;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 { &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  send_flag = false;//初始设置为0，如果要发送修改参数，就将flag设置为1&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(20);&lt;br /&gt;
  rf95.setSpreadingFactor(8);&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  { &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      Serial.print(&amp;quot;got request,&amp;quot;);&lt;br /&gt;
      Serial.print((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI,&amp;quot;);&lt;br /&gt;
      Serial.print(rf95.lastRssi(), DEC); &lt;br /&gt;
      Serial.print(&amp;quot;,&amp;quot;);&lt;br /&gt;
      Serial.print(&amp;quot;SNR,&amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastSNR(), DEC);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if(send_flag == true)&lt;br /&gt;
      {&lt;br /&gt;
        send_flag = false;//如果手动修改了flag为1，则说明要发送命令了&lt;br /&gt;
        uint8_t data[] = &amp;quot;Reset,16,8,6,&amp;quot;; //要发送的参数&lt;br /&gt;
        rf95.send(data, sizeof(data));&lt;br /&gt;
        rf95.waitPacketSent();&lt;br /&gt;
        Serial.println(&amp;quot;Sent a commamd&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1012</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1012"/>
		<updated>2019-09-26T08:40:36Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Change lora parameters online */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，打开IDE --&amp;gt; Tools --&amp;gt; 开发板 --&amp;gt; 选择Arduino/Genuino UNO（因为我们使用的是UNO型号的板子），然后：Tools --&amp;gt; 端口(选择开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(13); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(7);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;No reply, is LoRa server running?&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
当我们需要修改lora节点的通信参数，但是却无法手动去更改的时候（比如节点已经布置到各个区域，不可能再一个一个去现场修改），我们就需要在网关处发送命令，让节点收到命令后自己修改掉参数。&lt;br /&gt;
要实现这样的功能，主要需要两点：&lt;br /&gt;
*'''arduino板子的软重置'''。我们修改了参数，需要重启一下板子，以新的参数进行通信。这里arduino为我们提供了一个函数：'''resetFunc().''' 当程序执行到这里的时候，板子会重新启动&lt;br /&gt;
*'''一块掉电后仍能保存数据的区域'''。光是能重启，那么板子还是原来的参数，我们要修改参数，通过网关发射参数过去后，节点收到参数，需要保存在一个区域，掉电了后，这里的数据还在。所以重启后读这里面的数据，就能读到新的参数。这块掉电保存的区域，在Arduino里叫做'''EEPROM''',我们使用的UNO型号的Arduino开发板，EEPROM的大小为 1KB，但是我们就放几个参数是完全够用的。&lt;br /&gt;
*下面例程代码：&lt;br /&gt;
**'''Client'''&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;EEPROM.h&amp;gt;  //需要用到EEPROM&lt;br /&gt;
&lt;br /&gt;
 void(*resetFunc)(void) = 0;  //将函数入口设为0，&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 int TxPower;&lt;br /&gt;
 int SpreadingFactor;&lt;br /&gt;
 int CodingRate4;&lt;br /&gt;
 const unsigned int Buffer_len = 15;//接收要修改的参数的长度：&amp;quot;Reset,传输功率,扩频因子,码率,&amp;quot; 。网关按照这样的格式发命令给节点&lt;br /&gt;
 struct&lt;br /&gt;
 {&lt;br /&gt;
  char Buffer[Buffer_len];&lt;br /&gt;
  bool isGetCommand;   //是否获取到command数据&lt;br /&gt;
  bool isParseData; //是否解析完成&lt;br /&gt;
  char TxPower[3];    //发送功率 12-20&lt;br /&gt;
  char SpreadingFactor[3];   //扩频因子 7-12&lt;br /&gt;
  char CodingRate4[2]; //码率5-8&lt;br /&gt;
 } Command;  &lt;br /&gt;
&lt;br /&gt;
 void setup()  //初始化内容&lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);      //定义波特率9600&lt;br /&gt;
  Serial.println(&amp;quot;Wating...&amp;quot;);&lt;br /&gt;
  Command.isGetCommand = false;&lt;br /&gt;
  Command.isParseData = false;&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  TxPower = EEPROM.read(0); //先读取传输功率，来判断是否写入过参数&lt;br /&gt;
  if (TxPower == 0||TxPower == 255) //如果还没有写入，设置默认的通信参数&lt;br /&gt;
  {&lt;br /&gt;
    TxPower = 20;  //初始化传输功率为13&lt;br /&gt;
    SpreadingFactor = 12;&lt;br /&gt;
    CodingRate4 = 5;&lt;br /&gt;
    }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    SpreadingFactor = EEPROM.read(1);&lt;br /&gt;
    CodingRate4 = EEPROM.read(2);&lt;br /&gt;
    }&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(TxPower);&lt;br /&gt;
  Serial.println(TxPower); //检查一下传输功率&lt;br /&gt;
  rf95.setSpreadingFactor(SpreadingFactor);&lt;br /&gt;
  Serial.println(SpreadingFactor);//检查一下扩频因子&lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
  Serial.println(CodingRate4);&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
 void loop()   &lt;br /&gt;
 {&lt;br /&gt;
  Send_Message(); //发送数据&lt;br /&gt;
  Command_Get();  //接收命令 &lt;br /&gt;
  Command_Parse();//解析数据&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Send_Message()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to lora Server&amp;quot;);&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello,this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data,sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent(); &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Command_Get()&lt;br /&gt;
 {&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      if(buf[0] == 'R')  //Reset&lt;br /&gt;
      {&lt;br /&gt;
        memcpy(Command.Buffer, buf, Buffer_len);//将lora传过来的数据拷贝到结构体buffer里面，15位&lt;br /&gt;
        Command.isGetCommand = true; //如果收到Reset命令，就表示得到了数据        &lt;br /&gt;
        }    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
      Serial.println(&amp;quot;No message&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Command_Parse()&lt;br /&gt;
 {&lt;br /&gt;
  char *subString;&lt;br /&gt;
  char *subStringNext;&lt;br /&gt;
  if (Command.isGetCommand)&lt;br /&gt;
  {&lt;br /&gt;
    Command.isGetCommand = false;&lt;br /&gt;
    Serial.println(&amp;quot;**************&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    for (int i = 0 ; i &amp;lt;= 3 ; i++) //将命令切分，依次放入对应的数组中&lt;br /&gt;
    {&lt;br /&gt;
      if (i == 0)&lt;br /&gt;
      {&lt;br /&gt;
        if ((subString = strstr(Command.Buffer, &amp;quot;,&amp;quot;)) == NULL)&lt;br /&gt;
          Serial.println(&amp;quot;error1&amp;quot;);  //解析错误&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        subString++;&lt;br /&gt;
        if ((subStringNext = strstr(subString, &amp;quot;,&amp;quot;)) != NULL)&lt;br /&gt;
        {&lt;br /&gt;
          switch(i)&lt;br /&gt;
          {&lt;br /&gt;
            case 1:memset(Command.TxPower,'\0',3);memcpy(Command.TxPower, subString, subStringNext - subString);break; //获取传输功率&lt;br /&gt;
            case 2:memset(Command.SpreadingFactor,'\0',3);memcpy(Command.SpreadingFactor, subString, subStringNext - subString);break; //获取扩频因子&lt;br /&gt;
            case 3:memset(Command.CodingRate4,'\0',2);memcpy(Command.CodingRate4, subString, subStringNext - subString);break;  //获取码率&lt;br /&gt;
            default:break;&lt;br /&gt;
          }&lt;br /&gt;
          subString = subStringNext;&lt;br /&gt;
          Command.isParseData = true;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
          Serial.println(&amp;quot;error2&amp;quot;);  //解析错误&lt;br /&gt;
          Command.isParseData = false;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }//for &lt;br /&gt;
  }//if (Command.isGetCommand) &lt;br /&gt;
  if(Command.isParseData) //如果解析完成，就执行更新函数&lt;br /&gt;
    {&lt;br /&gt;
      Command.isParseData = false; //解析完成，标志位置位假，并且重启&lt;br /&gt;
      reset_f(); //解析完成，写入参数并重启&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void reset_f()&lt;br /&gt;
 {&lt;br /&gt;
  EEPROM.update(0,atoi(Command.TxPower)); //将TxPower更新到第一个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  EEPROM.update(1,atoi(Command.SpreadingFactor)); //将SpreadingFactor更新到第二个位置&lt;br /&gt;
  delay(300); &lt;br /&gt;
  EEPROM.update(2,atoi(Command.CodingRate4)); //将CodingRate4更新到第三个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  resetFunc(); //将修改的参数写入了EEPROM，然后重置。&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1011</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1011"/>
		<updated>2019-09-26T08:12:49Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Change lora parameters online */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，打开IDE --&amp;gt; Tools --&amp;gt; 开发板 --&amp;gt; 选择Arduino/Genuino UNO（因为我们使用的是UNO型号的板子），然后：Tools --&amp;gt; 端口(选择开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(13); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(7);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;No reply, is LoRa server running?&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
当我们需要修改lora节点的通信参数，但是却无法手动去更改的时候（比如节点已经布置到各个区域，不可能再一个一个去现场修改），我们就需要在网关处发送命令，让节点收到命令后自己修改掉参数。&lt;br /&gt;
要实现这样的功能，主要需要两点：&lt;br /&gt;
*'''arduino板子的软重置'''。我们修改了参数，需要重启一下板子，以新的参数进行通信。这里arduino为我们提供了一个函数：'''resetFunc().''' 当程序执行到这里的时候，板子会重新启动&lt;br /&gt;
*'''一块掉电后仍能保存数据的区域'''。光是能重启，那么板子还是原来的参数，我们要修改参数，通过网关发射参数过去后，节点收到参数，需要保存在一个区域，掉电了后，这里的数据还在。所以重启后读这里面的数据，就能读到新的参数。这块掉电保存的区域，在Arduino里叫做'''EEPROM''',我们使用的UNO型号的Arduino开发板，EEPROM的大小为 1KB，但是我们就放几个参数是完全够用的。&lt;br /&gt;
*下面例程代码：&lt;br /&gt;
**'''Client'''&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;EEPROM.h&amp;gt;  //需要用到EEPROM&lt;br /&gt;
&lt;br /&gt;
 void(*resetFunc)(void) = 0;  //将函数入口设为0，&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 int TxPower;&lt;br /&gt;
 int SpreadingFactor;&lt;br /&gt;
 int CodingRate4;&lt;br /&gt;
 const unsigned int Buffer_len = 15;//接收要修改的参数的长度：&amp;quot;Reset,传输功率,扩频因子,码率,&amp;quot;  //规定格式，网关按照这样的格式发命令给节点&lt;br /&gt;
 struct&lt;br /&gt;
 {&lt;br /&gt;
  char Buffer[Buffer_len];&lt;br /&gt;
  bool isGetCommand;   //是否获取到command数据&lt;br /&gt;
  bool isParseData; //是否解析完成&lt;br /&gt;
  char TxPower[3];    //发送功率 12-20&lt;br /&gt;
  char SpreadingFactor[3];   //扩频因子 7-12&lt;br /&gt;
  char CodingRate4[2]; //码率5-8&lt;br /&gt;
 } Command;  &lt;br /&gt;
&lt;br /&gt;
 void setup()  //初始化内容&lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);      //定义波特率9600&lt;br /&gt;
  Serial.println(&amp;quot;Wating...&amp;quot;);&lt;br /&gt;
  Command.isGetCommand = false;&lt;br /&gt;
  Command.isParseData = false;&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  TxPower = EEPROM.read(0); //先读取传输功率，来判断是否写入过参数&lt;br /&gt;
  if (TxPower == 0||TxPower == 255) //如果还没有写入，设置默认的通信参数&lt;br /&gt;
  {&lt;br /&gt;
    TxPower = 20;  //初始化传输功率为13&lt;br /&gt;
    SpreadingFactor = 12;&lt;br /&gt;
    CodingRate4 = 5;&lt;br /&gt;
    }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    SpreadingFactor = EEPROM.read(1);&lt;br /&gt;
    CodingRate4 = EEPROM.read(2);&lt;br /&gt;
    }&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(TxPower);&lt;br /&gt;
  Serial.println(TxPower); //检查一下传输功率&lt;br /&gt;
  rf95.setSpreadingFactor(SpreadingFactor);&lt;br /&gt;
  Serial.println(SpreadingFactor);//检查一下扩频因子&lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
  Serial.println(CodingRate4);&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
 void loop()   &lt;br /&gt;
 {&lt;br /&gt;
  Send_Message(); //发送数据&lt;br /&gt;
  Command_Get();  //接收命令 &lt;br /&gt;
  Command_Parse();//解析数据&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Send_Message()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to lora Server&amp;quot;);&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello,this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data,sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent(); &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Command_Get()&lt;br /&gt;
 {&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      if(buf[0] == 'R')  //Reset&lt;br /&gt;
      {&lt;br /&gt;
        memcpy(Command.Buffer, buf, Buffer_len);//将lora传过来的数据拷贝到结构体buffer里面，15位&lt;br /&gt;
        Command.isGetCommand = true; //如果收到Reset命令，就表示得到了数据        &lt;br /&gt;
        }    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
      Serial.println(&amp;quot;No message&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Command_Parse()&lt;br /&gt;
 {&lt;br /&gt;
  char *subString;&lt;br /&gt;
  char *subStringNext;&lt;br /&gt;
  if (Command.isGetCommand)&lt;br /&gt;
  {&lt;br /&gt;
    Command.isGetCommand = false;&lt;br /&gt;
    Serial.println(&amp;quot;**************&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    for (int i = 0 ; i &amp;lt;= 3 ; i++) //将命令切分，依次放入对应的数组中&lt;br /&gt;
    {&lt;br /&gt;
      if (i == 0)&lt;br /&gt;
      {&lt;br /&gt;
        if ((subString = strstr(Command.Buffer, &amp;quot;,&amp;quot;)) == NULL)&lt;br /&gt;
          Serial.println(&amp;quot;error1&amp;quot;);  //解析错误&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        subString++;&lt;br /&gt;
        if ((subStringNext = strstr(subString, &amp;quot;,&amp;quot;)) != NULL)&lt;br /&gt;
        {&lt;br /&gt;
          switch(i)&lt;br /&gt;
          {&lt;br /&gt;
            case 1:memset(Command.TxPower,'\0',3);memcpy(Command.TxPower, subString, subStringNext - subString);break; //获取传输功率&lt;br /&gt;
            case 2:memset(Command.SpreadingFactor,'\0',3);memcpy(Command.SpreadingFactor, subString, subStringNext - subString);break; //获取扩频因子&lt;br /&gt;
            case 3:memset(Command.CodingRate4,'\0',2);memcpy(Command.CodingRate4, subString, subStringNext - subString);break;  //获取码率&lt;br /&gt;
            default:break;&lt;br /&gt;
          }&lt;br /&gt;
          subString = subStringNext;&lt;br /&gt;
          Command.isParseData = true;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
          Serial.println(&amp;quot;error2&amp;quot;);  //解析错误&lt;br /&gt;
          Command.isParseData = false;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }//for &lt;br /&gt;
  }//if (Command.isGetCommand) &lt;br /&gt;
  if(Command.isParseData) //如果解析完成，就执行更新函数&lt;br /&gt;
    {&lt;br /&gt;
      Command.isParseData = false; //解析完成，标志位置位假，并且重启&lt;br /&gt;
      reset_f(); //解析完成，写入参数并重启&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void reset_f()&lt;br /&gt;
 {&lt;br /&gt;
  EEPROM.update(0,atoi(Command.TxPower)); //将TxPower更新到第一个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  EEPROM.update(1,atoi(Command.SpreadingFactor)); //将SpreadingFactor更新到第二个位置&lt;br /&gt;
  delay(300); &lt;br /&gt;
  EEPROM.update(2,atoi(Command.CodingRate4)); //将CodingRate4更新到第三个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  resetFunc(); //将修改的参数写入了EEPROM，然后重置。&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1010</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1010"/>
		<updated>2019-09-26T07:57:33Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Change lora parameters online */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，打开IDE --&amp;gt; Tools --&amp;gt; 开发板 --&amp;gt; 选择Arduino/Genuino UNO（因为我们使用的是UNO型号的板子），然后：Tools --&amp;gt; 端口(选择开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(13); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(7);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;No reply, is LoRa server running?&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
当我们需要修改lora节点的通信参数，但是却无法手动去更改的时候（比如节点已经布置到各个区域，不可能再一个一个去现场修改），我们就需要在网关处发送命令，让节点收到命令后自己修改掉参数。&lt;br /&gt;
要实现这样的功能，主要需要两点：&lt;br /&gt;
*'''arduino板子的软重置'''。我们修改了参数，需要重启一下板子，以新的参数进行通信。这里arduino为我们提供了一个函数：'''resetFunc().''' 当程序执行到这里的时候，板子会重新启动&lt;br /&gt;
*'''一块掉电后仍能保存数据的区域'''。光是能重启，那么板子还是原来的参数，我们要修改参数，通过网关发射参数过去后，节点收到参数，需要保存在一个区域，掉电了后，这里的数据还在。所以重启后读这里面的数据，就能读到新的参数。这块掉电保存的区域，在Arduino里叫做'''EEPROM''',我们使用的UNO型号的Arduino开发板，EEPROM的大小为 1KB，但是我们就放几个参数是完全够用的。&lt;br /&gt;
*下面例程代码：&lt;br /&gt;
**'''Client'''&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 void(*resetFunc)(void) = 0;&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 int TxPower;&lt;br /&gt;
 int SpreadingFactor;&lt;br /&gt;
 int CodingRate4;&lt;br /&gt;
 const unsigned int Buffer_len = 15;//接收要修改的参数的长度：&amp;quot;Reset,传输功率,扩频因子,码率,&amp;quot;&lt;br /&gt;
 struct&lt;br /&gt;
 {&lt;br /&gt;
  char Buffer[Buffer_len];&lt;br /&gt;
  bool isGetCommand;   //是否获取到command数据&lt;br /&gt;
  bool isParseData; //是否解析完成&lt;br /&gt;
  char TxPower[3];    //发送功率 12-20&lt;br /&gt;
  char SpreadingFactor[3];   //扩频因子 7-12&lt;br /&gt;
  char CodingRate4[2]; //码率5-8&lt;br /&gt;
 } Command;&lt;br /&gt;
&lt;br /&gt;
 void setup()  //初始化内容&lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);      //定义波特率9600&lt;br /&gt;
  Serial.println(&amp;quot;Wating...&amp;quot;);&lt;br /&gt;
  Command.isGetCommand = false;&lt;br /&gt;
  Command.isParseData = false;&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  TxPower = EEPROM.read(0); //先读取传输功率，来判断是否写入过参数&lt;br /&gt;
  if (TxPower == 0||TxPower == 255) //如果还没有写入&lt;br /&gt;
  {&lt;br /&gt;
    TxPower = 20;  //初始化传输功率为13&lt;br /&gt;
    SpreadingFactor = 12;&lt;br /&gt;
    CodingRate4 = 5;&lt;br /&gt;
    }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    SpreadingFactor = EEPROM.read(1);&lt;br /&gt;
    CodingRate4 = EEPROM.read(2);&lt;br /&gt;
    }&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(TxPower);&lt;br /&gt;
  Serial.println(TxPower); //检查一下传输功率&lt;br /&gt;
  rf95.setSpreadingFactor(SpreadingFactor);&lt;br /&gt;
  Serial.println(SpreadingFactor);//检查一下扩频因子&lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
  Serial.println(CodingRate4);&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
 void loop()   &lt;br /&gt;
 {&lt;br /&gt;
  Send_Message(); //发送数据&lt;br /&gt;
  Command_Get();  //接收命令 &lt;br /&gt;
  Command_Parse();//解析数据&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Send_Message()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to lora Server&amp;quot;);&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello,this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data,sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent(); &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Command_Get()&lt;br /&gt;
 {&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      if(buf[0] == 'R')  //Reset, &lt;br /&gt;
      {&lt;br /&gt;
        memcpy(Command.Buffer, buf, Buffer_len);//将lora传过来的数据拷贝到结构体buffer里面，15位&lt;br /&gt;
        Command.isGetCommand = true; //如果收到Reset命令，就表示得到了数据        &lt;br /&gt;
        }    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
      Serial.println(&amp;quot;No message&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void Command_Parse()&lt;br /&gt;
 {&lt;br /&gt;
  char *subString;&lt;br /&gt;
  char *subStringNext;&lt;br /&gt;
  if (Command.isGetCommand)&lt;br /&gt;
  {&lt;br /&gt;
    Command.isGetCommand = false;&lt;br /&gt;
    Serial.println(&amp;quot;**************&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    for (int i = 0 ; i &amp;lt;= 3 ; i++) //将命令切分，依次放入对应的数组中&lt;br /&gt;
    {&lt;br /&gt;
      if (i == 0)&lt;br /&gt;
      {&lt;br /&gt;
        if ((subString = strstr(Command.Buffer, &amp;quot;,&amp;quot;)) == NULL)&lt;br /&gt;
          Serial.println(&amp;quot;error1&amp;quot;);  //解析错误&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        subString++;&lt;br /&gt;
        if ((subStringNext = strstr(subString, &amp;quot;,&amp;quot;)) != NULL)&lt;br /&gt;
        {&lt;br /&gt;
          switch(i)&lt;br /&gt;
          {&lt;br /&gt;
            case 1:memset(Command.TxPower,'\0',3);memcpy(Command.TxPower, subString, subStringNext - subString);break; //获取传输功率&lt;br /&gt;
            case 2:memset(Command.SpreadingFactor,'\0',3);memcpy(Command.SpreadingFactor, subString, subStringNext - subString);break; //获取扩频因子&lt;br /&gt;
            case 3:memset(Command.CodingRate4,'\0',2);memcpy(Command.CodingRate4, subString, subStringNext - subString);break;  //获取码率&lt;br /&gt;
            default:break;&lt;br /&gt;
          }&lt;br /&gt;
          subString = subStringNext;&lt;br /&gt;
          Command.isParseData = true;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
          Serial.println(&amp;quot;error2&amp;quot;);  //解析错误&lt;br /&gt;
          Command.isParseData = false;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }//for &lt;br /&gt;
  }//if (Command.isGetCommand) &lt;br /&gt;
  if(Command.isParseData) //如果解析完成，就执行更新函数&lt;br /&gt;
    {&lt;br /&gt;
      Command.isParseData = false; //解析完成，标志位置位假，并且重启&lt;br /&gt;
      reset_f(); //解析完成，写入参数并重启&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void reset_f()&lt;br /&gt;
 {&lt;br /&gt;
  EEPROM.update(0,atoi(Command.TxPower)); //将TxPower更新到第一个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  EEPROM.update(1,atoi(Command.SpreadingFactor)); //将SpreadingFactor更新到第二个位置&lt;br /&gt;
  delay(300); &lt;br /&gt;
  EEPROM.update(2,atoi(Command.CodingRate4)); //将CodingRate4更新到第三个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  resetFunc(); //将修改的参数写入了EEPROM，然后重置。&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1007</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1007"/>
		<updated>2019-09-26T07:47:10Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Change lora parameters online */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，打开IDE --&amp;gt; Tools --&amp;gt; 开发板 --&amp;gt; 选择Arduino/Genuino UNO（因为我们使用的是UNO型号的板子），然后：Tools --&amp;gt; 端口(选择开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(13); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(7);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;No reply, is LoRa server running?&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
当我们需要修改lora节点的通信参数，但是却无法手动去更改的时候（比如节点已经布置到各个区域，不可能再一个一个去现场修改），我们就需要在网关处发送命令，让节点收到命令后自己修改掉参数。&lt;br /&gt;
要实现这样的功能，主要需要两点：&lt;br /&gt;
*'''arduino板子的软重置'''。我们修改了参数，需要重启一下板子，以新的参数进行通信。这里arduino为我们提供了一个函数：'''resetFunc().''' 当程序执行到这里的时候，板子会重新启动&lt;br /&gt;
*'''一块掉电后仍能保存数据的区域'''。光是能重启，那么板子还是原来的参数，我们要修改参数，通过网关发射参数过去后，节点收到参数，需要保存在一个区域，掉电了后，这里的数据还在。所以重启后读这里面的数据，就能读到新的参数。这块掉电保存的区域，在Arduino里叫做'''EEPROM''',我们使用的UNO型号的Arduino开发板，EEPROM的大小为 1KB，但是我们就放几个参数是完全够用的。&lt;br /&gt;
*下面例程代码：&lt;br /&gt;
**'''Client'''&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
//#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void(*resetFunc)(void) = 0;&lt;br /&gt;
RH_RF95 rf95;&lt;br /&gt;
float frequency = 433.0;&lt;br /&gt;
int TxPower;&lt;br /&gt;
int SpreadingFactor;&lt;br /&gt;
int CodingRate4;&lt;br /&gt;
const unsigned int Buffer_len = 15;//接收要修改的参数的长度：&amp;quot;Reset,传输功率,扩频因子,码率,&amp;quot;&lt;br /&gt;
struct&lt;br /&gt;
{&lt;br /&gt;
  char Buffer[Buffer_len];&lt;br /&gt;
  bool isGetCommand;   //是否获取到command数据&lt;br /&gt;
  bool isParseData; //是否解析完成&lt;br /&gt;
  char TxPower[3];    //发送功率 12-20&lt;br /&gt;
  char SpreadingFactor[3];   //扩频因子 7-12&lt;br /&gt;
  char CodingRate4[2]; //码率5-8&lt;br /&gt;
} Command;&lt;br /&gt;
&lt;br /&gt;
void setup()  //初始化内容&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);      //定义波特率9600&lt;br /&gt;
  Serial.println(&amp;quot;Wating...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  Command.isGetCommand = false;&lt;br /&gt;
  Command.isParseData = false;&lt;br /&gt;
&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  TxPower = EEPROM.read(0); //先读取传输功率，来判断是否写入过参数&lt;br /&gt;
  if (TxPower == 0||TxPower == 255) //如果还没有写入&lt;br /&gt;
  {&lt;br /&gt;
    TxPower = 20;  //初始化传输功率为13&lt;br /&gt;
    SpreadingFactor = 12;&lt;br /&gt;
    CodingRate4 = 5;&lt;br /&gt;
    }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    SpreadingFactor = EEPROM.read(1);&lt;br /&gt;
    CodingRate4 = EEPROM.read(2);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  &lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(TxPower);&lt;br /&gt;
  Serial.println(TxPower); //检查一下传输功率&lt;br /&gt;
  // Setup Spreading Factor (7 ~ 12)&lt;br /&gt;
  rf95.setSpreadingFactor(SpreadingFactor);&lt;br /&gt;
  Serial.println(SpreadingFactor);//检查一下扩频因子&lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
  Serial.println(CodingRate4);&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//循环函数&lt;br /&gt;
void loop()   &lt;br /&gt;
{&lt;br /&gt;
  Send_Message(); //发送数据&lt;br /&gt;
  Command_Get();  //接收命令 &lt;br /&gt;
  Command_Parse();//解析数据&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//发送函数&lt;br /&gt;
void Send_Message()&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;Sending to lora Server&amp;quot;);&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello,this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data,sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent(); &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
//接收函数&lt;br /&gt;
void Command_Get()&lt;br /&gt;
{&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      if(buf[0] == 'R')  //Reset, &lt;br /&gt;
      {&lt;br /&gt;
        memcpy(Command.Buffer, buf, Buffer_len);//将lora传过来的数据拷贝到结构体buffer里面，15位&lt;br /&gt;
        Command.isGetCommand = true; //如果收到Reset命令，就表示得到了数据        &lt;br /&gt;
        }    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
      Serial.println(&amp;quot;No message&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//解析命令函数&lt;br /&gt;
void Command_Parse()&lt;br /&gt;
{&lt;br /&gt;
  char *subString;&lt;br /&gt;
  char *subStringNext;&lt;br /&gt;
  if (Command.isGetCommand)&lt;br /&gt;
  {&lt;br /&gt;
    Command.isGetCommand = false;&lt;br /&gt;
    Serial.println(&amp;quot;**************&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    for (int i = 0 ; i &amp;lt;= 3 ; i++) //将命令切分，依次放入对应的数组中&lt;br /&gt;
    {&lt;br /&gt;
      if (i == 0)&lt;br /&gt;
      {&lt;br /&gt;
        if ((subString = strstr(Command.Buffer, &amp;quot;,&amp;quot;)) == NULL)&lt;br /&gt;
          Serial.println(&amp;quot;error1&amp;quot;);  //解析错误&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        subString++;&lt;br /&gt;
        if ((subStringNext = strstr(subString, &amp;quot;,&amp;quot;)) != NULL)&lt;br /&gt;
        {&lt;br /&gt;
          switch(i)&lt;br /&gt;
          {&lt;br /&gt;
            case 1:memset(Command.TxPower,'\0',3);memcpy(Command.TxPower, subString, subStringNext - subString);break; //获取传输功率&lt;br /&gt;
            case 2:memset(Command.SpreadingFactor,'\0',3);memcpy(Command.SpreadingFactor, subString, subStringNext - subString);break; //获取扩频因子&lt;br /&gt;
            case 3:memset(Command.CodingRate4,'\0',2);memcpy(Command.CodingRate4, subString, subStringNext - subString);break;  //获取码率&lt;br /&gt;
            default:break;&lt;br /&gt;
          }&lt;br /&gt;
          subString = subStringNext;&lt;br /&gt;
          Command.isParseData = true;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
          Serial.println(&amp;quot;error2&amp;quot;);  //解析错误&lt;br /&gt;
          Command.isParseData = false;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }//for &lt;br /&gt;
  }//if (Command.isGetCommand) &lt;br /&gt;
&lt;br /&gt;
  if(Command.isParseData) //如果解析完成，就执行更新函数&lt;br /&gt;
    {&lt;br /&gt;
      Command.isParseData = false; //解析完成，标志位置位假，并且重启&lt;br /&gt;
      reset_f(); //解析完成，写入参数并重启&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//更新函数&lt;br /&gt;
void reset_f()&lt;br /&gt;
{&lt;br /&gt;
  EEPROM.update(0,atoi(Command.TxPower)); //将TxPower更新到第一个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  EEPROM.update(1,atoi(Command.SpreadingFactor)); //将SpreadingFactor更新到第二个位置&lt;br /&gt;
  delay(300); &lt;br /&gt;
  EEPROM.update(2,atoi(Command.CodingRate4)); //将CodingRate4更新到第三个位置&lt;br /&gt;
  delay(300);&lt;br /&gt;
  resetFunc(); //将修改的参数写入了EEPROM，然后重置。&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1006</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1006"/>
		<updated>2019-09-26T07:38:25Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Change lora parameters online */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，打开IDE --&amp;gt; Tools --&amp;gt; 开发板 --&amp;gt; 选择Arduino/Genuino UNO（因为我们使用的是UNO型号的板子），然后：Tools --&amp;gt; 端口(选择开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(13); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(7);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;No reply, is LoRa server running?&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
当我们需要修改lora节点的通信参数，但是却无法手动去更改的时候（比如节点已经布置到各个区域，不可能再一个一个去现场修改），我们就需要在网关处发送命令，让节点收到命令后自己修改掉参数。&lt;br /&gt;
要实现这样的功能，主要需要两点：&lt;br /&gt;
*'''arduino板子的软重置'''。我们修改了参数，需要重启一下板子，以新的参数进行通信。这里arduino为我们提供了一个函数：'''resetFunc().''' 当程序执行到这里的时候，板子会重新启动&lt;br /&gt;
*'''一块掉电后仍能保存数据的区域'''。光是能重启，那么板子还是原来的参数，我们要修改参数，通过网关发射参数过去后，节点收到参数，需要保存在一个区域，掉电了后，这里的数据还在。所以重启后读这里面的数据，就能读到新的参数。这块掉电保存的区域，在Arduino里叫做'''EEPROM''',我们使用的UNO型号的Arduino开发板，EEPROM的大小为 1KB，但是我们就放几个参数是完全够用的。&lt;br /&gt;
*下面例程代码：&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1005</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1005"/>
		<updated>2019-09-26T07:37:39Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Change lora parameters online */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，打开IDE --&amp;gt; Tools --&amp;gt; 开发板 --&amp;gt; 选择Arduino/Genuino UNO（因为我们使用的是UNO型号的板子），然后：Tools --&amp;gt; 端口(选择开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(13); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(7);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;No reply, is LoRa server running?&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
当我们需要修改lora节点的通信参数，但是却无法手动去更改的时候（比如节点已经布置到各个区域，不可能再一个一个去现场修改），我们就需要在网关处发送命令，让节点收到命令后自己修改掉参数。&lt;br /&gt;
要实现这样的功能，主要需要两点：&lt;br /&gt;
*'''arduino板子的软重置'''。我们修改了参数，需要重启一下板子，以新的参数进行通信。这里arduino为我们提供了一个函数：'''resetFunc().''' 当程序执行到这里的时候，板子会重新启动&lt;br /&gt;
*'''一块掉电后仍能保存数据的区域'''。光是能重启，那么板子还是原来的参数，我们要修改参数，通过网关发射参数过去后，节点收到参数，需要保存在一个区域，掉电了后，这里的数据还在。所以重启后读这里面的数据，就能读到新的参数。这块掉电保存的区域，在Arduino里叫做'''EEPROM''',我们使用的UNO型号的Arduino开发板，EEPROM的大小为 1KB，但是我们就放几个参数是完全够用的。&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1004</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1004"/>
		<updated>2019-09-26T07:25:16Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，打开IDE --&amp;gt; Tools --&amp;gt; 开发板 --&amp;gt; 选择Arduino/Genuino UNO（因为我们使用的是UNO型号的板子），然后：Tools --&amp;gt; 端口(选择开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(13); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(7);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  if (rf95.waitAvailableTimeout(3000))&lt;br /&gt;
  { &lt;br /&gt;
    // Should be a reply message for us now   &lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
   {&lt;br /&gt;
      Serial.print(&amp;quot;got reply: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);    &lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;No reply, is LoRa server running?&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1001</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1001"/>
		<updated>2019-09-26T01:37:00Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，打开IDE --&amp;gt; Tools --&amp;gt; 开发板 --&amp;gt; 选择Arduino/Genuino UNO（因为我们使用的是UNO型号的板子），然后：Tools --&amp;gt; 端口(选择开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1000</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=1000"/>
		<updated>2019-09-26T01:13:58Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lorat通信参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=999</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=999"/>
		<updated>2019-09-26T01:09:43Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Arduino + Lora */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like '''Raspberry Pi（树莓派）'''、'''Arduino''' and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=998</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=998"/>
		<updated>2019-09-26T01:09:21Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的'''libraries'''里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=997</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=997"/>
		<updated>2019-09-26T01:07:07Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的libraries里面（我的是在 ''C:\Program Files (x86)\Arduino\libraries''），就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=996</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=996"/>
		<updated>2019-09-26T01:06:04Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载[[http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead]]，将其拷贝到Arduino安装目录下的libraries里面，就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=995</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=995"/>
		<updated>2019-09-25T15:05:23Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载Radio_Head，将其拷贝到Arduino安装目录下的libraries里面，就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
#*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=994</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=994"/>
		<updated>2019-09-25T15:02:39Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
#使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
*'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
*'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
#要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载Radio_Head，将其拷贝到Arduino安装目录下的libraries里面，就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
&lt;br /&gt;
#用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
'''Client：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
'''Server：'''&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=993</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=993"/>
		<updated>2019-09-25T14:57:52Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载Radio_Head，将其拷贝到Arduino安装目录下的libraries里面，就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
&lt;br /&gt;
*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);    //延迟1000毫秒，通过修改这里的值，我们可以控制发包间隔&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=992</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=992"/>
		<updated>2019-09-25T14:55:26Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Transmit a package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载Radio_Head，将其拷贝到Arduino安装目录下的libraries里面，就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
&lt;br /&gt;
*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Change lora parameters online===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=991</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=991"/>
		<updated>2019-09-25T14:53:03Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载Radio_Head，将其拷贝到Arduino安装目录下的libraries里面，就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
&lt;br /&gt;
*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 //如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=990</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=990"/>
		<updated>2019-09-25T14:52:19Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Lora通信实例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Lora通信实例===&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
*要使用Lora通信，需要调用Lora的库文件，当然，我们有现成的库可以用。点击下载Radio_Head，将其拷贝到Arduino安装目录下的libraries里面，就可以从IDE当中直接导包，使用里面提供的接口&lt;br /&gt;
&lt;br /&gt;
*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;   //lora跟Arduino之间使用的是SPI通信方式&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;  //lora的库文件，提供了关于设置lora发射参数等一系列函数&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;  //在国内，ISM频段只有433MHz可用，这里需要注意，如果我们买的是868M或者915M的lora板子，是无法使用的&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);  //设置波特率，为了Arduino开发板跟电脑端的串口通信使用，有时候使用串口助手发现电脑端显示的全是乱码，就很有可能是波特率设置的不一样。&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);   //串口打印函数&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);  // Setup ISM frequency&lt;br /&gt;
  rf95.setTxPower(18); // Setup Power,dBm&lt;br /&gt;
  rf95.setSpreadingFactor(12);  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
//如果我们需要修改lora发射参数，只需要一行代码，非常方便&lt;br /&gt;
 } //setup函数体只执行一遍，执行完了过后，开始进入到loop函数里面&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;  //lora需要发射的数据，都是存放在一个字符数组里面&lt;br /&gt;
  rf95.send(data, sizeof(data));  //发送函数&lt;br /&gt;
  rf95.waitPacketSent(); //等待数据发送完成&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {  &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];  //开辟一个buffer便于接收lora数据&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);  //调用现成的接口可以直接获取lora信号的RSSI值&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=989</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=989"/>
		<updated>2019-09-25T14:39:26Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Arduino + Lora */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
===Arduino + Lora===&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(18);&lt;br /&gt;
  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  rf95.setSpreadingFactor(12);&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data, sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent();&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {&lt;br /&gt;
    // Should be a message for us now   &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=988</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=988"/>
		<updated>2019-09-25T14:39:00Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Configuration Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(18);&lt;br /&gt;
  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  rf95.setSpreadingFactor(12);&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data, sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent();&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {&lt;br /&gt;
    // Should be a message for us now   &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=987</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=987"/>
		<updated>2019-09-25T14:34:42Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Configuration Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Configuration Environment===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(18);&lt;br /&gt;
  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  rf95.setSpreadingFactor(12);&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data, sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent();&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {&lt;br /&gt;
    // Should be a message for us now   &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=986</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=986"/>
		<updated>2019-09-25T14:34:12Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Configuration Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Configuration Environment===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
&lt;br /&gt;
*用数据线将开发板连接到电脑，从IDE选择开发板，然后选择的Tools选择端口(开发板连接的端口)。下面是Lora通信的示例代码：&lt;br /&gt;
Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(18);&lt;br /&gt;
  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  rf95.setSpreadingFactor(12);&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data, sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent();&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {&lt;br /&gt;
    // Should be a message for us now   &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=985</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=985"/>
		<updated>2019-09-25T14:15:12Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Configuration Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Configuration Environment===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。以我们使用的Dragino开发板为例：&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
*Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(18);&lt;br /&gt;
  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  rf95.setSpreadingFactor(12);&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data, sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent();&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {&lt;br /&gt;
    // Should be a message for us now   &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=984</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=984"/>
		<updated>2019-09-25T14:13:31Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Configuration Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Configuration Environment===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。&lt;br /&gt;
 具体步骤：&lt;br /&gt;
  在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下 &lt;br /&gt;
  URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
  转到tools --&amp;gt; Boards --&amp;gt; Boards Manager,找到Dragino信息并安装它&lt;br /&gt;
  这样，我们的Dragino开发板就成功的关联到了IDE里面，可以打开IDE --&amp;gt; Tools的开发板，就能找到Dragino&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
*Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(18);&lt;br /&gt;
  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  rf95.setSpreadingFactor(12);&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data, sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent();&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {&lt;br /&gt;
    // Should be a message for us now   &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=983</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=983"/>
		<updated>2019-09-25T14:09:40Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Configuration Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Configuration Environment===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
&lt;br /&gt;
#'''下载和安装Arduino IDE'''  [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#'''在IDE中添加开发板''' 我们要在IDE上编写代码烧录到板子上运行，首先需要把板子信息加载到IDE里面，这样，IDE才能识别到开发板。&lt;br /&gt;
 具体步骤：&lt;br /&gt;
#**在PC上打开IDE --&amp;gt; 点击'''File''' --&amp;gt; '''preference'''--&amp;gt;在'''Additional Boards Manager URLs'''里添加以下URL：'''http://www.dragino.com/downloads/downloads/YunShield/package_dragino_yun_test_index.json'''&lt;br /&gt;
preference&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
*Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(18);&lt;br /&gt;
  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  rf95.setSpreadingFactor(12);&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data, sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent();&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {&lt;br /&gt;
    // Should be a message for us now   &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=982</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=982"/>
		<updated>2019-09-25T13:09:00Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* 配置环境 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Configuration Environment===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
*使用Arduino进行Lora开发，首先需要环境配置：&lt;br /&gt;
#下载和安装Arduino IDE [[https://www.arduino.cc/en/Main/Software Arduino下载]]&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
*Client：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start LoRa Client&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(18);&lt;br /&gt;
  // Setup Spreading Factor (6 ~ 12)&lt;br /&gt;
  rf95.setSpreadingFactor(12);&lt;br /&gt;
  // Setup BandWidth, option: 7800,10400,15600,20800,31200,41700,62500,125000,250000,500000&lt;br /&gt;
  //Lower BandWidth for longer distance.&lt;br /&gt;
  rf95.setSignalBandwidth(125000);&lt;br /&gt;
  // Setup Coding Rate:5(4/5),6(4/6),7(4/7),8(4/8) &lt;br /&gt;
  rf95.setCodingRate4(5);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  Serial.println(&amp;quot;Sending to LoRa Server&amp;quot;);&lt;br /&gt;
  // Send a message to LoRa Server&lt;br /&gt;
  uint8_t data[] = &amp;quot;Hello, this is device 1&amp;quot;;&lt;br /&gt;
  rf95.send(data, sizeof(data));&lt;br /&gt;
  rf95.waitPacketSent();&lt;br /&gt;
  // Now wait for a reply&lt;br /&gt;
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
  uint8_t len = sizeof(buf);&lt;br /&gt;
  delay(1000);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Server：&lt;br /&gt;
 #include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;RH_RF95.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RH_RF95 rf95;&lt;br /&gt;
 int led = A2;&lt;br /&gt;
 float frequency = 433.0;&lt;br /&gt;
&lt;br /&gt;
 void setup() &lt;br /&gt;
 {&lt;br /&gt;
  pinMode(led, OUTPUT);     &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) ; // Wait for serial port to be available&lt;br /&gt;
  Serial.println(&amp;quot;Start Sketch&amp;quot;);&lt;br /&gt;
  if (!rf95.init())&lt;br /&gt;
    Serial.println(&amp;quot;init failed&amp;quot;);&lt;br /&gt;
  // Setup ISM frequency&lt;br /&gt;
  rf95.setFrequency(frequency);&lt;br /&gt;
  // Setup Power,dBm&lt;br /&gt;
  rf95.setTxPower(13);&lt;br /&gt;
  // Defaults BW Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on&lt;br /&gt;
  Serial.print(&amp;quot;Listening on frequency: &amp;quot;);&lt;br /&gt;
  Serial.println(frequency);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop()&lt;br /&gt;
 {&lt;br /&gt;
  if (rf95.available())&lt;br /&gt;
  {&lt;br /&gt;
    // Should be a message for us now   &lt;br /&gt;
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];&lt;br /&gt;
    uint8_t len = sizeof(buf);&lt;br /&gt;
    if (rf95.recv(buf, &amp;amp;len))&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led, HIGH);&lt;br /&gt;
      RH_RF95::printBuffer(&amp;quot;request: &amp;quot;, buf, len);&lt;br /&gt;
      Serial.print(&amp;quot;got request: &amp;quot;);&lt;br /&gt;
      Serial.println((char*)buf);&lt;br /&gt;
      Serial.print(&amp;quot;RSSI: &amp;quot;);&lt;br /&gt;
      Serial.println(rf95.lastRssi(), DEC);&lt;br /&gt;
      &lt;br /&gt;
      // Send a reply&lt;br /&gt;
      uint8_t data[] = &amp;quot;And hello back to you&amp;quot;;&lt;br /&gt;
      rf95.send(data, sizeof(data));&lt;br /&gt;
      rf95.waitPacketSent();&lt;br /&gt;
      Serial.println(&amp;quot;Sent a reply&amp;quot;);&lt;br /&gt;
      digitalWrite(led, LOW);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;recv failed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=981</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=981"/>
		<updated>2019-09-25T12:51:02Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Setting LoRa parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===配置环境===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
使用Arduino进行Lora开发，首先需要配置环境：&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
===Transmit a package===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=980</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=980"/>
		<updated>2019-09-25T12:50:09Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Transmitting a packet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===配置环境===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
使用Arduino进行Lora开发，首先需要配置环境：&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
===Setting LoRa parameters===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=979</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=979"/>
		<updated>2019-09-25T12:40:20Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Introduction to Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
'''Arduino''' is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程方式很简洁方便，只需要在特定的框架下编写代码（语法跟C语言类似）。Arduino由两段代码组成：setup和loop，程序的逻辑是首先执行setup函数，只执行一次；然后执行loop函数，一直循环。&lt;br /&gt;
&lt;br /&gt;
* setup() {&lt;br /&gt;
} &lt;br /&gt;
所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面&lt;br /&gt;
* loop(){&lt;br /&gt;
} &lt;br /&gt;
在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===Arduino库文件===&lt;br /&gt;
Arduino的一个重要特点，就是它的社区非常活跃，而且有着非常丰富的''第三方库资源''，使得我们不必关注底层的代码实现，只需要关注自身的逻辑，极大地方便了我们的开发。&lt;br /&gt;
*例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=978</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=978"/>
		<updated>2019-09-25T12:39:55Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Arduino库文件 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
'''Arduino''' is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程方式很简洁方便，只需要在特定的框架下编写代码（语法跟C语言类似）。Arduino由两段代码组成：setup和loop，程序的逻辑是首先执行setup函数，只执行一次；然后执行loop函数，一直循环。&lt;br /&gt;
&lt;br /&gt;
* setup() {&lt;br /&gt;
} &lt;br /&gt;
所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面&lt;br /&gt;
* loop(){&lt;br /&gt;
} &lt;br /&gt;
在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
====Arduino库文件====&lt;br /&gt;
Arduino的一个重要特点，就是它的社区非常活跃，而且有着非常丰富的''第三方库资源''，使得我们不必关注底层的代码实现，只需要关注自身的逻辑，极大地方便了我们的开发。&lt;br /&gt;
*例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=977</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=977"/>
		<updated>2019-09-25T12:39:19Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Introduction to Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
'''Arduino''' is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程方式很简洁方便，只需要在特定的框架下编写代码（语法跟C语言类似）。Arduino由两段代码组成：setup和loop，程序的逻辑是首先执行setup函数，只执行一次；然后执行loop函数，一直循环。&lt;br /&gt;
&lt;br /&gt;
* setup() {&lt;br /&gt;
} &lt;br /&gt;
所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面&lt;br /&gt;
* loop(){&lt;br /&gt;
} &lt;br /&gt;
在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
====Arduino库文件====&lt;br /&gt;
Arduino的一个重要特点，就是它的社区非常活跃，而且有着非常丰富的''第三方库资源''，使得我们不必关注底层的代码实现，只需要关注自身的逻辑，极大地方便了我们的开发。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=976</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=976"/>
		<updated>2019-09-25T12:38:36Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Arduino IDE: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
'''Arduino''' is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程方式很简洁方便，只需要在特定的框架下编写代码（语法跟C语言类似）。Arduino由两段代码组成：setup和loop，程序的逻辑是首先执行setup函数，只执行一次；然后执行loop函数，一直循环。&lt;br /&gt;
&lt;br /&gt;
* setup() {&lt;br /&gt;
} &lt;br /&gt;
所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面&lt;br /&gt;
* loop(){&lt;br /&gt;
} &lt;br /&gt;
在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
====Arduino库文件====&lt;br /&gt;
Arduino的一个重要特点，就是它的社区非常活跃，而且有着非常丰富的''第三方库资源''，使得我们不必关注底层的代码实现，只需要关注自身的逻辑，极大地方便了我们的开发。&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=975</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=975"/>
		<updated>2019-09-25T12:35:39Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Arduino IDE: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
'''Arduino''' is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程方式很简洁方便，只需要在特定的框架下编写代码（语法跟C语言类似）。Arduino由两段代码组成：setup和loop，程序的逻辑是首先执行setup函数，只执行一次；然后执行loop函数，一直循环。&lt;br /&gt;
&lt;br /&gt;
* setup() {&lt;br /&gt;
} &lt;br /&gt;
所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面&lt;br /&gt;
* loop(){&lt;br /&gt;
} &lt;br /&gt;
**在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=974</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=974"/>
		<updated>2019-09-25T12:32:41Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Arduino IDE: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
'''Arduino''' is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程方式很简洁方便，只需要在特定的框架下编写代码（语法跟C语言类似）。Arduino由两段代码组成：setup和loop，程序的逻辑是首先执行setup函数，只执行一次；然后执行loop函数，一直循环。&lt;br /&gt;
&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=973</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=973"/>
		<updated>2019-09-25T12:32:29Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
'''Arduino''' is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程方式很简洁方便，只需要在特定的框架下编写代码（语法跟C语言类似）。Arduino由两段代码组成：setup和loop，程序的逻辑是首先执行setup函数，只执行一次；然后执行loop函数，一直循环。&lt;br /&gt;
&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
 所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
 在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=972</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=972"/>
		<updated>2019-09-25T12:32:09Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
'''Arduino''' is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程方式很简洁方便，只需要在特定的框架下编写代码（语法跟C语言类似）。Arduino由两段代码组成：setup和loop，程序的逻辑是首先执行setup函数，只执行一次；然后执行loop函数，一直循环。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=971</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=971"/>
		<updated>2019-09-25T12:24:54Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Here we introduce Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
'''Arduino''' is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=970</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=970"/>
		<updated>2019-09-25T12:24:26Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Here we introduce Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
Arduino is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=969</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=969"/>
		<updated>2019-09-25T12:23:05Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
Arduino is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]], Actually, you can find almost all kinds of problems about Arduino, especially when you are new to Arduino, so I really recommand this community.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*See the difference,Click  [[https://www.arduino.cn/thread-1192-1-1.html Here]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=968</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=968"/>
		<updated>2019-09-25T12:21:57Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Here we introduce Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
Arduino is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]], Actually, you can find almost all kinds of problems about Arduino, especially when you are new to Arduino, so I really recommand this community.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*This is there difference: [[https://www.arduino.cn/thread-1192-1-1.html Arduino]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=967</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=967"/>
		<updated>2019-09-25T12:19:36Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
Arduino is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Arduino hardware includes various models of arduino boards&lt;br /&gt;
*This is there difference: [[https://www.arduino.cn/thread-1192-1-1.html Arduino]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=966</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=966"/>
		<updated>2019-09-25T12:13:27Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Here we introduce Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
Arduino is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*Find more interesting thing,Click -&amp;gt; [[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
*[[Image:Lora1.jpg|thumb]]&lt;br /&gt;
all kinds of Arduino:&lt;br /&gt;
[[Image:Logo.png]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=965</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=965"/>
		<updated>2019-09-25T12:12:15Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Here we introduce Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
Arduino is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*[[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
*[[Image:Lora1.jpg|thumb]]&lt;br /&gt;
all kinds of Arduino:&lt;br /&gt;
[[Image:Logo.png]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=964</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=964"/>
		<updated>2019-09-25T12:10:52Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Here we introduce Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
Arduino is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
*更多的Arduino知识，参考[[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
*[[Image:Lora1.jpg|thumb]]&lt;br /&gt;
all kinds of Arduino:&lt;br /&gt;
[[Image:Logo.png]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=963</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=963"/>
		<updated>2019-09-25T12:10:33Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Introduction to Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
Arduino is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
更多的Arduino知识，参考[[https://www.arduino.cn/ Arduino中文社区]]&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
*[[Image:Lora1.jpg|thumb]]&lt;br /&gt;
all kinds of Arduino:&lt;br /&gt;
[[Image:Logo.png]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=962</id>
		<title>Tutorial:Arduino</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:Arduino&amp;diff=962"/>
		<updated>2019-09-25T11:14:50Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Arduino==&lt;br /&gt;
===Here we introduce Arduino===&lt;br /&gt;
Arduino is a &amp;lt;u&amp;gt;convenient&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt; flexible&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;easy-to-use&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;open source&amp;lt;/u&amp;gt; electronic prototyping platform that includes '''hardware''' (various models of arduino boards) and '''software''' (arduino IDE)&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
*[[Image:Lora1.jpg|thumb]]&lt;br /&gt;
all kinds of Arduino:&lt;br /&gt;
[[Image:Logo.png]]&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
====Arduino IDE:====&lt;br /&gt;
Arduino 编程，只需要在特定的框架下编写代码（语法跟C语言类似）。&lt;br /&gt;
有两段代码结构：&lt;br /&gt;
* setup() {&lt;br /&gt;
}&lt;br /&gt;
  所有需要初始化的代码，都可以放在setup()函数体中（例如lora发射参数的设置），这里面的代码只会执行一次，接着就进入loop()循环里面，一直重复执行&lt;br /&gt;
* loop(){&lt;br /&gt;
}&lt;br /&gt;
  在这里面的代码一直会重复执行，除非Arduino板子断电。例如用传感器采集数据的代码，或者发送数据的代码都可以放在这里，以便周期性的发送数据&lt;br /&gt;
&lt;br /&gt;
===库文件===&lt;br /&gt;
*Arduino有许多现成的库文件，可以直接调用，不用再着力于底层开发，例如要使用Lora进行通信，只需要将Lora的库文件(RH_RF95.h)导入到Arduino IDE里面，使用库文件提供的API接口，就可以实现lora之间的相互通信&lt;br /&gt;
*Arduino还能添加许多额外的传感器，用来感知环境的变化，并进行处理，再将数据通过无线通信的方式发送到网关。&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=961</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=961"/>
		<updated>2019-09-25T10:22:43Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Transmitting a packet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
===Transmitting a packet===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
使用Arduino进行Lora开发，首先需要配置环境：&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
===Setting LoRa parameters===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
	<entry>
		<id>http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=960</id>
		<title>Tutorial:LoRa</title>
		<link rel="alternate" type="text/html" href="http://mobinets.cn/site/index.php?title=Tutorial:LoRa&amp;diff=960"/>
		<updated>2019-09-25T10:22:31Z</updated>

		<summary type="html">&lt;p&gt;Yangxuan: /* Arduino + Lora */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the tutorial for LoRa experiments. &lt;br /&gt;
&lt;br /&gt;
===Platform and programming environments===&lt;br /&gt;
====Arduino + Lora====&lt;br /&gt;
*Lora is a wireless communication module，we also need a ''MCU'' to contral it like Raspberry Pi（树莓派）、Arduino and so on. (Here we choose Arduino).&lt;br /&gt;
*[http://mobinets.org/index.php?title=Tutorial:Arduino&amp;amp;action=edit&amp;amp;redlink=1 More about '''Arduino''']&lt;br /&gt;
*'''Lora'''&lt;br /&gt;
&lt;br /&gt;
==='''Transmitting a packet'''===&lt;br /&gt;
====Lora通信实例====&lt;br /&gt;
&lt;br /&gt;
使用Arduino进行Lora开发，首先需要配置环境：&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
===Setting LoRa parameters===&lt;br /&gt;
&lt;br /&gt;
===Sensory data measurement===&lt;br /&gt;
&lt;br /&gt;
===Data collection via USB cables===&lt;/div&gt;</summary>
		<author><name>Yangxuan</name></author>
	</entry>
</feed>