Finisshed v1?

master
Vinícius W 1 year ago
parent aec9a01e68
commit ed31994c3b

@ -1,20 +0,0 @@
#ifndef COORDS_H
#define COORDS_H
class AzAlt {
public:
float azimuth;
float altitude;
RADec toRADec();
}
class RADec {
public:
float rightAngle;
float decimation;
AzAlt toAzAt();
}
#endif

@ -15,7 +15,7 @@ void setup() {
pinMode(15, OUTPUT); pinMode(15, OUTPUT);
pinMode(12, OUTPUT); pinMode(12, OUTPUT);
pinMode(13, OUTPUT); pinMode(14, OUTPUT);
delay(1000); delay(1000);
} }
@ -32,6 +32,4 @@ void loop() {
controller.updateHeading(); controller.updateHeading();
controller.moveToAzAlt(azimuth, altitude); controller.moveToAzAlt(azimuth, altitude);
WebMonitor.println(azimuth);
WebMonitor.println(altitude);
} }

@ -1,337 +0,0 @@
/*#include <SPI.h>
#include <Wire.h>
#include <Servo.h>
#include <RTClib.h>
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <DFRobot_QMC5883.h>
#define PORT 10001
#define SERIAL_RATE 115200
#define SSID "Vyn"
#define PASSWD "test123321"
#define LOCATION "\x19\x19\x2A\x01\x31\x10\x18\x01"
#define VERSION "040101"
WiFiClient Client;
WiFiServer Server(PORT);
Servo servo;
RTC_DS1307 rtc;
DFRobot_QMC5883 compass(&Wire, 0x0D);
String recv();
void send(String str);
void reply(String str);
void printDate(DateTime date);
void printTime(DateTime time);
void syncDateTime(String str);
int16_t mx, my, mz;
void setup() {
Serial.begin(SERIAL_RATE);
WiFi.begin(SSID, PASSWD);
while (!Serial);
Serial.print("Conectando em SSID: ");
Serial.print(SSID);
while (WiFi.status() != WL_CONNECTED) {
delay(250);
Serial.print(".");
}
Serial.println();
Serial.print("Conectado! Endereço: ");
Serial.println(WiFi.localIP());
Server.begin();
Serial.println("Servidor iniciado!");
while (!compass.begin()) {
Serial.println("Could not find a valid 5883 sensor, check wiring!");
delay(500);
}
if (!rtc.begin()) {
Serial.println("Erro iniciando RTC.");
while(1);
}
if (!rtc.isrunning()) {
Serial.print("RTC não está rodando. Setando o tempo em: ");
Serial.print(__DATE__);
Serial.print(" ");
Serial.println(__TIME__);
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
if(compass.isQMC()) {
Serial.println("Initialize QMC5883");
compass.setRange(QMC5883_RANGE_8GA);
Serial.print("compass range is:");
Serial.println(compass.getRange());
compass.setMeasurementMode(QMC5883_CONTINOUS);
Serial.print("compass measurement mode is:");
Serial.println(compass.getMeasurementMode());
compass.setDataRate(QMC5883_DATARATE_200HZ);
Serial.print("compass data rate is:");
Serial.println(compass.getDataRate());
compass.setSamples(QMC5883_SAMPLES_8);
Serial.print("compass samples is:");
Serial.println(compass.getSamples());
}
pinMode(12, INPUT);
pinMode(14, INPUT);
DateTime now = rtc.now();
printDate(now);
printTime(now);
pinMode(2, OUTPUT);
servo.attach(2, 500, 2500);
}
void printDate(DateTime date) {
Serial.print(date.day());
Serial.print("/");
Serial.print(date.month(), DEC);
Serial.print("/");
Serial.print(date.year(), DEC);
Serial.print(" (");
Serial.print(date.dayOfTheWeek(), DEC);
Serial.println(")");
}
void printTime(DateTime time) {
Serial.print(time.hour(), DEC);
Serial.print(":");
Serial.print(time.minute(), DEC);
Serial.print(":");
Serial.println(time.second(), DEC);
}
bool moving = true;
bool aligned = true;
uint8_t dst = 0;
uint8_t tz = 252;
String loc = "34AB0500,12CE0500";
void loop() {
float declinationAngle = (-20-(15.0/60.0))/(180/PI);
compass.setDeclinationAngle(declinationAngle);
sVector_t mag = compass.readRaw();
compass.getHeadingDegrees();
Serial.print("X:");
Serial.print(mag.XAxis);
Serial.print(" Y:");
Serial.print(mag.YAxis);
Serial.print(" Z:");
Serial.println(mag.ZAxis);
Serial.print("Degress = ");
Serial.println(mag.HeadingDegress);
delay(250);
Client = Server.accept();
if (Client) {
while (Client.connected()) {
moving = digitalRead(12);
aligned = digitalRead(14);
Client.flush();
String str = recv();
//Empty response
if (str.startsWith("Ç")) {
continue;
}
///HANDSHAKE
//Ping
if (str.startsWith("K")) {
reply(str.substring(1));
}
//Firmware version
if (str.startsWith("V")) {
reply(VERSION);
}
//Location
if (str.startsWith("w")) {
reply(LOCATION);
}
//Tracking mode
if (str.startsWith("t")) {
String tmp = "F";
tmp.setCharAt(0, '1');
reply(tmp);
}
//Device version
if (str.startsWith("P\x01")) {
String tmp = "FF";
tmp.setCharAt(0, '2');
tmp.setCharAt(1, '3');
reply(tmp);
}
//Mount model
if (str.startsWith("m")) {
String tmp = "F";
tmp.setCharAt(0, 4);
reply(tmp);
}
//Failed
if (str.startsWith("##")) {
Client.stop();
}
///STATUS
//GOTO?
if (str.startsWith("L")) {
reply(moving ? "1" : "0");
}
//Aligned?
if (str.startsWith("J")) {
String tmp = "F";
tmp.setCharAt(0, aligned ? 1 : '0');
reply(tmp);
}
if (str.startsWith("M")) {
reply("");
}
///SYNC
//Position
if (str.startsWith("W")) {
//TODO: store pos
reply("");
}
//Hour and date
if (str.startsWith("H")) {
syncDateTime(str.substring(1));
reply("");
}
if (str.startsWith("h")) {
DateTime now = rtc.now();
String datetime = "FFFFFFFF";
datetime.setCharAt(0, now.hour());
datetime.setCharAt(1, now.minute());
datetime.setCharAt(2, now.second());
datetime.setCharAt(3, now.month());
datetime.setCharAt(4, now.day());
datetime.setCharAt(5, now.year()-2000);
datetime.setCharAt(6, tz);
datetime.setCharAt(7, dst);
datetime.replace("\n", "\x10");
reply(datetime);
}
//Precise RA/DEC
if (str.startsWith("e")) {
reply(loc);
}
if (str.startsWith("r")) {
loc = str.substring(1);
String rightAscencion = loc.substring(0, 8);
Serial.println(rightAscencion);
String decimation = loc.substring(9);
Serial.println(decimation);
double ra = strtoul(rightAscencion.c_str(), NULL, 16);
ra = ra/4294967296;
ra = ra*360;
double dec = strtoul(decimation.c_str(), NULL, 16);
dec = dec/4294967296;
dec = dec*360;
reply("");
}
}
if (!Client.connected()) {
Serial.println("Cliente desconectado :(");
Client.stop();
}
}
}
void syncDateTime(String str) {
tz = str.charAt(6);
dst = str.charAt(7);
uint8_t hr = str.charAt(0);
uint8_t mn = str.charAt(1);
uint8_t sc = str.charAt(2);
uint8_t mo = str.charAt(3);
uint8_t dy = str.charAt(4);
uint16_t y = str.charAt(5);
hr = dst ? hr-1 : hr;
DateTime dt = DateTime(
y, mo, dy,
hr, mn, sc
);
if (!dt.isValid()) {
char temp[] = "DD/MM/YY hh:mm:ss";
Serial.print("Data recebida é invalida! Impossível sincronizar: ");
Serial.println(dt.toString(temp));
return;
}
rtc.adjust(dt);
dt = rtc.now();
Serial.println("Tempo ajustado!");
printDate(dt);
printTime(dt);
}
String recv() {
String str = "";
while (Client.available()) {
str += (char)(Client.read());
}
if (str.length() == 0) {
str = "Ç";
} else {
Serial.print("R: ");
Serial.println(str);
}
return str;
}
void reply(String str) {
Client.flush();
Serial.print("S: ");
Serial.println(str += "#");
byte n = Client.print(str.c_str());
Serial.print("S: ");
Serial.print(n);
Serial.println("b");
}*/

