Loading...
  Show Posts
Pages: [1] 2 3 ... 15
1  International / Hardware / Re: ArduoServoTime on: April 20, 2013, 12:56:26 pm
Al momento ho messo in funzione solo i servo.

Le idee sono tante, quadranti che ruotano, manine che indicano l'ora, lancerre illuminate, numeri che si muovono etc...

Appena ne realizzo uno carino, lo posto sul sito.
2  International / Hardware / Re: ArduoServoTime on: April 20, 2013, 12:36:54 pm
Quote
In realtà sono almeno il doppio anche su un servo economico, però mi spieghi come pensi di far girare le lancette, in modo continuo su 360°, con un dispositivo che può girare solo 180° ?

In realtà non ho detto che devono girare a 360°, 180° bastano, tipo contachilometri.


Quote
ciao, stavo pensando anche io di fare una cosa simile ma mi è venuto subito un dubbio. come fai a mettere le 3 lancette nello stesso posto? Stai usando un qualche meccanismo?

Il servo motore delle ore e dei minuti, si possono ad esempio posizionare uno di fronte all' altro, mentre quello dei secondi, separato come un cronografo.
3  International / Hardware / ArduoServoTime on: April 20, 2013, 11:41:03 am
 smiley-mr-green
Un saluto a tutta la comunity.

Al contrario di chi pensa che l' open sia solo un modo per poter ottenere informazioni e poi tranne profitto, volevo condividere una mia idea su di un progetto alquanto "strano".

Creare un orologio a lancette con arduino.

 smiley-roll smiley-roll smiley-roll
Pensandoci un pò, sono arrivato alla conclusione che sia fattibilissimo, senza usare marchingegni o artifizi particolari.

Certo un pò costoso rispetto ad un orologio da parete, ma comunque credo originale.

Userò un arduino uno, 3 servo motori, tre pulsanti e tre resistenze da 10k(non per forza necessarie) come per LCD.

Inizialmente pensavo ad uno o più motori passo passo, ma credo non semplice come realizzazione del meccanismo di posizionamento, mentre sapevo per certo che i servomotori si posizionano dove voglio con un range di ben 180 posizioni ed in modo molto preciso.

Allora dopo l'acquisto dei servo, ecco il mio primo prototipo che ho chiamato ArduoServoTime.

Buon divertimento, e per chi è interessato, via all ' evoluzioni creative.

Code:
/* Sketch ArduoServoTime R.0.0
 ________________________________________________________________________________________________________________
 
 Invent & Create by Giuseppe G. (giusby & gengysghey) 16/04/2013
 
 Basic design first published in the "http://www.arduoservotime.blogspot.it" site
 
 Enjoy.
 ________________________________________________________________________________________________________________
 
 Version By Giuseppe G.
 Update:16/01/2013
 Revision:0.0
 ________________________________________________________________________________________________________________
 
 Compiled with Arduino IDE 1.0.4 Windows XP 32bit
 ________________________________________________________________________________________________________________
 
 Caracteristics R.0.0
  1 servo motor for hour
  1 servo motor for minute
  1 servo motor for second
_________________________________________________________________________________________________________________
 
 Hardware Basic components R.0.0
 1 Arduino Uno
 3 servo motor
 3 button
 3 resistor 10K
 
 1 LCD 16x2 6 wire
 1 trimmer 10K
 ________________________________________________________________________________________________________________
 
 The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 7
 * LCD D5 pin to digital pin 6
 * LCD D6 pin to digital pin 5
 * LCD D7 pin to digital pin 4
 * LCD R/W pin to ground
 * LCD ends to +5V and ground
 * wiper to LCD VO pin (10K resistor trimmer)
  
 * control motor servo 1 hour digital pin 8
 * control motor servo 2 minute digital pin 9
 * control motor servo 3 second digital pin 10
 
 * button up hour digital pin 2
 * button up minute digital pin 3
 * button up second digital pin 13
 
 */

//************************************************************************************************************
// SKETCH Arduo Servo Time Version for ARDUINO UNO By Giuseppe G. with HD R0.0
//************************************************************************************************************


