This is example code that can get you started with building your own IR vision robot that communicates over LoRa

Dependencies:   Adafruit-MotorShield Adafruit-PWM-Servo-Driver Adafruit_GFX BufferedSerial MAX17055_EZconfig NEO-6m-GPS SX1276GenericLib USBDeviceHT max32630fthr max77650_charger_sample

Fork of MAX326xxFTHR_LoRa_Example_test by Devin Alexander

Committer:
dev_alexander
Date:
Thu Jul 19 21:13:19 2018 +0000
Revision:
25:1a031add188a
Parent:
22:abca9d17d13d
Child:
29:f7a0e49b826b
Got messages of different sizes to send to each other.  Changed maximum number of bytes per payload to a max value of 255 for more sensor data to be added. Also began debugging the grid eye sensor data acquisition issue.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Helmut64 0:c43b6919ae15 1 /*
Helmut64 17:98f2528e8399 2 * Copyright (c) 2018 Helmut Tschemernjak
Helmut64 0:c43b6919ae15 3 * 30826 Garbsen (Hannover) Germany
Helmut64 0:c43b6919ae15 4 * Licensed under the Apache License, Version 2.0);
Helmut64 0:c43b6919ae15 5 */
Helmut64 0:c43b6919ae15 6
Helmut64 0:c43b6919ae15 7
Helmut64 0:c43b6919ae15 8
Helmut64 0:c43b6919ae15 9 #ifdef TARGET_NUCLEO_L476RG
Helmut64 16:675f4d0ee9e9 10 #define FEATURE_LORA
Helmut64 16:675f4d0ee9e9 11
Helmut64 9:2f9e4be4d046 12 #elif TARGET_DISCO_L072CZ_LRWAN1
Helmut64 16:675f4d0ee9e9 13 #define FEATURE_LORA
Helmut64 16:675f4d0ee9e9 14
Helmut64 16:675f4d0ee9e9 15 #elif TARGET_STM32L432KC
Helmut64 16:675f4d0ee9e9 16 #define HELTEC_STM32L4
Helmut64 16:675f4d0ee9e9 17 #define FEATURE_LORA
Helmut64 16:675f4d0ee9e9 18 #define FEATURE_USBSERIAL
Helmut64 0:c43b6919ae15 19 #endif
Helmut64 0:c43b6919ae15 20
Helmut64 0:c43b6919ae15 21
Helmut64 0:c43b6919ae15 22
Helmut64 13:5a32a1922fbc 23 #if defined(TARGET_DISCO_L072CZ_LRWAN1)
Helmut64 17:98f2528e8399 24 #define LED LED2
Helmut64 0:c43b6919ae15 25
Helmut64 0:c43b6919ae15 26 #define LORA_SPI_MOSI PA_7
Helmut64 0:c43b6919ae15 27 #define LORA_SPI_MISO PA_6
Helmut64 0:c43b6919ae15 28 #define LORA_SPI_SCLK PB_3
Helmut64 0:c43b6919ae15 29 #define LORA_CS PA_15
Helmut64 0:c43b6919ae15 30 #define LORA_RESET PC_0
Helmut64 0:c43b6919ae15 31 #define LORA_DIO0 PB_4
Helmut64 0:c43b6919ae15 32 #define LORA_DIO1 PB_1
Helmut64 0:c43b6919ae15 33 #define LORA_DIO2 PB_0
Helmut64 13:5a32a1922fbc 34 #define LORA_DIO3 PC_13
Helmut64 0:c43b6919ae15 35 #define LORA_DIO4 PA_5
Helmut64 0:c43b6919ae15 36 #define LORA_DIO5 PA_4
Helmut64 0:c43b6919ae15 37 #define LORA_ANT_RX PA_1
Helmut64 0:c43b6919ae15 38 #define LORA_ANT_TX PC_2
Helmut64 0:c43b6919ae15 39 #define LORA_ANT_BOOST PC_1
Helmut64 0:c43b6919ae15 40 #define LORA_TCXO PA_12 // 32 MHz
Helmut64 0:c43b6919ae15 41
Helmut64 0:c43b6919ae15 42
Helmut64 0:c43b6919ae15 43
Helmut64 0:c43b6919ae15 44 #elif defined(TARGET_NUCLEO_L476RG) // using the RFM95 board
Helmut64 0:c43b6919ae15 45
Helmut64 0:c43b6919ae15 46 #define LORA_SPI_MOSI PC_12
Helmut64 0:c43b6919ae15 47 #define LORA_SPI_MISO PC_11
Helmut64 0:c43b6919ae15 48 #define LORA_SPI_SCLK PC_10
Helmut64 0:c43b6919ae15 49 #define LORA_CS PA_0
Helmut64 0:c43b6919ae15 50 #define LORA_RESET PA_1
Helmut64 0:c43b6919ae15 51 #define LORA_DIO0 PD_2 // DIO0=TxDone/RXDone
Helmut64 0:c43b6919ae15 52 #define LORA_DIO1 PB_7 //
Helmut64 0:c43b6919ae15 53 #define LORA_DIO2 PC_14 // DIO2=FhssChangeChannel
Helmut64 0:c43b6919ae15 54 #define LORA_DIO3 PC_15 // DIO3=CADDone
Helmut64 0:c43b6919ae15 55 #define LORA_DIO4 PH_0 // ????
Helmut64 0:c43b6919ae15 56 #define LORA_DIO5 NC // unused?
Helmut64 0:c43b6919ae15 57
Helmut64 16:675f4d0ee9e9 58 #elif defined (HELTEC_STM32L4)
Helmut64 16:675f4d0ee9e9 59
Helmut64 17:98f2528e8399 60 #define USER_BUTTON PH_3 // boot pin
Helmut64 17:98f2528e8399 61 #define LED PB_0 // red
Helmut64 17:98f2528e8399 62 #define LED2 PB_1 // green
Helmut64 18:d5527ce82e6b 63 #define LED1 LED
Helmut64 17:98f2528e8399 64
Helmut64 16:675f4d0ee9e9 65 #define POWER_VEXT PA_3
Helmut64 16:675f4d0ee9e9 66 #define POWER_VEXT_ON 0
Helmut64 16:675f4d0ee9e9 67 #define POWER_VEXT_OFF 1
Helmut64 16:675f4d0ee9e9 68
Helmut64 17:98f2528e8399 69
Helmut64 16:675f4d0ee9e9 70 #define LORA_SPI_MOSI PA_7
Helmut64 16:675f4d0ee9e9 71 #define LORA_SPI_MISO PA_6
Helmut64 18:d5527ce82e6b 72 #define LORA_SPI_SCLK PA_5
Helmut64 16:675f4d0ee9e9 73 #define LORA_CS PA_4
Helmut64 16:675f4d0ee9e9 74 #define LORA_RESET PA_1
Helmut64 16:675f4d0ee9e9 75 #define LORA_DIO0 PA_0 // DIO0=TxDone/RXDone/CADDone
Helmut64 16:675f4d0ee9e9 76 #define LORA_DIO1 NC //
Helmut64 16:675f4d0ee9e9 77 #define LORA_DIO2 NC //
Helmut64 16:675f4d0ee9e9 78 #define LORA_DIO3 NC //
Helmut64 16:675f4d0ee9e9 79 #define LORA_DIO4 NC //
Helmut64 16:675f4d0ee9e9 80 #define LORA_DIO5 NC //
Helmut64 16:675f4d0ee9e9 81
Helmut64 15:c70f65d606c4 82 #elif defined(TARGET_NUCLEO_L432KC) // using the RFM95 board
Helmut64 15:c70f65d606c4 83
Helmut64 17:98f2528e8399 84 // #define LED PB_3 // green
Helmut64 17:98f2528e8399 85 #define LED PB_5 // green
Helmut64 15:c70f65d606c4 86
Helmut64 17:98f2528e8399 87 #define LORA_SPI_MOSI PA_7
Helmut64 17:98f2528e8399 88 #define LORA_SPI_MISO PA_6
Helmut64 17:98f2528e8399 89 #define LORA_SPI_SCLK PB_5
Helmut64 17:98f2528e8399 90 #define LORA_CS PA_4
Helmut64 15:c70f65d606c4 91 #define LORA_RESET PA_1
Helmut64 17:98f2528e8399 92 #define LORA_DIO0 PA_0 // DIO0=TxDone/RXDone/CADDone
Helmut64 15:c70f65d606c4 93 #define LORA_DIO1 NC //
Helmut64 15:c70f65d606c4 94 #define LORA_DIO2 NC //
Helmut64 15:c70f65d606c4 95 #define LORA_DIO3 NC //
Helmut64 15:c70f65d606c4 96 #define LORA_DIO4 NC //
Helmut64 16:675f4d0ee9e9 97 #define LORA_DIO5 NC //
Helmut64 16:675f4d0ee9e9 98
Helmut64 17:98f2528e8399 99
dev_alexander 19:9f035b9e65ec 100 #elif defined(TARGET_NUCLEO_F411RE) // using the RFM95 board
dev_alexander 19:9f035b9e65ec 101
dev_alexander 19:9f035b9e65ec 102 #define LED LED1 // green
dev_alexander 19:9f035b9e65ec 103
dev_alexander 19:9f035b9e65ec 104 #define LORA_SPI_MOSI PC_12
dev_alexander 19:9f035b9e65ec 105 #define LORA_SPI_MISO PC_11
dev_alexander 19:9f035b9e65ec 106 #define LORA_SPI_SCLK PC_10
dev_alexander 19:9f035b9e65ec 107 #define LORA_CS PA_0
dev_alexander 19:9f035b9e65ec 108 #define LORA_RESET PA_1
dev_alexander 19:9f035b9e65ec 109 #define LORA_DIO0 PD_2 // DIO0=TxDone/RXDone
dev_alexander 19:9f035b9e65ec 110 #define LORA_DIO1 PB_7 //
dev_alexander 19:9f035b9e65ec 111 #define LORA_DIO2 PC_14 // DIO2=FhssChangeChannel
dev_alexander 19:9f035b9e65ec 112 #define LORA_DIO3 PC_15 // DIO3=CADDone
dev_alexander 19:9f035b9e65ec 113 #define LORA_DIO4 PH_0 // ????
dev_alexander 19:9f035b9e65ec 114 #define LORA_DIO5 NC // unused?
dev_alexander 19:9f035b9e65ec 115
dev_alexander 19:9f035b9e65ec 116
dev_alexander 19:9f035b9e65ec 117 #elif defined(TARGET_MAX32630FTHR) // using the RFM95 board
dev_alexander 19:9f035b9e65ec 118
dev_alexander 19:9f035b9e65ec 119 // #define LED PB_3 // green
dev_alexander 19:9f035b9e65ec 120 #define LED LED2 // green
dev_alexander 19:9f035b9e65ec 121
dev_alexander 19:9f035b9e65ec 122 #define LORA_SPI_MOSI P5_1
dev_alexander 19:9f035b9e65ec 123 #define LORA_SPI_MISO P5_2
dev_alexander 19:9f035b9e65ec 124 #define LORA_SPI_SCLK P5_0
dev_alexander 22:abca9d17d13d 125 // This is because the Server uses different pins
dev_alexander 25:1a031add188a 126 // #define LORA_CS P5_3
dev_alexander 25:1a031add188a 127 // #define LORA_RESET P5_4
dev_alexander 25:1a031add188a 128 // #define LORA_DIO0 P5_5 // DIO0=TxDone/RXDone/CADDone
dev_alexander 25:1a031add188a 129 #define LORA_CS P3_0
dev_alexander 25:1a031add188a 130 #define LORA_RESET P3_1
dev_alexander 25:1a031add188a 131 #define LORA_DIO0 P3_2 // DIO0=TxDone/RXDone/CADDone
dev_alexander 19:9f035b9e65ec 132 #define LORA_DIO1 NC //
dev_alexander 19:9f035b9e65ec 133 #define LORA_DIO2 NC //
dev_alexander 19:9f035b9e65ec 134 #define LORA_DIO3 NC //
dev_alexander 19:9f035b9e65ec 135 #define LORA_DIO4 NC //
dev_alexander 19:9f035b9e65ec 136 #define LORA_DIO5 NC //
dev_alexander 19:9f035b9e65ec 137
dev_alexander 19:9f035b9e65ec 138 #elif defined(TARGET_MAX32620FTHR) // using the RFM95 board
dev_alexander 19:9f035b9e65ec 139
dev_alexander 19:9f035b9e65ec 140 // #define LED PB_3 // green
dev_alexander 19:9f035b9e65ec 141 #define LED LED2 // green
dev_alexander 19:9f035b9e65ec 142
dev_alexander 19:9f035b9e65ec 143 #define LORA_SPI_MOSI P5_1
dev_alexander 19:9f035b9e65ec 144 #define LORA_SPI_MISO P5_2
dev_alexander 19:9f035b9e65ec 145 #define LORA_SPI_SCLK P5_0
dev_alexander 22:abca9d17d13d 146 //This is because the Client uses different pins
dev_alexander 22:abca9d17d13d 147 #define LORA_CS P3_0
dev_alexander 22:abca9d17d13d 148 #define LORA_RESET P3_1
dev_alexander 22:abca9d17d13d 149 #define LORA_DIO0 P3_2 // DIO0=TxDone/RXDone/CADDone
dev_alexander 19:9f035b9e65ec 150 #define LORA_DIO1 NC //
dev_alexander 19:9f035b9e65ec 151 #define LORA_DIO2 NC //
dev_alexander 19:9f035b9e65ec 152 #define LORA_DIO3 NC //
dev_alexander 19:9f035b9e65ec 153 #define LORA_DIO4 NC //
dev_alexander 19:9f035b9e65ec 154 #define LORA_DIO5 NC //
dev_alexander 19:9f035b9e65ec 155
dev_alexander 19:9f035b9e65ec 156
dev_alexander 19:9f035b9e65ec 157
dev_alexander 22:abca9d17d13d 158
Helmut64 16:675f4d0ee9e9 159 #else
Helmut64 16:675f4d0ee9e9 160
Helmut64 16:675f4d0ee9e9 161 #error "unknown board"
Helmut64 16:675f4d0ee9e9 162
Helmut64 0:c43b6919ae15 163 #endif