Codding Prosthetic Arm

Written by: Fabian Suske

Approved by: Carolina Barrera

 

Table of Contents

Intro:

In order to fulfill mission success, the selected components need to brought to live. Therefore the MCU Teensy needed to be programmed.

 

Objective:

The objective of the Code is to read the EMG sensor, the temperature sensor, the kill switch as well as moving the motor. Due the components chosen a variety of challenges needed to be addressed. The main challenge arises due to using a stepper motor in combination with the Allegro A4988 stepper motor driver. This combination needs constant signals from the MCU to the driver while moving. Therefore pulling of items like the kill switch or the temperature sensor are not possible. As a result Interrupt Service Routines (ISR) were used for almost everything.

 

Main components:

EMG

The first ISR was used to read the EMG signals. Prototyping has shown that pulling this value, the way it is required, is not sufficient enough. The arm then reacts funny and junky. It also has a poor response time. Most of this results in the fact, that the user starts using the arm in the middle of the pulling process. As a result the long burst might be interpreted as short ones. Or short ones not at all.

 

This problems were solved once the ISR was implemented. If the user starts using the arm, the Teensy registers an interrupt at the assorted pin. Then the burst duration algorithm “kicks” in and delivers an accurate result.

The code to detect if the user operates the arm or if noise triggered the interrupt is as short as possible in order to not interrupt the movement of the arm.

 

Temperature Sensor

The temperature sensor was another challenge. The way the sensor is designed to work as followed: After a few byte were written into registers on the sensor the sensors starts the temperature reading. Then the user has to wait at least 750ms (a little more is better) before the measurement can be read. If the user tries to read the measurement faster the senor either return one of his “default” values 0 or 85 or it simply returns the last measured value. If the value continuously is read to fast, the value displayed might be obsolete and wrong.

Waiting for 750ms on the other hand is not acceptable while the motor is running. An ISR that performs the reading in a smart way has been implemented:

The ISR will be handled by a timer object. Every time the timer has an overflow the ISR is triggered. Once the ISR is called it checks a flag to see if the sensor is currently reading a measurement or not. If the measurement is not in progress a measurement is started. Once the ISR is triggered the second time 800ms later the values are ready to be read.

In this way no time is wasted with a delay function.

Kill switch

The kill switch is handled in a similar fashion as the EMG sensor. In case the kill switch is triggered due to an external interrupt, the ISR then sends a low signal to the enable pin of the LDO which then shuts down the entire system.

 

Motor control

The last part that’s needs to be coded is the motor control. The previously mentioned EMG-ISR has provided us with the direction of movement (Up, Down or Stop). The constantly called motor routine then moves the arm in the desired way.

In order to not violate our range of motion a few functions needed to be implemented additionally. The 150 degrees of freedom needed to be translated into degrees the motor actually travels. Once the position of the motor was found a routine checked if the desired motion is valid. If the motion is not valid, the arm travels the maximum possible distance.

 

Temperature Protection

In order to shut down the system once an unsafe operating temperature of 55°C is reached yet another ISR has been implemented. This ISR is also based on a timer. Once this ISR detects that the temperature is unsafe, the system is shut down in the same fashion as with the kill switch

Noise Requirement

written by: Fabian Suske

Approved and Edited by: Carolina Barrera

Table of Contents

Intro:

In order to fulfill the L2-13 subsystem requirement “Safety/Temperature sensor” a test has been carried out. This test followed the Verification and Validation Test Plan. The temperature sensor was implemented as a safety switch in the device. The feature is to prevent incidents when the components overheat, and the device could potentially become a hazard for the user’s safety.

 

Test Objective:

The test criteria that needs to be tested in this inspection is the following:

 

“Test Objective:  To successfully verify the L2-13 (Safety) requirement, the Prosthetic Arm shall implement a temperature sensor such that upon reaching unsafe operating temperature (above 55°C), the system will shut-off “[1]

Test Method

The test was set up in the following way:

  • Temperature sensor
  • Maker1000
  • C Algorithm to control the shutdown

Because of the incident while testing the kill switch, the Teensy MCU was not available for testing anymore. So, the temperature sensor was tested with the Arduino Maker1000 on a breadboard.

The breadboard was placed in a “temperature isolated” environment which was then heated up until the unsafe operating temperature of 55°C was reached. An indicator LED in the breadboard notified the system’s shutdown.

 

