BerryBot is a simple driving robot based on Raspberry PI and DC motors. You can control it over WiFi using mobile application that connects to server process running on RPI. Both app and server are implemented in Go, using gRPC for communication.
Chassis: I'm using chassis below which come with 2 DC motors already. Good enough for your first robot.
Raspberry PI (I'm using rev 2, but 3 should be better due to built-in WiFi)
DC motors controller. To connect DC motors to RPI, you need a controller with separate power source. You can't simply power up those motors directly from RPI. I'm using controller exactly as linked below (sorry, no English source for this), but you can find multiple alternatives that work exactly the same way.
Battery pack is needed to give enough power for DC motors. I've tried using provided chassis for AA batteries, but motors barely moved. I'm using 1300mAh, 7.4V LiPo pack now and it lasts for 30mins of fun or few hours of idling.
Distance sensors. I'm using ultrasonic sensors, because they are cheap, but operating them is quite problematic (and require logic levels converter below).
Logic levels converter is needed to connect ultrasonic distance sensors (using 5V) above to Raspberry Pi (using 3.3V). You can burn your RPI without it.
Generate proto:
protoc -I ./proto/ ./proto/steering.proto --go_out=plugins=grpc:proto
Install and run mobile app locally:
go install github.com/viru/berrybot && berrybot
Build and install mobile app on connected Android device:
gomobile install github.com/viru/berrybot/berrycli
Build and install mobile app on connected iOS device:
gomobile build -target=ios github.com/viru/berrybot
ios-deploy -b berrybot.app
Build server and upload to your RPI:
GOOS=linux GOARCH=arm go build -o build/bbserver ./bbserver/ && scp build/bbserver pi:
Run server on your RPI using sudo, because using GPIO pins requires it.