xino abarth 595

Tutto sull'Arduino e la sua grande famiglia... Atmel AVR, Microchip PIC, ecc...

Moderatori: ragno, tapino, alez, zulu, davidea

Rispondi
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

xino abarth 595

Messaggio da ragno »

Aggiornamento di questo 3D viewtopic.php?f=24&t=1719

Ho cambiato l'hardware perche il 2009 era, secondo me, sprecato.
Il 595 e' relativo all'utilizzo nella zona breadboard dello xino di un 74hc595 per la gestione 2-wire del lcd. Per l'oscillatore ho utilizzato 2 capacita' da 8,2 pf avendo terminate quelle da 22pf.
Rispetto al "prototipo" con bb ora tutto e' molto piu compatto :mrgreen:
Lo sketch e' rimasto pressoche identico (ide 1.00), la mcu e' un atmega8 con optiboot: Binary sketch size: 6708 bytes (of a 7680 byte maximum). Non e' rimasto molto spazio ma c'e' sicuramente qualcosa da ""rosicchiare": alle brutte si monta un 328p. Con la 023 ho circa 4-500 bytes in piu'...Non ricordo pero' perche' ho utilizzato la 1.0 ;)

Codice: Seleziona tutto

#include <OneWire.h>

#include <Wire.h>
#include <LiquidCrystal_SR.h>

LiquidCrystal_SR lcd(7,8,TWO_WIRE);
//                   | | + enable
//                   | \-- Clock Pin
//                   \---- Data/Enable Pin

///#define   CONTRAST_PIN   9
///#define   CONTRAST       90


// DS18S20 Temperature chip i/o
OneWire ds(10);  // on pin 10


void setup()
{
  ///pinMode(CONTRAST_PIN, OUTPUT);
  ///analogWrite (CONTRAST_PIN, CONTRAST);
 
  
  // initialize inputs/outputs
  // start serial port
  Serial.begin(9600);
  
  lcd.begin(24,2);               // initialize the lcd
  lcd.home ();                   // go home
  lcd.print("wait...");
  delay(1000);    
  lcd.home ();        
}
 
void loop()
{
  int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  char temp[] = { "temp.:" };

  if ( !ds.search(addr)) {
      Serial.println();
      ds.reset_search();
      delay(30000);
      lcd.clear();
      return;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC err\n");
      return;
  }

  Serial.print("S:");

  if ( addr[0] == 0x10) {
      Serial.print("DS18S20 ");
  }
  else if ( addr[0] == 0x28) {
      Serial.print("DS18B20 ");
  }
  else {
      Serial.print("err: 0x");
      Serial.println(addr[0],HEX);
      return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end

  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.

  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
   data[i] = ds.read();
 }

  LowByte = data[0];
  HighByte = data[1];
  TReading = (HighByte << 8) + LowByte;
  SignBit = TReading & 0x8000;  // test most sig bit
  if (SignBit) // negative
  {
    TReading = (TReading ^ 0xffff) + 1; // 2's comp
  }
  Tc_100 = (6 * TReading) + TReading / 4;    // multiply by (100 * 0.0625) or 6.25

  Whole = Tc_100 / 100;  // separate off the whole and fractional portions
  Fract = Tc_100 % 100;

  Serial.print(temp);
  lcd.print(temp);

  if (SignBit) // If its negative
  {
     Serial.print("-");
     lcd.print("-");    
  }
  Serial.print(Whole);
  lcd.print(Whole);
    
  Serial.print(".");
  lcd.print(".");
  
  if (Fract < 10)
  {
     Serial.print("0");
     lcd.print("0");    
  }
  Serial.print(Fract);
  lcd.print(Fract);

  Serial.println();
  lcd.setCursor ( 0,2 ); // go to position

}
La programmazione viene effettuata collegando tx-rx-gnd al classico convertitore usbttl da un paio di euro, non c'e' bisogno del condensatore, basta premere tastino reset sullo xino quando avrdude tenta di flashare l'atmega.

Questa e' la configurazione per lo xino8 con optiboot da inserire in boards.txt

Codice: Seleziona tutto

atmega8o.name=Arduino 2009 (ATmega8) OPTIBOOT

atmega8o.upload.protocol=arduino
atmega8o.upload.maximum_size=7680
atmega8o.upload.speed=115200
atmega8o.bootloader.low_fuses=0xBF
atmega8o.bootloader.high_fuses=0xdc
atmega8o.bootloader.path=optiboot
atmega8o.bootloader.file=optiboot_atmega8.hex
atmega8o.bootloader.unlock_bits=0x3F
atmega8o.bootloader.lock_bits=0x0F
atmega8o.build.mcu=atmega8
atmega8o.build.f_cpu=16000000L
atmega8o.build.core=arduino
atmega8o.build.variant=standard
Costo, escluso il display, ma comprensivo dell'adattatore usbttl inferiore ai 10 euro.
Allegati
xino-1.jpg
xino-1.jpg (141.67 KiB) Visto 1940 volte
xino-2.jpg
xino-2.jpg (177.26 KiB) Visto 1940 volte
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: xino abarth 595

Messaggio da alez »

Complimenti :) in effetti la porzione mille fori on board evita in molti casi di dovere aggiungere uno shield
Ciao alez
Avatar utente
zulu
Messaggi: 605
Iscritto il: 27 ott 2007, 09:48

Re: xino abarth 595

Messaggio da zulu »

Scusa Ragno,
ma lo xino cosa ha in meno rispetto a un arduino? Che hardware hai bisogno per programmarlo? Che tipo di imposti nell'ide per inviare lo sketch?

Per intenderci a questi 7 euro cosa dovrebbe aggiungere una persona che ha uno sketch pronto per arduino UNO? http://www.ebay.it/itm/K010-Xino-basic- ... 869wt_1186

saluti
zulu
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: xino abarth 595

Messaggio da ragno »

@zulu: la versione minimale non e' fornita dei seguenti componenti:
1) l'oscillatore e le 2 capacita' di stabilizzazione.
2) la mcu (puoi metterci un a8, a168 o 328p).
3) i regolatori di tensione (5v e 3,3v).
4) Il convertitore usb seriale per programmarlo.

Ora chiaramente, se non disponi di qualche componente, e' meglio un arduino classico.
Ma se hai un po di hardware, puoi flashare la mcu con un bootloader arduino e il progettino finisce in una scatola (magari alimentato con 4 pile ricaricabili), dietro una parete, non devi continuamente riprogramarlo con uno sketch e non devi loggare i dati via seriale in continuazione, quello che manca allo xino non e' indispensabile.

Soprattutto considerandolo un'alternativa ad una breadboard DIY (la board dispone dei connettori passanti per connetterci gli shield) senza contare che hai una piccola area bb di circa 8x10 dove aggiungere qualcosa (io ci ho messo il 74hc595).

Per programmarlo dall'IDE devi utilizzare un convertitore usbttl(seriale) tipo questo e collegare tx-rx-gnd-vcc
Immagine

Per l'i/o hai tutti i pin a disposizione (layout compatibile con arduino) e per gli sketch devi impostare la board dell'IDE secondo la mcu ed il bootloader utilizzati: nel mio caso ho creato (vedi primo post) una board 2009 per atmega8 ed optiboot (piu' spazio in flash per il codice e seriale a 115200=maggiore velocita' di scrittura degli sketch).

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: xino abarth 595

Messaggio da alez »

@Diegopic: argomento splittato, continua qui: viewtopic.php?f=24&t=2021
Ciao alez
Rispondi