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:
Mon Jul 30 05:53:55 2018 +0000
Revision:
32:b108ed6096b0
Parent:
29:f7a0e49b826b
Child:
34:f31a6b53d4ea
Child:
35:bae9b236070b
This revision includes support for a processing python sketch that is borrowed from http://arms22.blog91.fc2.com/blog-entry-600.html that uses grid eye data sent from slave device to the master device that then writes it over serial to a usb port.

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 29:f7a0e49b826b 129 #define LORA_CS P4_7
dev_alexander 29:f7a0e49b826b 130 #define LORA_RESET P3_3
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 32:b108ed6096b0 147 #define LORA_CS P5_3
dev_alexander 32:b108ed6096b0 148 #define LORA_RESET P3_3
dev_alexander 32:b108ed6096b0 149 #define LORA_DIO0 P3_2
dev_alexander 32:b108ed6096b0 150 // #define LORA_CS P3_0
dev_alexander 32:b108ed6096b0 151 // #define LORA_RESET P3_1
dev_alexander 32:b108ed6096b0 152 // #define LORA_DIO0 P3_2 // DIO0=TxDone/RXDone/CADDone
dev_alexander 19:9f035b9e65ec 153 #define LORA_DIO1 NC //
dev_alexander 19:9f035b9e65ec 154 #define LORA_DIO2 NC //
dev_alexander 19:9f035b9e65ec 155 #define LORA_DIO3 NC //
dev_alexander 19:9f035b9e65ec 156 #define LORA_DIO4 NC //
dev_alexander 19:9f035b9e65ec 157 #define LORA_DIO5 NC //
dev_alexander 19:9f035b9e65ec 158
dev_alexander 19:9f035b9e65ec 159
dev_alexander 19:9f035b9e65ec 160
dev_alexander 22:abca9d17d13d 161
Helmut64 16:675f4d0ee9e9 162 #else
Helmut64 16:675f4d0ee9e9 163
Helmut64 16:675f4d0ee9e9 164 #error "unknown board"
Helmut64 16:675f4d0ee9e9 165
Helmut64 0:c43b6919ae15 166 #endif