![projectImage](https://dfimg.dfrobot.com/nobody/makelog/7bd7aba70146f7a45ee08e45ca552a42.jpg)
I used to dream of my kitty talking to me and now I am going to make my toy kitty react to my actions and even CHAT WITH ME!
Step 1: Schematic
![projectImage](https://dfimg.dfrobot.com/nobody/makelog/76e3742ce7d489f383ccc22dca2fe39d.jpg)
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:
Model B 5MP Night Vision Camera for Raspberry Pi
DFRduino UNO R3 [ similar as Arduino UNO R3 ]
USB Cable A-B for Arduino Uno/Mega
and a monitor is required for raspberry pi
Step 2: Assambling
![projectImage](https://dfimg.dfrobot.com/nobody/makelog/3c42868b1d44a5f4fd6774f55f59bea2.jpg)
![projectImage](https://dfimg.dfrobot.com/nobody/makelog/4ddf872a3fc063d534c006419f60900c.jpg)
Just have everything in their right position.
Step 3: Initial Raspberry Pi
![projectImage](https://dfimg.dfrobot.com/nobody/makelog/1d10f1606ff8ad2127d5a7ee20c17bda.jpg)
Hint: just install the RASBAIN
Step 4: Test the Pi-camera
here is a test code from pythonprogramming.net
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)
Step 5: PySerial Encapsulates the Access for the Serial Port
connect the Raspberry Pi and the Arduino Uno with the cable. After installing pySerial, reading data from Arduino is straightforward:
>>> 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')
Hint: http://playground.arduino.cc/Interfacing/Python
Step 6: Test the Sensor and the Servo on the Arduino
![projectImage](https://dfimg.dfrobot.com/nobody/makelog/7e6374c3517fe81c8b39d76988e29cb5.jpg)
![projectImage](https://dfimg.dfrobot.com/nobody/makelog/42954139b34fb34a0f6d0aac2ee10cf4.jpg)
![projectImage](https://dfimg.dfrobot.com/nobody/makelog/3f949a0cabca38d81dbb6f59cef05ceb.jpg)
Step 7: Add Chatbot Functions
Step 8: Update Your Code
Step 9: Package Everything and Put Them Into a Toy Kitty
![projectImage](https://dfimg.dfrobot.com/nobody/makelog/322a9b7c5d1e5e60f59a744deb5e88dd.jpg)
![licensBg](/images/license_bg.png)