It's possible via combination of three informations
All layers inherit from class Layer https://github.com/python-visualization/folium/blob/master/folium/map.py#L30 and one of the option states the following
control : bool, default True
Whether the Layer will be included in LayerControls.
You can set the tiles to None to not add automatically the ...
Find a reprex here. Since you didn't provide the data I used mock data to try to put together a solution.
Note also that the solution is based on the sf package, while your objects are on sp. You can convert sp to sf using st_as_sf().
Also, if you are a beginner I would recommend you to stick to sf unless you really need to work on sp:
For anyone doing this now on a newer version of QGIS:
After going 'add item', 'add North Arrow', you simply need to go to the item properties, the 'image rotation' dropdown and edit the 'North alignment' option to 'True north'.
If you have all the data, it seems you just need to load the data into QGIS. Then, you can change the map style and eventually print/save the map however you like. You can use the QGIS print composer for this.
In addition, QGIS has various plugins that supports web mapping services (WMS). One is the Quick Map Services plugin. With one of these, you can use ...