#ACME-SYN-01

<div class="text-success lead">
ACME-SYN-01 è un termoigrometro a batteria basato dotato di Sensirion SHT20 e modulo radio Yarm a 868MHz.
</div>

<img src="./top.jpg" class="img-responsive center-block" width="80%">


##Programmazione della Yarm

* Spostare lo switch su posizione ON
* Caricare velocemente il supercap mettendo una R da 10 ohm in parallelo a R1. Sono previste delle pad per 
farlo

Il programmatore da usare è questo: @product='YARM-DEV-ICP'

##Debug port

E' prevista una connessione per la debug port. L'adattatore da usare è questo: @product='USB-3V-SER'

* Il terminale verde (TX) va sul pin RX
* Il terminale bianco (RX) va sul pin TX
* Il terminale nero (GND) va sul pin GND


##Schema a blocchi
<img src="./schema_a_blocchi.jpg" class="img-responsive center-block" width="80%">

##Regolazione della tensione VCC e VCC2 in uscita dal chip U1

Tramite le quattro linee VSEL0/1/2/3 è possibile settare l'uscita VCC di U1 
da 1.8 a 3.3 volt in 16 step da 100mV come da table 1.

| U1 signal     | Yarm Pin GPIO | Yarm Pin # |
|---------------|---------------|------------|
| VSEL 1 (inp)  | PA8  (out)    | 12         |
| VSEL 2 (inp)  | PA9  (out)    | 13         |
| VSEL 3 (inp)  | PA10 (out)    | 14         |
| VSEL 4 (inp)  | PA11 (out)    | 15         |


<img src="output_voltage_setting.png">

##Accensione VCC2 in uscita dal chip U1
Con la linea CTRL è possibile spegnere l'uscita VCC2 di U2

| U1 signal  | Yarm Pin GPIO | Yarm Pin # |           |
|------------|---------------|------------|-----------|
| CTRL (inp) | PA16 (out)    | 24         | 1=VCC2 ON |


##Controllo livello batteria
Con la linea MEASURE è possibile inviare un segnale analogico all'ingresso ADC0 
della Yarm, proporzionale alla tensione presente sulla batteria al Litio
ma di ampiezza compresa tra 0 e 1 volt.

| Signal        | Yarm Pin GPIO | Yarm Pin # |      |
|---------------|---------------|------------|------|
| MEASURE (inp) | PA17 (out)    | 17         | 1=ON |
| BATT (out)    | ADC1 (inp)    | 8          |      |

##Schematics
* [Power section](./SYN-01_power.pdf)
* [Yarm section](./SYN-01_yarm.pdf)

##Datasheets
* [SAM L MCUs](http://www.atmel.com/products/microcontrollers/arm/sam-l.aspx?tab=documents)
* [SHT1x](https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/2_Humidity_Sensors/Sensirion_Humidity_Sensors_SHT1x_Datasheet_V5.pdf)
* [Digital Humidity Sensor SHT2x ](https://www.sensirion.com/products/humidity-sensors/humidity-temperature-sensor-sht2x-digital-i2c-accurate/)
* [U1 - Ultra-low-power 300mA Step-Down Buck DCDC Converter](http://www.ti.com/product/TPS62740)
* [Yarm pinout](https://www.acmesystems.it/yarm)
* [Sensore SLHT5](./SLHT5.pdf)

##Links
* @article='long_lasting_battery_solution'
* [Atmel ASF library documentation](http://asf.atmel.com/docs/latest/search.html?device=samd21)
* [SAM ADC](http://asf.atmel.com/docs/latest/samda1/html/group__asfdoc__sam0__adc__group.html)
* [Esempio di Clemente per svegliare la CPU da sleep via interrupt da RTC](https://github.com/cledic/YARM_Project/blob/master/YARM2_8510_L21_YARM_TX_Simple_LowPower.7z)
* [SHT1X.rar Libreria Arduino usata da Enzo per il sensore](./SHT1X.rar)

##Modifiche da fare in caso di produzione in quantità

* Prevedere delle pad per caricare al volo il supercap durante la programmazione di fabbrica

##Gestione del sensore H/T

| Signal   | Yarm Pin GPIO  | Yarm Pin # |
|----------|----------------|------------|
| DATA_L   | PA18 (inp/out) | 18         |
| SCK_L    | PA19 (inp)     | 20         |

<br/>
<img src="./pinout_sensore.png" class="img-responsive" width="40%">


##Programma di test
Semplice programma di test con il quale è possibile provare le varie sezioni circuitali 
della scheda tramite un menu di funzioni su porta seriale di debug.

* [main.c](./main.c)

##Librerie ASF usate

<img src="./asf_libraries.png" class="img-responsive center-block" width="50%">

##Altre cose da sapere

###Per poter stampare con la printf dei float

<pre class="minicom">
Debug
	Properties
		Toolchain
			ARM/GNU Linker
				Miscellaneous
					in "Other options" add:
						-lc -u _printf_float
</pre>

* [Link spiegazione](http://atmel.force.com/support/articles/en_US/FAQ/Printf-with-floating-point-support-in-armgcc)