// use this if is necessary for IDE
//#if defined(ARDUINO) && ARDUINO >= 100  
//#include "Arduino.h"                    
//#else                                  
//#include "WProgram.h"                  
//#endif                                  


// include the library code:
#include <LiquidCrystal.h>
#include <Time.h>
#include <Servo.h>

//DECLARATION VARIABLES:

Servo servoH;        //motor hout
Servo servoM;        //motor minute
Servo servoS;        //motor second

byte adjs=48;        // automatic correction second for day without RTC
boolean memltime=0;  // memory DST adjast

int ore;            //hours
int minuti;         //minutes
int secondi;        //seconds

byte keyH=2;        // button hour
byte keyM=3;        // button minute
byte keyS=13;       // button second

boolean selb=0;      // memory change pressed buttons


// initialize the LCD library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 4, 5, 6, 7);//(RS,E,D4,D5,D6,D7)


//*************************************************************************************

void setup() {
  
  Serial.begin(9600);      //enable serial monitor
  
  
  pinMode(keyS, INPUT);  //configure pin button second
  pinMode(keyM, INPUT);  //configure pin button minute
  pinMode(keyH, INPUT);  //configure pin button hour
  
  servoH.attach(8);      //define motor hour
  servoM.attach(9);      //define motor minute
  servoS.attach(10);     //define motor second

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);

  // Print a message version project to the LCD on start-up.

  delay (500);  //wait 1 second



  //set restart device Time default(hr,min,sec,day,month,yr);
  setTime(00,00,00,16,4,2013);

 
}// end setup

//*************************************************************************************

void loop() {//main subroutine program of device

  check_time();
  view_dt(0,0);
  
  ore = map(hour(), 0, 23, 0, 180);
  minuti = map(minute(), 0, 59, 0, 180);
  secondi = map(second(), 0, 59, 0, 180);
  
  int oreT=hour();
  int minutiT=minute();
  int secondiT=second();
  
  servoH.write(ore);
  servoM.write(minuti);
  servoS.write(secondi);

  if(digitalRead(keyH) ==1 && selb == 0) {selb = 1; oreT++; setTime(oreT,minutiT,secondiT,1,1,2013);delay(100);}
  if(digitalRead(keyM) ==1 && selb == 0) {selb = 1; minutiT++; setTime(oreT,minutiT,secondiT,1,1,2013);delay(100);}
  if(digitalRead(keyS)==1 && selb == 0) {selb = 1; secondiT++; setTime(oreT,minutiT,secondiT,1,1,2013);delay(100);}

  if(digitalRead(keyH)==0 && digitalRead(keyM)==0 && digitalRead(keyS)==0){selb = 0;} //reset memory pressed buttons

} //end loop

//*************************************************************************************

void check_time(){

  // adj real time correction(increase adjs second for day"
  if (hour() == 23 && minute() == 59 && second() == 60 - adjs){
    setTime(23,59,59,day(),month(),year());
  }

  // alignment daylight saving time correction +1
  if (hour() == 2 && minute() == 00 && second() == 00 && weekday() == 1 && month() == 3 && day() > 24 ){
    setTime(03,00,00,day(),month(),year());
    memltime=0;
  }

  // alignment daylight saving time correction -1
  if (memltime == 0 && hour() == 3 && minute() == 00 && second() == 00 && weekday() == 1 && month() == 10 && day() > 24 ){
    setTime(02,00,00,day(),month(),year());
    memltime=1;
  }
}

//*************************************************************************************

void view_dt(int col,int rig) {

  // view time on LCD
  lcd.setCursor(col,rig);
  printDigit(hour());
  lcd.print(F(":"));
  printDigit(minute());
  lcd.print(F(":"));
  printDigit(second());

  // view time on serial terminal
  printDigit_ser(hour());
  Serial.print(":");
  printDigit_ser(minute());
  Serial.print(":");
  printDigit_ser(second());
  Serial.println(".");
  
}

//*************************************************************************************

void printDigit(int digits){ // utility function for digital clock display: prints preceding colon and leading 0
  if(digits < 10){lcd.print(F("0"));}
    lcd.print(digits);
}

//*************************************************************************************

