esp32 ttgo 보드 관련 정보..

 

 

pin map

 

 

 

 

TTGO 제품중 LORA 가 들어간 제품에 대한 github

https://github.com/osresearch/esp32-ttgo

 

 

TTGO 제품중 LORA 가 들어간 제품에 대한  제품정보에 대한 다운로드 link :

https://drive.google.com/file/d/1L8ll-DeAC2SATBZn0-KbSaZsrinbnXkF/view

https://eyun.baidu.com/s/3hsiTNgg

 

 

LORA 참고 소스

 

 ## Hint

Sometimes to program ESP32 via serial you must keep GPIO0 LOW during the programming process

 

For example One

(1)LoRaSender

#include <SPI.h>

#include <LoRa.h>

#include<Arduino.h>

// GPIO5  -- SX1278's SCK

// GPIO19 -- SX1278's MISO

// GPIO27 -- SX1278's MOSI

// GPIO18 -- SX1278's CS

// GPIO14 -- SX1278's RESET

// GPIO26 -- SX1278's IRQ(Interrupt Request)

 

#define SS      18

#define RST     14

#define DI0     26

#define BAND    433E6  

int counter = 0;

 

void setup() {

  pinMode(25,OUTPUT); //Send success, LED will bright 1 second

  

  Serial.begin(115200);

  while (!Serial); //If just the the basic function, must connect to a computer

  

  SPI.begin(5,19,27,18);

  LoRa.setPins(SS,RST,DI0);

//  Serial.println("LoRa Sender");

 

  if (!LoRa.begin(BAND)) {

    Serial.println("Starting LoRa failed!");

    while (1);

  }

  Serial.println("LoRa Initial OK!");

}

 

void loop() {

  Serial.print("Sending packet: ");

  Serial.println(counter);

 

  // send packet

  LoRa.beginPacket();

  LoRa.print("hello ");

  LoRa.print(counter);

  LoRa.endPacket();

 

  counter++;

  digitalWrite(25, HIGH);   // turn the LED on (HIGH is the voltage level)

  delay(1000);                       // wait for a second

  digitalWrite(25, LOW);    // turn the LED off by making the voltage LOW

  delay(1000);                       // wait for a second

  

  delay(3000);

}

 

For example Two

(2)LoRaReceiver

#include <SPI.h>

#include <LoRa.h>

 

 

// GPIO5  -- SX1278's SCK

// GPIO19 -- SX1278's MISO

// GPIO27 -- SX1278's MOSI

// GPIO18 -- SX1278's CS

// GPIO14 -- SX1278's RESET

// GPIO26 -- SX1278's IRQ(Interrupt Request)

 

#define SS      18

#define RST     14

#define DI0     26

#define BAND    433E6

 

void setup() {

  Serial.begin(115200);

  while (!Serial); //if just the the basic function, must connect to a computer

  delay(1000);

  

  Serial.println("LoRa Receiver");

  

  SPI.begin(5,19,27,18);

  LoRa.setPins(SS,RST,DI0);

  

  if (!LoRa.begin(BAND)) {

    Serial.println("Starting LoRa failed!");

    while (1);

  }

}

 

void loop() {

  // try to parse packet

  int packetSize = LoRa.parsePacket();

  if (packetSize) {

// received a packet

    Serial.print("Received packet '");

 

    // read packet

    while (LoRa.available()) {

      Serial.print((char)LoRa.read());

    }

 

    // print RSSI of packet

    Serial.print("' with RSSI ");

    Serial.println(LoRa.packetRssi());

  }

}

 

 

For example three

(3)LoRaReceiverCallback

#include <SPI.h>

#include <LoRa.h>

 

 

 

// GPIO5  -- SX1278's SCK

// GPIO19 -- SX1278's MISO

// GPIO27 -- SX1278's MOSI

// GPIO18 -- SX1278's CS

// GPIO14 -- SX1278's RESET

// GPIO26 -- SX1278's IRQ(Interrupt Request)

 

#define SS      18

#define RST     14

#define DI0     26

#define BAND    433E6

 

void setup() {

  Serial.begin(115200);

  while (!Serial); //if just the the basic function, must connect to a computer

 

  SPI.begin(5,19,27,18);

  LoRa.setPins(SS,RST,DI0);

  

  Serial.println("LoRa Receiver Callback");

 

  if (!LoRa.begin(BAND)) {

    Serial.println("Starting LoRa failed!");

    while (1);

 }

 

  // register the receive callback

  LoRa.onReceive(onReceive);

 

  // put the radio into receive mode

  LoRa.receive();

}

 

void loop() {

  // do nothing

}

 

void onReceive(int packetSize) {

  // received a packet

  Serial.print("Received packet '");

 

  // read packet

  for (int i = 0; i < packetSize; i++) {

    Serial.print((char)LoRa.read());

  }

 

  // print RSSI of packet

  Serial.print("' with RSSI ");

  Serial.println(LoRa.packetRssi());

}

