{"product_id":"2pcs-lilygo-ttgo-lora-sx1278-esp32-0-96-oled-display-module-16-mt-bytes-128-mt-bit-433mhz_1270420","title":"2Pcs LILYGO TTGO LORA SX1278 ESP32 0.96 OLED Display Module 16 Mt Bytes 128 Mt bit) 433Mhz","description":"\u003ch2\u003e   \u003cstrong\u003e\u003cspan style=\"font-size: 16px;\"\u003eProduct Description:\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e  \u003cspan style=\"font-size: 14px;\"\u003eThe 433MHz antenna must be used in conjunction with the IPEX interface (if the antenna is not connected, it may damage the LoRa chip)\u003cbr\u003e  Lithium battery charging and discharging circuit, when the battery is full, the blue LED will stop working. When using, pay attention to the positive and negative of the battery, otherwise it will be damaged.\u003cbr\u003e  Using the IO port touch screen touch signal input, you need to add the 100nF pull-down capacitor at this pin!\u003c\/span\u003e\u003cbr style=\"font-size: 13.3333px;\"\u003e  \u003cbr style=\"font-size: 13.3333px;\"\u003e  \u003cdiv style=\"font-size: 13.3333px;\"\u003e   \u003cspan style=\"font-size: 14px;\"\u003e\u003cspan style=\"font-size: 16px;\"\u003e\u003cstrong\u003eExample:\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cbr\u003e   \u003cbr\u003e   \u003cspan style=\"font-size: 14px;\"\u003eThis product is a SX1278 chip based on ESP32 WIFI increased OLED, namely LoRa remote modem, 433MHz frequency, high sensitivity is about -148dBm, +20dBm output power, high reliability, long transmission distance.\u003cbr\u003e   The onboard 16 Mt bytes (128 Mt bit), Wi-Fi antenna, 0.96 inch blue OLED display, lithium battery charging circuit, CP2102 interface and USB serial chip, the perfect support for  development environment, can be used for program verification and product development is very simple and fast.\u003cbr\u003e   Operating voltage: 3.3V to 7V\u003cbr\u003e   Operating temperature range: -40 degrees C to +90 degrees C\u003cbr\u003e   Support for Sniffer, Station, softAP, and Wi-Fi Direct modes\u003cbr\u003e   Data rates: 150 Mbps@11n HT40, 72 Mbps@11n HT20, 54 Mbps@11g, 11 Mbps@11b\u003cbr\u003e   Transmit power: 19.5 dBm@11b, 16.5 dBm@11g, 15.5 dBm@11n\u003cbr\u003e   Receiver sensitivity up to -98 dBm\u003cbr\u003e   UDP sustained throughput of 135 Mbps\u003c\/span\u003e\n\u003c\/div\u003e  \u003cdiv style=\"font-size: 13.3333px;\"\u003e    \u003c\/div\u003e  \u003cdiv style=\"font-size: 13.3333px;\"\u003e   \u003c\/div\u003e  \u003cdiv style=\"font-size: 13.3333px;\"\u003e    \u003c\/div\u003e  \u003ch1\u003e   \u003cstrong\u003e\u003cspan style=\"font-size: 16px;\"\u003ePin reference description:\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h1\u003e  \u003cbr\u003e  \u003cp style=\"font-size: 13.3333px;\"\u003e   \u003cspan style=\"font-size: 14px;\"\u003eFor more product information, click https:\/\/drive.google.com\/file\/d\/1L8ll-DeAC2SATBZn0-KbSaZsrinbnXkF\/view\u003c\/span\u003e\u003c\/p\u003e  \u003ch1\u003e   \u003cbr\u003e   \u003cstrong\u003e\u003cspan style=\"font-size: 16px;\"\u003eTest details:\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h1\u003e  \u003cbr style=\"font-size: 13.3333px;\"\u003e  \u003cp style=\"font-size: 13.3333px;\"\u003e   \u003c\/p\u003e  \u003cp style=\"font-size: 13.3333px;\"\u003e   \u003cspan style=\"font-size: 13.3333px;\"\u003eClick links for more details: https:\/\/eyun.baidu.com\/s\/3hsiTNgg\u003c\/span\u003e\u003c\/p\u003e  \u003cp style=\"font-size: 13.3333px;\"\u003e   \u003cspan style=\"font-size: 14px; color: rgb(255, 0, 0);\"\u003eNote:This product does not include the battery.\u003c\/span\u003e\u003c\/p\u003e  \u003cp style=\"font-size: 13.3333px;\"\u003e   \u003cstrong style=\"font-size: 16px;\"\u003ePackage included:\u003c\/strong\u003e\u003c\/p\u003e  \u003cp style=\"font-size: 13.3333px;\"\u003e   \u003cspan style=\"font-size: 14px;\"\u003e2 x ESP32 OLED\u003c\/span\u003e\u003cbr\u003e   \u003cspan style=\"font-size: 14px;\"\u003e2 x Line\u003c\/span\u003e\u003cbr\u003e   \u003cspan style=\"font-size: 14px;\"\u003e4 x pin\u003c\/span\u003e\u003cbr\u003e   \u003cspan style=\"font-size: 14px;\"\u003e2 x 433m Spring Antenna\u003c\/span\u003e\u003c\/p\u003e  \u003cp style=\"font-size: 13.3333px;\"\u003e   \u003cspan style=\"font-size: 16px;\"\u003e\u003cstrong\u003eFor example One:\u003c\/strong\u003e\u003c\/span\u003e\u003cbr\u003e   \u003cbr\u003e   \u003cspan style=\"font-size: 14px;\"\u003e(1) LoRaSender\u003cbr\u003e   #include\u003cbr\u003e   #include\u003cbr\u003e   #include\u003cbr\u003e   \/\/ GPIO5  -- SX1278's SCK\u003cbr\u003e   \/\/ GPIO19 -- SX1278's MISO\u003cbr\u003e   \/\/ GPIO27 -- SX1278's MOSI\u003cbr\u003e   \/\/ GPIO18 -- SX1278's CS\u003cbr\u003e   \/\/ GPIO14 -- SX1278's RESET\u003cbr\u003e   \/\/ GPIO26 -- SX1278's IRQ(Interrupt Request)\u003cbr\u003e    \u003cbr\u003e   #define SS      18\u003cbr\u003e   #define RST     14\u003cbr\u003e   #define DI0     26\u003cbr\u003e   #define BAND    433E6  \u003cbr\u003e   int counter = 0;\u003cbr\u003e    \u003cbr\u003e   void setup() {\u003cbr\u003e     pinMode(25,OUTPUT); \/\/Send success, LED will bright 1 second\u003cbr\u003e     \u003cbr\u003e     Serial.begin(115200);\u003cbr\u003e     while (!Serial); \/\/If just the the basic function, must connect to a computer\u003cbr\u003e     \u003cbr\u003e     SPI.begin(5,19,27,18);\u003cbr\u003e     LoRa.setPins(SS,RST,DI0);\u003cbr\u003e   \/\/  Serial.println(\"LoRa Sender\");\u003cbr\u003e    \u003cbr\u003e     if (!LoRa.begin(BAND)) {\u003cbr\u003e       Serial.println(\"Starting LoRa failed!\");\u003cbr\u003e       while (1);\u003cbr\u003e     }\u003cbr\u003e     Serial.println(\"LoRa Initial OK!\");\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void loop() {\u003cbr\u003e     Serial.print(\"Sending packet: \");\u003cbr\u003e     Serial.println(counter);\u003cbr\u003e    \u003cbr\u003e     \/\/ send packet\u003cbr\u003e     LoRa.beginPacket();\u003cbr\u003e     LoRa.print(\"hello \");\u003cbr\u003e     LoRa.print(counter);\u003cbr\u003e     LoRa.endPacket();\u003cbr\u003e    \u003cbr\u003e     counter++;\u003cbr\u003e     digitalWrite(25, HIGH);   \/\/ turn the LED on (HIGH is the voltage level)\u003cbr\u003e     delay(1000);                       \/\/ wait for a second\u003cbr\u003e     digitalWrite(25, LOW);    \/\/ turn the LED off by making the voltage LOW\u003cbr\u003e     delay(1000);                       \/\/ wait for a second\u003cbr\u003e     \u003cbr\u003e     delay(3000);\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   For example Two\u003cbr\u003e   (2)LoRaReceiver\u003cbr\u003e   #include\u003cbr\u003e   #include\u003cbr\u003e    \u003cbr\u003e    \u003cbr\u003e   \/\/ GPIO5  -- SX1278's SCK\u003cbr\u003e   \/\/ GPIO19 -- SX1278's MISO\u003cbr\u003e   \/\/ GPIO27 -- SX1278's MOSI\u003cbr\u003e   \/\/ GPIO18 -- SX1278's CS\u003cbr\u003e   \/\/ GPIO14 -- SX1278's RESET\u003cbr\u003e   \/\/ GPIO26 -- SX1278's IRQ(Interrupt Request)\u003cbr\u003e    \u003cbr\u003e   #define SS      18\u003cbr\u003e   #define RST     14\u003cbr\u003e   #define DI0     26\u003cbr\u003e   #define BAND    433E6\u003cbr\u003e    \u003cbr\u003e   void setup() {\u003cbr\u003e     Serial.begin(115200);\u003cbr\u003e     while (!Serial); \/\/if just the the basic function, must connect to a computer\u003cbr\u003e     delay(1000);\u003cbr\u003e     \u003cbr\u003e     Serial.println(\"LoRa Receiver\");\u003cbr\u003e     \u003cbr\u003e     SPI.begin(5,19,27,18);\u003cbr\u003e     LoRa.setPins(SS,RST,DI0);\u003cbr\u003e     \u003cbr\u003e     if (!LoRa.begin(BAND)) {\u003cbr\u003e       Serial.println(\"Starting LoRa failed!\");\u003cbr\u003e       while (1);\u003cbr\u003e     }\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void loop() {\u003cbr\u003e     \/\/ try to parse packet\u003cbr\u003e     int packetSize = LoRa.parsePacket();\u003cbr\u003e     if (packetSize) {\u003cbr\u003e   \/\/ received a packet\u003cbr\u003e       Serial.print(\"Received packet '\");\u003cbr\u003e    \u003cbr\u003e       \/\/ read packet\u003cbr\u003e       while (LoRa.available()) {\u003cbr\u003e         Serial.print((char)LoRa.read());\u003cbr\u003e       }\u003cbr\u003e    \u003cbr\u003e       \/\/ print RSSI of packet\u003cbr\u003e       Serial.print(\"' with RSSI \");\u003cbr\u003e       Serial.println(LoRa.packetRssi());\u003cbr\u003e     }\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   For example three\u003cbr\u003e   (3)LoRaReceiverCallback\u003cbr\u003e   #include\u003cbr\u003e   #include\u003cbr\u003e    \u003cbr\u003e    \u003cbr\u003e    \u003cbr\u003e   \/\/ GPIO5  -- SX1278's SCK\u003cbr\u003e   \/\/ GPIO19 -- SX1278's MISO\u003cbr\u003e   \/\/ GPIO27 -- SX1278's MOSI\u003cbr\u003e   \/\/ GPIO18 -- SX1278's CS\u003cbr\u003e   \/\/ GPIO14 -- SX1278's RESET\u003cbr\u003e   \/\/ GPIO26 -- SX1278's IRQ(Interrupt Request)\u003cbr\u003e    \u003cbr\u003e   #define SS      18\u003cbr\u003e   #define RST     14\u003cbr\u003e   #define DI0     26\u003cbr\u003e   #define BAND    433E6\u003cbr\u003e    \u003cbr\u003e   void setup() {\u003cbr\u003e     Serial.begin(115200);\u003cbr\u003e     while (!Serial); \/\/if just the the basic function, must connect to a computer\u003cbr\u003e    \u003cbr\u003e     SPI.begin(5,19,27,18);\u003cbr\u003e     LoRa.setPins(SS,RST,DI0);\u003cbr\u003e     \u003cbr\u003e     Serial.println(\"LoRa Receiver Callback\");\u003cbr\u003e    \u003cbr\u003e     if (!LoRa.begin(BAND)) {\u003cbr\u003e       Serial.println(\"Starting LoRa failed!\");\u003cbr\u003e       while (1);\u003cbr\u003e    }\u003cbr\u003e    \u003cbr\u003e     \/\/ register the receive callback\u003cbr\u003e     LoRa.onReceive(onReceive);\u003cbr\u003e    \u003cbr\u003e     \/\/ put the radio into receive mode\u003cbr\u003e     LoRa.receive();\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void loop() {\u003cbr\u003e     \/\/ do nothing\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void onReceive(int packetSize) {\u003cbr\u003e     \/\/ received a packet\u003cbr\u003e     Serial.print(\"Received packet '\");\u003cbr\u003e    \u003cbr\u003e     \/\/ read packet\u003cbr\u003e     for (int i = 0; i \u0026lt; packetSize; i++) {\u003cbr\u003e       Serial.print((char)LoRa.read());\u003cbr\u003e     }\u003cbr\u003e    \u003cbr\u003e     \/\/ print RSSI of packet\u003cbr\u003e     Serial.print(\"' with RSSI \");\u003cbr\u003e     Serial.println(LoRa.packetRssi());\u003cbr\u003e   }\u003cbr\u003e   ?\u003cbr\u003e   For example four\u003cbr\u003e   #include  \/\/ Only needed for  1.6.5 and earlier\u003cbr\u003e   #include \"SSD1306.h\" \/\/ alias for `#include \"SSD1306Wire.h\"`\u003cbr\u003e   #include \"images.h\"\u003cbr\u003e    \u003cbr\u003e   \/\/OLED pins to ESP32 0.96OLEDGPIOs via this connecthin:\u003cbr\u003e   \/\/OLED_SDA -- GPIO4\u003cbr\u003e   \/\/OLED_SCL -- GPIO15\u003cbr\u003e   \/\/OLED_RST -- GPIO16\u003cbr\u003e    \u003cbr\u003e   SSD1306  display(0x3c, 4, 15);\u003cbr\u003e    \u003cbr\u003e   #define DEMO_DURATION 3000\u003cbr\u003e   typedef void (*Demo)(void);\u003cbr\u003e   int demoMode = 0;\u003cbr\u003e   int counter = 1;\u003cbr\u003e    \u003cbr\u003e   void setup() {\u003cbr\u003e     pinMode(16,OUTPUT);\u003cbr\u003e     digitalWrite(16, LOW);    \/\/ set GPIO16 low to reset OLED\u003cbr\u003e     delay(50);\u003cbr\u003e     digitalWrite(16, HIGH); \/\/ while OLED is running, must set GPIO16 in high\u003cbr\u003e     \u003cbr\u003e     Serial.begin(115200);\u003cbr\u003e     Serial.println();\u003cbr\u003e     Serial.println();\u003cbr\u003e    \u003cbr\u003e    \u003cbr\u003e     \/\/ Initialising the UI will init the display too.\u003cbr\u003e     display.init();\u003cbr\u003e    \u003cbr\u003e     display.flipScreenVertically();\u003cbr\u003e     display.setFont(ArialMT_Plain_10);\u003cbr\u003e    \u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void drawFontFaceDemo() {\u003cbr\u003e       \/\/ Font Demo1\u003cbr\u003e       \/\/ create more fonts at http:\/\/oleddisplay.squix.ch\/\u003cbr\u003e       display.setTextAlignment(TEXT_ALIGN_LEFT);\u003cbr\u003e       display.setFont(ArialMT_Plain_10);\u003cbr\u003e       display.drawString(0, 0, \"Hello world\");\u003cbr\u003e       display.setFont(ArialMT_Plain_16);\u003cbr\u003e       display.drawString(0, 10, \"Hello world\");\u003cbr\u003e       display.setFont(ArialMT_Plain_24);\u003cbr\u003e       display.drawString(0, 26, \"Hello world\");\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void drawTextFlowDemo() {\u003cbr\u003e       display.setFont(ArialMT_Plain_10);\u003cbr\u003e       display.setTextAlignment(TEXT_ALIGN_LEFT);\u003cbr\u003e       display.drawStringMaxWidth(0, 0, 128,\u003cbr\u003e         \"Lorem ipsumn dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore.\" );\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void drawTextAlignmentDemo() {\u003cbr\u003e       \/\/ Text alignment demo\u003cbr\u003e   display.setFont(ArialMT_Plain_10);\u003cbr\u003e    \u003cbr\u003e     \/\/ The coordinates define the left starting point of the text\u003cbr\u003e     display.setTextAlignment(TEXT_ALIGN_LEFT);\u003cbr\u003e     display.drawString(0, 10, \"Left aligned (0,10)\");\u003cbr\u003e    \u003cbr\u003e     \/\/ The coordinates define the center of the text\u003cbr\u003e     display.setTextAlignment(TEXT_ALIGN_CENTER);\u003cbr\u003e     display.drawString(64, 22, \"Center aligned (64,22)\");\u003cbr\u003e    \u003cbr\u003e     \/\/ The coordinates define the right end of the text\u003cbr\u003e     display.setTextAlignment(TEXT_ALIGN_RIGHT);\u003cbr\u003e     display.drawString(128, 33, \"Right aligned (128,33)\");\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void drawRectDemo() {\u003cbr\u003e         \/\/ Draw a pixel at given position\u003cbr\u003e       for (int i = 0; i \u0026lt; 10; i++) {\u003cbr\u003e         display.setPixel(i, i);\u003cbr\u003e         display.setPixel(10 - i, i);\u003cbr\u003e       }\u003cbr\u003e       display.drawRect(12, 12, 20, 20);\u003cbr\u003e    \u003cbr\u003e       \/\/ Fill the rectangle\u003cbr\u003e       display.fillRect(14, 14, 17, 17);\u003cbr\u003e    \u003cbr\u003e       \/\/ Draw a line horizontally\u003cbr\u003e       display.drawHorizontalLine(0, 40, 20);\u003cbr\u003e    \u003cbr\u003e       \/\/ Draw a line horizontally\u003cbr\u003e       display.drawVerticalLine(40, 0, 20);\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void drawCircleDemo() {\u003cbr\u003e     for (int i=1; i \u0026lt; 8; i++) {\u003cbr\u003e       display.setColor(WHITE);\u003cbr\u003e       display.drawCircle(32, 32, i*3);\u003cbr\u003e       if (i % 2 == 0) {\u003cbr\u003e         display.setColor(BLACK);\u003cbr\u003e       }\u003cbr\u003e       display.fillCircle(96, 32, 32 - i* 3);\u003cbr\u003e     }\u003cbr\u003e   }\u003cbr\u003e   void drawProgressBarDemo() {\u003cbr\u003e     int progress = (counter \/ 5) % 100;\u003cbr\u003e     \/\/ draw the progress bar\u003cbr\u003e     display.drawProgressBar(0, 32, 120, 10, progress);\u003cbr\u003e    \u003cbr\u003e     \/\/ draw the percentage as String\u003cbr\u003e     display.setTextAlignment(TEXT_ALIGN_CENTER);\u003cbr\u003e     display.drawString(64, 15, String(progress) + \"%\");\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   void drawImageDemo() {\u003cbr\u003e       \/\/ see http:\/\/blog.squix.org\/2015\/05\/esp8266-nodemcu-how-to-create-xbm.html\u003cbr\u003e       \/\/ on how to create xbm files\u003cbr\u003e       display.drawXbm(34, 14, WiFi_Logo_width, WiFi_Logo_height, WiFi_Logo_bits);\u003cbr\u003e   }\u003cbr\u003e    \u003cbr\u003e   Demo demos[] = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};\u003cbr\u003e   int demoLength = (sizeof(demos) \/ sizeof(Demo));\u003cbr\u003e   long timeSinceLastModeSwitch = 0;\u003cbr\u003e    \u003cbr\u003e   void loop() {\u003cbr\u003e     \/\/ clear the display\u003cbr\u003e     display.clear();\u003cbr\u003e     \/\/ draw the current demo method\u003cbr\u003e     demos[demoMode]();\u003cbr\u003e    \u003cbr\u003e     display.setTextAlignment(TEXT_ALIGN_RIGHT);\u003cbr\u003e     display.drawString(10, 128, String(millis()));\u003cbr\u003e     \/\/ write the buffer to the display\u003cbr\u003e     display.display();\u003cbr\u003e    \u003cbr\u003e     if (millis() - timeSinceLastModeSwitch \u0026gt; DEMO_DURATION) {\u003cbr\u003e       demoMode = (demoMode + 1)  % demoLength;\u003cbr\u003e       timeSinceLastModeSwitch = millis();\u003cbr\u003e     }\u003cbr\u003e     counter++;\u003cbr\u003e     delay(10);\u003cbr\u003e   }\u003c\/span\u003e\u003c\/p\u003e  \u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e","brand":"Banggood","offers":[{"title":"Default Title","offer_id":31967754092682,"sku":"U2I-BG-1270420","price":5762.0,"currency_code":"INR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0300\/1588\/1354\/products\/e9ea5570-2d14-4af8-81bf-9688a0d75a73.jpg?v=1580162330","url":"https:\/\/shop2india.com\/products\/2pcs-lilygo-ttgo-lora-sx1278-esp32-0-96-oled-display-module-16-mt-bytes-128-mt-bit-433mhz_1270420","provider":"SHOP2INDIA GATEWAY","version":"1.0","type":"link"}