T1000eBoard.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #pragma once
  2. #include <MeshCore.h>
  3. #include <Arduino.h>
  4. #include <helpers/NRF52Board.h>
  5. class T1000eBoard : public NRF52BoardDCDC {
  6. protected:
  7. uint8_t btn_prev_state;
  8. public:
  9. T1000eBoard() : NRF52Board("T1000E_OTA") {}
  10. void begin();
  11. uint16_t getBattMilliVolts() override {
  12. #ifdef BATTERY_PIN
  13. #ifdef PIN_3V3_EN
  14. digitalWrite(PIN_3V3_EN, HIGH);
  15. #endif
  16. analogReference(AR_INTERNAL_3_0);
  17. analogReadResolution(12);
  18. delay(10);
  19. float volts = (analogRead(BATTERY_PIN) * ADC_MULTIPLIER * AREF_VOLTAGE) / 4096;
  20. #ifdef PIN_3V3_EN
  21. digitalWrite(PIN_3V3_EN, LOW);
  22. #endif
  23. analogReference(AR_DEFAULT); // put back to default
  24. analogReadResolution(10);
  25. return volts * 1000;
  26. #else
  27. return 0;
  28. #endif
  29. }
  30. const char* getManufacturerName() const override {
  31. return "Seeed Tracker T1000-E";
  32. }
  33. int buttonStateChanged() {
  34. #ifdef BUTTON_PIN
  35. uint8_t v = digitalRead(BUTTON_PIN);
  36. if (v != btn_prev_state) {
  37. btn_prev_state = v;
  38. return (v == USER_BTN_PRESSED) ? 1 : -1;
  39. }
  40. #endif
  41. return 0;
  42. }
  43. void powerOff() override {
  44. #ifdef HAS_GPS
  45. digitalWrite(GPS_VRTC_EN, LOW);
  46. digitalWrite(GPS_RESET, LOW);
  47. digitalWrite(GPS_SLEEP_INT, LOW);
  48. digitalWrite(GPS_RTC_INT, LOW);
  49. digitalWrite(GPS_EN, LOW);
  50. #endif
  51. #ifdef BUZZER_EN
  52. digitalWrite(BUZZER_EN, LOW);
  53. #endif
  54. #ifdef PIN_3V3_EN
  55. digitalWrite(PIN_3V3_EN, LOW);
  56. #endif
  57. #ifdef PIN_3V3_ACC_EN
  58. digitalWrite(PIN_3V3_ACC_EN, LOW);
  59. #endif
  60. #ifdef SENSOR_EN
  61. digitalWrite(SENSOR_EN, LOW);
  62. #endif
  63. // set led on and wait for button release before poweroff
  64. #ifdef LED_PIN
  65. digitalWrite(LED_PIN, HIGH);
  66. #endif
  67. #ifdef BUTTON_PIN
  68. while(digitalRead(BUTTON_PIN));
  69. #endif
  70. #ifdef LED_PIN
  71. digitalWrite(LED_PIN, LOW);
  72. #endif
  73. #ifdef BUTTON_PIN
  74. nrf_gpio_cfg_sense_input(BUTTON_PIN, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_HIGH);
  75. #endif
  76. sd_power_system_off();
  77. }
  78. };