Friday, 26 February 2021

Head

 

While I am waiting for the Eye's PCB to arrive, I thought it best to start designing the head.


I want the head to be able to rotate continually in a direction, so I will be adding a slip ring to the base of the neck to pass wires through from the main body.
The slip ring enables the wire to be rotated without getting tangled up.
I want the head to nod as well as rotate, I will be using two small geared 6 volt motors.
To control these two motor I am using a cut down driver board I made for the Arms.
Tims DC Motor Driver X2

As I am using DC motors I need to make some thing to give feedback as to the position of the neck rotation and nod position.
To do this I am going to make similar sensors I used with the Arms.
I will be using Magnets and the 3144 Hall Effect Sensors.
Hall Effect Sensor
For the Neck Plate on which every thing rotates, I have placed Magnets all around the edge.
Neck Plate
I set the magnets in place with UV glue, this is a resin, so when it cured I was able to sand it down to a smooth even surface the 3144 Hall Effect Sensor could rest upon..
Sholders

Next was the base of the head, I want the head to be able to look up and down.
This part also needs limit switches, so that the base of the head does not hit the rotation platform.
Head Base
The rotary platform also requires a sensor to detect when looking forward, so that this position can be set.

I have done a simple program to check some of its movements so far.
Here's a video I made testing its movements:

Added a few parts:
Head Progress

Added some teeth hehe:
Animated Teeth

I have finished the Eyes PCB. Here: TIM-01 Eyes.

Now I want to add some Eye Brows.
I incorporated an Auxiliary switch into the Eyes PCB, so that I could add a solenoid to move the Eye brows.
Head Eyebrow Movement

The Eyebrows pivot on a wire spindle and are lifted by wires attached to a solenoid inside the head.
Eyebrow Solenoid

The head has a lot of functions to control, in my Bluetooth controller application, I have divided things into three:
  • Head Movement
Application Head Movement Screen


The next two, I thought I would try and emulate the actual devices.
  • Eyes
Application Eyes Screen

  • Mouth
Application Mouth Screen

Also with the last two, I wanted to get the text to look as it does on the devices.
I thought I would have to make two fonts, but as it turned out both the 2x16 LCD and the Nokia screens have the same font.
So I only had to create one font.
If anyone would like a copy of the font, it's here: Tims_8x6_Matrix.ttf
So far I have only done ASCII characters 32 to 127.
The 2x16 screen is the Chinese version, (Character Patterns - ROM Code: A00) which has Chinese characters after ASCII number 61. There are no characters between ASCII 127 and 60.
As for the Nokia Screens, I have only created ASCII characters 32 to 126 in the Arduino Library I made for the TIM-01 EYES.

Time fore a video demonstration.











Wednesday, 3 February 2021

Eyes

 


The head will be coming soon, but before I start on the head I want to design something for the eyes.
I have an idea, but want to test it out first.

I want to make the eyes out of the cheap Nokia screens available on eBay.
LPH7366

There are two types, one comes attached to a breakout board and the LPH7366 that does not.
The LPH7366 has a zebra ribbon connection, it also has nine pins internally connected to this ribbon.
I intend to use the LPH7366 version, they are cheaper (I don't think people know how to connect them), also I want to make a board specially for this project.

I am going to design a board that takes two of these screens and will control them from an PCF8574 I2C device, so that I can control it through my I2C bus on my robot.
PCF8574 Module

When I design the eyes I want to give them colour.
I have ordered some WS2812B Adressable RGB LED's to do this.
When I get them I will add them to my prototype.


Here is a video of my prototype so far:

I have also written an Arduino library so others can use it once I have finished it.

Got some WS2812B Addressable LEDs.
I found it cheaper to get them as a strip.

I cut two sections from the strip and stuck them on a new prototype support.
>

I wanted to control the WS2812B Addressable LEDs through the PCF8574 I2C device also.
But I was not able to do this. The signal to the WS2812B has a pulse width of 400 nanoseconds.
That's 400 billionth of one second, the PCF8574 is not fast enough to do the switching at this speed.
This is not really an issue, it just means there is one extra wire for the WS2812B LEDs and if I add more WS2812B LEDs, I can just add them to this wire.

It's not what I wanted to do so I had another look on the web and found some other Addressable LEDs. SK9822, these work similar to the Nokia Screens so I have ordered 10 of these.
These have clock and data wires (2 wire).
These are just what I wanted, because they have a clock wire, I am able to control them with the PCF8574 module, I am able to use the same clock wire I am using for the Nokia Screens, the data wire is a separate one.
(In hindsight I think I could have used the Nokia data wire also, but I had a touch of tunnel vision at the time and I have now ordered the BCBs.)

I made myself a small PCB for each Eye to mount them on, also attached wires to connect them to the main PCB which I will get made out.
I would have had the PCB made out with the main PCB, but the cost would double.
The offer manufacturers do for small prototyping boards, is only for single PCBs.
This is not a hard PCB to make.
I made an other prototype support to hold them, the back now looks like this:

I designed the main PCB using KiCAD.

The Circuit:

The Board:
I have tried to make the board so it can be used in a variety of ways.
  1. It will be possible to use the board with only the Nokia screens attached with a couple of capacitors and headers. With this setup, it can be connected to a microprocessor via the SPI (3.3v only).
  2. If you just want to light the screen the normal way it was on the phones. Eight LEDs and resistors can be added to the above setup.
  3. If you want to control every thing through I2C, then most of the components on the back are needed.
  4. I have also put provision for an axillary switched output. I am thinking of making razing eyebrow's :)
I am having the board made at 
and will add a link to a shared post there when done, if anyone wants to make one.

Received the PCBs:
Exhalent job as usual:

When I added all the components to the board, I found I had made a mistake on the board, fried a diode on one of my Nano's.
This was easaly fixed, I just had to cut a little bit of copper track.
I think I also made the gaps too small between the contacts of the Nokia Screens, I was able to widen them.
For some reason it didn't work first off, it took me a few days to find what was wrong.
I had forgot I had made some changes to which pins on the PCF8574 did what.
I eventually realised I had swopped two over, once I altered this in the code all worked perfectly.

I have corrected my files for making the PCB also.
If you want to make one of these, I have shared it at PCBWay.
PCB from=From pcbway

Rear view:
As I am not using the four little diodes around each screen, the resistors: R2, R3, R4, R5, R23, R24, R25 and R26 are not fitted. Also not fitted are the SPI headers.

I have done a blog on how I design a PCB with a short video of me fitting SMDs here: DC Motor Driver X6.

Front view:
This side just needs the two capacitors and screens, the header from the 3.3v regulator is also not fitted.
As the Screens are designed for a thinner PCB, I don't advise trying to push the clips of the screens all the way through the PCB.
I used UV resin to hold the screens in place.
Once I have the screen set correctly.
I put a few drops on the back and shine the UV light on it before it has chance to run all the way to the front.
The UV resin I use is the cheap stuff from eBay.
I think its a week version of the finger nail resin, I find if you use too little amount, it does not have a mass to start the hardening reaction.


Because I have made some changes to the PCB, I have decided to change the cables on the RGB LEDs.
Plugged them into the board to test them:

Here they are fitted:

Eyes Fitted to the head:


I have done an Arduino Library to control the Eyes via I2C.

The Head is continued here: TIM-01_Head.


Should anyone decide to make this, don't hesitate in asking for help.
I found that some of the Nokia Screens can be temperamental lining them up with the connections on the board.
I think these screens are old stock. In one order of three I received three different revisions of the screens, each having slight differences in the manufacturing.
I think this is why these versions of the screen are not sold on breakout boards.