Markdown source

# Acme-PyCNC draft

<abstract>
This page contains all the project notes related to the project Acme-PyCNC
</abstract>

Acme-PyCNC is a work-in-progress hardware design. If you like to follow it and give any contribute please
subscribe the Telegram group <https://t.me/acmepycnc>.

## What is the Acme-PyCNC ?

Acme-PyCNC is an application board designed around the [Raspberry Pi Compute Module 3](https://www.raspberrypi.org/products/compute-module-3/).
The main target of this board is to provide a compact and reliable hardware to run the PyCNC software developed by 
Nikolay Khabarov.

In the following video Nikolay explains the basic idea of this software. 

<iframe width="560" height="315" src="https://www.youtube.com/embed/vcedo59raS4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

This software uses the DMA capability of Raspberry Pi CPU to generate the realtime signals requested to drive the stepper motors
and extruder leaving all the powerful of the 64 bit quad core @ 1.2 GHz of the Broadcom CPU for the user application avoiding
the needs to use an Arduino based CPU (usually 8 bit @ 16 MHz) to do that.

PyCNC is open source, written in pure Python language and already available here:

*  <https://github.com/Nikolay-Kha/PyCNC>

In this video Nikolay shows a fully working 3D printer using this solution:

<iframe width="560" height="315" src="https://www.youtube.com/embed/41wdmmztTNA" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

To implements the hardware of Acme-PyCNC we will start from the Acme Systems board [CM3-Panel](https://www.acmesystems.it/CM3-PANEL) 
with a motor driver add-in. In this way will be possible to have a 7 inch display with capacitive touch to implemens a GUI interface,

The GUI interface is still not developed but we hope that someone will start to develop it when the hardware 
will be available.

## GPIO map on CM3-Panel

<abstract>
__To do__: This is the actual signals available on the CM3-panel. We are checking how to adapt this pin out with the 
actual pinout used by the PyCMC software:
</abstract>

	GPIO 0  - LCD PCLK
	GPIO 1  - LCD DE
	GPIO 2  - LCD VSYNC
	GPIO 3  - LCD HSYNC
	GPIO 4  - LCD B2
	GPIO 5  - LCD B3
	GPIO 6  - LCD B4
	GPIO 7  - LCD B5
	GPIO 8  - LCD B6
	GPIO 9  - LCD B7
	GPIO 10 - LCD G2
	GPIO 11 - LCD G3
	GPIO 12 - LCD G4
	GPIO 13 - LCD G5
	GPIO 14 - LCD G6
	GPIO 15 - LCD G7
	GPIO 16 - LCD R2
	GPIO 17 - LCD R3
	GPIO 18 - LCD R4
	GPIO 19 - LCD R5
	GPIO 20 - LCD R6

	GPIO 22 - Backlight
	GPIO 23 - Camera led
	GPIO 24 - IO24 e Camera shutdown (portarlo con R0 a shutdown) 
	GPIO 25 - 
	GPIO 26 - 
	GPIO 27 - 

	GPIO 28 - (PCM_CLK)	(SDA0)
	GPIO 29 - (PCM_FS)	(SCL0)
	GPIO 30 - (PCM_DIN)
	GPIO 31 - (PCM_OUT)
	
	GPIO 32 - (TXD0) (TXD1)
	GPIO 33 - (RXD0) (RXD1)

	GPIO 34 - 

	GPIO 35 - (SPI0_CE1)
	GPIO 36 - (SPI0_CE0)	(TXD0)
	GPIO 37 - (SPI0_MISO)	(RXD0)
	GPIO 38 - (SPI0_MOSI)
	GPIO 39 - (SPI0_SCLK)

	GPIO 40 - (PWM0) (TXD1)
	GPIO 41 - (PWM1) (RXD1)

	GPIO 42 - Touchscreen INT
	GPIO 43 - Touchscreen RST
	GPIO 44 - Touchscreen & Camera I2C SDA	(SDA0)  
	GPIO 45 - Touchscreen & Camera I2C SCL	(SCL0) 

### PyCMC scheme

<abstract>
This is wiring scheme used by PyCNC 
</abstract>

<img src="https://user-images.githubusercontent.com/8740775/28233650-d64060e0-6900-11e7-8605-6475384fd2f7.png" class="img-responsive center-block" width="80%">

## RAMPS 1.4 schematic

<abstract>
This is the schematic of RAMPS 1.4 used by PyCNC. This hardware will be fully replaced by a smaller hardware designed by Acme Systems
</abstract>

<img src="http://reprap.org/mediawiki/images/f/f6/RAMPS1.4schematic.png" class="img-responsive center-block" width="80%">

## Links

* <https://www.dfrobot.com/wiki/index.php/TB6600_Stepper_Motor_Driver_SKU:_DRI0043>