collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Arduino Audio GPS  (Lida 19237 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Arduino Audio GPS
« em: 30 de Abril de 2010, 10:42 »
Boas!

Ontem resolvi juntar uns quantos componentes que por cá andavam e dei vida a uma ideia que, embora já não seja completamente original, ainda não vi amplamente explorada. Os sistemas semelhantes que conheço custam muito dinheiro e com o preço dos componentes em causa não me parece que se justifique tais valores.

Muito resumidamente, a ideia consiste num aparelho autónomo que consoante a localização gps, emite um áudio associado a essa localização (tipo guia turístico automático).

Os componentes que utilizei foram:

   1 Arduino duimilanove (atmega328)
   1 modulo somo 4d
   1 gps demoboard (sem bluetooth)
   1 lcd shield (opcional)
   1 coluna de som (não sei a marca mas deve ser bangs&olufsen… ? )

Com estes componentes que, todos somados não chegam aos 100 euros, consegue-se criar uma “blackbox”, que comercialmente chegam a custar 2500 euros… (com as devidas diferenças, claro…)

(Perdoem-me os gatafunhos do lcd, mas era só para demonstrar a ideia…)



Como podem ver, as ligações entre os componentes não podiam ser mais simples, e até ver, funciona tudo perfeitamente, com um código muito simples!

(versão beta(!), com um ponto exacto e sem o código do lcd)

Código: [Seleccione]
#include <string.h>
 #include <ctype.h>

char lat[11];
char lon[11];
char ult_lat[11];
char ult_lon[11];
char p1x[11]="3844.5810";
char p2x[11]="00918.2186";
const unsigned int minVol= 0xfff0;    // Minimum volume
const unsigned int maxVol= 0xfff7;    // Max Volume   
const unsigned int PlyPse = 0xfffe;   // Play or Pause
const unsigned int Stop= 0xFFFF;      // Stop
const int pinClock= 3;
const int pinData =4;
const int pinBusy =6;
const int pinReset=7;
unsigned int volLevel=0;
int Song;                   // current Song
unsigned int vol;                    // current volume
 int ledPin = 13;                  // LED test pin
 int rxPin = 0;                    // RX PIN
 int txPin = 1;                    // TX TX
 int byteGPS=-1;
 char linea[300] = "";
 char comandoGPR[7] = "$GPRMC";
 int cont=0;
 int bien=0;
 int conta=0;
 int indices[13];

void setup(){
  Serial.begin(4800);
  pinMode(pinData,OUTPUT);     // set pin 4 to output for Data
  pinMode(pinClock,OUTPUT);    // set pin 3 to output for data
  pinMode(pinReset,OUTPUT);    // set pin 7 to allow software reset
  pinMode(pinBusy,INPUT);      // set pin 6 to monitor while Song is playing
  pinMode(ledPin, OUTPUT);       // Initialize LED pin
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  Serial.begin(4800);
  for (int i=0;i<300;i++){       // Initialize a buffer for received data
     linea[i]=' ';
  }   
  Reset();
}

 void ler_gps() {
   digitalWrite(ledPin, HIGH);
   byteGPS=Serial.read();         // Read a byte of the serial port
   if (byteGPS == -1) {           // See if the port is empty yet
     delay(100);
   } else {
     linea[conta]=byteGPS;        // If there is serial port data, it is put in the buffer
     conta++;                     
     if (byteGPS==13){            // If the received byte is = to 13, end of transmission
       digitalWrite(ledPin, LOW);
       cont=0;
       bien=0;
       for (int i=1;i<7;i++){     // Verifies if the received command starts with $GPR
         if (linea[i]==comandoGPR[i-1]){
           bien++;
         }
       }
       if(bien==6){               // If yes, continue and process the data
         for (int i=0;i<300;i++){
           if (linea[i]==','){    // check for the position of the  "," separator
             indices[cont]=i;
             cont++;
           }
           if (linea[i]=='*'){    // ... and the "*"
             indices[12]=i;
             cont++;
           }
         }
   //    Serial.print("lat:");
       int n=0;
       for (int j=indices[2];j<(indices[2+1]-1);j++){
    //         Serial.print(linea[j+1]);
             lat[n]=linea[j+1];
             n++;
           }
           lat[n]='\0';
    //   Serial.print(" / lon:");
       n=0;
       for (int j=indices[4];j<(indices[4+1]-1);j++){
          //   Serial.print(linea[j+1]);
             lon[n]=linea[j+1];
             n++;
           }
           lon[n]='\0';
   //    Serial.println("");
       Serial.println(lat);
       Serial.println(lon);
       Serial.println("---------------");

       if(strcmp(lat,p1x)==0)
       {
         if(strcmp(lat,ult_lat)!=0)
         {
           Serial.println("checkx");
           Serial.println("---------------");
           sendData(1);
          strcpy(ult_lat,lat);
         }         
       }
       

       }
     
       conta=0;                    // Reset the buffer
       for (int i=0;i<300;i++){    // 
         linea[i]=' ';             
       }                 
     }
   }
 }


void loop()
{
 int cmd;
 ler_gps();
//  if (Serial.available()>0) {
//  cmd=Serial.read();          // Read the user command
//  sendData(Stop);
//  delay(10); 
//  sendData(1);}                   //Refresh Menu
 
}

void sendData(int ThisSong)
{
digitalWrite(pinClock,HIGH);     // Hold (idle) for 300msec to prepare data start
delay(300);
digitalWrite(pinClock,LOW);       //Hold for 2msec to signal data start
delay(2);  //2msec delay
shiftOut(pinData, pinClock, MSBFIRST, (ThisSong >> 8));  // Send High byte
shiftOut(pinData, pinClock, MSBFIRST, ThisSong );        // Send Low byte
digitalWrite(pinClock,HIGH);    // Place clock high to signal end of data
}

void Reset()
{
//Serial.println("RESET.");
digitalWrite(pinReset,LOW);
delay(50);
digitalWrite(pinReset,HIGH);
Song=0;
}

Agora pergunto: com os conhecimentos que eu já vi aqui neste fórum, será que não se conseguiria “fundir” esta minha mistura, numa placa integrada com uma ou outra alteração, mesmo que tal signifique um ligeiro acréscimo do valor total?
Não digo que isto possa vir a ser um projecto comercial, mas conheço algumas pessoas que ficaram, no mínimo, interessadas na ideia, e como já disse, as alternativas são muito caras.

Ainda vou tentar implementar mais algumas ideias sendo que uma delas era a possibilidade de enviar o áudio por FM, de forma a ser captada por simples auriculares.



Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Arduino Audio GPS
« Responder #1 em: 30 de Abril de 2010, 11:55 »
Tenta explicar melhor quais são os sistemas que dizes que custam cerca de 2500€ é que não estou a ver equipamentos equivalentes.
O modulo SOMO 4d traduz em áudio palavras?

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Arduino Audio GPS
« Responder #2 em: 30 de Abril de 2010, 12:15 »
Tenta explicar melhor quais são os sistemas que dizes que custam cerca de 2500€ é que não estou a ver equipamentos equivalentes.
O modulo SOMO 4d traduz em áudio palavras?

O valor de 2500 euros foi-me indicado informalmente, por isso pode não ser exactamente isso, mas andará nessa ordem de grandezas.

ex: http://www.toguide.pt/pt/hardware/hardware_show/scripts/core.htm?p=hardware&f=hardware_show&lang=pt&idcont=105

Também não quis comparar directamente a minha "solução" com estes produtos acabados, mas a diferença de valores levanta a questão da criação de uma solução “mais em conta” com algumas potencialidades.

O modulo SOMO 4D é um leitor digital que lê ficheiros no formato ad4 (traz um conversor wav,mp3,etc…), armazenados num cartão micro sd, sendo cada faixa chamada pelo seu numero (ex:sendData(1)); O som é mono, e de qualidade discutível (a coluna bangs&olufsen também não permite grandes análises…), mas para o efeito que se pretende, parece-me suficiente. A ideia não é traduzir palavras para áudio (vi ontem uma solução muito interessante nesse campo, mas não encontro o link), mas sim ter várias faixas pré-gravadas, que serão lançadas consoante o ponto gps associado.

Existe algo semelhante no mercado e que seja facilmente programável, a valores mais acessíveis?
« Última modificação: 17 de Maio de 2010, 12:28 por TigPT »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino Audio GPS
« Responder #3 em: 30 de Abril de 2010, 13:08 »
Isso não é um tipico gps? Ou está-me algo a escapar, podes colocar mais ou menos tudo num pcb feito por ti, mas tens de procurar um módulo de gps que dê para montar numa pcb, de resto é criar e mandar fazer o pcb para ficar tudo integrado.
Avr fanboy

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Arduino Audio GPS
« Responder #4 em: 30 de Abril de 2010, 14:45 »
Isso não é um tipico gps? Ou está-me algo a escapar, podes colocar mais ou menos tudo num pcb feito por ti, mas tens de procurar um módulo de gps que dê para montar numa pcb, de resto é criar e mandar fazer o pcb para ficar tudo integrado.

Antes de mais, aviso que a minha falta de experiência e formação nesta área pode-me levar a dizer… alguns disparates. Tenham paciência….

Também sei que não estou a tentar reinventar a roda, no máximo estava a tentar dar-lhe… umas jantes diferentes…  :P

Aquilo que quero fazer é facilmente reproduzível num computador com um gps externo, ou mesmo num destes novos pda’s (o que eu tenho já me permite fazer muita coisa com o gps integrado). Provavelmente até já existe um navegador GPS com todas estas funcionalidades. A questão é que qualquer uma destas soluções faz muito mais do que é preciso, com o inconveniente do valor das mesmas, e até da complexidade da manutenção.

Assim, a ideia era algo que fizesse única e exclusivamente aquilo a que se propõe: reproduzir uma faixa de áudio específica para uma determinada geo-referência. E para tal parece-me que os componentes que eu indiquei, são suficientes.
Mesmo alterando a componente gps para um módulo integrado ou a componente áudio para um leitor stereo, não deverá ser assim tão mais caro (alguma sugestão?). Certo?

Mas tal como eu disse, a minha falta de experiência pode-me levar a ignorar simples regras que poderão tornar o produto final mais caro e mais complexo (por exemplo: alimentação, dissipação de calor, fiabilidade dos componentes, etc…).

E acrescento que não percebo nada de fabricação de pcb’s, nem dos custos envolvidos, nem da técnica necessária para montar os componentes. Daí estas perguntas, que podem parecer… básicas.


P.S.-> Enquanto tentava acrescentar o lcd shield ao resto dos componentes descobri que este deixou de funcionar. Acende a backlight mas não mostra o texto pretendido, sendo que por vezes escreve uns caracteres aleatórios. Alguma sugestão ou devo dá-lo como perdido?

Offline Rebel

  • Mini Robot
  • *
  • Mensagens: 153
    • Raspberry Pi
Re: Arduino Audio GPS
« Responder #5 em: 30 de Abril de 2010, 15:58 »
isso parece-me que estas a usar pinos que já estão atribuídos ao LCD shield para outras funções....

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Arduino Audio GPS
« Responder #6 em: 30 de Abril de 2010, 16:12 »
O que me pareceu foi que aquela caixa que apresentas-te é algo que faz o que te prepuseste a fazer mas depois tem mais uma função que é transmitir a informação áudio para diversos dispositivos à volta. O preço de 2500€ pode também ser referente as esses módulos.

O que podes fazer é um sistema portátil que me função da posição te lança uma informação áudio, mas em vez de ser como o outro produto que tem uma solução central e depois vários módulos no teu caso seria um só modulo, por exemplo, um passeio por uma cidade. Não sei até que ponto isto tem algum futuro pois isto poderá ser facilmente implementado em telemóveis.

Disse isto mais numa perspectiva comercial, colocando agora a parte comercial de parte, o teu projecto está bastante engraçado e devias continuar a evoluir até teres algo numa PCB como disseste. Podes não vender nenhum mas vais aprender muito ;)

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re: Arduino Audio GPS
« Responder #7 em: 30 de Abril de 2010, 16:35 »
uma ideia fixe era fazer um gps+arduino mais uns leds e um buzzer, para avisar quando nos aproximamos de algum radar ou hotspot onde costuma tar policia

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Arduino Audio GPS
« Responder #8 em: 30 de Abril de 2010, 17:46 »
isso parece-me que estas a usar pinos que já estão atribuídos ao LCD shield para outras funções....

