Merge pull request from berserkdesign/master

New components
This commit is contained in:
Juan Gonzalez-Gomez 2020-11-06 06:54:48 +01:00 committed by GitHub
commit 3d9c2f0940
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
115 changed files with 51280 additions and 16 deletions
Architectural Parts/Garden
Electro-pneumatic/Cylinders/Guss&Roch
Electronics Parts
Hydraulics/Pump/Vertical Pump
Industrial Design/Shelf/Shelf Batman
Medical Parts
Robots/Quadruped robot/Spider robot

Binary file not shown.

Binary file not shown.

After

(image error) Size: 232 KiB

Binary file not shown.

After

(image error) Size: 312 KiB

Binary file not shown.

Before

(image error) Size: 160 KiB

Binary file not shown.

Binary file not shown.

After

(image error) Size: 137 KiB

View file

@ -1,16 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>A2P assembly hierarchy visualization</title>
</head>
<body>
<div class="mermaid">
graph TD
</div>
<script src="https://unpkg.com/mermaid@7.1.2/dist/mermaid.js"></script>
<script>
mermaid.initialize({startOnLoad: true});
</script>
</body></html>

Binary file not shown.

After

(image error) Size: 143 KiB

Binary file not shown.

After

(image error) Size: 222 KiB

Binary file not shown.

After

(image error) Size: 136 KiB

Binary file not shown.

Binary file not shown.

After

(image error) Size: 126 KiB

Binary file not shown.

After

(image error) Size: 126 KiB

Binary file not shown.

After

(image error) Size: 149 KiB

Binary file not shown.

After

(image error) Size: 150 KiB

Binary file not shown.

After

(image error) Size: 57 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
width="612px"
height="792px"
viewBox="0 0 612 792"
enable-background="new 0 0 612 792"
xml:space="preserve"
sodipodi:docname="batman-11.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"><metadata
id="metadata13"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs11" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview9"
showgrid="false"
inkscape:zoom="1.4142136"
inkscape:cx="281.73872"
inkscape:cy="187.46368"
inkscape:window-x="-8"
inkscape:window-y="760"
inkscape:window-maximized="1"
inkscape:current-layer="g6" />
<g
id="g6"
transform="matrix(2.5408081,0,0,2.5408081,-510.80008,-385.89496)">
<path
d="m 321.33177,392.7732 c 3.38853,0 4.74641,0.67826 4.74641,0.67826 l 2.03339,-8.58619 c 0,0 1.58214,6.5528 2.2604,12.42871 0.67825,5.87592 11.0722,2.03477 19.88539,0.22563 8.81182,-1.80776 10.62095,-16.04424 10.62095,-16.04424 h 81.57498 c 0,0 -49.26224,14.91473 -36.83215,47.67872 0,0 -72.76316,-11.0722 -84.06099,34.34888 h -0.001 c -11.29784,-45.42108 -84.061,-34.34888 -84.061,-34.34888 12.42872,-32.76399 -36.83214,-47.67872 -36.83214,-47.67872 h 81.57497 c 0,0 1.80777,14.23648 10.61958,16.04424 8.81319,1.80776 19.20852,5.64892 19.8854,-0.22563 0.67825,-5.87591 2.26039,-12.42871 2.26039,-12.42871 l 2.03476,8.58619 c 0,0 1.35514,-0.67826 4.74504,-0.67826 z"
id="path4"
inkscape:connector-curvature="0"
style="stroke-width:1.37577116;stroke:#000000;stroke-opacity:1;fill:none" />
</g>
</svg>

After

(image error) Size: 2.4 KiB

View file

@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org>

View file

