|
| 1 | +/* |
| 2 | + This is a simple example show the Heltec.LoRa recived data in OLED. |
| 3 | +
|
| 4 | + The onboard OLED display is SSD1306 driver and I2C interface. In order to make the |
| 5 | + OLED correctly operation, you should output a high-low-high(1-0-1) signal by soft- |
| 6 | + ware to OLED's reset pin, the low-level signal at least 5ms. |
| 7 | +
|
| 8 | + OLED pins to ESP32 GPIOs via this connecthin: |
| 9 | + OLED_SDA -- GPIO4 |
| 10 | + OLED_SCL -- GPIO15 |
| 11 | + OLED_RST -- GPIO16 |
| 12 | + |
| 13 | + by Aaron.Lee from HelTec AutoMation, ChengDu, China |
| 14 | + 成都惠利特自动化科技有限公司 |
| 15 | + www.heltec.cn |
| 16 | + |
| 17 | + this project also realess in GitHub: |
| 18 | + https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series |
| 19 | +*/ |
| 20 | +#include "heltec.h" |
| 21 | + |
| 22 | + |
| 23 | +#define BAND 868E6 //you can set band here directly,e.g. 868E6,915E6 |
| 24 | +String rssi = "RSSI --"; |
| 25 | +String packSize = "--"; |
| 26 | +String packet ; |
| 27 | + |
| 28 | + |
| 29 | + |
| 30 | +void LoRaData(){ |
| 31 | + Heltec.display->clear(); |
| 32 | + Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT); |
| 33 | + Heltec.display->setFont(ArialMT_Plain_10); |
| 34 | + Heltec.display->drawString(0 , 15 , "Received "+ packSize + " bytes"); |
| 35 | + Heltec.display->drawStringMaxWidth(0 , 26 , 128, packet); |
| 36 | + Heltec.display->drawString(0, 0, rssi); |
| 37 | + Heltec.display->display(); |
| 38 | +} |
| 39 | + |
| 40 | +void cbk(int packetSize) { |
| 41 | + packet =""; |
| 42 | + packSize = String(packetSize,DEC); |
| 43 | + for (int i = 0; i < packetSize; i++) { packet += (char) LoRa.read(); } |
| 44 | + rssi = "RSSI " + String(LoRa.packetRssi(), DEC) ; |
| 45 | + LoRaData(); |
| 46 | +} |
| 47 | + |
| 48 | +void setup() { |
| 49 | + //WIFI Kit series V1 not support Vext control |
| 50 | + Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/); |
| 51 | + // |
| 52 | + LoRa.setSpreadingFactor(8); |
| 53 | + // put in standby mode |
| 54 | + LoRa.setSignalBandwidth(125E3); |
| 55 | + LoRa.setCodingRate4(4); |
| 56 | + LoRa.setSyncWord(0x12); //0x34 |
| 57 | + LoRa.setPreambleLength(8); |
| 58 | + |
| 59 | + Heltec.display->init(); |
| 60 | + Heltec.display->flipScreenVertically(); |
| 61 | + Heltec.display->setFont(ArialMT_Plain_10); |
| 62 | + |
| 63 | + delay(1500); |
| 64 | + Heltec.display->clear(); |
| 65 | + |
| 66 | + Heltec.display->drawString(0, 0, "Heltec.LoRa Initial success!"); |
| 67 | + Heltec.display->drawString(0, 10, "Wait for incoming data..."); |
| 68 | + Heltec.display->display(); |
| 69 | + delay(1000); |
| 70 | + //LoRa.onReceive(cbk); |
| 71 | + LoRa.receive(); |
| 72 | +} |
| 73 | + |
| 74 | +void loop() { |
| 75 | + int packetSize = LoRa.parsePacket(); |
| 76 | + if (packetSize) { cbk(packetSize); } |
| 77 | + delay(10); |
| 78 | +} |
0 commit comments