LoRa相关LPWAN设计

ESP8266 LoRa网关第一步:SPI总线

2017-11-19  本文已影响1088人  小鱼儿他老汉
logic_spi_esp8266_arduino.png

之前一直有看到PyCom开发的基于MicroPython/ESP32的LoRa网关,但是也没有测试过。最近看到国内有卖ESP32/LoRa模块的设计,但是买来一看,LoRa部分也是非常简单的设计。而且该设计除了营销上很有一套,总的来说,技术含量不够高。

ESP8266 SPI driver for Arduino

由于模块自身占用了SPI和串口,而芯片自身引脚也不够,许多功能都是复用引脚的。而ESP8266-12F模块不提供内电路,所以需要横向比较许多资料。最终得出结论:12F模块中SPI提供给了内部SPI闪存,而将HSPI留给了用户。

早前ESP8266的相关资料很杂散,IC原厂和模块供应商资料版本都存在很多差异。现在基于Arduino倒是省了很多事情。

源码

查阅了Github上的源码,编写了以下的测试代码。

/*
 * SPI test code for SX1278 module, in order to port all LoRa stack to Arduino
 * 
 * ESP8266/Arduino: https://github.com/esp8266/Arduino
 * Reference code: https://www.arduino.cc/en/Tutorial/BarometricPressureSensor
 * 
 */
 
#include <SPI.h>

#define SPI_CLOCK (1000000)

const int d0 = 6;
const int rst = 7;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  delay(10);
  SPI.setFrequency(SPI_CLOCK);
  SPI.setHwCs(true);

}

void loop() {
  // put your main code here, to run repeatedly:
  // Serial.println("Write 0x55, Read 0xAA");
  SPI.begin();
  SPI.write(0x00);
  SPI.write(0x05);
  SPI.write(0x55);
  SPI.write(0x5A);
  SPI.write(0xA0);
  SPI.write(0xAA);
  SPI.write(0xF0);
  SPI.write(0xFF);
  //SPI.transfer(0xAA);
  SPI.end();
  delay(50);

}

进过逻辑分析仪验证,SPI工作正常。接下来就是将LoRa官方驱动以及LoRaWAN的高层协议移植到现有平台,然后对接MQTT。

上一篇 下一篇

猜你喜欢

热点阅读