LP Long Distance IR Vision Robot

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

Committer:
dev_alexander
Date:
Wed Jul 18 21:25:17 2018 +0000
Revision:
24:e8d03912f303
Parent:
23:f74a50977593
Child:
25:1a031add188a
Modified how buffers are handled in various functions in GenericPingPong.cpp to accommodate for how the buffer sizes for TX and RX are different depending on slave or master status. Still need to finish global_buffers.cpp.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Helmut64 0:c43b6919ae15 1 /*
Helmut64 17:98f2528e8399 2 * Copyright (c) 2018 HELIOS Software GmbH
Helmut64 0:c43b6919ae15 3 * 30826 Garbsen (Hannover) Germany
Helmut64 0:c43b6919ae15 4 * Licensed under the Apache License, Version 2.0);
Helmut64 0:c43b6919ae15 5 */
dev_alexander 21:1b92cabe8a3b 6
dev_alexander 21:1b92cabe8a3b 7 /*
dev_alexander 21:1b92cabe8a3b 8 * For Wiring Instructions, please visit the link below:
dev_alexander 21:1b92cabe8a3b 9 * https://www.hackster.io/DevinAlex64/getting-started-with-the-max32620fthr-and-lora-f9d8dd\
dev_alexander 21:1b92cabe8a3b 10 */
dev_alexander 21:1b92cabe8a3b 11
Helmut64 0:c43b6919ae15 12 #include "main.h"
dev_alexander 23:f74a50977593 13 #include "global_buffers.h"
dev_alexander 23:f74a50977593 14 #include "GridEye.h"
Helmut64 0:c43b6919ae15 15
dev_alexander 23:f74a50977593 16
dev_alexander 23:f74a50977593 17 /* If the board that is compiled is the master device (BLE enabled MAX32630FTHR),
dev_alexander 23:f74a50977593 18 * then it needs this library and needs to be configed in order for the device to
dev_alexander 23:f74a50977593 19 * work with a 3.3volt output instead of a 1.8 volt output.
dev_alexander 23:f74a50977593 20 *
dev_alexander 23:f74a50977593 21 * This is only needed for the MAX32630FTHR. The MAX325620FTHR is exampt from this
dev_alexander 23:f74a50977593 22 * additional setup in the main program.
dev_alexander 23:f74a50977593 23 */
dev_alexander 19:9f035b9e65ec 24 #if defined(TARGET_MAX32630FTHR) // using the RFM95 board
dev_alexander 19:9f035b9e65ec 25 #include "max32630fthr.h"
dev_alexander 19:9f035b9e65ec 26 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
dev_alexander 19:9f035b9e65ec 27 #endif
Helmut64 0:c43b6919ae15 28
Helmut64 17:98f2528e8399 29 DigitalOut myled(LED);
Helmut64 0:c43b6919ae15 30
Helmut64 0:c43b6919ae15 31
dev_alexander 23:f74a50977593 32 #if defined(TARGET_MAX32630FTHR) // Master Device: MAX32630FTHR BLE-to-LoRa Gateway
dev_alexander 23:f74a50977593 33 /* No grid eye object needed. The function the master uses to convert the raw
dev_alexander 23:f74a50977593 34 * data that is sent over from the slave deevice that contains the data from the
dev_alexander 23:f74a50977593 35 * actual grid eye sensor is actually a function that is not part of the grid eye
dev_alexander 23:f74a50977593 36 * class. this is due to the fact that the grid eye class requires n i2c bus to
dev_alexander 23:f74a50977593 37 * be assigned to a phyiscal sensor. In this case, the library for the Grid Eye
dev_alexander 23:f74a50977593 38 * sensor has a support functin that is used to convert data that is aquired from
dev_alexander 23:f74a50977593 39 * the grid eye sensor. So it is not supposed to be a class specific function.
dev_alexander 23:f74a50977593 40 */
dev_alexander 23:f74a50977593 41 #elif defined(TARGET_MAX32620FTHR) // Slave Device: Robot
dev_alexander 23:f74a50977593 42 //Init I2C communications in default I2C bus I2C #1
dev_alexander 23:f74a50977593 43 I2C i2cGridEye(P3_4,P3_5);
dev_alexander 23:f74a50977593 44 GridEye gridEye(i2cGridEye);
dev_alexander 23:f74a50977593 45 #endif
dev_alexander 19:9f035b9e65ec 46
dev_alexander 23:f74a50977593 47 int main()
dev_alexander 23:f74a50977593 48 {
Helmut64 17:98f2528e8399 49 /*
Helmut64 17:98f2528e8399 50 * inits the Serial or USBSerial when available (230400 baud).
Helmut64 17:98f2528e8399 51 * If the serial uart is not is not connected it swiches to USB Serial
Helmut64 17:98f2528e8399 52 * blinking LED means USBSerial detected, waiting for a connect.
Helmut64 17:98f2528e8399 53 * It waits up to 30 seconds for a USB terminal connections
Helmut64 17:98f2528e8399 54 */
Helmut64 17:98f2528e8399 55 InitSerial(30*1000, &myled);
Helmut64 17:98f2528e8399 56 dprintf("Welcome to the SX1276GenericLib");
Helmut64 18:d5527ce82e6b 57
Helmut64 17:98f2528e8399 58 dprintf("Starting a simple LoRa PingPong");
dev_alexander 23:f74a50977593 59
dev_alexander 23:f74a50977593 60 /* Setup begins here: */
dev_alexander 23:f74a50977593 61
dev_alexander 23:f74a50977593 62 /***************************************************************************
dev_alexander 23:f74a50977593 63 * Lora Communications
dev_alexander 23:f74a50977593 64 **************************************************************************/
dev_alexander 22:abca9d17d13d 65 SX1276PingPongSetup();
dev_alexander 23:f74a50977593 66
dev_alexander 23:f74a50977593 67 /***************************************************************************
dev_alexander 23:f74a50977593 68 * Grid Eye Sensor: Non-Buffer Program Variables
dev_alexander 23:f74a50977593 69 **************************************************************************/
dev_alexander 23:f74a50977593 70 #if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway
dev_alexander 23:f74a50977593 71 int frame_idx = 0;
dev_alexander 24:e8d03912f303 72 #elif defined(TARGET_MAX32620FTHR) // Slave Device: LoRa Controlled Robot
dev_alexander 23:f74a50977593 73 // none yet
dev_alexander 23:f74a50977593 74 #endif
dev_alexander 23:f74a50977593 75
dev_alexander 23:f74a50977593 76
dev_alexander 22:abca9d17d13d 77 while(1)
dev_alexander 23:f74a50977593 78 {
dev_alexander 23:f74a50977593 79 /***************************************************************************
dev_alexander 23:f74a50977593 80 * Grid Eye Sensor
dev_alexander 23:f74a50977593 81 **************************************************************************/
dev_alexander 23:f74a50977593 82 #if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway
dev_alexander 23:f74a50977593 83 // Check to see if the contents of the previous scan are the same. If they are different then continue with converting
dev_alexander 23:f74a50977593 84 if( memcmp(prev_raw_frame_data_from_slave, curr_raw_frame_data_from_slave, sizeof(curr_raw_frame_data_from_slave)) != 0 )
dev_alexander 23:f74a50977593 85 {
dev_alexander 23:f74a50977593 86 // Convert raw data sent from slave to a 16 bit integer array by calling this
dev_alexander 23:f74a50977593 87 convRaw8x8Data2Point25degC(curr_raw_frame_data_from_slave, conv_frame_data_from_slave);
dev_alexander 23:f74a50977593 88
dev_alexander 23:f74a50977593 89 // Next Print off the Converted data
dev_alexander 23:f74a50977593 90 dprintf("\r\nFrame %d data: \r\n", frame_idx);
dev_alexander 23:f74a50977593 91 uint8_t idx;
dev_alexander 23:f74a50977593 92 float pixel_data;
dev_alexander 23:f74a50977593 93 for (int y = 0; y < 8; y++) {
dev_alexander 23:f74a50977593 94 for (int x = 0; x < 8; x++) {
dev_alexander 23:f74a50977593 95 idx = y*8 + x;
dev_alexander 23:f74a50977593 96 pixel_data = conv_frame_data_from_slave[idx]/4.0;
dev_alexander 23:f74a50977593 97 dprintf("%.2f \t", pixel_data);
dev_alexander 23:f74a50977593 98 }
dev_alexander 23:f74a50977593 99 dprintf("\r\n\r\n");
dev_alexander 23:f74a50977593 100 }
dev_alexander 23:f74a50977593 101 dprintf("\r\n");
dev_alexander 23:f74a50977593 102
dev_alexander 23:f74a50977593 103 // Increment frame counter
dev_alexander 23:f74a50977593 104 frame_idx = frame_idx +1;
dev_alexander 23:f74a50977593 105 }
dev_alexander 24:e8d03912f303 106 #elif defined(TARGET_MAX32620FTHR) // Slave Device: LoRa Controlled Robot
dev_alexander 23:f74a50977593 107 // Aquire raw data about 8x8 frame from the grid eye sensor in this function call
dev_alexander 23:f74a50977593 108 gridEye.getRaw8x8FrameData(curr_raw_frame_data_to_master);
dev_alexander 23:f74a50977593 109 #endif
dev_alexander 23:f74a50977593 110
dev_alexander 23:f74a50977593 111 /***************************************************************************
dev_alexander 23:f74a50977593 112 * Lora Communications
dev_alexander 23:f74a50977593 113 **************************************************************************/
dev_alexander 22:abca9d17d13d 114 SX1276PingPong();
dev_alexander 23:f74a50977593 115
dev_alexander 23:f74a50977593 116
dev_alexander 23:f74a50977593 117
dev_alexander 23:f74a50977593 118
dev_alexander 23:f74a50977593 119
dev_alexander 22:abca9d17d13d 120 }
dev_alexander 22:abca9d17d13d 121
Helmut64 0:c43b6919ae15 122 }