Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions hardware_guide/Archtecting/3D Printing/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# A General Overview of 3D Printing

3D printing, also known as additive manufacturing, is a transformative technology that builds three-dimensional objects layer by layer from a digital file. It allows for the creation of complex and custom shapes without the need for traditional manufacturing molds or tooling.

## Core 3D Printing Technologies

There are several methods of 3D printing, each with unique advantages and materials. The most common types include:

### 1. Fused Deposition Modeling (FDM)

This is the most widely used and accessible form of 3D printing. FDM printers work by extruding a thermoplastic filament through a heated nozzle, melting it, and depositing it layer by layer on a build platform. The layers fuse together as they cool to form a solid object.

- **Common Materials (Filaments):**
- **PLA (Polylactic Acid):** Biodegradable, easy to print, and affordable. Ideal for prototypes and non-functional parts.
- **ABS (Acrylonitrile Butadiene Styrene):** Strong, durable, and temperature-resistant. Often used for functional parts like car components or phone cases.
- **PETG (Polyethylene Terephthalate Glycol):** A good balance between the ease of printing of PLA and the strength of ABS. It's food-safe and has good chemical resistance.
- **TPU (Thermoplastic Polyurethane):** A flexible, rubber-like material used for creating objects that need to bend or stretch.

### 2. Stereolithography (SLA)

SLA was the world's first 3D printing technology. It uses an ultraviolet (UV) laser to cure and solidify a liquid photopolymer resin in a vat, layer by layer. SLA is known for producing parts with extremely high detail and smooth surface finishes.

- **Common Materials (Resins):**
- **Standard Resin:** Excellent for high-detail prototypes and models.
- **Tough/Durable Resin:** Simulates the properties of ABS plastic, designed for functional parts that can withstand stress.
- **Flexible Resin:** Creates bendable, rubber-like parts.

### 3. Selective Laser Sintering (SLS)

SLS uses a high-powered laser to sinter (fuse) small particles of polymer powder. As the laser draws a cross-section of the object onto the powder bed, it fuses the material together. The unfused powder provides support for the object, eliminating the need for dedicated support structures.

- **Common Materials (Powders):**
- **Nylon (PA 11, PA 12):** The most common material for SLS. It produces strong, durable, and functional parts suitable for end-use applications.

## The General Workflow

The process for turning a digital idea into a physical object is consistent across technologies:

1. **Modeling:** A 3D model is created using CAD (Computer-Aided Design) software or downloaded from an online repository. The final model is typically exported as an STL or STEP file.
2. **Slicing:** The 3D model file is imported into a "slicer" program. This software slices the model into hundreds or thousands of thin, horizontal layers and generates a machine-readable file (like G-code) with instructions for the printer.
3. **Printing:** The instruction file is sent to the 3D printer, which begins building the object layer by layer.
4. **Post-Processing:** After printing, parts often require some form of cleanup. This can include removing support structures (FDM/SLA), washing in a solvent (SLA), curing with UV light (SLA), or cleaning off excess powder (SLS).
33 changes: 33 additions & 0 deletions hardware_guide/Archtecting/CAD/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# What is CAD?

Welcome to the world of Computer-Aided Design (CAD)! If you're new to this, don't worry. This guide will give you a basic understanding of what CAD is and why it's essential for our Robotic Arm project.

## The Basics

At its core, **CAD is the use of computers to create, modify, analyze, or optimize a design.** Instead of drawing blueprints by hand on a drafting table, we use specialized software to create digital 2D drawings and 3D models.

Think of it like digital sculpting or building with virtual LEGOs, but with incredible precision and power.

## Why Do We Use CAD?

Using CAD offers several key advantages for a hardware project like ours:

1. **Precision:** We can design parts with exact measurements, ensuring everything fits together perfectly.
2. **Visualization:** A 3D model allows us to see what the robotic arm will look like from every angle before we build anything. We can even simulate its movement to check for collisions or other issues.
3. **Easy Modifications:** If a part doesn't work as expected, we can quickly modify the digital model and 3D print a new version. This is much faster and cheaper than re-making a physical part from scratch.
4. **Collaboration:** Team members can easily share designs and work on different parts of the arm simultaneously.
5. **Manufacturing:** The digital models we create can be directly sent to manufacturing machines, like 3D printers or CNC mills, to create the physical parts.

## Our CAD Software: Fusion 360

For this project, we use **Autodesk Fusion 360**. It's a powerful, cloud-based tool that combines industrial and mechanical design, simulation, collaboration, and machining into a single package. It's a great choice for projects that involve both electronic and mechanical components.