Test Conclusion:

Figure 1 shows that after the temperature reached the 55°C the Serial plotter stopped, and so we knew the shutdown had been initialized.

At the same time the LED indicating the shutdown went on in Figure 2.

The Serial Monitor also logged the temps and the shutdown. Figure 3 shows the analog serial values the temperature sensor was outputting.

[1] https://drive.google.com/drive/folders/0B3qlnfB-grPcVzJOTTZyemZ2R3c

Temperature Sensor / Safety

Written by: Fabian Suske

Approved and edited by: Carolina Barrera

Table of Contents

Intro:

In order to fulfill the L2-13 subsystem requirement “Safety/Temperature sensor” a test has been carried out. This test followed the Verification and Validation Test Plan. The temperature sensor was implemented as a safety switch in the device. The feature is to prevent incidents when the components overheat, and the device could potentially become a hazard for the user’s safety.

 

Test Objective:

The test criteria that needs to be tested in this inspection is the following:

 

“Test Objective:  To successfully verify the L2-13 (Safety) requirement, the Prosthetic Arm shall implement a temperature sensor such that upon reaching unsafe operating temperature (above 55°C), the system will shut-off “[1]

Test Method

The test was set up in the following way:

  • Temperature sensor
  • Maker1000
  • C Algorithm to control the shutdown

Because of the incident while testing the kill switch, the Teensy MCU was not available for testing anymore. So, the temperature sensor was tested with the Arduino Maker1000 on a breadboard.

The breadboard was placed in a “temperature isolated” environment which was then heated up until the unsafe operating temperature of 55°C was reached. An indicator LED in the breadboard notified the system’s shutdown.

 

Test Conclusion:

Figure 1 shows that after the temperature reached the 55°C the Serial plotter stopped, and so we knew the shutdown had been initialized.

At the same time the LED indicating the shutdown went on in Figure 2.

The Serial Monitor also logged the temps and the shutdown. Figure 3 shows the analog serial values the temperature sensor was outputting.

Resources

[1] https://drive.google.com/drive/folders/0B3qlnfB-grPcVzJOTTZyemZ2R3c

Kill Switch / Safety

Written by: Fabian Suske

Edited and Approved by: Carolina Barrera

Table of Contents

Intro:

In order to fulfill the L2-12 subsystem requirement “Safety/Kill switch” a test has been carried out. This test followed the Verification and Validation Test Plan.

 

Test Objective:

The test criteria that needs to be tested in this inspection is the following:

 

“Test Objective:  To successfully verify the L2-12 (Safety) requirement, the Prosthetic Arm shall implement an electronic kill switch allowing the user to shut-off the system in case of an emergency “[1]

 

Before the MCU is integrated, a basic functionality test has to be carried out.

Test Method

The test was set up in the following way:

  • Power supply
  • PCB
  • Teensy
  • C Algorithm to control the enable pin

The PCB was hooked up to the power supply. The Enable jumper was shorted, and the system powered up. When the jumper is removed, the power in the PCB should shutdown.

Afterwards the MCU should be able to control the Enable pin.

The Teensy MCU was connected to the PCB. Once connected, the PCB was powered up. The MCU sends a high signal to the Enable Pin of the 14-12V LDO. Upon the successful reading of the high signal, the Enable Jumper was removed. Setting the Enable pin to low the power should cause the LDO to turn OFF.

 

Test Conclusion:

The first test was performed successfully. When the Enable Pin was shorted, the LDO provided power to all subsystems and Power was available on the 12V and 5V outputs. Once the jumper was removed, the power in the outputs dropped, and the system works as designed. An oscilloscope was hooked up to the PCB to measure the performance of the power off.

The following time was measured:

  • Reaction time of the LDO
  • Shutdown time
  • Total time of shutdown

The time after the Enable signal drops (the reaction time- blue/Ch3) until the Voltage drops(green/CH2) obtained in the measurements was 4ms roughly.

The shutdown time -the time it takes the system to drop from 12 to 0V, was measured, and 5ms were obtained.

The total time of shutdown was calculated as the sum of the two previous times. Hence, it can be concluded that the system shuts down completely 9ms after the Enable was set to low.

 

After this, a second test was performed. In order to control the Enable pin through software, the MCU was connected to the PCB, but in this part of the testing we had the PCB behaving unusual.

