Pablo is an open source social robot.

Similar projects worth following
Pablo is an open source social robot. A physical chatbot.

1. A Python program running on a host computer accepts input from a web form.
2. Input is interpreted using Artificial Intelligence Markup Language (AIML)
3. Response is sent via Bluetooth and spoken by Pablo.

Using the basic PyAIML example plus a simple web form we are able to talk to PABLO.

Pablo is formed with one continuously folded cardboard box. His eyes are diffused with an electrical wire spool cut in half. Pablo is open source hardware and software and details including license can be found on Github

Pablo uses PyAIML. A FreeBSD licensed Python AIML Interpreter by Cort Stratton available at

Using the basic PyAIML example plus a form we are able to talk to PABLO.

Speech-to-text works on Android but I need to get the Javascript API working. I was using the speech-to-text input feature in Chrome (x-webkit-speech) but it has since been deprecated. NOTE: As of this writing, a Javascript Speech API example is implemented but not yet integrated.

AIML responses are constructed from a set of reduced answers to planned questions. eg. “What’s your name?” “Who are you?” “What are you called?” = PABLO. If a pattern is not matched, it is searched on Wikipedia. (Working on disambiguation errors.) Most of the time Pablo cocks his head to the side and says "dunno".

Not quite Natural Language Processing but with random responses and recollection it can make for convincing conversations.

An Arduino with the Adafruit EZ-Link Bluetooth Shield receives the response from the host computer. The response is interpreted then commands issued to eyes, servos, and speech module.

I'm using DECtalk commands to control voice ( and DECtalk-like commands for eyes and mouth control.

<pattern>CLOSE YOUR EYES</pattern>
[:rgb000000]<think><set name="topic">EYES</set></think>

<pattern>RED EYES</pattern>

<pattern>SHUT UP</pattern>
<template>[:jaw0] </template>

<pattern>SHUT YOUR MOUTH</pattern>
<template><srai>SHUT UP</srai></template>

I used the proto area of the shield to connect headers to which I can temporarily plug in the text-to-speech module, two servo motors, and the level converter connection to eyes.

The eyes are controlled by a small microcontroller from Adafruit called the Trinket and is powered by the lipo battery. They are self supported and can easily be repurposed for other projects. I used a 16 pixel ring and a 12 pixel ring which made some of the eye functions a little specific to this build. The logic level converter is used to receive commands over I2C from the 5v Arduino microcontroller using the Tinywire library.

Everything is currently crammed into a cardboard box with a speaker pointed down into the mouth. A talking function randomly moves the jaw servo while Pablo is talking, opening and closing the mouth. This combined with the advanced settings of the Emic2 voice module make for endless hilarity. A second servo twists the head briefly, as one might picture a confused dog, when an answer is not known. The datasheet from Parallax(PDF) shows you how to change the basic settings and take advantage of the more powerful DECTalk processor.

Lots of things to build on, still tons to do, least of which is his “personality”.

  • 1 × Arduino Duemilanove microcontroller (Or any compatible)
  • 1 × Adafruit BlueFruit EZ-Link Bluetooth Shield
  • 1 × Emic2 text-to-speech Module
  • 1 × 1000 mAh Lipo battery
  • 1 × 2 Adafruit NeoPixel rings (I’m using one 16 and one 12 pixel)

View all 9 components

  • Exploded View

    Andrew Smith08/19/2014 at 22:34 0 comments

    May need to get this into CAD. Start playing with the idea of custom PCB and enclosure. Though the cardboard is cute, it's already showing signs of wear.

  • System Design

    Andrew Smith08/19/2014 at 22:22 0 comments

    Added system design diagram. Wasn't sure if a schematic Fritzing diagram was sufficient.
    Also most of my updates have been edits to the details section rather than project logs. Just wanted to make sure I dotted my "eyes" and crossed my "tees". Fourth project log.

  • Tracking down /n newline bug

    Andrew Smith08/18/2014 at 21:55 0 comments

    I am finding responses hang where more than one type of command is sent to Pablo.

    For instance, in the following example when the phrase "red eyes" is heard. Pablo receives the rgb led command and is supposed to speak but instead hangs. This is true for servo commands as well.

    <pattern>RED EYES</pattern>
    [:rgb220000] I have red eyes.

    The next command sent then gets truncated into senseless two-responses-in-one speech.

    Investigating if the Emic2 module is receiving the (/n) new line to finalize the command at all or if a delay is needed in between.

  • As seen on SHOW and TELL!

    Andrew Smith07/24/2014 at 03:37 0 comments

    Pablo made an appearance tonight on Adafruit's Show and Tell Show!


  • Added repo for Pablo

    Andrew Smith07/16/2014 at 07:11 0 comments

    It's still rough but functional. And open.
    Added code to Github

View all 5 project logs

Enjoy this project?



zakqwy wrote 07/17/2014 at 13:45 point
I'm a fan of the slightly crooked jaw and differently sized eyes. Adorable.

Great project!!

  Are you sure? yes | no

Andrew Smith wrote 07/17/2014 at 21:54 point
Thanks! It seems using what I had on hand and making him imperfect gives him his charm.

  Are you sure? yes | no

Andrew Smith wrote 07/02/2014 at 04:12 point
Thanks Adam, will definitely be adding more.

  Are you sure? yes | no

Adam Fabio wrote 07/01/2014 at 04:50 point
Is it wong to call an entry in The Hackaday Prize cute? Well, this one is, so thank you for entering Pablo into the running! The different sized "eyes" definitely give him a personality! Try to upload a few more videos of Pablo in operation if you can - the quick vine leaves me wanting more!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates