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
Since I was out of PCBs to work on, it was time to move on to embedded software. One of the critical parts of the sowftware is the DMA (Direct Memory Access) controller. It will handle copying the image data to each of the 20 double buffers. Altera provides an IP that interacts with a C API for control from C code executed on the HPS.
Salomé has been working on making the IP work in quartus and testing it with the LEDs on the DE1-SoC evaluation board. An example was provided and was modified to work with our quartus project and the LED control IP that we used to test the DMA.… Read more
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
On this new episode of the Mainboard update, nothing too exciting. Alexis did the final touches on the PCB, made the silkscreen and we should be good to go. Only thing left to do was create the Bill Of Material. I had to fill up a spreadsheet with the components, distributor and number of unit in stock to check whether they would be available when needed.
Some errors were found as well as some components that weren’t distributed anymore but nothing major.
We now can focus on the other PCBs and get them ready as well.
The issue that can prove quite difficult is that due to health and safety concerns with the spread of the corona virus, PCB manufacturing has been halted in China and Europpean manufacturers therefore have massive delays.… Read more
We slightly changed the schematics to accommodate for the sensors. We will need to make a small dedicated PCB but this should be fairly easy and can be done in house. As for routing, some slight changes were made like adding bigger areas where routing is forbidden around mounting holes.
We still need to change the connectors between the mainboard and the highway (on the mainboard side) to get the right board stacking height. this should be done soon as the connectors only differ from the others in their height so routing won’t need to change.… Read more
Some news about our Mainboard. After some decisions had to be made to finish routing the Mainboard, it is finally ready to be reviewed and prepared for production. Some changes include adding plated mounting holes for mounting the board and passing GND. Some holes were added in order to make balancing the board easier as it will be spinning fast enough that weight distribution will be an issue.
The holes on the mainboard and the Highway PCB need to be aligned which was an issue with connector placement on the latter. Nathan had to get the proper coordinates and angles for the connectors that could fit the mounting holes that we need.… Read more
Time to talk about some electronics. The schematics are in what seems to be their final iteration (hopefully) so let’s check out the results.
Right here you can see both SoM connectors and their signals. The leftmost connector has the FPGA signals and the other one has the HPS signals. This page also contains the JTAG connector, pads for VCC12 and GND connections, an UART connector for the SoM’s boot log and the wifi mode selection switch. You will also find the reset switch and stabilization module for Reset signal propagation as well as the SoM’s decoupling capacitors.
This page contains the power supply rails.… Read more
After making the video work with the voxelization, an issue arose. Resizing did not work properly with videos which caused errors in the voxelizing algorithm. I narrowed it down to the calculation of the resizing factor which gave an incorrect value. I realized that the resizing factor that I got from my method was only valid if the solid was centered which was not necessarily the case for a video as it is the centering vector is the same for every obj file.
After finding where the issue came from, correcting it was not hard. Considering r_max the max radius of the object, z_min and z_max the max and min for z-axis values in the obj file and H and R the height and radius of LitSpin, i only needed to change the resizing factor from max(|z_max – z_min|/H, r_max/R) to max(2*|z_max|/H, 2*|z_min|/H, r/R) which gave a factor that would not be dependent on the object being centered.… Read more
After fixing the bug that prevented us to use voxelization in litControl, the time came to keep working on the integration of features. The plan was to add the option to center or resize an image and add video voxelization.
Center and resize now are selectable options in LitControl that make any obj file displayable in full on the LitSimulate widget. Video voxelization now works but needs to be integrated into LitControl. Right now, it is not done directly by opening an obj file from LitControl. The video voxelization is tested by being handled in the main function and the qt application handles opening the resulting frames.Integrating… Read more
This morning, I made some adjustments to the voxelization. we needed to be able to support obj files that weren’t exactly to scale or centered. I had to make some changes to the obj file reading method.
First thing was to get the cuboid that our object would fit in in order to find the center of the image we had to display. The way we did that was by finding the vectors with the max and min of each coordinate and we could deduce the vector we needed to substract to every other vector in order to center the image.… Read more