NEWBIE help pls: Which Bluetooth module do i need to use my iPhone with Arduino

New to Arduino (1 week now):

I was able to use a MEGA2560, and 4 in 1 MAX7219 and Parola ....with forum help....to successfully have a message scroll across. (made this so I can have some fun with my Grandkids).

I would like to take my first project, "just ONE STEP further" and add bluetooth so I can communicate from my iPhone with the Parola sketch to change the scroll message (and, if possible, maybe change some of the scroll parameters in the sketch)

(1) Which Bluetooth device would I need to purchase ?
(Having Googled a bit, I assume (?) it would be HM10 6 pin unit. But when googling I saw that there may be different HM-10 brands (Suppliers), different firmware, etc; hence I need advice on which specific unit to get....a weblink would be great)

(2) Which Wiring Diagram would be best for me to use ?

(3) Any suggestions on new coding I will need on my Parola sketch. (I will list below my current sketch)

I'm a millimeter above ground zero here relative to all this, but excited to learn new things (....late 70's here; never to old to learn...ha)
Thank You.

// Use the Parola library to scroll text on the display
//
// Demonstrates the use of the scrolling function to display text received
// from the serial interface
//
// User can enter text on the serial monitor and this will display as a
// scrolling message on the display.
// Speed for the display is controlled by a pot on SPEED_IN analog in.
// Scrolling direction is controlled by a switch on DIRECTION_SET digital in.
// Invert ON/OFF is set by a switch on INVERT_SET digital in.
//
// UISwitch library can be found at https://github.com/MajicDesigns/MD_UISwitch
// MD_MAX72XX library can be found at https://github.com/MajicDesigns/MD_MAX72XX
//

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

// set to 1 if we are implementing the user interface pot, switch, etc
#define USE_UI_CONTROL 0

#if USE_UI_CONTROL
#include <MD_UISwitch.h>
#endif

// Turn on debug statements to the serial output
#define DEBUG 0

#if DEBUG
#define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); }
#define PRINTS(x) Serial.print(F(x))
#define PRINTX(x) Serial.println(x, HEX)
#else
#define PRINT(s, x)
#define PRINTS(x)
#define PRINTX(x)
#endif

// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 11
#define CLK_PIN   52  // or SCK
#define DATA_PIN  51  // or MOSI
#define CS_PIN    53  // or SS

// HARDWARE SPI
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// SOFTWARE SPI
//MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

// Scrolling parameters
#if USE_UI_CONTROL
const uint8_t SPEED_IN = A5;
const uint8_t DIRECTION_SET = 8;  // change the effect
const uint8_t INVERT_SET = 9;     // change the invert

const uint8_t SPEED_DEADBAND = 5;
#endif // USE_UI_CONTROL

uint8_t scrollSpeed = 35;    // default frame delay value
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textPosition_t scrollAlign = PA_LEFT;
uint16_t scrollPause = 2000; // in milliseconds

// Global message buffers shared by Serial and Scrolling functions
#define	BUF_SIZE	75
char curMessage[BUF_SIZE] = { "" };
char newMessage[BUF_SIZE] = { " Hello   Harper   Connor   Donna   and   Jon " };
bool newMessageAvailable = true;

#if USE_UI_CONTROL

MD_UISwitch_Digital uiDirection(DIRECTION_SET);
MD_UISwitch_Digital uiInvert(INVERT_SET);

void doUI(void)
{
  // set the speed if it has changed
  {
    int16_t speed = map(analogRead(SPEED_IN), 0, 1023, 10, 150);

    if ((speed >= ((int16_t)P.getSpeed() + SPEED_DEADBAND)) ||
      (speed <= ((int16_t)P.getSpeed() - SPEED_DEADBAND)))
    {
      P.setSpeed(speed);
      scrollSpeed = speed;
      PRINT("\nChanged speed to ", P.getSpeed());
    }
  }

  if (uiDirection.read() == MD_UISwitch::KEY_PRESS) // SCROLL DIRECTION
  {
    PRINTS("\nChanging scroll direction");
    scrollEffect = (scrollEffect == PA_SCROLL_LEFT ? PA_SCROLL_RIGHT : PA_SCROLL_LEFT);
    P.setTextEffect(scrollEffect, scrollEffect);
    P.displayClear();
    P.displayReset();
  }

  if (uiInvert.read() == MD_UISwitch::KEY_PRESS)  // INVERT MODE
  {
    PRINTS("\nChanging invert mode");
    P.setInvert(!P.getInvert());
  }
}
#endif // USE_UI_CONTROL

