Finisshed v1?
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
|
@ -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");
|
||||
}*/
|
Loading…
Reference in New Issue