When the MCU was connected to the board, and the Enable jumper was removed from the board, the system stayed ON. Another option to shut the system down was to force the output in the Enable pin to low, but that didn’t work either. After a couple of tries, the MCU was not programmable anymore. It’s unclear up to this point what could have occasioned the malfunction. Probably the Pin design to pull the Enable pin down was shorted to 12V by accident. As a result, the MCU fried, and was left inoperable.

In conclusion, the Hardware implementation of this power off works. When the MCU was introduced to control, the action of powering off the system didn’t do what it was supposed to, and a short might have left the MCU broken presumably. Therefore, the test failed but it was still completed around 50%.

Resources

[1] https://drive.google.com/drive/folders/0B3qlnfB-grPcVzJOTTZyemZ2R3c

Portability (L2-8)

written by: Fabian Suske

Approved and edited by: Carolina Barrera

Table of Contents

Intro:

In order to fulfill the L2-8 subsystem requirement “Portability” an inspection has been carried out. This test followed the Verification and Validation Test Plan. This requirement is basically to ensure the arm can be operation for 20 minutes – as agreed, and justified in previous stated requirements.

 

Test Objective:

The test criteria that needs to be tested in this inspection is the following:

 

“Test Objective:  To successfully verify the L2-8 (Portability) requirement, the Prosthetic Arm battery system shall allow the user mobility, as to permit a 20 minute operation without constraining the user to a wired connection to the mains grid, or generation source.“[1]

 

This requirement goes along with duration, and both entail the success in the battery selection. If the team chose the right battery, then the arm will be able to operate for 20 minutes continuously, and ideally, it would not need to be recharged until the meal is finished. Therefore, the battery has been hooked up to the PCB and the both critical Voltages read.

 

Test Method

The test was set up in the following way:

  • Battery
  • PCB
  • DMM

After the battery was hooked up, the DMM was used to measure the Voltage for 12V and 5V at the respective points. These readings are the power to the MCU and the motor. From the arm MCU there are wires that power the Hand’s MCU, and the motors in the wrist and fingers. This is the reason for having these two requirements for battery selection.

Figure 1 shows the mount of the battery inside the bicep, and Figure 2 and Figure 3 show the reading of the output voltages from the PCB.

Test Conclusion:

The first positive indication was that all status/power LED’s light up. This means the battery is able to provide at least 6 V to the Buck Converter. The following measurement ensured that the Voltage levels outputting the right values.

[1] https://drive.google.com/drive/folders/0B3qlnfB-grPcVzJOTTZyemZ2R3c

Blogpost Speed requirement (L2-6)

Written by: Fabian Suske

Edited and approved by: Carolina Barrera

Table of Contents

Intro:

In order to fulfill the L2-6 subsystem requirement “speed” a test has been carried out. This test followed the Verification and Validation Test Plan. The speed is mainly a requirement that was generated to make an effective system that would allow the user to bring the food elements to the mouth-level and back to the table to roughly complete the mission in the average time to eat a meal.

 

Test Objective:

The test criteria that needs to be tested in this test is the following:

“To successfully verify the L2-6 (Speed) requirement, the Prosthetic Arm shall be operable by the user at a pace of ten “lifts” (ie. movement from resting position on table, to flexion point required to reach mouth) within 8 minutes.” [1]

 

Therefore 10 movements of 120 degrees needs to be completed in under 8 minutes since 60 degrees is our range of motion.

Since the arm utilizes a stepper motor -which gives precise control over the movement (angle, steps), a test algorithm has been set up that moves the arm 10 times up and down in a specific period of time.

Test Method

The test was set up in the following way:

  • C Program to control the movement
  • The prosthetic arm with a mounted forearm
  • Smartphone as stopwatch
  • Camera to document the test

Process

Since the arm is going to be moving from the table to the mouth level to reach the food and feed it to the mouth, there were three demos performed in which the team measures 60,__ and __ degrees going down and up. The idea is that if the team is able to complete the moves under the time stated in the requirement then the requirement will be evaluated as aa pass.

  1. For this test, the forearm and the bicep needed to be assembled together. The initial angle is the angle closest to the bicep.
  2. A code was implemented so the motor run 60 degrees down and back.
  3. For the other two angles, the same procedure of steps 1 and 2 were implemented

 

Test Conclusion:

The arm needed 4:06 minutes [2]to complete the task. Since the allocated time for this requirement was 8 minutes, the prosthetic arm came in slightly over half of the time. Therefore the test is 100%completed.

