Johnson, who has described his symptoms as mild, is leading the government’s response to the crisis, chairing meetings by video conference.
The health minister, Matt Hancock, has also tested positive and is working from home.
“We know things will get worse before they get better,” Johnson will write in his letter, which will be sent to 30 million households across the United Kingdom starting from next week.
“But we are making the right preparations, and the more we all follow the rules, the fewer lives will be lost and the sooner life can return to normal,” he will say, according to a statement from Downing Street.
Britain has reported 17,089 confirmed cases of coronavirus and 1,019 deaths. The peak of the epidemic in the country is expected to come in a few weeks.
After initially taking relatively modest steps compared with other European nations, Johnson ramped up his response to coronavirus in the past week, ordering pubs, cafes, restaurants and shops to close and making social distancing compulsory.
In his letter, he will thank all those working for the state-funded National Health Service (NHS), which provides free healthcare to everyone living in the United Kingdom and inspires huge respect across society.
“It has been truly inspirational to see our doctors, nurses and other carers rise magnificently to the needs of the hour,” Johnson will say.
“Thousands of retired doctors and nurses are returning to the NHS – and hundreds of thousands of citizens are volunteering to help the most vulnerable.
“That is why, at this moment of national emergency, I urge you, please, to stay at home, protect the NHS and save lives.”
The letter will come with a leaflet containing the government’s advice on hand washing, rules on leaving the house, guidance for those self-isolating with symptoms or shielding vulnerable people, and explanations of symptoms.
The letter and leaflet are part of the government’s public information campaign on coronavirus, and are expected to cost 5.8 million pounds (US$7 million) to print and distribute.
(US$1 = 0.8031 pounds)