void printDigit_ser(int digits){ // utility function for digital clock on serial terminal: prints preceding colon and leading 0
  if(digits < 10){Serial.print("0");}
    Serial.print(digits);
}

//*********************************************************************************************************************************************************************************    
//end sketch PROJECT By Giuseppe G. Site:"http://www.arduoservotime.blogspot.it"  Mail:"cimice96@hotmail.it"  Post:"www.arduino.cc/forum"
//*********************************************************************************************************************************************************************************    


4  International / Software / Re: [Risolto] Problema con PCF8574AP on: March 29, 2013, 05:32:52 pm
 smiley-mr-green

Scusatemi, ho risolto.

Avevo sbagliato il comando di scrittura.

Lascio comunque la soluzione, anche se mi sento un pò ridicolo per l'errore.

Se i moderatori del forum ritengono che questo sia obsoleto, possono cancellarlo.


Correzione sul comando "wire.print":

Code:
// test in-out PCF8574AP

#include<Wire.h>

byte x=0;
byte y=0;

void setup()
{
    Wire.begin();
    Serial.begin(9600);
}

void loop()
{

  Wire.requestFrom(0x3A,1);
    if(Wire.available())              //If the request is available
    {
        x=Wire.read();                //Receive the data
    }
    if(x<255)                         //If the data is less than 255
    {
        if (x==0) { y = 0; }; //null
        if (x==1) { y = 1; }; //P1
        if (x==2) { y = 2; }; //P2
        if (x==4) { y = 4; }; //P3
        if (x==8) { y = 8; }; //P4
        if (x==16) { y = 16; }; //P5        
        if (x==32) { y = 32; }; //P6
        if (x==64) { y = 64; }; //P7
        if (x==128) { y = 128; }; //P8        
    }
    Wire.beginTransmission(0x3B);      //Begin the transmission to PCF8574
    Wire.print(y,0);                     //Send the data to PCF8574
    Wire.endTransmission();            //End the Transmission
  Serial.println(y);
}

La riga corretta è la seguente:

   Wire.print(y,0);                     //Send the data to PCF8574

gli esempi che ho trovato su internet, non evidenziavano questo aspetto "wire.print(y, 0);", ma solo "wire.print(y);" in particolare il codice che vedete l'ho copiato pari da un esempio.

Lascio per scontato che gli esempi che si trovano nelle descrizioni delle librerie, siano testati. Da qui, il problema.


5  International / Software / [Risolto] Problema con PCF8574AP on: March 29, 2013, 05:07:49 pm
Un saluto a tutti.

Mi sapreste aiutare a risolvere questo problema ?

Non riesco a capire perchè non funziona il PCF8574AP collegato ai pin SDA ed SCL rispettivamente ai pin A4 ed A5 di arduino con la comunicazione I2C.

Mi spiego.
Il circuito legge 8 ingressi digitali collegati al primo PCF8574AP configurato in ingresso e rispettivamente il secondo PCF8574A configurato in uscita ha collegato 8 led.
Alla pressione del tato 1 si deve accendere il led 1, 2 il led 2 e così via.

Tutto bene fino al tasto 4, dopo tutto un casino.

Ho notato che in ingresso, vengono letti tutti gli ingressi correttamente, mentre per le uscite, il valore corretto che viene gestito si ferma a 14, dopo di chè non comprendo perchè le uscite con peso binario 16 e 32 sono sempre attive e quelle con peso 32 e 64 sempre spente.


Il codice utilizzato è il seguente:
Quote
// test in-out PCF8574AP

#include<Wire.h>

byte x=0;
byte y=0;

void setup()
{
    Wire.begin();
    Serial.begin(9600);
}

void loop()
{

  Wire.requestFrom(0x3A,1);
    if(Wire.available())              //If the request is available
    {
        x=Wire.read();                //Receive the data
    }
    if(x<255)                         //If the data is less than 255
    {
        if (x==0) { y = 0; }; //null
        if (x==1) { y = 1; }; //P1
        if (x==2) { y = 2; }; //P2
        if (x==4) { y = 4; }; //P3
        if (x==8) { y = 8; }; //P4
        if (x==16) { y = 16; }; //P5        
        if (x==32) { y = 32; }; //P6
        if (x==64) { y = 64; }; //P7
        if (x==128) { y = 128; }; //P8        
    }
    Wire.beginTransmission(0x3B);      //Begin the transmission to PCF8574
    Wire.print(y);                     //Send the data to PCF8574
    Wire.endTransmission();            //End the Transmission
  Serial.println(y);
}