Resources

[1] https://drive.google.com/drive/folders/0B3qlnfB-grPcVzJOTTZyemZ2R3c

[2] https://www.youtube.com/watch?v=VoRxWJ_K93U&feature=youtu.be

Blogpost PCB requirement (L1-11)

Written by: Forrest Pino

Edited and Approved by: Carolina Barrera

Table of Contents

Intro:

In order to fulfill the L1-11 system requirement “Custom PCB” an analysis has been carried out. This test followed the Verification and Validation Test Plan. This requirement was one that applied to all the groups in EE 400D. It requires that groups develop a custom PCB that help the network and controller communication in the electronic system of the project.

 

Test Objective:

The test criteria that needs to be tested are provided by Prof. Hill in this class document[1]:

Prof. Hill provided multiple criteria which the Custom PCB should follow, and set a grade scale accordingly. For this project an “A”-Grade was desired.

Therefore this criteria apply:

 

“All components (resistors, capacitors, LEDs, IC chips) are surface mount. Some exceptions are header pins and large electrolytic capacitors, and components not available in surface mount. All PCB traces were manually routed. Used only one surface mount IC component for the PCB design. All other non-IC components were surface mount (resistors, capacitors. LEDs, IC chips). All PCB traces were manually routed.”[2]

Equipment

 

  • Eagle Schematic and Layout
  • Soldered Custom PCB

 

The PCB schematic and layout were designed using Eagle. Most of the ICs were ordered through Digi-Key. They are all surface mount components. Upon arrival of the PCB and the ICs, the components were tested to make sure there were no shorts or burnt components. Manufacturing solder the board by hand the first version of our PCB, but voltage outputs from the buck converter were not right. Chances are the board got burnt or one of the pins of the IC3 was not solder properly.

As a solution, Electronics and Control purchased a stencil, and the second version of the PCB worked perfectly. However, there was one feature that could not be implemented; the kill-switch. The incident is explained fully in the corresponding blog post, but the safety feature was removed from the system.

Conclusion:

(Custom PCB) Showing all SMD components

On the Custom PCB are 2 Surface mount IC’s the Linear Technelogie LT3971-5 Buck Converter

(Showing the package of the Buck Converter)

as well as the Allegro A4988 stepper motor driver. The Buck is a DFN-10 Package. The motor driver is a QFN-28 package.

 

Both packages are a challenge to solder due to their small size.

The resistors and capacitors are all 0603. The Diode (DO-214AC) and the Inductor (1812) are bigger due to their availability.

Even the LDO is a Surface Mount Device. But this component is no challenge due to it’s big size (TO-263).

The connectors were implemented as PTH (Through hole) components.

The traces were all manually routed following this instructions[3]

Afterwards the PCB was checked using a whole suit of DRC including OSH, Sparkfun and LeanPCB. The PCB passes every single one. Therefore the PCB passes this Analysis.

References

[1]http://web.csulb.edu/~hill/ee400d/Lectures/Week%2009%20Design%20Verification%20and%20Validation/a_Meeting%209%20Agenda%20F’16.pdf

[2]http://web.csulb.edu/~hill/ee400d/Lectures/Week%2009%20Design%20Verification%20and%20Validation/a_Meeting%209%20Agenda%20F’16.pdf

[3] http://arxterra.com/printed-circuit-board-pcb-how-to-layout/

MyoWare – MYOELECTRIC SENSOR

Written by: Carolina Barrera

Our muscles are controlled, and usually move thanks to electric impulses that produce contraction in these, and the reaction to that contraction is what we know as a movement. Electromyography technology was developed to evaluate and record this electrical activity.

Myoelectric signals are becoming popular in medicine and prosthetic technology probably because they are the most recent, and more practical control for people that are missing a limb. The great thing about this idea is that people left with the remaining of their limb can control the device. In other words, the technology is minimizing the difference of what could be consider a full-functional amputee and a full-functional non-amputee.

For our project, we are implementing an EMG sensor which sends an analog signal our MCU. A threshold voltage was set so when the voltage generated by the bicep goes over this value for a certain amount of time the motor is activated.  Since we need to move the arm up and down intervals were assigned. The longer interval will make the arm move down, and the short interval will make it move up.

To test the feasibility of implementing this type of control for our project we needed to see the different values the sensor outputs in the different patterns of motion in the arm (bicep and forearm).

