esp_interface.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "esp_interface.h"
  2. HardwareSerial MySerial(1);
  3. void EspInterface::begin() {
  4. pinMode(ESP_RST, OUTPUT);
  5. pinMode(ESP_ZERO, OUTPUT);
  6. delay(100);
  7. digitalWrite(ESP_ZERO, HIGH);
  8. MySerial.begin(BAUD, SERIAL_8N1, 27, 26);
  9. //this->bootRunMode();
  10. this->initTime = millis();
  11. }
  12. void EspInterface::RunUpdate() {
  13. this->bootProgramMode();
  14. display_obj.tft.setTextWrap(true);
  15. display_obj.tft.setFreeFont(NULL);
  16. display_obj.tft.setCursor(0, 100);
  17. display_obj.tft.setTextSize(1);
  18. display_obj.tft.setTextColor(TFT_GREEN);
  19. display_obj.tft.println("Waiting for serial data...");
  20. display_obj.tft.setTextColor(TFT_WHITE);
  21. }
  22. void EspInterface::bootProgramMode() {
  23. Serial.println("[!] Setting ESP12 in program mode...");
  24. digitalWrite(ESP_ZERO, LOW);
  25. delay(100);
  26. digitalWrite(ESP_RST, LOW);
  27. delay(100);
  28. digitalWrite(ESP_RST, HIGH);
  29. delay(100);
  30. digitalWrite(ESP_ZERO, HIGH);
  31. Serial.println("[!] Complete");
  32. Serial.end();
  33. Serial.begin(BAUD);
  34. }
  35. void EspInterface::bootRunMode() {
  36. Serial.end();
  37. Serial.begin(115200);
  38. Serial.println("[!] Setting ESP12 in run mode...");
  39. digitalWrite(ESP_ZERO, HIGH);
  40. delay(100);
  41. digitalWrite(ESP_RST, LOW);
  42. delay(100);
  43. digitalWrite(ESP_RST, HIGH);
  44. delay(100);
  45. digitalWrite(ESP_ZERO, HIGH);
  46. Serial.println("[!] Complete");
  47. }
  48. void EspInterface::program() {
  49. if (MySerial.available()) {
  50. Serial.write((uint8_t)MySerial.read());
  51. }
  52. if (Serial.available()) {
  53. display_obj.tft.print(".");
  54. while (Serial.available()) {
  55. MySerial.write((uint8_t)Serial.read());
  56. }
  57. }
  58. }
  59. void EspInterface::main(uint32_t current_time) {
  60. if (current_time - this->initTime >= 1000) {
  61. this->initTime = millis();
  62. MySerial.write("PING");
  63. }
  64. if (MySerial.available()) {
  65. Serial.write((uint8_t)MySerial.read());
  66. }
  67. if (Serial.available()) {
  68. MySerial.write((uint8_t)Serial.read());
  69. }
  70. }