El código que estoy ejecutando en este momento es simplemente
setup()
{
Serial.println("SET CONTROL CONFIG 103d");
}
loop()
{
Serial.println("SLEEP");
}
pero también he intentado el comando SLEEP en la configuración y poner este código en el cargador de arranque ArduinoBT. Dejé el Arduino con el modo de suspensión activado durante varias horas y no hizo ninguna diferencia en el consumo, además, "CONFIGURAR CONFIGURACIÓN DE CONTROL 102d" no hace ningún cambio. Tal vez estoy emitiendo los comandos en modo de datos? Entiendo que el modo de datos es cuando hay una conexión Bluetooth y el comando es cuando no hay una conexión pero puedo estar equivocado.
Lo siento, he tardado tanto en mis exámenes y días festivos.
Mi código finalmente evolucionó para ser algo como esto:
int input = 0;
int resetPin = 7;
int ledPin = 13;
void setup()
{
pinMode(resetPin, OUTPUT);
Serial.begin(115200);
Serial.println("SET CONTROL ESCAPE 43 00 0");
Serial.println("SET CONTROL CONFIG 103D");
digitalWrite(ledPin, HIGH);
}
void loop()
{
if (!input)
{
delay(2000);
Serial.print("+++");
delay(2000);
Serial.println("TEST DEEPSLEEP");
delay(10000);
Serial.print("+++");
delay(2000);
input = 1;
digitalWrite(ledPin, LOW);
}
Lo que no funciona (¡YAY!)
Luego encontré un código aquí que tuvo una comunicación iWRAP exitosa , Lo modifiqué para incluir el iWRAP que quería, comencé con "INFO" y descubrí la versión de iWRAP (WRAP THOR AI 2.2.0 build 60) obtuve la hoja de datos correcta que encontró que Deepsleep era una característica del módulo y que podía probar. utilizando el comando "TEST DEEPSLEEP". ¡Utilicé ese comando y la tabla durmió! Creo que ... la corriente se situó en alrededor de 36 mA, que es más alta que el uso no conectado normal, pero la placa era incomunicable. La prueba obtuvo un OK, así que estoy seguro de que puedo hacer que el tablero duerma ahora. Desafortunadamente, emitir el comando "SLEEP" no parece hacer nada en la atmósfera, aunque no sé si mis comandos de configuración iniciales se están emitiendo todavía.
Anyhoo aquí es el código (apenas) modificado que estoy usando ahora. Básicamente ejecútalo y luego ingresa "&" en el monitor de serie y pasa al modo de comando y emite los comandos que ingresa en el código, ingrese "@" y le informa la respuesta a esos comandos.
#include <EEPROM.h>
int ledPin = 13; // LED connected to digital pin 13
int resetPin = 7; // BT module uses pin 7 for reset
char inByte = 0; // incoming serial byte
int infoSize = 0 ;
void setup() // run once, when the sketch starts
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
pinMode(resetPin, OUTPUT);
Serial.begin(115200); // start serial at 115200 kbs
Serial.println("SET CONTROL ESCAPE 43 00 0");
Serial.println("SET CONTROL CONFIG 103D");
}
void loop()
{
// if we get a valid byte, read analog ins:
if (Serial.available() > 0) {
inByte = getbyte(); // get incoming byte
if (inByte == '&' ) { // look for a &
Serial.print("Got an & ");
infoSize = getInfo();
Serial.println("Done");
}
else if (inByte == '@' ) { // look for a 0
digitalWrite(ledPin, LOW); // set led LOW
Serial.print("Get string: ");
for(int i=0;i<infoSize;i++)
{
Serial.print(EEPROM.read(i));
}
Serial.println();
Serial.print("Cleared string size: ");
Serial.println(infoSize);
}
}
}
int getInfo()
{
int j=0;
digitalWrite(ledPin, HIGH); // set led HIGH
delay(2000);
Serial.print("+++");
delay(2000);
Serial.println("SLEEP"); //THIS IS WHERE YOU ENTER THE COMMANDS
//"INFO" and "TEST DEEPSLEEP" are both successful
//"SLEEP" isn't successful yet
for (int i=0; i <= 10; i++){
delay(1000);
while (Serial.available() > 0 && j <512) {
inByte = getbyte(); // get incoming byte
EEPROM.write(j, inByte);
j++;
}
delay(1000);
}
delay(2000);
Serial.print("+++");
delay(2000);
digitalWrite(ledPin, LOW); // set led low
return j;
}
char getbyte()
{
while (Serial.available() == 0) { //look for aviable data
// do nothing, wait for incoming data
}
return Serial.read(); //return data if aviable
}
Yay edición épica!
Muchas gracias por su ayuda, ha sido invaluable para mi viaje :)