We were not sure if flexing or tensioning the arm were more effective for achieving our threshold, and we wanted to make sure that one wouldn’t interrupt the movement of the other unintended. Our test shows the output of the sensor in four different patterns of moving and tensioning the bicep.

Luis wore the EMG sensor, and we use the built-in Serial sample from the Arduino IDE to read the analog values from the EMG.

We performed different motions with the arm to see which could get a stable high-signal for long enough, and also that I couldn’t be interrupted easily by other unintentional movements when lifting the arm.

 

Figure 1 shows four different actions that show significantly different outputs that could be implemented in the code when programming the sensor. The four action in chronological order are: relaxed arm, tensioned arm, lifted arm, and tensioned and lifted arm.

From the test, we concluded that tensioning and lifting the arm outputs a relatively large signal (compared to the other motions), and the signal is stable as long as we can keep the arm lifted and tensioned. Later on we discovered that twisting the arm also helps outputs a high signal, so in case up-and-down-movement is restricted we can always try twisting the arm.

We also discovered that the best location to position the sensor (with the electrodes) in the inner side of the bicep -by the side of the arm tha touches the torso. Figure 2 shows the position we put the sensor in the arm. As for the two electrodes, Sparkfun reccommends to place the sensor so one of the electrodes

Interface Integration Piece

Blog Post – Integration Interface

Written by: Carolina Barrera

 

As mentioned multiple times in our documents, we scheduled integration for the arm for November 19th. No physical integration happened on this day. We didn’t assemble the two systems together, however we made some advancements in the process of integrating the components together.

An idea the two groups wanted to achieved initially, in which our system has a uniform forearm connected the bicep to the hand, and helps harmonize the appearance of the overall system was very desired. It seemed more promising for obtaining a better result in the validation for both teams, and it could lessen the weight that extra pieces (in the integration) add to the system.

Based on this approach, there were a couple of ideas that were considered before bringing up this idea:

  1. The dimensions for the wrist height and width are 3 in. by 3 in, respectively. Adding a cover would mean that our wrist would have a dimension of 3.5 inches at least.
  2. The weight of connector parts, and big screws in-between subsystems would be minimized if we tried.
  3. A harmonized structure would give more opportunities to both groups to increase points in their validation grade.

In November 19th, the idea of a one-solid piece helping as a shell mechanism, and unedifying both the forearm and the arm was brought up to consideration. The ideas described above served as reasons for implementing this instead of having the two independent components, as agreed originally. We measured the parts that we have at the moment, and figure the rough length of this new piece. Figure 1 is a picture we took on that day that could help as reference of the dimensions of this new part, and the functionality it would have.

Figure 1 - Agreement Guideline Created on Nov. 19

Figure 1 – Agreement Guideline Created on Nov. 19

To achieve this, the department of design offered their help, and the Junior TA, Van Lieu shepherd both Manufacturing Engineers in finding an aesthetic way to integrate their pieces. The resulting design is shown in figure 2.

 

In regards to the agreement, there are items that were communicated as clarifications:

  1. The hand and the arm agreed in the idea of implementing a solid interface for integration. This “integration part” that serves as a shell is result of the design and manufacturing efforts of both Manufacturing Engineers, Forrest Pino and Wilson Mach under guidance of Van Lieu, Industrial Design student from CSULB.
  2. This part will house the motor for the hand that allows the wrist rotation on the hand side. Additionally, it will house the wires going to the PCB of the hand -located near to the “elbow”, and a slipring -that will prevent over-twisting and ripping of the wires when the wrist rotates.

We moved forward in the process of integration -even though we were not physically putting together the components. This meeting could be considered the initial phase of the integration, in which the baseline is set, and both groups agreed in dimensions, and restrictions that will direct our project into mission success. More updates will be posted if relevant changes come up in the project. However, with the time left, and the advance stage of both projects don’t give space to last-minute changes.

 

Printed Circuit Board (PCB) – How to Layout?

Table of Contents

Basics:

  • Only 45° angles
  • ICs on the 50 mil grid
  • At least 10 mil for signals
  • At least 16 mil for power
  • Add power planes (GND/GND or VDD/GND)

Steps in laying out a PCB:

Written by: Fabian Suske

Approved by: Carolina Barrera

0.      Checking the Schematics for Errors