Grazie per l'attenzione.
6  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 16, 2013, 12:55:38 pm
per maurotec:
Quote
Non ci arrivo, niente non ci arrivo. smiley-razz
Che devi liberalizzare, (sarai influenzato dalle cronache di questi giorni).
haaaaaaaaaaaaaaa, forse ho capito, tu dici che il circuito anti-intrusione è un dispositivo a parte che ognuno può implementare come meglio crede, e quindi è conosciuto solo a chi lo realizza e non
a tutti quelli che decidono di realizzare la scheda.

Ciao.

 smiley-fat
Il concetto è proprio questo, liberalizzare l'idea di autocostruirsi un antifurto di un certo livello "PERSONALE".




per testato:
Quote
dico la mia anche se e' brutale, io credo che tu voglia commercializzare questo prodotto, sfruttando collaboprazioni gratuite per lo sviluppo. Questo non e' negativo in assoluto, specialmente se poi si mette a disposizione di tutti hw e sw, pero' sarebbe corretto dirlo.

Probabilmente hai sempre la puzza sotto il naso.

Io non voglio creare niente che poi voglia vendere, anche perchè sarà un progetto personale OPEN SOURCE.

Hai compreso la risposta che ho dato a maurotec?

Il tuo pensiero lo conosciamo, allora se altri la pensano diversamente da te, non cercare di portare fuori strada il mio.


Saluti.  smiley-twist

PS:  testato ho fatto qualcoosa che non dovevo ?   smiley-roll
7  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 15, 2013, 04:30:44 pm
 smiley-cry
In realtà il bug c'è, e dopo n.cicli + 1 non suona più, ma il conteggio cicli conta all'infinito fino a quando non si disattiva.

Ripeto è solo indicativo, per comprendere cosa dovrebbe poi arrivare a fare la centrale.

In ogni caso, ho una versione completa funzionante che sto testando.

Il problema è che ho superato i 255 oggetti per form, e devo scomporre il form principale dalla configurazione parametri.

Un lavoretto non indifferente in parte fatto.

Appena pronto lo posto, anche perchè sarà la base di riferimento per la comprensione delle funzioni base della centrale.
8  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 15, 2013, 03:23:49 pm
Il SW dovrebbe funzionare a 32 bit, lo ho compilato con VB6 free, mentre per il problema del path, è legato alla cartella "AAM" che bisogna creare sotto "C:".

Il SW è una demo view "dimostrativa".
In poche parole il sunto di cosa dovrebbe gestire la centrale antifurto arduino e cioè 16 ingressi configurabili per tipo, ritadati in uscita, in ingresso, parzializzabili, come tamper24h, etc....

Dovrebbe servire a chi non ha presente come funzioni una centrale antifurto, per comprendere le funzioni da implementare nel software da sviluppare su arduino.

Ciao.
9  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 15, 2013, 02:24:37 am
 smiley-mr-green
Anche se da quanto ho capito, dopo che ho postato le info di base per realizzare una centrale degna di chiamarsi centrale, "tutti" o quasi, si sono tirati indietro, io continuo per la mia strada, provando a sfidare la concorrenza "che dicono sicura" presente in commercio.

L'idea è quella di liberalizzare il dispositivo di anti-intrusione, rendendolo quasi privato e quindi più sicuro, con concetti di base di un certo livello di sicurezza.

Cosa mi spinge a farlo?   smiley-roll-sweat  .....  smiley-roll Semplice !!!
Chi mi dice che le centrali in commercio non abbiano password segrete o che con qualche artifizio elettronico la si possa bloccare ?  smiley-eek

Se la centrale HW la costruiamo noi, il SW lo inventiamo noi, sappiamo sicuramente se sono presenti patch o problemi HW che possono rendere vulnerabile il sistema.

