With reference to your system , how about this (no details given)
Bin sits taking measurements and stores data.
Bin wakes up every so often and checks its communications reciever for a valid signal.
When it recieves a valid signal it transmits an ID and a request to download data for transfer.
Upon recieving the go ahead, it transmits it data and when data is sent clears its memory and goes back to sleep.
Truck (with bigger battery) drives around collecting rubbish and sending out a hello ping to be recieved by bins.
Recieves a request and sends a download pulse back to that bin ID.
Stores all data onboard and sends a 'Flag Data As Sent' to the bin ID.
Continues on route and returns to the depot for shift change.
When in depot it recieves a 'Please Send Data' from the office. So it downloads all data to main office system.
Main Depot monitors its reciever and when it detects a 'HELLO Ping' from the truck it sends a request for truck to do a memory dump.
No cellular needed. All done through low range trancievers. Say 50 meters?
I would hold data in memory for a certain period so any hiccups can allow data to be recalled at a later date.
Trucks know to download if say the ignition switch is turned off or the battery volts drops below charging levels indicating the motor is no longer running or a particular time. All if within range of the depot tranciever.
Bins can be charged through a small solar panel on top and send data on battery condition of the bin number to the office and if needed a supervisor can be sent to attend to the bins batteries.
Having every truck driver trained to stop and replace batteries will be a pain and cause schedule delays.
Because? If you make the battery easy to access then someone will steal it and the more security the more time it takes not to mention say a lock box will require keys for every truck in the fleet as apposed to supervisors only.
Daz