Wirtek Robotics Workshop / RWR_Utils
Committer:
steliansaracut
Date:
Wed Jul 14 08:49:04 2021 +0300
Revision:
1:755da47160cb
Parent:
0:3960679bf525
Child:
2:821ffc555d49
fixed bugs in web server state machine. work in progress.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
steliansaracut 1:755da47160cb 1 #pragma once
steliansaracut 1:755da47160cb 2
steliansaracut 1:755da47160cb 3 #include "mbed.h"
steliansaracut 1:755da47160cb 4
steliansaracut 1:755da47160cb 5 // pin assignment
steliansaracut 1:755da47160cb 6 #define ESP_RX PA_9
steliansaracut 1:755da47160cb 7 #define ESP_TX PA_10
steliansaracut 1:755da47160cb 8 #define ESP_RESET PA_12
steliansaracut 1:755da47160cb 9 #define QTR_13 PB_0
steliansaracut 1:755da47160cb 10 #define ESP_CHPD PB_7
steliansaracut 1:755da47160cb 11 #define DRV_BENBL PB_6
steliansaracut 1:755da47160cb 12 #define QTR_11 PB_1
steliansaracut 1:755da47160cb 13 #define DRV_BPHASE PF_0
steliansaracut 1:755da47160cb 14 #define QTR_CTL PF_1
steliansaracut 1:755da47160cb 15 #define ESP_GPIO0 PA_8
steliansaracut 1:755da47160cb 16 #define DRV_APHASE PA_11
steliansaracut 1:755da47160cb 17 #define QTR_9 PA_7
steliansaracut 1:755da47160cb 18 #define DRV_AENBL PA_4
steliansaracut 1:755da47160cb 19 #define QTR_7 PA_3
steliansaracut 1:755da47160cb 20 #define QTR_5 PA_1
steliansaracut 1:755da47160cb 21 #define QTR_3 PA_0
steliansaracut 1:755da47160cb 22
steliansaracut 1:755da47160cb 23 // motor driver PWM frequency
steliansaracut 1:755da47160cb 24 #define PWM_FREQUENCY 32.0e3f
steliansaracut 1:755da47160cb 25 #define PWM_PERIOD 1.0f / PWM_FREQUENCY
steliansaracut 1:755da47160cb 26
steliansaracut 1:755da47160cb 27 // number of sensors on QTR module
steliansaracut 1:755da47160cb 28 #define SENSORS_BAR_SIZE 6
steliansaracut 1:755da47160cb 29 // sensors reading when no line is detected
steliansaracut 1:755da47160cb 30 #define SENSORS_ALL_ONES ((1 << SENSORS_BAR_SIZE) - 1U)
steliansaracut 1:755da47160cb 31
steliansaracut 1:755da47160cb 32 // hysteresis thresholds for analog sensors
steliansaracut 1:755da47160cb 33 #define QTR_THRESHOLD_HIGH (uint32_t) 5000U
steliansaracut 1:755da47160cb 34 #define QTR_THRESHOLD_LOW (uint32_t) 20000U
steliansaracut 1:755da47160cb 35
steliansaracut 1:755da47160cb 36 // PID parameters
steliansaracut 1:755da47160cb 37 #define PID_SETPOINT 0.0f
steliansaracut 1:755da47160cb 38 #define PID_KP 0.6f
steliansaracut 1:755da47160cb 39 // #define PID_KP 0.25f
steliansaracut 1:755da47160cb 40 #define PID_KD 0.0f
steliansaracut 1:755da47160cb 41 #define PID_KI 0.0f
steliansaracut 1:755da47160cb 42 #define NO_LINE_SPEED_MOTOR_A 0.0f
steliansaracut 1:755da47160cb 43 #define NO_LINE_SPEED_MOTOR_B 1.0f
steliansaracut 1:755da47160cb 44
steliansaracut 1:755da47160cb 45 // web interface parameters
steliansaracut 1:755da47160cb 46 #define WEB_RECEIVE_BUFFER_SIZE 2048
steliansaracut 1:755da47160cb 47 #define WEB_SEND_BUFFER_SIZE 2048
steliansaracut 1:755da47160cb 48 #define WEB_RECEIVE_TIMEOUT 10000
steliansaracut 1:755da47160cb 49 #define WEB_IPD_HEADER_MIN_SIZE 9
steliansaracut 1:755da47160cb 50 #define WEB_SSID "RWR_1"
steliansaracut 1:755da47160cb 51 #define WEB_PASSWORD "RWRWRWRW"
steliansaracut 1:755da47160cb 52 #define WEB_CHANNEL "1"
steliansaracut 1:755da47160cb 53 #define WEB_ECN "3"
steliansaracut 1:755da47160cb 54 #define WEB_MAX_CONNECTIONS "2"
steliansaracut 1:755da47160cb 55 #define WEB_HIDDEN "0"
steliansaracut 1:755da47160cb 56 #define WEB_AP_IP "192.168.0.1"
steliansaracut 1:755da47160cb 57 #define WEB_AP_GATEWAY "192.168.0.1"
steliansaracut 1:755da47160cb 58 #define WEB_AP_NETMASK "255.255.255.0"
steliansaracut 1:755da47160cb 59 #define WEB_AP_PORT "80"
steliansaracut 1:755da47160cb 60
steliansaracut 1:755da47160cb 61 class Motor
steliansaracut 1:755da47160cb 62 {
steliansaracut 1:755da47160cb 63 public:
steliansaracut 1:755da47160cb 64 Motor(const PinName &_in1Pin, const PinName &_in2Pin, const bool _brake = false);
steliansaracut 1:755da47160cb 65 void setSpeed(const float speed);
steliansaracut 1:755da47160cb 66 void setBrake(const bool _brake);
steliansaracut 1:755da47160cb 67
steliansaracut 1:755da47160cb 68 private:
steliansaracut 1:755da47160cb 69 PwmOut in1PWM;
steliansaracut 1:755da47160cb 70 PwmOut in2PWM;
steliansaracut 1:755da47160cb 71 bool brake;
steliansaracut 1:755da47160cb 72 };
steliansaracut 1:755da47160cb 73
steliansaracut 1:755da47160cb 74 class QTR
steliansaracut 1:755da47160cb 75 {
steliansaracut 1:755da47160cb 76 public:
steliansaracut 1:755da47160cb 77 // QTR CTL pin, array of analog inputs connected to sensor bar, number of pulses applied to CTL pin
steliansaracut 1:755da47160cb 78 QTR(DigitalOut &_ctl, AnalogIn (&_sensors)[SENSORS_BAR_SIZE], const uint32_t dimPulses = 0);
steliansaracut 1:755da47160cb 79
steliansaracut 1:755da47160cb 80 // dim sensors by applying pulses on CTL pin
steliansaracut 1:755da47160cb 81 void dim(const uint32_t pulses);
steliansaracut 1:755da47160cb 82
steliansaracut 1:755da47160cb 83 // returns digitized sensor values as bits of an uint32_t
steliansaracut 1:755da47160cb 84 // a bit of 0 means that the corresponding sensor detects a reflective surface
steliansaracut 1:755da47160cb 85 // index 0 in sensors array corresponds to LSB in returned value
steliansaracut 1:755da47160cb 86 // uses hysteresis to reduce noise
steliansaracut 1:755da47160cb 87 uint32_t readSensorsAsDigital();
steliansaracut 1:755da47160cb 88
steliansaracut 1:755da47160cb 89 // return line position as a float between -1.0 (left) and 1.0 (right)
steliansaracut 1:755da47160cb 90 float readSensorsAsFloat();
steliansaracut 1:755da47160cb 91
steliansaracut 1:755da47160cb 92 // convert digitized sensor values to float
steliansaracut 1:755da47160cb 93 float digitizedSensorsToFloat(uint32_t digitizedSensors);
steliansaracut 1:755da47160cb 94
steliansaracut 1:755da47160cb 95 private:
steliansaracut 1:755da47160cb 96 DigitalOut &ctl;
steliansaracut 1:755da47160cb 97 AnalogIn (&sensors)[SENSORS_BAR_SIZE];
steliansaracut 1:755da47160cb 98 uint32_t lastSensorState;
steliansaracut 1:755da47160cb 99 };