The 24-year-old, who spent last season on loan in the Championship with Portsmouth, has signed a three-year contract at Vicarage Road.
Stoke manager Tony Pulis told his club's official website: "Carl played an important part in helping the club to get where it is today. He was a hugely-popular figure.
"We are all delighted for him that he has been offered this new challenge with a club who have been there or thereabouts in the Championship promotion race in recent seasons."
Dickinson is Hornets boss Sean Dyche's sixth summer signing along with Craig Forsyth, David Mirfin, Mark Yeates, Prince Buaben and Chris Iwelumo.