void readSerial(void)
{
  static char *cp = newMessage;

  while (Serial.available())
  {
    *cp = (char)Serial.read();
    if ((*cp == '\n') || (cp - newMessage >= BUF_SIZE-2)) // end of message character or full buffer
    {
      *cp = '\0'; // end the string
      // restart the index for next filling spree and flag we have a message waiting
      cp = newMessage;
      newMessageAvailable = true;
    }
    else  // move char pointer to next position
      cp++;
  }
}

void setup()
{
  Serial.begin(57600);
  Serial.print("\n[Parola Scrolling Display]\nType a message for the scrolling display\nEnd message line with a newline");

#if USE_UI_CONTROL
  uiDirection.begin();
  uiInvert.begin();
  pinMode(SPEED_IN, INPUT);

  doUI();
#endif // USE_UI_CONTROL

  P.begin();
  P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
}

void loop()
{
#if USE_UI_CONTROL
  doUI();
#endif // USE_UI_CONTROL

  if (P.displayAnimate())
  {
    if (newMessageAvailable)
    {
      strcpy(curMessage, newMessage);
      newMessageAvailable = false;
    }
    P.displayReset();
  }
  readSerial();
}

@seniorcitizenhere, your topic has been moved to a more suitable location on the forum. Installation and Troubleshooting is not for problems with (nor for advise on) your project.

I think it is more what app will work on your Iphone to connect and send/receive data..
A simple HC-05 or HC-06 will probably work fine...
Here a piece of code that i used to set a clock using bluetooth. the string send has to be terminated with a # in this case, but you can change that ofcourse.

/* HC05-password: 1234  / HC06-password: 0000
 *  
 * connections:
 * HC05/06  -   Arduino
 * state    -
 * RxD      -   via R1(1K) to Digital-6 and R2(2K) to GND
 * TxD      -   Digital-5 
 * GND      -   Gnd
 * Vcc      -   Vcc
 * EN       -
 */
 
#include <SoftwareSerial.h>
SoftwareSerial BlueTooth(5, 6);   // (TXD, RXD) of HC-06

char input; // to store received char from Bluetooth.
String data,segment;
int dag, maand,jaar,uur,minuut;

void setup()  
{
  Serial.begin(9600);
  BlueTooth.begin(9600);  
}

void loop() 
{
  if (BlueTooth.available())
  {
    input=(BlueTooth.read());
    if (input != '#') {
      data += input;
    }
    else{
      String message_id = String(data.substring(0,1)); //gets only D or T
      data.remove(0,1); //data becomes "50" since '!' is not added to data
      if(message_id == "D"){
        segment = String(data.substring(0,2));dag=segment.toInt();
        segment= String(data.substring(2,4));maand=segment.toInt();
        segment= String(data.substring(4,8));jaar=segment.toInt();
        data="";
        Serial.print(dag);Serial.print("-");Serial.print(maand);Serial.print("-");Serial.println(jaar);
      }
      if(message_id== "T"){
        segment = String(data.substring(0,2));uur=segment.toInt();
        segment = String(data.substring(2,4));minuut=segment.toInt();
        data="";
        Serial.print(uur);Serial.print(":");Serial.println(minuut);
      }
    }
  }
}

Have a google of using these with an iPhone - I have a feeling there are some issues with Bluetooth and iPhones ?????
I recall being unable to connect to a iphone , but could with a PC or Android and finding something on line about being a known issue