@ -3,14 +3,14 @@
void ServoController::initServos() { void ServoController::initServos() {
HrzSrv.attach(12, 500, 2500); HrzSrv.attach(12, 500, 2500);
delay(50); // Espera 50ms para o motor se mover delay(100);
VrtSrv.attach(13, 500, 2500); VrtSrv.attach(14, 500, 2500);
delay(50); delay(100);
HrzSrv.write(0); HrzSrv.write(0);
delay(50); delay(100);
VrtSrv.write(0); VrtSrv.write(90);
delay(50); delay(100);
} }
void ServoController::initMag() { void ServoController::initMag() {
@ -39,7 +39,7 @@ void ServoController::initMag() {
WebMonitor.print("Sample: "); WebMonitor.print("Sample: ");
WebMonitor.println(mag.getSamples()); WebMonitor.println(mag.getSamples());
mag.setDeclinationAngle(DECLINATION); //mag.setDeclinationAngle(DECLINATION);
WebMonitor.print("Declinação: "); WebMonitor.print("Declinação: ");
WebMonitor.println(DECLINATION); WebMonitor.println(DECLINATION);
} else { } else {
@ -58,33 +58,37 @@ void ServoController::updateHeading() {
} }
void ServoController::moveToAzAlt(float azimuth, float altitude) { void ServoController::moveToAzAlt(float azimuth, float altitude) {
digitalWrite(15, 0);
azimuth -= headingDegrees; azimuth -= headingDegrees;
if (azimuth < 0) { if (azimuth < 0) {
azimuth += 360; azimuth += 360;
} }
if (altitude >= 0) { if (altitude <= 0) {
return;
}
if (azimuth <= 180) { if (azimuth <= 180) {
HrzSrv.write(azimuth); HrzSrv.write(180-azimuth);
delay(100); delay(100);
VrtSrv.write(altitude); VrtSrv.write(altitude + 90);
delay(100); delay(100);
} else { } else {
HrzSrv.write(azimuth - 180); azimuth += 90;
delay(100);
VrtSrv.write(180 - altitude); if (azimuth > 360) {
delay(100); azimuth -= 360;
} }
} else {
HrzSrv.write(0); HrzSrv.write(azimuth-270);
delay(100); delay(100);
VrtSrv.write(90); VrtSrv.write(altitude + 90);
delay(100); delay(100);
} }
} WebMonitor.println(azimuth);
WebMonitor.println(altitude);
void ServoController::moveToRADec() { digitalWrite(15, 1);
} }

Loading…
Cancel
Save