scrapyardelectric
Published © GPL3+

Seeed Studio Wio-E5 & ESP8266-12F Gadget!

Need a feature packed dev board that can do it all? The Seeed Studio Wio-E5 & ESP8266-12F combo has you covered!

AdvancedWork in progress15 hours738
Seeed Studio Wio-E5 & ESP8266-12F Gadget!

Things used in this project

Hardware components

Grove - Wio-E5 (STM32WLE5JC)
Seeed Studio Grove - Wio-E5 (STM32WLE5JC)
×1
ESP8266 ESP-12E
Espressif ESP8266 ESP-12E
×1
Texas Instruments SN74CBT3306PWR
×2
ams1117-3.3
×1
FP6277XR-G1
×1
CN3063
×1
U262-061N-4BVC11
×1
SSD1306 128x32 0.96" OLED
×1

Software apps and online services

EasyEDA
Tinkercad
Autodesk Tinkercad
Ultimaker Cura
Arduino IDE
Arduino IDE
Seeed Studion - Fusion PCBA

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Reflow Oven
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
UART-USB Programmer

Story

Read more

Schematics

Bill of Materials (BOM)

This .xlsx file is a spreadsheet with all parts needed for this project, formatted for Seeed Studio's Fusion PCBA Service.

Gerber file

This gerber file is used by Seeed Studio's Fusion PCBA service for manufacturing the PCB.

Schematic

3D Render

Code

ESP8266_LoRa-E5_Test_2.ino

C/C++
// Seeed Studio Wio-E5 LoRaWAN module, controlled 
// via AT command protocol by Espressif ESP8266-12F
// microcontroller. Integrated charge, boost, and 
// step down controllers.
//
// Written by Scrapyard Electric, March 2022.

#include "Wire.h"
#include "Adafruit_GFX.h"
#include "SoftwareSerial.h"
#include "Adafruit_SSD1306.h"
#include "Fonts/FreeSans9pt7b.h"

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1

const byte numChars = 64;
char receivedChars[numChars];

boolean newData = false;

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);


void setup() {

    Serial.begin(9600);
    Wire.begin();

if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;);
  }
  delay(200);

  display.display();
  display.clearDisplay();

      display.setTextColor(WHITE);
      display.setCursor(0, 10);
      display.println("Wio-E5 & ESP8266-12F");
      display.setCursor(0, 24);
      display.println(">>>READY");
      display.display();

      delay(2500);

      display.clearDisplay();
      display.display();

}


void loop() {

    recvWithEndMarker();
    showNewData();

Serial.println(" ");

//STEP 1
//New LoRa-E5 Module Details Retrieval
display.clearDisplay();
display.display();
Serial.println("AT+ID=DevEui\r\n");
display.setCursor(0, 0);
display.println("AT+ID=DevEui");
display.display();

delay(3000);

recvWithEndMarker();
showNewData();

delay(1000);

display.clearDisplay();
display.display();
Serial.println("AT+ID=AppEui\r\n");
display.setCursor(0, 0);
display.println("AT+ID=AppEui");
display.display();

delay(3000);

recvWithEndMarker();
showNewData();

delay(1000);

display.clearDisplay();
display.display();
Serial.println("AT+KEY=APPKEY, 853F32595753098372E245A076DFBA79\r\n");
display.setCursor(0, 0);
display.println("AT+KEY=APPKEY");
display.display();

delay(3000);

recvWithEndMarker();
showNewData();

delay(1000);

/*
//STEP 2
//Connect to TTN
display.clearDisplay();
display.display();
Serial.println("AT+DR=AS923\r\n");
display.setCursor(0, 0);
display.println("AT+DR=AS923");
display.display();

delay(1000);

recvWithEndMarker();
showNewData();

delay(1000);

display.clearDisplay();
display.display();
Serial.println("AT+CH=NUM,0-1\r\n");
display.setCursor(0, 0);
display.println("AT+CH=NUM,0-1");
display.display();

delay(1000);

recvWithEndMarker();
showNewData();

delay(1000);

display.clearDisplay();
display.display();
Serial.println("AT+MODE=LWOTAA\r\n");
display.setCursor(0, 0);
display.println("AT+MODE=LWOTAA");
display.display();

delay(1000);

recvWithEndMarker();
showNewData();

delay(1000);

display.clearDisplay();
display.display();
Serial.println("AT+POWER=22, FORCE\r\n");
display.setCursor(0, 0);
display.println("AT+POWER=22, FORCE");
display.display();

delay(1000);

recvWithEndMarker();
showNewData();

delay(1000);

display.clearDisplay();
display.display();
Serial.println("AT+JOIN\r\n");
display.setCursor(0, 0);
display.println("AT+JOIN");
display.display();*/

recvWithEndMarker();
  showNewData();

delay(1000);

recvWithEndMarker();
  showNewData();

delay(1000);

recvWithEndMarker();
  showNewData();

delay(1000);

recvWithEndMarker();
  showNewData();

delay(1000);

recvWithEndMarker();
  showNewData();

delay(1000);

recvWithEndMarker();
  showNewData();

delay(1000);

recvWithEndMarker();
  showNewData();
  
delay(1000);

recvWithEndMarker();
  showNewData();
  
delay(1000);

recvWithEndMarker();
  showNewData();
  
delay(1000);

recvWithEndMarker();
  showNewData();
  
delay(1000);

recvWithEndMarker();
  showNewData();

delay(1000);

//Infinite Loop
int var = 1;

while (var == 1) {
  
  recvWithEndMarker();
  showNewData();

delay(5000);
}

}


void recvWithEndMarker() {
    static byte ndx = 0;
    char endMarker = '\r\n';
    char rc;
    
    while (Serial.available() > 0 && newData == false) {
        rc = Serial.read();

        if (rc != endMarker) {
            receivedChars[ndx] = rc;
            ndx++;
            if (ndx >= numChars) {
                ndx = numChars - 2;
            }
        }
        else {
            receivedChars[ndx] = '\0'; // terminate the string
            ndx = 0;
            newData = true;
        }
    }
}


void showNewData() {
    if (newData == true) {
        Serial.println(receivedChars);
        display.clearDisplay();
        display.setCursor(0, 0);
        display.println(receivedChars);
        display.display();
        newData = false;

        delay(200);

        display.clearDisplay();
    }
}

Credits

scrapyardelectric
2 projects • 4 followers
PCB design, specifically automotive; modifying commercial products; 3D printing. Available for commissioned work. Hobbyist.

Comments