Are you staying at the Marriott? If so the closest Diveop is probably the St. Thomas Diving Club at Bolongo Bay Resort, it's about a mile south/east from Frenchmans Reef.
The next closest would be back to town to the WICO(cruiseship) dock and Underwater Safaris. They're located in the Havensight Mall. I have no personal experience with them, but they are highly rated. Must get a lot of cruise traffic though.
Another option is Dive In at the Sapphire Beach Resort. It's probably 15mins. east to Sapphire Beach from the Marriott. We dove Grass Cay with them last April. It's an easy dive, probably didn't break 50'. Lots of stuff to see, Stingrays, the bottom is covered in coral and lots of fish. They're not a cattleboat, we went out with 4 that morning. And very safety conscious, we did a drift and were asked to hang on/near a reel line. fwiw, last April there were Tiger sharks in that area.
Five minutes farther east is Chris Sawyer's in Red Hook. Their boats leave from American Harbor there.
10 minutes past that is Coki Beach, a shallow shore site with an easy entry. Not a great dive though, it's pretty sparce. And it's a cruise ship dive site. If you do go there with your son, swim towards the Coral World dome, but stay inshore of it. Out past there in the channel it's mostly sand. Be careful once past the inlet pipes, the current picks up wicked fast there sometimes - something the Coki Beach diveop forgot to mention. Although if there's no current, the coral seems to be a lot better in that area. If there is current, you risk being blown around the point.
Coki Beach is also where the locals hang out so there's a different vibe there than Charlotte Amalie - much more relaxed and friendly. And they rent JetSkis and Kayaks there also. And there's "Coral World" sort of a 60's aquarium venue.