Control Freak

After spending most of my time finalizing PCBs, I got to work on the embedded software and its communication with the control software. We chose to take advantage of the embedded linux OS and use ssh.

We found the “mkfifo” command that allows a program to read a fifo to which we can write to through ssh using a command such as this : ssh[user]@[machine] ‘echo “[text]” > [path_to_fifo]’.

This puts text in a fifo and it is erased when read. we can therefore send commands from the control app to the embedded software using this method. A thread on the embedded linux reads the fifo and waits for a command to be written.… Read more

Time for testing

On Wednesday, I have corrected some more bugs in the PCB. I saw that I have route some nets between the bottom and the top of the PCB, so I route them again.

After a Skype with Alexis, I clean the git repository, and begin to prepare the folders for the tests on the PCB. Alexis asks us to make our tests on the STM of the iot_node before implementing them on the test_PCB. We receive it today, so we just need to wait for some soldering and then we can begin our tests of the H-bridge and other codes.

Here is the test PCB, we need to solder the coils on it

Now, I will begin to code the test code for the H-bridge and check if the code for the sensor works for the Iot_node.

More fixes on the PCB

On Tuesday, I check again the PCB and clean it a little. I found that some capacitors disappear during my cleaning, and I change the scheme a little. Because of the system of copy-paste of mentor and the way we put the decoupling capacitors, they are not linked with the same components. So I need to put again the capacitor near the component to check if I have all the capacitors I need.

Now, we receive the PCB, so we can begin the tests on it and I need to check with some documents Alexis give that all is ok with the HAL

I’ll be waiting for PCB

On Monday, I spend some times cleaning the PCB, by removing some resistor blocks and capacitors. We cannot take them out easily, so I have to clear them from the scheme one by one. I also move some multiplexers since they were very close to the route border. Now, we have a clean PCB but I need to clean a little the scheme.

I also continue to cut the oak plank for the final device, but I had some problems because of one of the planks which bends during the cutting. Two times. So we need to ship a new one.… Read more

Reducto!

On Friday, I work on reducing the final PCB from 16×16 to 14×14. I have discovered two new things: to delete some route, you can use the tool “add partially selected nets”. You will gain some time until you realise that you delete all the GND and VCC nets… By chance, after spending one-hour routing again theses nets, thinking that you would have gained more time by going back in your git, you can use the command fanout that will route again these nets easily. So, the PCB is almost finished, I just need to adjust the board outline and we can concentrate on the code and the test PCB that may arrive one day.… Read more

A l’aBOARDage !

The Mainboard has been sent to production. Now it’s time to get the Highway and LED PCBs ready. yesterday and this morning I ckecked everything from schematics to routing. We noticed that the connectors on the Highway to the LED PCBs needed to be flipped 180°. That meant routing it again. After doing it quite a few times, I’ve gotten used to using auto-route and cleaning up any traces that could be improved. It took an afternoon for the Highway to be ready for the final check up.

This morning I took a final look at the schematics for the highway, checking that the pinout were right according to the Mainboard and the LED PCBs and checking the clock buffer circuits.… Read more

Add some art and useful things

Still waiting for our PCB, I found a lot of little things to do to use my time. Adding some art around our hole, a temporary code for the hall effect sensor, that I cannot know yet if there are bugs or not in it. For this, I take some time at naming the pins in STM32CubeMX because it will be easier then.

I tried 5 different things, and we choose the one on the left finally. The SVG came from Stitches Vectors by Vecteezy

I also add a LED for the big PCB, since it will be useful when coding (we forgot to put one in the previous PCB).… Read more

A little smile for the photo…electric sensor

So, we had to design a small PCB in order to place the photoelectric sensor that allows us to measure the rotation speed (remember, we planned the possibility of using this sensor or a hall effect sensor).

This sensor is a small fork with an emitting infrared diode one one branch and two sensors on the other. When an obstructing object is placed between between the LED and the sensor, it can be detected.

Photoelectric sensor

The PCB will be screwed under the lower mechanical plate. We had an argument to determine if the connector to the mainboard should be on on the same side or the other side of the PCB.… Read more

GDBug and other glitches

Executing our code from flash

Last week Sibille and I moved our bare-metal code for the processor-PCB (which so far was directly inserted in RAM by the GDB debugger) into the Flash memory proper, and wrote code that will execute from Flash to copy everything in RAM and continue execution from there.

However, we soon noticed a strange bug: the GDB debugger now ignored every breakpoint we tried to set in RAM (breakpoints to parts of the code executed in Flash before the copy to RAM still worked fine). After a lengthy debug session, Alexis determine that it‘s a bug from the GDB debugger and not from our code.… Read more

PCB: Last step (until we found an error)

On Wednesday, I finished the PCB. I used one trick that found Alexis on our test PCB. We have two VCC, one for the coils and the other for all the other components. So, I create a two-parts plan. The VCC is in green and the VCC_COIL is in yellow.

I also have to route all the components. I found a way to make the routing easier, by enforcing a simple rule. When the route is horizontal, it must be on the top face, and when it is vertical, it must be on the bottom face. I also have to change the pins of the multiplexers in order to route them easily.… Read more