Excelente sugestão. Até porque me recordo vagamente de ter andado a modificar uma biblioteca por causa dos pinos disponiveis.
Vou confirmar isso assim que possivel.

O que podes fazer é um sistema portátil que me função da posição te lança uma informação áudio, mas em vez de ser como o outro produto que tem uma solução central e depois vários módulos no teu caso seria um só modulo, por exemplo, um passeio por uma cidade. Não sei até que ponto isto tem algum futuro pois isto poderá ser facilmente implementado em telemóveis.
 

Uma das aplicações possíveis é, por exemplo, num passeio turístico de autocarro, ou de barco, ter um aparelho destes no veículo a difundir o som pela aparelhagem. Uma vez que a informação que é dada em cada um desses passeios não se deverá alterar durante muito tempo, a re-programação das “blackbox” é um processo muito esporádico.

Disse isto mais numa perspectiva comercial, colocando agora a parte comercial de parte, o teu projecto está bastante engraçado e devias continuar a evoluir até teres algo numa PCB como disseste. Podes não vender nenhum mas vais aprender muito ;)

Antes ou depois de queimar metade da casa???  ;D

uma ideia fixe era fazer um gps+arduino mais uns leds e um buzzer, para avisar quando nos aproximamos de algum radar ou hotspot onde costuma tar policia

