Phone-controlled robot
Buttons on your phone drive a two-wheel robot. The slider sets the speed.
What you need
- TinkerPie V1 board (or the free online simulator)
- USB-C data cable
- A 2.4 GHz Wi-Fi network and a phone
Wiring
Put your Wi-Fi name and password in the first block. Then open the address shown in the console on a phone on the same Wi-Fi. Wheels: left → MOTOR 2, right → MOTOR 1.
Step by step
- Open Phone-controlled robot in TinkerPie Studio. It opens as blocks.
- Wire it: Put your Wi-Fi name and password in the first block. Then open the address shown in the console on a phone on the same Wi-Fi. Wheels: left → MOTOR 2, right → MOTOR 1.
- Press Run to try it in the simulator. Use the sliders and buttons under the board picture to test it.
- Type your Wi-Fi name and password into the connect to Wi-Fi block.
- Connect TinkerPie with a USB-C cable in Chrome or Edge, press Connect, then Download. Or, with Studio started from the TinkerPie launcher on your computer, open the Arduino C++ tab and press Build & Flash.
- Change something: a colour, a number, a sound. Then run it again.
The code
This is the program the blocks make. The same program runs in the simulator and on the board.
JavaScript
var speed;
dashboard.onButton('Forward', function () {
speed = dashboard.slider('Speed', 20, 100);
motors.tank(speed, speed);
basic.showIcon(IconNames.ArrowUp, Colors.Green);
});
dashboard.onButton('Left', function () {
motors.tank(-40, 40);
basic.showIcon(IconNames.ArrowLeft, Colors.Green);
});
dashboard.onButton('Right', function () {
motors.tank(40, -40);
basic.showIcon(IconNames.ArrowRight, Colors.Green);
});
dashboard.onButton('Back', function () {
motors.tank(-50, -50);
basic.showIcon(IconNames.ArrowDown, Colors.Orange);
});
dashboard.onButton('Stop', function () {
motors.brake(Motor.Both);
basic.showIcon(IconNames.No, Colors.Red);
});
wifi.connect('my-wifi', 'my-password');
basic.showIcon(IconNames.Happy, Colors.Green);Arduino C++ (TinkerPie library)
// Phone-controlled robot
// Arduino C++ made by TinkerPie Studio from the blocks. Board: TinkerPie V1 (ESP32-S3).
// Arduino IDE: install the TinkerPie library (Studio menu > Arduino library), then Tools > Board > ESP32S3 Dev Module,
// USB CDC On Boot: Enabled, Flash Size: 16MB, Partition Scheme: 16M Flash (3MB APP/9.9MB FATFS), PSRAM: OPI PSRAM.
#include <TinkerPie.h>
using namespace tinkerpie;
double speed = 0;
void setup() {
tinkerpie::begin();
dashboard::onButton("Forward", []() {
speed = dashboard::slider("Speed", 20, 100);
motors::tank(speed, speed);
basic::showIcon(IconNames::ArrowUp, Colors::Green);
});
dashboard::onButton("Left", []() {
motors::tank(-40, 40);
basic::showIcon(IconNames::ArrowLeft, Colors::Green);
});
dashboard::onButton("Right", []() {
motors::tank(40, -40);
basic::showIcon(IconNames::ArrowRight, Colors::Green);
});
dashboard::onButton("Back", []() {
motors::tank(-50, -50);
basic::showIcon(IconNames::ArrowDown, Colors::Orange);
});
dashboard::onButton("Stop", []() {
motors::brake(Motor::Both);
basic::showIcon(IconNames::No, Colors::Red);
});
wifi::connect("my-wifi", "my-password");
basic::showIcon(IconNames::Happy, Colors::Green);
}
void loop() {
tinkerpie::loop(); // runs the forever blocks and handles events
}More projects like this
Phone weather stationTemperature, humidity and light from the board, live on your phone.IoTDoorbell notifierPress A: a bell rings and your phone gets a notification, even from another room.IoTCloud thermometer (ThingSpeak)Logs temperature and light to a ThingSpeak channel every 20 seconds: graphs you can open anywhere.IoTSmart plant monitorSoil moisture on your phone dashboard, a notification when the plant is thirsty, and a ThingSpeak log.IoT