Ecco che come riferimento HW ho postato le basi e come SW ho creato questa piccola e semplice demo di TEST per windows di facile intuizione, sviluppato in VB6 free per comprendere le funzioni base della centrale che andrò a realizzare.

NB: Questa demo non è completa, ma dà un'idea di cosa dovrà gestire arduino a livello di allarme.

Per gli amici "LINUX o MAC" scusate, ma non ho un PC con questo SO.
Ad ogni modo, per chi fosse interessato, basta chiederlo e le invio i sorgenti VB di riferimento per poterlo sviluppare con altri linguaggi.

In fondo, si può realizzare la centrale con il PC ed utilizzare la UNO come interfaccia. Certo, un pò più costosa e non tanto pratica, ma comunque potrebbe essere una delle soluzioni personalizzate.  smiley-wink

10  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 08, 2013, 07:34:44 am
 smiley-roll-sweat

Iniziamo a preparare la struttura dello sketck della nuova centrale AAS:

Quote
MAIN

       Inputs_Zone
       Keyboard
                   Password
                               Configuration
                                                 System
                                                          Date_Time
                                                          Passowrd
                                                                      Level_Passowrd
                                                                      External_Key_Function
                                                 Type_Zone
                                                 Times_Zone
                                                 Function_Zone
                                                 Memory_Storage
       Display_View
       Alarm_Functions
       Activation
       Outputs
       Memory_Events
       "Add_Function_1"
       "Add_Function_2"................
       "Debug_on_serial"

End_MAIN

Ho dimenticato qualcosa?
11  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 07, 2013, 01:13:19 pm
 smiley-roll-sweat

Bozza main board Arduo Alarm Simple R.0.0.

Che ne pensate ?
12  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 06, 2013, 04:25:39 pm
 smiley-razz
Ultimi aggiornamenti HW:

- stadio di alimentazione con protezione alimentazione 12V di servizio tramite fusibile da 2A con autoripristino e segnalazioni tramite led dello stato rete, ricarica batteria e alimentazione di servizio.
- ingresso zona bilanciato con protezione taglio e cortocircuito cavi

su http//:www.arduoalarmsimple.blogspot.it

Troverete anche i datasheet del fusibile automatico TCO e della resistenza termica PTC per la limitazione della corrente di carica della batteria tampone.

Un saluto a tutta la comunity.  smiley-wink

Giuseppe G.
13  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 04, 2013, 04:00:48 pm
Ok. Aggiornamento schemi base con correzioni consigliate dalla comunity:

Alimentatore R0.1
Stadio ingresso R0.1

 smiley-lol
14  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 04, 2013, 10:54:24 am
Ciao MauroTec,

 smiley-roll
non flotta, si porta al massimo a 0,6V generati da D1 e R1 in serie alla R2 da 10K. Il condensatore C1 evita proprio questo.

In ogni caso, per sicurezza, basterebbe una resistenza da 1Mega che a questo punto si può benissimo integrare al circuito.  smiley

Se salta il fusibile, si ha la segnalazione di Tamper 24H, cioè manomissione (il pin di arduino si porta a circa 4,4V). Occorre quindi gestire l'autoesclusione della zona dopo n allarmi, altrimenti la centrale continuerebbe a suonare per sempre.

Questa funzione sarà sempre attiva, anche a centrale disinserita, proprio per proteggere il circuito cablato.  smiley-wink
15  International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm on: March 04, 2013, 03:49:50 am
 smiley-razz

Ecco il collegamento dell' ingresso zona bilanciato.

Trucchetto per sfruttare un ingresso analogico del microprocessore per più segnalazioni

Tamper: la tensione sul pin di ingresso del micro si porta a circa 4,4V
Zona1 LOW: la tensione sul pin di ingresso del micro si porta a circa 1,2V
Zona1 HIGH: la tensione sul pin di ingresso del micro si porta a circa 1,8V
Zona1L+Zona2H: la tensione sul pin di ingresso del micro si porta a circa 2,2V

PS: Il diodo D1 non è al contrario.


Un saluto a tutti.
Giuseppe G.
Pages: [1] 2 3 ... 15