You should get a working Schematic but mistakes happen. As an EE you should be able to understand Schematics and know what’s going on. There you should check for silly mistakes like missing Power (GND/VDD) decoupling capacitors or any project related errors (missing /to many parts). If you want to be extra sure pull up the datasheet and check if the typical application is followed. (Capacitors on a voltage regulator) Make sure the ERC has no errors.

1.      Sort the components

Take your schematics and identify groups of components. Take every IC and spread them out.  Now take all the small components (Resistors, Capacitors, etc.) and place them as close to the IC pins as possible. Make sure they’re on the correct pins. (I.E. decoupling pins close to VDD pin not GND pin).

Make sure all the connectors and small stuff (power LEDs with resistors) are out of the way. You don’t need them yet.

1_k

2.      Connect the components.

The first thing you do is locate one ground wire and in the properties hide air wires. We will add at least one GND plane later.

On your separate groups try to connect all air wires with the least amount of space needed. (Make sure you used ratsnest before you start routing). At this point the amount of vias should be very low. Don’t spend too much time finding the ideal route – route the traces fast (you most likely rip them up again anyway). If you have a rather compact setup for each group.

SMD Pads should be connected from directly in front or behind.

Also keep the trace with in width in mind. Like you wouldn’t run 10A through 35 gauge wire. A drawn wire can only handle a certain amount of current. http://www.4pcb.com/trace-width-calculator.html

2_k   figure14 3_k

Note the wrong connection on LED 8 (top one) and the overlap on C3. Fix them now!!

3.      Moving the groups into position

After you briefly routed the groups it’s important to move the groups into their “final” position. Therefore take the main IC or MCU and place it in the middle. Now move the groups somewhere close to the MCU. You should bear in mind that connectors might needs to be connected (so plane your space). You might want to mirror the group to utilize the space efficiently. Most likely you have some overlapping components or vias in the way. Rip them up and reroute them. Connect the air wires between the ICs at this time to (as well as to the MCU).

4

 

 

4.      Placing the rest of the components

Now you should place the connectors into a logical space. This is different for each project. Typically it makes no sense to place a connector on the other end of the chassis /PCB. You should have cable management in mind. You also should place them as close as possible to the IC’s

Fill in the gaps with less important stuff like power LEDs or optional headers.

If your done move everything to the origin and adjust the board dimensions

Note non 45° degrees on JP1. 90° in the middle are okay since more than one trace.

5_k

5.      Power Planes

Normally on a dual layer PCB you have two GND planes (referred to GND-GND). On small PCBs you might want to have a VDD plane as well (VDD-GND). Apply were applicable.

To add a Power plane you take the polygon tool and completely enclose your PCB. Click then on the name tool and give it the name of your power signal (GND, VDD +3V3 or +5V or whatever). Then open the properties for them and change the rank to 6 and isolate to 12. Also uncheck the “hide air wires” now.

You might see some un-routed air wires now. Connect them to the respective power plane. In order to achieve this you might want to move some components or wires in order to make space for the power plane to reach this plank spots. Adding a via might help as well.

If you have two GND planes you should add some vias in big blanc spots.

6_k

7_k

To resolve this air wire we add a GND Via

6.      DRC

If all air wires are connected (An easy way to check is to deselect all layers except of dimension and Unrouted). Click the Design Rule Check (DRC). Before running the DRC go to clearance and change every value to 6mil. Also change Limit under Mask to 50. (This will give you tented vias (looks nicer))

Then hid apply and run. Fix all issues like overlap, clearance etc. (If you added a via on an IC ground pad you may approve it.).

8_k

9_k

10_k

7.      Tweaks, Labels and Holes

The last step after fixing the errors involves making tweaks to the PCB. You might want to reduce the size or fix funny routing (non necessary bends). Also make sure all component names are visible. In order to move them you need to smash the component this will add an origin “+” to the name and you can move them now. Make sure that no name is over a component or pad. If you have tented vias you can place them above vias.

Last but not least you need to add individual text (on the tPlace or bPlace layer) and label all connectors with their respective signals like SDA and SCL for I2C.

If you might have space you can add a project name or maybe even the members name on the PCB.

If you moved wires or vias or even components in order to place Text nice, you need to rerun the DRC each time you messed with the layout.

You might also want to add mounting holes to the PCB here make sure you have enough room for the screw caps.

11_k

Note that I changed the design completely to make it way smaller