You got some of the concepts correctly, but your implementation may need some help.
So Spring Cloud Dataflow is an orchestration engine that deploys boot applications and connects them using a middleware.
Those apps can be Streaming apps, which mean they use Spring Cloud Stream as an abstraction layer to communicate with a middleware (Rabbit or Kafka), and in its core it has three types of apps: Sources (data emitters), Processors (data transformation) and sinks (data receivers)
You use dataflow to combine those and deploy to a runtime (Local, CloudFoundry, K8S, YARN)
So, yes SCDF can be used for your assignment, however you do not want to create one sink per bus, this is abusing your resources.
You can have a simple stream that captures the data from your buses (the source), maybe do some transformation and sinks it to a DB
You can then create a tap that listens to the messages stored in a DB if you are interested in processing them.
You can tap that information and have a client that broadcasts it downstream (your display at each bus stop)
So for example you can have just one single sink, but have a websocket for example where each client connects and passes an id. You can then forward the events received filtered by that id to this specific client.
This is a much more efficient way to deal with that.