Hehehe. Nada como usar a tecnologia com fins mais… criativos!  ;)

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Arduino Audio GPS
« Responder #9 em: 03 de Maio de 2010, 15:35 »
Boas!

Continuando a investir algum tempo nesta ideia (e ainda antes de começar a montar pcb's...  8) ) peço-vos ajuda para as seguintes questões:

1- No esquema que desenhei, e que até ao momento tem funcionado, existe alguma consideração adicional em relação à alimentação? Digo isto porque aparentemente os 3.3v do arduino estão a ser suficientes para alimentar o GPS e o SOMO(audio). Corro algum risco de queimar alguma coisa? Deveria pensar numa fonte que distribuísse a energia pelos vários componentes?

2- Uma das ideias que surgiu entretanto é a necessidade de ter uma entrada áudio no sistema, com uma fonte de áudio externa autónoma, mas cujo sinal seria atenuado pelo arduino quando um ponto GPS fosse encontrado. É muito complicado criar uma espécie de "audio mixer" com o arduino a controlar o volume de cada canal?
 
3- Pelo ponto 2 percebe-se que ainda não estou muito preocupado com a amplificação do áudio, mas se chegar à conclusão que este é demasiado fraco como posso criar um amplificador simplificado? Vi alguns exemplos com um transístor, um condensador e uma resistência, é assim tão simples?

Obrigado!


Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino Audio GPS
« Responder #10 em: 03 de Maio de 2010, 16:00 »
Procura por um digital pot, tipo isto:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1272748703
É tal e qual um potênciometro, mas controlado por sinais digitais.
Para fazeres um mixer, procura por analog multiplexers, são usados alguns neste projecto:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1272512876

E para um amplificador simples, se for para fones ou uma coluna pequena, procura por um op-amp ou um buffer, ou uma combinação dos dois, pois é uma solução simples e integrada.
Avr fanboy

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Arduino Audio GPS
« Responder #11 em: 17 de Maio de 2010, 10:38 »
Olá a todos.

Tenho continuado a explorar a ideia do áudio gps, estando neste momento a criar um arduino personalizado com os componentes em questão.
Peguei nas palavras de encorajamento do fórum (obrigado metRo_!) e decidi aventurar-me na “fabricação” de uma protoboard (acho que é assim que se chama) onde tenho estado a desenvolver a minha apurada técnica de soldagem de componentes (aconselho vivamente a quem também se está a iniciar nesta prática a consultar todos os tutoriais que por aqui andam).

Não sendo eu o tipo de pessoa que “perca” muito tempo com a preparação teórica, tentei desenhar um circuito com os componentes dos projectos arrumados numa placa com 80x100, de forma a testar a solução inicial, mas sem o duemilanove.

Confesso que duvidei bastante do sucesso desta primeira tentativa, mas após alguns pequenos acidentes (os bombeiros continuam de prevenção aqui na minha área…), e estando ainda a meio do projecto, tenho isto:



…e a verdade é que no primeiro teste, o sketch blink funcionou!

Ok, pode não parecer um grande trabalho mas acreditem que para mim foi uma grande conquista.



A verdade é que, tal como o metRo_ disse, é assim que se vai aprendendo e entretanto surgiram-me aqui algumas dificuldades.

Nas primeiras simulações alimentava o somo-14d (3v)com a saída 3.3v do duemilanove (julgo que a tolerância deste componente é de 2.7v a 3.7v), mas com esta montagem tenho apenas os 5v regularizados. Qual é a melhor maneira para ter uma saída de cerca de 3v? Já testei com diodos e resistências, mas também sei que posso utilizar outro mosfet. O que sugerem e que envolva o mínimo de componentes possível?

Para já deixei em standby a ideia do amplificador de áudio, até porque montei a saída do leitor a um jack mono 3.5mm e liguei à aparelhagem onde obtive um nível de áudio com qualidade muito mais que razoável, mas num teste rápido com um TDA7052A fiquei com a sensação que o som piorou em vez de amplificar. Terei que colocar mais algum componente entre este e a saída áudio do somo-14d? (Assim que puder coloco aqui o esquema que tentei)

Em relação ao potenciómetro digital para atenuar o sinal áudio será que o DS1801 serve?

Quanto à técnica de soldagem, a minha maior dificuldade prende-se com as ligações (fios) entre os componentes. Algum conselho para evitar ou minimizar a quantidade de fios à volta do pcb?

Obrigado!

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino Audio GPS
« Responder #12 em: 17 de Maio de 2010, 17:42 »
Existem reguladores de tensão para 3.3v como existe o lm7805, procura na internet por um e é só comprar um e montar ai.
Avr fanboy

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Arduino Audio GPS
« Responder #13 em: 17 de Maio de 2010, 22:02 »
Existem reguladores de tensão para 3.3v como existe o lm7805, procura na internet por um e é só comprar um e montar ai.

Ok. Andei à procura de reguladores de 3v e descobri que também existe um lm7803 (pelos vistos os últimos numeros do componente é o valor da voltagem de saída). Mas não o consigo ver à venda em lado nenhum? Existirá alguma alternativa?
E caso encontre, basta o regulador ou também tenho que pensar em 2 condensadores para o acompanhar?


Obrigado!

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino Audio GPS
« Responder #14 em: 17 de Maio de 2010, 22:24 »
Sim, tens sempre de meter os condensadores, e deves sempre meter tambem em todos os ic's, pois são condensadores de decoupling que servem para reduzir o ruido nas linhas de alimentação aos ic's.
Podes sempre fazer uma string com dois diodos normais e um schotky, que te dão dar cerca de 1.8v de queda de tensão, e 5-1.8=3.2v, é mais simples e mais barato, mas pelo que dizem os diodos produzem algum ruido, mas podes tentar que não custa nada.
Avr fanboy