## What's in this Folder?

This `CAD` directory is where we store all the digital blueprints for the robotic arm. As you explore, you'll find different types of files, primarily:

* **`.f3d` / `.f3z`**: These are the native project files for Fusion 360, containing the editable 3D models and assemblies.
* **`.stl`**: These are "mesh" files exported from the models, specifically for 3D printing.
* **`.pdf` / `.dxf`**: These are 2D drawings, useful for manufacturing or documentation.

Feel free to explore the subdirectories to see how the different components of the arm are organized!
1 change: 1 addition & 0 deletions hardware_guide/Archtecting/CAD/tutorials.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[Introduction to Tinkercad Circuits](https://www.youtube.com/watch?v=9RF_BZ1Cg4k)
5 changes: 4 additions & 1 deletion hardware_guide/Components/Buttons/tutorials.md
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
https://www.youtube.com/watch?v=RiYnucfy_rs

[How to Use a Button with an Arduino](https://www.youtube.com/watch?v=yBgMJssXqHY)
[How to Use a Slide Switch with an Arduino](https://www.youtube.com/watch?v=0ZXYRU9KPG8)
[Usando Botões de Pressão ](https://www.youtube.com/watch?v=ohZ4pQ6KCPA)
5 changes: 4 additions & 1 deletion hardware_guide/Components/LEDs/tutorials.md
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
https://www.youtube.com/watch?v=RiYnucfy_rs

[How to Blink an LED with Arduino ](https://www.youtube.com/watch?v=FKekzzj5844)
[How to Fade an LED with Arduino analogWrite](https://www.youtube.com/watch?v=QCZISwDi_Qo0)

5 changes: 4 additions & 1 deletion hardware_guide/Components/Motors/tutorials.md
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
https://www.youtube.com/watch?v=RiYnucfy_rs

[Control a DC Motor with Arduino](https://www.youtube.com/watch?v=XrJ_zLWFGFw)
[How to Use a Vibration Motor with Arduino](https://www.youtube.com/watch?v=3hoBwa0ccys)

4 changes: 3 additions & 1 deletion hardware_guide/Components/Potentiometers/tutorials.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
https://www.youtube.com/watch?v=RiYnucfy_rs

[How to Use a Potentiometer with Arduino analogRead](https://www.youtube.com/watch?v=Wa8CjGsOFzY)

9 changes: 9 additions & 0 deletions hardware_guide/Components/Power/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Power Component Overview

The power component is a critical part of the robotic arm, providing the necessary energy for all its operations. A well-designed power system ensures stable and reliable performance of the robotic arm.

## Key Components

* **Power Source:** This can be a battery pack or a power adapter, depending on the application's requirements for portability and power intensity.
* **Voltage Regulators:** These components ensure that a stable and consistent voltage is supplied to all the electronic components of the robotic arm, such as the microcontroller and sensors.
* **Power Distribution:** This involves the wiring and connections that distribute power from the source to the various components of the robotic arm.
1 change: 1 addition & 0 deletions hardware_guide/Components/Power/tutorials.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[How to Power an Arduino Project](https://www.youtube.com/watch?v=I7MrL5Q7zvY)
5 changes: 4 additions & 1 deletion hardware_guide/Components/Resistors/tutorials.md
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
https://www.youtube.com/watch?v=RiYnucfy_rs

[Como Funciona e Como é Construído um Resistor](https://www.youtube.com/watch?v=vrBben_xty8)
[Como Funcionam os Resistores e Capacitores?](https://www.youtube.com/watch?v=e_hU6sAON2U)

29 changes: 29 additions & 0 deletions hardware_guide/Components/Screens/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Screens in Robotics

Screens are an essential component in many robotics projects, providing a visual interface for users to interact with and monitor the robot's status. They can display a wide range of information, from simple text and sensor readings to complex graphics and video feeds.

## Why Use a Screen?

- **User Interface:** Screens provide a user-friendly way to control and interact with a robot. This can range from simple menus and buttons to complex graphical user interfaces (GUIs).
- **Data Visualization:** Screens can be used to display data from sensors, such as distance, temperature, and motor speed. This information can be used to monitor the robot's performance and diagnose problems.
- **Debugging:** During development, screens can be used to display debugging information, such as variable values and program flow. This can be invaluable for identifying and fixing bugs in the robot's code.
- **Status Updates:** Screens can provide real-time status updates, such as battery level, network connectivity, and current task. This allows users to quickly and easily monitor the robot's condition.

## Types of Screens

There are many different types of screens available for robotics projects, each with its own advantages and disadvantages. Some of the most common types include:

- **LCD Screens:** Liquid crystal displays (LCDs) are a popular choice for robotics projects due to their low cost and low power consumption. They are available in a wide range of sizes and resolutions, from small character displays to large graphical displays.
- **OLED Screens:** Organic light-emitting diode (OLED) screens offer several advantages over LCDs, including higher contrast, wider viewing angles, and faster response times. However, they are typically more expensive and have a shorter lifespan.
- **Touch Screens:** Touch screens allow users to interact with the robot by directly touching the screen. This can be a more intuitive and user-friendly way to control the robot than using buttons or other input devices.

## Choosing a Screen

When choosing a screen for a robotics project, there are several factors to consider:

- **Size and Resolution:** The size and resolution of the screen will determine how much information can be displayed and how easy it is to read.
- **Power Consumption:** The power consumption of the screen is an important consideration for battery-powered robots.
- **Interface:** The interface of the screen will determine how it is connected to the robot's microcontroller. Common interfaces include SPI, I2C, and UART.
- **Cost:** The cost of the screen can vary widely depending on the type, size, and features.

By carefully considering these factors, you can choose the best screen for your robotics project and create a more user-friendly and effective robot.
1 change: 1 addition & 0 deletions hardware_guide/Components/Screens/tutorials.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[How to Use an LCD Screen with an Arduino](https://www.youtube.com/watch?v=s_-nIgo71_w)
18 changes: 18 additions & 0 deletions hardware_guide/Components/Sensors/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Sensors Overview

This document provides an overview of the sensors used in the robotic arm project.

## Sensor Types

The robotic arm utilizes various sensors to perceive its environment and internal state. These sensors can be broadly categorized into:

* **Position Sensors:** These sensors provide information about the angular position of the joints. Common types include encoders and potentiometers. Encoders provide digital feedback, while potentiometers provide analog feedback.
* **Force/Torque Sensors:** These sensors measure the forces and torques exerted by the arm. This information is crucial for tasks that require delicate manipulation or interaction with the environment. Strain gauges are a common type of force/torque sensor.
* **Proximity Sensors:** These sensors detect the presence of objects near the gripper without physical contact. Common types include infrared (IR) sensors and ultrasonic sensors.
* **Other Common Sensors:**
* **Inertial Measurement Units (IMUs):** These sensors combine accelerometers and gyroscopes to measure the orientation and angular velocity of the arm.
* **Cameras:** Cameras provide visual feedback, enabling the robotic arm to perform tasks like object recognition and tracking.

## Sensor Details

For detailed information on each sensor, including datasheets, tutorials, and integration guides, please refer to the specific documentation within this directory.
8 changes: 7 additions & 1 deletion hardware_guide/Components/Sensors/tutorials.md
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
https://www.youtube.com/watch?v=RiYnucfy_rs

[How to Use a Flex Sensor with an Arduino](https://www.youtube.com/watch?v=_tXWoplbqWo)
[How to Use a Force Sensor with an Arduino](https://www.youtube.com/watch?v=r7oWtcE6QQc)
[How to Use a Photoresistor](https://www.youtube.com/watch?v=XwJQJnY6iUs)
[How to Use a TCS3200 Color Sensor with Arduino](https://www.youtube.com/watch?v=oPFQrKC0nSg)
[Sensor de distância ultrassônico HC-SR04 e Arduino](https://www.youtube.com/watch?v=n-gJ00GTsNg)

21 changes: 21 additions & 0 deletions hardware_guide/Components/Servos/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Servos

Servos are essential components in robotics, providing precise control over angular or linear position. They are fundamental for creating articulated and responsive robotic systems.

## Key Features

- **Positional Control:** Unlike continuous rotation motors, servos can be commanded to move to a specific angle and hold that position.
- **High Torque:** Servos can provide significant torque for their size, making them suitable for lifting and moving objects.
- **Integrated System:** A servo is a self-contained unit that includes a motor, a feedback sensor (like a potentiometer), and control electronics.
- **Simple Interface:** They are typically controlled using a Pulse Width Modulation (PWM) signal, which is easy to generate with most microcontrollers.

## How They Work

A servo motor operates on a closed-loop control system. The control circuit receives a PWM signal that represents the desired position. This signal is compared to the current position of the motor, which is read by the feedback sensor. If there is a difference, the control circuit powers the motor to move it to the correct position.

## Common Applications

- **Robotic Arms:** Each joint in a robotic arm is often controlled by a servo, allowing for precise and repeatable movements.
- **Grippers:** Servos are used to open and close grippers, enabling a robot to interact with objects.
- **Steering Systems:** In mobile robots, servos are used for steering.
- **Camera Platforms:** Servos can be used to create pan-and-tilt platforms for cameras and sensors.
90 changes: 90 additions & 0 deletions hardware_guide/Components/Servos/practice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Servo Tutorials

This section provides tutorials for using servo motors in your robotics projects.

## 1. Basic Servo Control with Arduino

This tutorial demonstrates how to control a servo motor using an Arduino board.

### Components

- Arduino Uno
- Standard Servo Motor
- Jumper Wires

### Circuit

1. Connect the servo's **GND** (brown or black wire) to the Arduino's **GND** pin.
2. Connect the servo's **VCC** (red wire) to the Arduino's **5V** pin.
3. Connect the servo's **Signal** (orange or yellow wire) to a PWM-capable pin on the Arduino, such as pin 9.

### Code

```cpp
#include <Servo.h>

Servo myServo;

void setup() {
myServo.attach(9); // Attaches the servo on pin 9 to the servo object
}

void loop() {
myServo.write(0); // Move the servo to 0 degrees
delay(1000); // Wait for a second
myServo.write(90); // Move the servo to 90 degrees
delay(1000); // Wait for a second
myServo.write(180); // Move the servo to 180 degrees
delay(1000); // Wait for a second
}
```

### Instructions

1. Upload the code to your Arduino board.
2. The servo will sweep back and forth between 0, 90, and 180 degrees.

## 2. Controlling a Servo with a Potentiometer

This tutorial shows how to control the position of a servo motor using a potentiometer.

### Components

- Arduino Uno
- Standard Servo Motor
- 10kΩ Potentiometer
- Jumper Wires

### Circuit

1. Connect the servo as described in the previous tutorial.
2. Connect one of the potentiometer's outer pins to **GND**.
3. Connect the other outer pin to **5V**.
4. Connect the center pin to an analog input pin on the Arduino, such as **A0**.

### Code

```cpp
#include <Servo.h>

Servo myServo;
int potPin = A0;
int potValue;
int angle;

void setup() {
myServo.attach(9);
}

void loop() {
potValue = analogRead(potPin);
angle = map(potValue, 0, 1023, 0, 180);
myServo.write(angle);
delay(15);
}
```

### Instructions

1. Upload the code to your Arduino board.
2. Turn the potentiometer to control the position of the servo motor.
2 changes: 2 additions & 0 deletions hardware_guide/Components/Servos/tutorials.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Continuous Rotation Servo Motors and Arduino](https://www.youtube.com/watch?v=NV6YHZ2RAqc)
[Control a Positional Servo Motor with an Arduino](https://www.youtube.com/watch?v=qJC1nt_eJZs)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ This project uses a potentiometer to control the brightness of an LED.
6. Connect the other outer pin to GND.
7. Connect the center pin to Arduino analog pin A0.

![Circuit Diagram](https://www.arduino.cc/en/uploads/Tutorial/build-a-potentiometer-circuit-to-control-an-led_2.png)

![Circuit Diagram](media/circuitDiagram.png)


**Code:**
```cpp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ The Arduino Uno is the most popular and widely used board in the Arduino family.

## Pinout

![Arduino Uno Pinout](https://content.arduino.cc/assets/Pinout-Unorev3_latest.png)
![Arduino Uno Pinout](https://microcontrollerslab.com/wp-content/uploads/2018/10/Arduino-Uno-pinout-diagram.jpg)


## Power

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[SparkFun Arduino Comparison Guide](https://www.youtube.com/watch?v=hjRSwBcLcSU&t=27s)
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ The ESP32-CAM is a small, low-cost development board that combines an ESP32-S mi

## Pinout

![ESP32-CAM Pinout](https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/03/esp32-cam-pinout-ai-thinker.png?w=712&quality=100&strip=all&ssl=1)

![ESP32-CAM Pinout](https://lastminuteengineers.com/wp-content/uploads/iot/ESP32-CAM-Pinout.png)


## Getting Started

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
https://www.youtube.com/watch?v=RiYnucfy_rs

[Arduino To ESP32: How to Get Started!](https://www.youtube.com/watch?v=RiYnucfy_rs)
[ESP32-Cam Complete Guide](https://www.youtube.com/watch?v=hSr557hppwY)
[ESP8266, ESP32, ESP32-C3 e ESP32-S3: Qual a Diferença?](https://www.youtube.com/watch?v=0zutyYWWRHA)


https://github.com/yoursunny/esp32cam
Loading