Chiarimenti su PROGMEM e memoria flash

Salve a tutti.
Ho bisogno di un chiarimento su PROGMEM.
Ho bisogno di memoria aggiuntiva oltre a quella EEPROM da 1K di arduino.
Senza usare una EEPROM esterna che comunica tramite I2C, ho letto che si può usare la Flash memory di Arduino dove salvo il programma compilato.
Se è vero, volevo sapere se è possibile tramite ad esempio la seriale, salvare dei messaggi o modificarli o è soltanto una memoria di sola lettura ?
Se tolgo l'alimentazione perdo i dati ?
E come faccio a tenere separata la memoria dati da quella del programma ?

Grazie