Hola,
Vamos por partes:
char ssid_inputhmi[32];
Eso define un ARRAY de caracteres de 32 posiciones que van de la 0 a la 31 incluidas.
Son 32 variables tipo "char" que se encuentran en la misma zona de memoria.
ssid_inputhmi[0] = 0x56;
ssid_inputhmi[1] = 0x49;
...
Así asignas, correctamente, los valores a cada elemento del array.
char* puntero = ssid_inputhmi;
Aqui declaras un puntero a una variable y para que el compilador entienda de qué tipo es, apuntará a variable de carácter. Le dices que el valor del puntero es el primer caracter del array ssid_inputhmi (le asignas al puntero la dirección de memoria de la variable ssid_inputhmi)
Por ahora bien.
Serial.print(puntero);
Eso está mal. Ya se que te ha salido bien la impresión, pero está mal. ¿por qué? porque te ha salido bien impreso por que la casualidad de que detrás del último carácter que has definido (ssid_inputhmi[9]) vale un cero con lo que se lo toma como una cadena correctamente.
Para estar seguro que te funcione bien, has de definir el final de la cadena en el array para asegurarte que no te hace "cosas" raras. por ejemplo ssid_inputhmi[0]=0x00;
¿por que esto sale mal? sizeof(puntero) por que una variable de tipo puntero, sea a char, a string, a lo que sea, siempre ocupa 4 bytes. un puntero es un "enlace directo" o "acceso directo" a una variable y no una copia de la variable en sí.
Siempre valdrá 4 bytes.
Como se sabe cuánto vale puedes usar strlen. Te propongo este ejercicio:
char ssid_inputhmi[32];
void setup() {
Serial.begin(9600);
Serial.println("Inicio:");
ssid_inputhmi[0] = 0x56;
ssid_inputhmi[1] = 0x49;
ssid_inputhmi[2] = 0x4C;
ssid_inputhmi[3] = 0x4C;
ssid_inputhmi[4] = 0x41;
ssid_inputhmi[5] = 0x20;
ssid_inputhmi[6] = 0x38;
ssid_inputhmi[7] = 0x32;
ssid_inputhmi[8] = 0x34;
ssid_inputhmi[5]=0x00;
char* puntero = ssid_inputhmi;
Serial.print("La variable contiene:'");
Serial.print(puntero);
Serial.print("' y ocupa ");
Serial.println(strlen(puntero));
Serial.println("impresión, poco a poco, con puntero:");
while (*puntero)
{
Serial.print((char)*puntero);
puntero++;
}
Serial.println("\nFin.");
}
void loop() {
}
Como ves hay una línea donde defino ssid_inputmi[5] con valor cero.
Y observa bien el bucle while: mientras donde apunte puntero tenga algún caracter que no sea nulo, imprimirá a qué caracter está apuntando y sumará 1 al valor donde apunta el puntero (que lio, lo siento).
Saludos.