Let's make a draft about the project.
Firstly I need a Raspberry Pi, which has a Linux OS, can compile Python and even has an access to the Internet. Secondary I would like to use Arduino to get some data as well as realize some basic physical reactions. Thirdly a webcam is required to capture user actions.
Finally is to make the connection to an AI chatbot.Material List:
- and a monitor is required for Raspberry Pi
Just have everything in their right position.Step 3: Initial Raspberry Pi
Hint: Just install the Raspbian.Step 4: Test the Pi-camera
Here is a test code from pythonprogramming.net:
Step 5: PySerial Encapsulates the Access for the Serial Port
import io import picamera import cv2 import numpy #Create a memory stream so photos doesn't need to be saved in a file stream = io.BytesIO() #Get the picture (low resolution, so it should be quite fast) #Here you can also specify other parameters (e.g.:rotate the image) with picamera.PiCamera() as camera: camera.resolution = (320, 240) camera.capture(stream, format='jpeg') #Convert the picture into a numpy array buff = numpy.fromstring(stream.getvalue(), dtype=numpy.uint8) #Now creates an OpenCV image image = cv2.imdecode(buff, 1) #Load a cascade file for detecting faces face_cascade = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml') #Convert to grayscale gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) #Look for faces in the image using the loaded cascade file faces = face_cascade.detectMultiScale(gray, 1.1, 5) print "Found "+str(len(faces))+" face(s)" #Draw a rectangle around every found face for (x,y,w,h) in faces: cv2.rectangle(image,(x,y),(x+w,y+h),(255,255,0),2) #Save the result image cv2.imwrite('result.jpg',image)
Connect the Raspberry Pi and the Arduino Uno with the cable. After installing pySerial, reading data from Arduino is straightforward:
Step 6: Test the Sensor and the Servo on the Arduino
>>> import serial >>> ser = serial.Serial('/dev/tty.usbserial', 9600) >>> while True: ... print ser.readline() '1 Hello world!\r\n' '2 Hello world!\r\n' '3 Hello world!\r\n' Writing data to Arduino is easy too (the following applies to Python 2.x): >>> import serial # if you have not already done so >>> ser = serial.Serial('/dev/tty.usbserial', 9600) >>> ser.write('5')
I have a temperature sensor which would give feedback when (you petting the kitty) the temperature reaches some pre-set height.
I decided to have the bot make some feedback when I petting it.
eg. 'Meow! Keep going that way.'
'Purrrrrr. How is your day today my slave?'
'STILL NO GIRLFRIEND!?'
So I wanna set each of those sentences a number and make a random function to print any of those sentences on my screen (I would use ssh to connect to the Raspberry Pi) after I was petting it for ten minutes or even longer.Step 8: Update Your CodeStep 9: Package Everything and Put Them Into a Toy Kitty