aakash jaiswal
Published

A tennis ball robot

How I converted a tennis ball into a tinny robot using esp d1 mini and servo motors.

IntermediateFull instructions provided160
A tennis ball robot

Things used in this project

Hardware components

webmos d1 mini
×1
Graphic OLED, 128 x 64
Graphic OLED, 128 x 64
×1
3.7 volt battery
×1

Story

Read more

Code

coding.ino

Arduino
#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#include <Servo.h>
Servo myservo;
//SSID and Password to your ESP Access Point
const char* ssid = "tinny robot";
const char* password = "";

String command;             //String to store app command state.
ESP8266WebServer server(80);

void setup() 
{      if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
       {
       Serial.println(F("SSD1306 allocation failed"));
       for(;;); // Don't proceed, loop forever
       }
      display.clearDisplay();
      display.setTextSize(2); // Draw 2X-scale text
      display.setTextColor(SSD1306_WHITE);
      display.setCursor(0, 0);
      display.println("  Ready");
      display.display();      // Show initial text
      delay(100);
      myservo.attach(15); 
      myservo.write(0); 
      Serial.begin(115200);

  
// Connecting WiFi

  WiFi.mode(WIFI_AP);           //Only Access point
  WiFi.softAP(ssid, password);  //Start HOTspot removing password will disable security
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
     server.on ( "/", HTTP_handleRoot );
     server.onNotFound ( HTTP_handleRoot );
     server.begin();    
}

void loop() {
    server.handleClient();
    
      command = server.arg("State");
           if (command == "F") goForword();
      else if (command == "S") stopRobot();
}

void HTTP_handleRoot(void) {

if( server.hasArg("State") ){
       Serial.println(server.arg("State"));
  }
  server.send ( 200, "text/html", "" );
  delay(1);
}

void goForword(){ 

      display.clearDisplay();
      display.setTextSize(2); // Draw 2X-scale text
      display.setTextColor(SSD1306_WHITE);
      display.setCursor(0, 0);
      display.println("  Forward");
      display.display();      // Show initial text
      delay(10);
      display.clearDisplay();
      myservo.write(180); 
      delay(100);
      myservo.write(0); 
      delay(100);

  }

void stopRobot(){  
       myservo.write(0);
       display.clearDisplay();
      display.setTextSize(2); // Draw 2X-scale text
      display.setTextColor(SSD1306_WHITE);
      display.setCursor(0, 0);
      display.println("  Stop");
      display.display();      // Show initial text
      delay(10);
      display.clearDisplay(); 
 }

Credits

aakash jaiswal
17 projects • 26 followers

Comments