For example four

#include <Wire.h>  // Only needed for Arduino 1.6.5 and earlier

#include "SSD1306.h" // alias for `#include "SSD1306Wire.h"`

#include "images.h"

 

//OLED pins to ESP32 0.96OLEDGPIOs via this connecthin:

//OLED_SDA -- GPIO4

//OLED_SCL -- GPIO15

//OLED_RST -- GPIO16

 

SSD1306  display(0x3c, 4, 15);

 

#define DEMO_DURATION 3000

typedef void (*Demo)(void);

int demoMode = 0;

int counter = 1;

 

void setup() {

  pinMode(16,OUTPUT);

  digitalWrite(16, LOW);    // set GPIO16 low to reset OLED

  delay(50);

  digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high

  

  Serial.begin(115200);

  Serial.println();

  Serial.println();

 

 

  // Initialising the UI will init the display too.

  display.init();

 

  display.flipScreenVertically();

  display.setFont(ArialMT_Plain_10);

 

}

 

void drawFontFaceDemo() {

    // Font Demo1

    // create more fonts at http://oleddisplay.squix.ch/

    display.setTextAlignment(TEXT_ALIGN_LEFT);

    display.setFont(ArialMT_Plain_10);

    display.drawString(0, 0, "Hello world");

    display.setFont(ArialMT_Plain_16);

    display.drawString(0, 10, "Hello world");

    display.setFont(ArialMT_Plain_24);

    display.drawString(0, 26, "Hello world");

}

 

void drawTextFlowDemo() {

    display.setFont(ArialMT_Plain_10);

    display.setTextAlignment(TEXT_ALIGN_LEFT);

    display.drawStringMaxWidth(0, 0, 128,

      "Lorem ipsum\n dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore." );

}

 

void drawTextAlignmentDemo() {

    // Text alignment demo

display.setFont(ArialMT_Plain_10);

 

  // The coordinates define the left starting point of the text

  display.setTextAlignment(TEXT_ALIGN_LEFT);

  display.drawString(0, 10, "Left aligned (0,10)");

 

  // The coordinates define the center of the text

  display.setTextAlignment(TEXT_ALIGN_CENTER);

  display.drawString(64, 22, "Center aligned (64,22)");

 

  // The coordinates define the right end of the text

  display.setTextAlignment(TEXT_ALIGN_RIGHT);

  display.drawString(128, 33, "Right aligned (128,33)");

}

 

void drawRectDemo() {

      // Draw a pixel at given position

    for (int i = 0; i < 10; i++) {

      display.setPixel(i, i);

      display.setPixel(10 - i, i);

    }

    display.drawRect(12, 12, 20, 20);

 

    // Fill the rectangle

    display.fillRect(14, 14, 17, 17);

 

    // Draw a line horizontally

    display.drawHorizontalLine(0, 40, 20);

 

    // Draw a line horizontally

    display.drawVerticalLine(40, 0, 20);

}

 

void drawCircleDemo() {

  for (int i=1; i < 8; i++) {

    display.setColor(WHITE);

    display.drawCircle(32, 32, i*3);

    if (i % 2 == 0) {

      display.setColor(BLACK);

    }

    display.fillCircle(96, 32, 32 - i* 3);

  }

}

void drawProgressBarDemo() {

  int progress = (counter / 5) % 100;

  // draw the progress bar

  display.drawProgressBar(0, 32, 120, 10, progress);

 

  // draw the percentage as String

  display.setTextAlignment(TEXT_ALIGN_CENTER);

  display.drawString(64, 15, String(progress) + "%");

}

 

void drawImageDemo() {

    // see http://blog.squix.org/2015/05/esp8266-nodemcu-how-to-create-xbm.html

    // on how to create xbm files

    display.drawXbm(34, 14, WiFi_Logo_width, WiFi_Logo_height, WiFi_Logo_bits);

}

 

Demo demos[] = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};

int demoLength = (sizeof(demos) / sizeof(Demo));

long timeSinceLastModeSwitch = 0;

 

void loop() {

  // clear the display

  display.clear();

  // draw the current demo method

  demos[demoMode]();

 

  display.setTextAlignment(TEXT_ALIGN_RIGHT);

  display.drawString(10, 128, String(millis()));

  // write the buffer to the display

  display.display();

 

  if (millis() - timeSinceLastModeSwitch > DEMO_DURATION) {

    demoMode = (demoMode + 1)  % demoLength;

    timeSinceLastModeSwitch = millis();

  }

  counter++;

  delay(10);

}

 

---------------------------------------------------------

 

관련 : 아두이노는 아니고 esp32 를 이용한 블루투스 스피커

https://github.com/kodera2t/ESP32_OLED_webradio

 

 

기존 esp8266 소스를 esp32 ttgo 로 변경시 pin map 변경 내용

https://gist.github.com/gabonator/402e09eb1b5afce1e7be228483138071

 

 

 

 

 

 

 

+ Recent posts