@ -0,0 +1,104 @@
# AmboVent 1690.108
Automatic, Controlled Resuscitator Device
Emergency ventilation alternative system
Global Partnership for the Greater good
Leading Open Source Code Mentality Initiative
## Emergency ventilation initiative coming out of Israel
## The device was not tested yet for its performance or safety; it is NOT approved for clinical use
### Who is behind it?
**Lead by the CTO & innovation leader of the Israeli Air-Force 108 Electronic Depot and backed by a large community of innovators behind him, to include:**
1. 40 Professional Volunteers
1. Magen David Adom (Israels national EMS)
1. Physicians from leading Israeli hospitals such as Tel Aviv Sourasky and Hadassah JLM as well as other medical centers, Engineers, FIRST Israel mentors and students
1. The Haifa Technological Center Rafael
1. Israel Aerospace Industries
1. IAF Unit 108
1. The garage program by Microsoft Israel
1. IDC Herzeliya
1. and others...
## Developer Chat on Gitter:
[![Gitter](https://badges.gitter.im/AmboVent-Ventilator/community.svg)](https://gitter.im/AmboVent-Ventilator/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
## [AmboVent Website](https://1nn0v8ter.rocks/AmboVent-1690-108)
## [BOM list](https://docs.google.com/spreadsheets/d/1yqxRhruZpR-hO4cpbX6UkSeXTlXk1JLd_4aYDwuWj4k/edit?usp=sharing)
# AmboVent's Standard Copyright and Disclaimer Notice:
*Copyright ©2020. THE AMBOVENT GROUP FROM ISRAEL herby declares: No Rights Reserved. Anyone in the world have Permission to use, copy, modify, and distribute this software and its documentation for educational, research, for profit, business and not-for-profit purposes, without fee and without a signed licensing agreement, all is hereby granted, provided that the intention of the user is to use this code and documentation to save human lives anywhere in the world. For any question, contact dreliram@gmail.com.*
***IN NO EVENT SHALL THE AMBOVENT GROUP FROM ISRAEL, BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THESE SPECS, LIST OF MATERIALS, ELECTRONIC DESIGNS , SOFTWARE CODE AND ANY DOCUMENTATION, EVEN IF THE AMBOVENT GROUP FROM ISRAEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE AMBOVENT GROUP FROM ISRAEL DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, SPECS, LIST OF MATERIALS, ELECTRONIC DESIGNS, SOFTWARE CODE AND ANY DOCUMENTATION IF PROVIDED HEREUNDER IS PROVIDED "AS IS". THE AMBOVENT GROUP FROM ISRAEL HAS NO CLAIM THAT IT IS COMPLETED OR FUNCTIONAL AND HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.***
# Setup
## Software
1. (Required to build the code): [Arduino IDE](https://www.arduino.cc/en/Main/Software)
1. (Optional: recommended to edit the code): Eclipse project for Arduino source code _editing_ (NOT building):
1. A general setup PDF guide can be found in the [eRCaGuy_dotfiles](https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles) project [here](https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/eclipse/Eclipse%20setup%20instructions%20on%20a%20new%20Linux%20(or%20other%20OS)%20computer.pdf). See also:
1. [3-Software/Arduino/readme.md](3-Software/Arduino/readme.md).
1. [3-Software/Arduino/arduino_core/readme.md](3-Software/Arduino/arduino_core/readme.md)
1. [3-Software/Arduino/.clang-format](3-Software/Arduino/.clang-format) - there are some nice descriptions & info in here on Eclipse & Sublime Text 3 editors, as well as setting your Arduino IDE to use 4 spaces instead of 2 for tabs.
1. (Required to get a pull request accepted which modifies the code): `clang-format` automatic code format tool. Please run this on any PR (GitHub Pull Request) before submitting a PR!
1. Linux (tested--works):
1. Install:
# Install it:
sudo apt update
sudo apt install clang-format
# Ensure you have version 6 (the default for Ubuntu 18), for compatibility with
# the .clang-format file we are using; sample output:
# `clang-format version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)`
clang-format --version
1. Use it:
1. Commit your changes so everything is backed up.
1. Then run the clang formatter:
./run_clang-format.sh
1. Then review and commit these changes, if any.
1. Now do a Pull Request.
1. Windows:
1. Install:
1. Download and install [Git for Windows](https://git-scm.com/download/win)
1. Download and install LLVM (which includes `clang-format`) version **6.0.1** (for compatibility--see above) [for Windows, here](https://releases.llvm.org/download.html). Here's a [direct link](https://releases.llvm.org/6.0.1/LLVM-6.0.1-win64.exe) if you like for the 64-bit version.
1. Use it:
1. Using the git bash terminal that comes with git for Windows, run the script:
./run_clang-format.sh
1. Make sure to do this before making any Pull Request (see Linux "Use it" instructions just above as well).
# Software Changelog
- Newest on top
- Follows Semantic Versioning: MAJOR.MINOR.PATCH; see: https://semver.org/ for rules & FAQ.
- The 6 most common recommended types of changes are (see here: https://keepachangelog.com/en/1.0.0/): Added, Changed, Deprecated, Removed, Fixed, Security
INITIAL DEVELOPMENT PHASE:
- Use version numbers 0.MINOR.PATCH for the initial development phase; ex: 0.1.0, 0.2.0, etc.
- Increment just the MINOR version number for each new 0.y.z development phase enhancement, until the project is mature enough that you choose to move to a 1.0.0 release
- You may increment the PATCH number for bug fixes to your development code, or just increment the MINOR version number if there are also enhancements
MORE MATURE PHASE:
- As the project matures, release a 1.0.0 version
- Once you release a 1.0.0 version, do the following (copied from semver.org):
- Given a version number MAJOR.MINOR.PATCH, increment the:
1. MAJOR version when you make incompatible API changes,
2. MINOR version when you add functionality in a backwards compatible manner, and
3. PATCH version when you make backwards compatible bug fixes.
## [v0.1.0] - 2020-04-22
- Added: changelog and started tracking a software "version" number via the changelog
- Fixed: continued incremental improvements of the software formatting and style: ex: moved global variables to their own lines

Binary file not shown.

View file

@ -0,0 +1,80 @@
![OpenLung](images/OL_BANNER_2.png)
# Disclaimer
*The plans, documents and other materials (“Material”) contained on this website are intended to facilitate the design of a prototype reproducible medical device to be used if required during the Covid-19 pandemic. The Material is not itself a medical device. The Material has not been tested and has not been approved for use in humans or animals by any regulatory authority of any country.*
*By using the Material, you are agreeing to the following disclaimer.*
*OpenLung / Open Source Ventilator offers the Material as-is and as-available, and makes no representations or warranties of any kind whatever concerning the Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable.*
*To the extent possible, in no event will OpenLung / Open Source Ventilator be liable to you on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of the Material or use of the Material, even if OpenLung / Open Source Ventilator has been advised of the possibility of such losses, costs, expenses, or damages.*
*Any ventilator system that has not been approved by a competent medical device regulatory authority may not deliver to the user the ability to properly monitor and control tidal volume, inspiratory pressure, inspiratory: expiratory ratio, heart rate, nor provide the user with the ability to monitor and control positive-end expiratory pressure (PEEP), peak inspiratory pressure (PIP) or to adapt to individual patient requirements. Inability to monitor and/or control any of these factors can cause death or serious permanent injury.*
*The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.*
# Low Resource Bag Valve Mask (BVM) Ventilator
![Current Mechanical Concept](images/current_concept.png)
The OpenLung Emergency Medical Ventilator (OEMV) is a stopgap solution to the global shortage of medical ventilators. Its rapid development is the result of a novel open source paradigm that allows team members to make real-time contributions from any place in the world. DevOps is overseen by a cabal of professionals whom separate the wheat from the chaff and direct the collective effort. The device itself is composed of widely available materials and put together via simple fabrication processes. Electrical components and software have also been developed, these allow basic parameters and controls to be set by clinicians. Physical working prototypes have been built and testing toward a final product is well underway. The OEMV is an open piece of technology that can be manufactured and deployed anywhere in the world.
# Design Requirements
Project Requirements are listed [here](requirements/design-requirements.md).
# Contributing to the project
*OpenLung* as implied by the name has maintained a high degree of openness to new contributors. In fact, we have created a wiki called [Contributing](https://gitlab.com/open-source-ventilator/ventilator/OpenLung/-/wikis/Contributing) for this purpose
# Design
The *OpenLung* project has managed to bring together many experts and ideas into a cohesive remote work environment. We believe our processes are unique and efficient for the future of remote group design work. In fact, we have attempted to compile what we have learned in the [Design Wiki](https://gitlab.com/open-source-ventilator/ventilator/OpenLung/-/wikis/Design) Additionally there are discipline specific Wikis for [Electronics](https://gitlab.com/open-source-ventilator/ventilator/OpenLung/-/wikis/Electronics) and [Mechanical](https://gitlab.com/open-source-ventilator/ventilator/OpenLung/-/wikis/Mechanical). Our designs require parameters, suggestions and direction of the medical community, some of those notes are compiled in [Medical Notes](https://gitlab.com/open-source-ventilator/ventilator/OpenLung/-/wikis/Medical-Notes)
# Documentation
A major factor in the success of this open source project is having extensive, clear and accessible documentation. Though we here at OpenLung see room for improvements, we would like to share our documentation process including what we have learned, examples we like and methods we use. [Documentation Wiki](https://gitlab.com/open-source-ventilator/ventilator/OpenLung/-/wikis/Documentation)
# Fabrication
Despite *OpenLung* not being a manufacturer, this project designs for manufacturability. In fact, we have labored over the consideration of variability in production processes and supply chains. Detailed information regarding fabrication -- as it relates to this project -- is stored on [the 'Fabrication' page](https://gitlab.com/open-source-ventilator/ventilator/OpenLung/-/wikis/Fabrication)
# Testing
Evaluating the performance of our designs require extensive testing and data collection.
Testing is done using specialized equipment that is discussed in further detail within the [Testing Wiki](https://gitlab.com/open-source-ventilator/ventilator/OpenLung/-/wikis/Testing)
# Distribution
The logistics of providing designs for decentralized ad-hoc manufacturing operations is interesting and complex. That is why we created a whole [Wiki Page](https://gitlab.com/open-source-ventilator/ventilator/OpenLung/-/wikis/Distribution) dedicated to this
# Project Teams
| Team | Directory | Issue Label |
|---|---|---|
| Requirements | [requirements](/requirements) | ~"Requirements" |
| Mechanical Concepts | [mechanical-concepts](/mechanical-concepts) | ~"Mechanical Concepts" |
| Control Electronics | [control-electronics](/control-electronics) | ~"Control Electronics" ~"Controller Software" |
| Sensor Layout and Specifications | [control-electronics](/control-electronics) | ~"Sensor Hardware" |
| Housing Concepts | [housing-concepts](/housing-concepts) | ~"Housing Concepts" |
| Humidifier Concepts | [humidifier-concepts](/humidifier-concepts) | ~"Humidifier Concepts" |
| BVM Filtration | [bvm-filtration](/bvm-filtration) | ~"BVM Filtration" |
| Regulatory | [regulatory](/regulatory) | ~"Regulatory" |
| Testing | [testing](/testing) | ~"Testing" |
# This document in other languages:
| | | Language | Translations | | |
|---|---|---|---|---|---|
|[english](README.md) | [català](translations/README-ca.md) | [čeština](translations/README-cz.md)| [deutsch](translations/README-de.md) | [español](translations/README-es.md) | [français](translations/README-fr.md) |
| [日本語](translations/README-ja.md) | [nederlands](translations/README-nl.md) | [polski](translations/README-pl.md) | [português](translations/README-pt_BR.md) | [Română](translations/README-ro.md) | [Русский](translations/README-ru.md) |
| [svenska](translations/README-sv.md) | [türkçe](translations/README-tr.md) | [汉语](translations/README-zh-Hans.md) | [漢語](translations/README-zh-Hant.md) |[عربى](translations/README-ar.md)|---|
*Contribute by translating this ReadMe.md file into other languages [here](/translations).*
# Image Licensing
<img src='https://i.creativecommons.org/l/by-sa/4.0/88x31.png'></img>
Except where otherwise noted, image content on this repository is licenced under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/).
*Repository managed by [OpenLung](https://openlung.org/) and [OS Ventilator Ireland](https://opensourceventilator.ie/) Communities*

Binary file not shown.

After

(image error) Size: 101 KiB

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,74 @@
G04 ---------------------------- Layer name :KeepOutLayer*
G04 EasyEDA v5.5.11, Sun, 03 Jun 2018 10:16:40 GMT*
G04 422a67246ae34fc7a473e8fc002879eb*
G04 Gerber Generator version 0.2*
G04 Scale: 100 percent, Rotated: No, Reflected: No *
G04 Dimensions in millimeters *
G04 leading zeros omitted , absolute positions ,3 integer and 3 decimal *
%FSLAX33Y33*%
%MOMM*%
G90*
G71D02*
%ADD10C,0.254000*%
G54D10*
G01X73152Y32766D02*
G01X70866Y30988D01*
G01X69850Y30226D01*
G01X67818Y28702D01*
G01X51054Y17780D01*
G01X45720Y21082D01*
G01X37338Y26670D01*
G01X28956Y32258D01*
G01X28956Y32258D02*
G01X22860Y31496D01*
G01X22606Y31242D01*
G01X19558Y28448D01*
G01X16764Y24892D01*
G01X13716Y20320D01*
G01X11938Y17018D01*
G01X9906Y13970D01*
G01X7366Y8128D01*
G01X5080Y1778D01*
G01X3810Y0D01*
G01X2390Y2364D01*
G01X1270Y9906D01*
G01X0Y27178D01*
G01X1270Y37084D01*
G01X3556Y47752D01*
G01X7112Y57912D01*
G01X11684Y67310D01*
G01X17018Y75946D01*
G01X25146Y68072D01*
G01X32004Y62230D01*
G01X33274Y61468D01*
G01X34798Y61468D01*
G01X43434Y67310D01*
G01X50800Y71882D01*
G01X55372Y69342D01*
G01X67056Y61722D01*
G01X68072Y61468D01*
G01X68580Y61468D01*
G01X69850Y62484D01*
G01X81280Y72390D01*
G01X83058Y74168D01*
G01X84582Y75946D01*
G01X86868Y72898D01*
G01X93980Y59944D01*
G01X99568Y43688D01*
G01X100838Y35306D01*
G01X101600Y27178D01*
G01X100838Y9906D01*
G01X97790Y0D01*
G01X93218Y10668D01*
G01X90170Y16510D01*
G01X86868Y22352D01*
G01X82222Y29029D01*
G01X80772Y30988D01*
G01X80010Y31750D01*
G01X79286Y31965D01*
G01X73152Y32766D01*
%LPD*%
M00*
M02*

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,141 @@
G04 ---------------------------- Layer name :BOTTOM SOLDER LAYER*
G04 EasyEDA v5.5.11, Sun, 03 Jun 2018 10:16:40 GMT*
G04 422a67246ae34fc7a473e8fc002879eb*
G04 Gerber Generator version 0.2*
G04 Scale: 100 percent, Rotated: No, Reflected: No *
G04 Dimensions in millimeters *
G04 leading zeros omitted , absolute positions ,3 integer and 3 decimal *
%FSLAX33Y33*%
%MOMM*%
G90*
G71D02*
%ADD16R,1.981200X1.981200*%
%ADD17C,1.981200*%
%ADD38R,1.778000X1.778000*%
%ADD39C,1.778000*%
%ADD40C,3.203194*%
%ADD41C,1.503197*%
%LPD*%
G54D16*
G01X71628Y52832D03*
G54D17*
G01X69088Y52832D03*
G01X66548Y52832D03*
G01X64008Y52832D03*
G01X61468Y52832D03*
G01X58928Y52832D03*
G01X56388Y52832D03*
G01X53848Y52832D03*
G01X51308Y52832D03*
G01X48768Y52832D03*
G01X46228Y52832D03*
G01X43688Y52832D03*
G01X41148Y52832D03*
G01X38608Y52832D03*
G01X36068Y52832D03*
G01X71628Y37592D03*
G01X69088Y37592D03*
G01X66548Y37592D03*
G01X64008Y37592D03*
G01X61468Y37592D03*
G01X58928Y37592D03*
G01X56388Y37592D03*
G01X53848Y37592D03*
G01X51308Y37592D03*
G01X48768Y37592D03*
G01X46228Y37592D03*
G01X43688Y37592D03*
G01X41148Y37592D03*
G01X38608Y37592D03*
G01X36068Y37592D03*
G54D38*
G01X89154Y35560D03*
G54D39*
G01X91694Y35560D03*
G01X94234Y35560D03*
G01X96774Y35560D03*
G54D38*
G01X15494Y36830D03*
G54D39*
G01X18034Y36830D03*
G01X20574Y36830D03*
G01X23114Y36830D03*
G01X8890Y28702D03*
G01X6350Y28702D03*
G54D38*
G01X3810Y28702D03*
G54D39*
G01X8890Y23622D03*
G01X6350Y23622D03*
G54D38*
G01X3810Y23622D03*
G54D39*
G01X8890Y18542D03*
G01X6350Y18542D03*
G54D38*
G01X3810Y18542D03*
G54D39*
G01X19304Y63500D03*
G01X16764Y63500D03*
G54D38*
G01X14224Y63500D03*
G54D39*
G01X19304Y58420D03*
G01X16764Y58420D03*
G54D38*
G01X14224Y58420D03*
G54D39*
G01X19304Y53340D03*
G01X16764Y53340D03*
G54D38*
G01X14224Y53340D03*
G54D39*
G01X97536Y28956D03*
G01X94996Y28956D03*
G54D38*
G01X92456Y28956D03*
G54D39*
G01X97536Y23876D03*
G01X94996Y23876D03*
G54D38*
G01X92456Y23876D03*
G54D39*
G01X97536Y18796D03*
G01X94996Y18796D03*
G54D38*
G01X92456Y18796D03*
G54D39*
G01X85598Y65532D03*
G01X83058Y65532D03*
G54D38*
G01X80518Y65532D03*
G54D39*
G01X85598Y60452D03*
G01X83058Y60452D03*
G54D38*
G01X80518Y60452D03*
G54D39*
G01X85598Y55372D03*
G01X83058Y55372D03*
G54D38*
G01X80518Y55372D03*
G54D40*
G01X90678Y42418D03*
G01X90678Y47416D03*
G54D41*
G01X53014Y66548D03*
G01X51308Y66548D03*
G01X49657Y66548D03*
G01X48016Y66548D03*
G01X53522Y22606D03*
G01X51816Y22606D03*
G01X50165Y22606D03*
G01X48524Y22606D03*
G01X83494Y45720D03*
G01X81788Y45720D03*
G01X80137Y45720D03*
G01X78496Y45720D03*
M00*
M02*

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,24 @@
G04 ---------------------------- Layer name :TOP PASTER LAYER*
G04 EasyEDA v5.5.11, Sun, 03 Jun 2018 10:16:40 GMT*
G04 422a67246ae34fc7a473e8fc002879eb*
G04 Gerber Generator version 0.2*
G04 Scale: 100 percent, Rotated: No, Reflected: No *
G04 Dimensions in millimeters *
G04 leading zeros omitted , absolute positions ,3 integer and 3 decimal *
%FSLAX33Y33*%
%MOMM*%
G90*
G71D02*
%ADD13R,1.160018X1.469898*%
%LPD*%
G54D13*
G01X20574Y44958D03*
G01X22606Y44958D03*
G01X14986Y44958D03*
G01X17018Y44958D03*
G01X9906Y45212D03*
G01X11938Y45212D03*
M00*
M02*

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,149 @@
G04 ---------------------------- Layer name :TOP SOLDER LAYER*
G04 EasyEDA v5.5.11, Sun, 03 Jun 2018 10:16:40 GMT*
G04 422a67246ae34fc7a473e8fc002879eb*
G04 Gerber Generator version 0.2*
G04 Scale: 100 percent, Rotated: No, Reflected: No *
G04 Dimensions in millimeters *
G04 leading zeros omitted , absolute positions ,3 integer and 3 decimal *
%FSLAX33Y33*%
%MOMM*%
G90*
G71D02*
%ADD13R,1.363218X1.673098*%
%ADD14R,1.981200X1.981200*%
%ADD15C,1.981200*%
%ADD16R,1.778000X1.778000*%
%ADD17C,1.778000*%
%ADD18C,3.203194*%
%ADD19C,1.503197*%
%LPD*%
G54D14*
G01X71628Y52832D03*
G54D15*
G01X69088Y52832D03*
G01X66548Y52832D03*
G01X64008Y52832D03*
G01X61468Y52832D03*
G01X58928Y52832D03*
G01X56388Y52832D03*
G01X53848Y52832D03*
G01X51308Y52832D03*
G01X48768Y52832D03*
G01X46228Y52832D03*
G01X43688Y52832D03*
G01X41148Y52832D03*
G01X38608Y52832D03*
G01X36068Y52832D03*
G01X71628Y37592D03*
G01X69088Y37592D03*
G01X66548Y37592D03*
G01X64008Y37592D03*
G01X61468Y37592D03*
G01X58928Y37592D03*
G01X56388Y37592D03*
G01X53848Y37592D03*
G01X51308Y37592D03*
G01X48768Y37592D03*
G01X46228Y37592D03*
G01X43688Y37592D03*
G01X41148Y37592D03*
G01X38608Y37592D03*
G01X36068Y37592D03*
G54D16*
G01X89154Y35560D03*
G54D17*
G01X91694Y35560D03*
G01X94234Y35560D03*
G01X96774Y35560D03*
G54D16*
G01X15494Y36830D03*
G54D17*
G01X18034Y36830D03*
G01X20574Y36830D03*
G01X23114Y36830D03*
G01X8890Y28702D03*
G01X6350Y28702D03*
G54D16*
G01X3810Y28702D03*
G54D17*
G01X8890Y23622D03*
G01X6350Y23622D03*
G54D16*
G01X3810Y23622D03*
G54D17*
G01X8890Y18542D03*
G01X6350Y18542D03*
G54D16*
G01X3810Y18542D03*
G54D17*
G01X19304Y63500D03*
G01X16764Y63500D03*
G54D16*
G01X14224Y63500D03*
G54D17*
G01X19304Y58420D03*
G01X16764Y58420D03*
G54D16*
G01X14224Y58420D03*
G54D17*
G01X19304Y53340D03*
G01X16764Y53340D03*
G54D16*
G01X14224Y53340D03*
G54D17*
G01X97536Y28956D03*
G01X94996Y28956D03*
G54D16*
G01X92456Y28956D03*
G54D17*
G01X97536Y23876D03*
G01X94996Y23876D03*
G54D16*
G01X92456Y23876D03*
G54D17*
G01X97536Y18796D03*
G01X94996Y18796D03*
G54D16*
G01X92456Y18796D03*
G54D17*
G01X85598Y65532D03*
G01X83058Y65532D03*
G54D16*
G01X80518Y65532D03*
G54D17*
G01X85598Y60452D03*
G01X83058Y60452D03*
G54D16*
G01X80518Y60452D03*
G54D17*
G01X85598Y55372D03*
G01X83058Y55372D03*
G54D16*
G01X80518Y55372D03*
G54D18*
G01X90678Y42418D03*
G01X90678Y47416D03*
G54D13*
G01X20574Y44958D03*
G01X22606Y44958D03*
G01X14986Y44958D03*
G01X17018Y44958D03*
G01X9906Y45212D03*
G01X11938Y45212D03*
G54D19*
G01X53014Y66548D03*
G01X51308Y66548D03*
G01X49657Y66548D03*
G01X48016Y66548D03*
G01X53522Y22606D03*
G01X51816Y22606D03*
G01X50165Y22606D03*
G01X48524Y22606D03*
G01X83494Y45720D03*
G01X81788Y45720D03*
G01X80137Y45720D03*
G01X78496Y45720D03*
M00*
M02*

View file

@ -0,0 +1,14 @@
;NPTH Drill file created by EasyEDA
M48
METRIC,LZ,000.000
;Holesize 1 = 3.000 METRIC
T01C3.000
%
G05
G90
T01
X017272Y069342
X096520Y013208
X004826Y011176
X084582Y070866
M30

View file

@ -0,0 +1,119 @@
;PTH Drill file created by EasyEDA
M48
METRIC,LZ,000.000
;Holesize 1 = 0.306 METRIC
T01C0.306
;Holesize 2 = 0.701 METRIC
T02C0.701
;Holesize 3 = 0.889 METRIC
T03C0.889
;Holesize 4 = 0.915 METRIC
T04C0.915
;Holesize 5 = 1.701 METRIC
T05C1.701
%
G05
G90
T01
X038661Y059761
X036926Y035659
X036118Y041658
X029222Y041341
X020670Y033080
X013350Y045212
X071059Y039070
X057645Y051163
X074467Y056619
T02
X053014Y066548
X051308Y066548
X049657Y066548
X048016Y066548
X053522Y022606
X051816Y022606
X050165Y022606
X048524Y022606
X083494Y045720
X081788Y045720
X080137Y045720
X078496Y045720
T03
X089154Y035560
X091694Y035560
X094234Y035560
X096774Y035560
X015494Y036830
X018034Y036830
X020574Y036830
X023114Y036830
X008890Y028702
X006350Y028702
X003810Y028702
X008890Y023622
X006350Y023622
X003810Y023622
X008890Y018542
X006350Y018542
X003810Y018542
X019304Y063500
X016764Y063500
X014224Y063500
X019304Y058420
X016764Y058420
X014224Y058420
X019304Y053340
X016764Y053340
X014224Y053340
X097536Y028956
X094996Y028956
X092456Y028956
X097536Y023876
X094996Y023876
X092456Y023876
X097536Y018796
X094996Y018796
X092456Y018796
X085598Y065532
X083058Y065532
X080518Y065532
X085598Y060452
X083058Y060452
X080518Y060452
X085598Y055372
X083058Y055372
X080518Y055372
T04
X071628Y052832
X069088Y052832
X066548Y052832
X064008Y052832
X061468Y052832
X058928Y052832
X056388Y052832
X053848Y052832
X051308Y052832
X048768Y052832
X046228Y052832
X043688Y052832
X041148Y052832
X038608Y052832
X036068Y052832
X071628Y037592
X069088Y037592
X066548Y037592
X064008Y037592
X061468Y037592
X058928Y037592
X056388Y037592
X053848Y037592
X051308Y037592
X048768Y037592
X046228Y037592
X043688Y037592
X041148Y037592
X038608Y037592
X036068Y037592
T05
X090678Y042418
X090678Y047416
M30

View file

@ -0,0 +1,29 @@
// Locate the initial position of legs
// RegisHsu 2015-09-09
#include <Servo.h>
Servo servo[4][3];
//define servos' ports
const int servo_pin[4][3] = { {2, 3, 4}, {5, 6, 7}, {8, 9, 10}, {11, 12, 13} };
void setup()
{
//initialize all servos
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 3; j++)
{
servo[i][j].attach(servo_pin[i][j]);
delay(100);
}
}
while (1);
}
void loop(void)
{
}

View file

@ -0,0 +1,336 @@
// SP-8 quadruped robot - 27/03/2019
// Copyleft - Roberto Hamm - roberto-hamm@sfr.fr
// http://robotix.ah-oui.org
#include <Servo.h>
#include <IRremote.h>
// codes IR remote control
#define cod_0 0x40BF
#define cod_1 0xC03F
#define cod_2 0xE01F
#define cod_3 0x807F
#define cod_4 0xD827
#define cod_5 0x20DF
int IR_signal = A0;
IRrecv irrecv(IR_signal);
decode_results results;
// servo codes
Servo servo_footA;
Servo servo_armA;
Servo servo_footB;
Servo servo_armB;
Servo servo_footC;
Servo servo_armC;
Servo servo_footD;
Servo servo_armD;
int srv_footA = 11; // foot
int srv_armA = 10; // arm
int srv_footB = 9; // foot
int srv_armB = 8; // arm
int srv_footC = 7; // foot
int srv_armC = 6; // arm
int srv_footD = 5; // foot
int srv_armD = 4; // arm
int del = 1500;
int Fdw=60;
int Fup=80;
int Abw=70;
int Afw=110;
int spd=5;
int p13 =13;
void setup() {
Serial.begin(9600);
Serial.println("Spider-S8 : version-190418 - CASE");
// remote control
pinMode(IR_signal, INPUT);
irrecv.enableIRIn();
// servo
servo_footA.attach(srv_footA);
servo_armA.attach(srv_armA);
servo_footB.attach(srv_footB);
servo_armB.attach(srv_armB);
servo_footC.attach(srv_footC);
servo_armC.attach(srv_armC);
servo_footD.attach(srv_footD);
servo_armD.attach(srv_armD);
stall(); delay(1000);
pinMode(p13, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
unsigned int value = results.value;
Serial.println(value, HEX);
switch(value){
case cod_1:
digitalWrite(p13,HIGH);
ROUND();
digitalWrite(p13,LOW);
break;
case cod_2:
digitalWrite(p13,HIGH);
WALK();
digitalWrite(p13,LOW);
break;
case cod_3:
BLINK();
for(int i = 0; i < 7; i++){WALK();}
stall();
flat_up();
delay(1000);
flat_dw();
delay(1000);
for(int i = 0; i < 7; i++){ROUND();}
delay(500);
stall();
break;
case cod_4:
flat_up();
break;
case cod_5:
flat_dw();
flat_up();
break;
case cod_0:
stall();
digitalWrite(p13,LOW);
break;
} // switch
irrecv.resume();
}}
///////// grouped movements ////////////////
void WALK(){
go_ahead();
Afoup(); armAfw(); Afodw();
Cfoup(); armCbw(); Cfodw();
Bfoup(); armBbw(); Bfodw();
Dfoup(); armDfw(); Dfodw();
}
void ROUND(){
armAfw();
armBfw();
armCfw();
armDfw();
Afoup(); armAbw(); Afodw();
Bfoup(); armBbw(); Bfodw();
Cfoup(); armCbw(); Cfodw();
Dfoup(); armDbw(); Dfodw();
}
///////// foot up-down
void Afoup(){
int max=Fup+5;
int min=Fdw+5;
for(int i=min; i<=max; i++) {
servo_footA.write(i);
delay(spd);}}
void Bfoup(){
int max=Fup+5;
int min=Fdw+5;
for(int i=min; i<=max; i++) {
servo_footB.write(i);
delay(spd);}}
void Cfoup(){
int max=Fup+5;
int min=Fdw+5;
for(int i=min; i<=max; i++) {
servo_footC.write(i);
delay(spd);}}
void Dfoup(){
int max=Fup+5;
int min=Fdw+5;
for(int i=min; i<=max; i++) {
servo_footD.write(i);
delay(spd);}}
void Afodw(){
int max=Fup+5;
int min=Fdw+5;
for(int i=max; i>=min; i--) {
servo_footA.write(i);
delay(spd);}}
void Bfodw(){
int max=Fup+5;
int min=Fdw+5;
for(int i=max; i>=min; i--) {
servo_footB.write(i);
delay(spd);}}
void Cfodw(){
int max=Fup+5;
int min=Fdw+5;
for(int i=max; i>=min; i--) {
servo_footC.write(i);
delay(spd);}}
void Dfodw(){
int max=Fup+5;
int min=Fdw+5;
for(int i=max; i>=min; i--) {
servo_footD.write(i);
delay(spd);}}
///////////// basic mvmnts ///////////////
void go_ahead(){
spd=5;
for(int i=Afw; i>=Abw; i--) {
servo_armA.write(i);
servo_armD.write(i);
int y = Abw+Afw-i;
servo_armC.write(y);
servo_armB.write(y);
delay(spd);}}
void flat_up(){
int max=Fup+5;
int min=Fdw+5;
servo_footA.write(min);
servo_footB.write(min);
servo_footC.write(min);
servo_footD.write(min);
delay(500);
for(int i=min; i<=max+50; i++) {
servo_footA.write(i);
servo_footB.write(i);
servo_footC.write(i);
servo_footD.write(i);
delay(spd);}
delay(500);
}
void flat_dw(){
int max=Fup+5;
int min=Fdw+5;
servo_footA.write(max);
servo_footB.write(max);
servo_footC.write(max);
servo_footD.write(max);
delay(500);
for(int i=max; i>=min; i--) {
servo_footA.write(i);
servo_footB.write(i);
servo_footC.write(i);
servo_footD.write(i);
delay(spd);}
delay(500);
}
///////////////////////////
// single arm mvt A
void armAfw(){
int min=Abw+0;
int max=Afw+0;
for(int i=min; i<=max; i++) {
servo_armA.write(i);
delay(spd);
}}
void armAbw(){
int min=Abw+0;
int max=Afw+0;
for(int i=max; i>=min; i--) {
servo_armA.write(i);
delay(spd);
}}
// single arm mvt B
void armBfw(){
int min=Abw+0;
int max=Afw+0;
for(int i=min; i<=max; i++) {
servo_armB.write(i);
delay(spd);
}}
void armBbw(){
int min=Abw+0;
int max=Afw+0;
for(int i=max; i>=min; i--) {
servo_armB.write(i);
delay(spd);
}}
// single arm mvt C
void armCfw(){
int min=Abw+0;
int max=Afw+0;
for(int i=min; i<=max; i++) {
servo_armC.write(i);
delay(spd);
}}
void armCbw(){
int min=Abw+0;
int max=Afw+0;
for(int i=max; i>=min; i--) {
servo_armC.write(i);
delay(spd);
}}
// single arm mvt D
void armDfw(){
int min=Abw+0;
int max=Afw+0;
for(int i=min; i<=max; i++) {
servo_armD.write(i);
delay(spd);
}}
void armDbw(){
int min=Abw+0;
int max=Afw+0;
for(int i=max; i>=min; i--) {
servo_armD.write(i);
delay(spd);
}}
void stall(){
BLINK();
servo_armA.write(90);servo_footA.write(60);
servo_armB.write(90);servo_footB.write(60);
servo_armC.write(90);servo_footC.write(60);
servo_armD.write(90);servo_footD.write(60);
digitalWrite(p13,HIGH);
}
void BLINK(){
for(int i=0; i<3; i++){
digitalWrite(p13,HIGH);
delay(100);
digitalWrite(p13,LOW);
delay(100); }
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,83 @@
#Arduino Quadruped Robot
Arduino Quadruped Robot the project delivered from upstream project [RegisHsu](http://goo.gl/H1vvwW)'s spider robot. This project has been redesigned in 3d printed parts eg: didn't glue servo holder with tibia and fumer, resize body to fit [12300 LIPO battery](http://goo.gl/VmvYhv). You don't need to make a bluetooth remote control anymore but you can control robot using [Android App Bluetooth Joystick](https://github.com/anoochit/android-robot-bt-joypad) instead, [get app from Google PlayStore](https://goo.gl/MF46JS).
New command mode (see source code for detail)
* Test mode - test robot movement in bluetooth command
* Sonar mode - wave your hand in front of ultrasonic sensor to wake up robot
* Free walk mode - walk and avoid obstacle in 20cm like robot vacuum
##Bill of Materials
###3D printed parts
* Top Body x 1
* Bottom Body x 2
* Femur x 4
* Coxa Left x 2
* Coxa Right x 2
* Left Tibia x 2
* Right Tibia x 2
* Electronic plate x 1
###Electronic parts
* Arduino Nano x 1
* Arduino Nano expansion board x 1 (optional)
* Tower Micro Servo 9G x 12
* Switch x 1
* UBEC 5V 3A or Reguletor 5V 3A
* LIPO Battery 7V/12V 3A (3A play for 1hr)
* Prototype PCB Board 6x8 cm
* LED x 1
* DC Socket 2.5mm x 1
* Pin header
* Female Pin Header
* M3 25mm screw x 4
* M3 10mm screw x 4ผ
* M2 10mm screw x 4
##Assemply
Assembly the printed parts for 4 legs with servos, don't screw servo axis at this time, then assembly legs with body.
![](https://lh3.googleusercontent.com/-4tBILi1vqYU/Vgt_RQe2tgI/AAAAAAAAVaw/efOxZv4JH3M/s640-Ic42/12036446_10154144146409989_5611113044391454922_n.jpg)
![](https://lh3.googleusercontent.com/-IXZaI3R5D1k/Vgt_QJF4h7I/AAAAAAAAVaw/deyxqifE9UM/s640-Ic42/11935093_10154146124574989_8970865697741230982_n.jpg)
Assemply electronic parts (schematic'll add later)
* Servo pulse pin connect to Arduino Nano pin D2-D13
* Servo VCC and GND connect to regulator output
* Bluetooth HC-05 Vcc to to Arduino Nano 5V pin, GND, RX-TX and TX-RX
* Arduino Nano, Vin and GND connect to regulator output 5v
* Use dc jack connect with LIPO battery
* Connect battery to input of regulator for stepdown output to 5v
Group servo wire use order Fumer, Tibia, Coxa, connect servos to arduino pin for each leg
* Lelf Front connect to pin D2-D4
* Lelf Back connect to pin D5-D7
* Right Front connect to pin D8-D10
* Right Back connect to pin D11-D13
Flash leg_init.ino script to initial servo angle then screw tight all servo axis, leg position like picture.
![](https://lh3.googleusercontent.com/-HG1EKSQT2PU/VnBCA2T4ROI/AAAAAAAAWKY/pNngD10mjrk/s640-Ic42/20151215_224251.jpg)
Flash spider_robot.ino to Arduino, Finish.
##How to play
Clone joystick app build and install or [get app from Google PlayStore](https://goo.gl/MF46JS) to your mobile phone, open app, swipe and choose connect menu, choose robot bluetooth to connect.
![](https://lh3.googleusercontent.com/-a1jGQdI0nWk/VlglODy-uKI/AAAAAAAAV_8/Ckz4pwvxymg/s640-Ic42/DFG_2015-11-27-16-37-40.png)
Use setting menu to config button or choose QRCode Scanner to scan QRCode below for automatic config.
![](https://lh3.googleusercontent.com/-e-Jw3qc6Nnc/Vl2kEDDOFII/AAAAAAAAWB8/uS01f0dblVQ/s800-Ic42/spider_qr_code_without_logo.png)
Now you can play your robot. see robot in action at [https://www.youtube.com/watch?v=OoDke587s8s](https://www.youtube.com/watch?v=OoDke587s8s)

Some files were not shown because too many files have changed in this diff Show more