i9BOX Dev Center

Please login or register.

Login with username, password and session length
Advanced search  

News:

Bem Vindo

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - admin

Pages: [1]
1
Arduino / MikroTik + Arduino
« on: May 06, 2013, 08:32:30 PM »
Estes dias estive uns tempitos a estudar a nova RouterBoard Mikrotik RB951G 2HnD para ver o que tem de novidades em termos de Hardware, nomeadamente da porta USB. Isto porque o meu velhinho RB750 não tem USB nativa.
Já permite ligar Pens 3G e depois fazer a partilha quer pela rede cablada ou pela Wireless de uma forma muito fácil. No entanto pensei cá para mim que mais poderia ligar nesta porta USB e ver o que mais esta RouterBoard nos oferecer. Para os olhares mais atentos existe um módulo LCD adicional que não vem com a RouterBoard por defeito, existem muitos mais módulos adicionais que não fazem parte da instalação por defeito e se o utilizador os desejar testar basta ir ao site oficial e fazer o download do zip clicando em All Packages na secção de Downloads do modelo que tem.
Para a minha RouterBoard RB951G 2HnD o link é:
http://download2.mikrotik.com/routeros/5.25/all_packages-mipsbe-5.25.zip
No final do download descompacte o zip e copie os módulos que quer testar para dentro do Mikrotik, podem usar o Winbox arrastando para lá na secção Files ou então usar qualquer cliente de FTP e transferir para lá. Para esta demonstração apenas necessita de lá colocar o módulo LCD e depois reiniciar a RouterBoard para que a instalação do módulo seja feita automaticamente.
Agora vamos ao que interessa. Basicamente a minha ideia foi ligar um conversor USB-Serial (FTDI232RL) à porta USB do Mikrotik e assim poder usar o módulo LCD para passar informação para fora do Mikrotik. Ele dispõe de imensas informações que podem ser vistas no LCD. Neste tutorial apenas vou demonstrar como retirar o System Identity e mostrar no LCD que se encontra conectado no Arduíno. Visto o Mikrotik usar Linux kernel versão 2.6.35, ele automaticamente instala o conversor FTDI e após estar conectado passa a aparecer uma nova porta Serial onde antes apenas listava Paralel que é uma porta Paralela que existe na própria PCB ao lado da JTAG da RouterBoard.

A configuração que tem de ser feita no módulo LCD no Winbox será como na imagem e o type tem de ser ax89063. A minha escolha para usar este é simples, como eu não fazia a mínima ideia de como a RouterBoard envia os Bytes fiz uso de um Logic Analizer da Saleae para “escutar” a comunicação e de todos os tipos listados este é sem dúvida o mais simples de usar. Basicamente a RouterBoard envia uma string dizendo:
 System Identity:                                                          HelloWorld

Como uma imagem vale mais que mil palavras

Nesta captura podemos observar a RouterBoard a enviar a trama de dados a cada 1 segundo que é personalizável dentro do Winbox na opção LCD, alterando na mensagem que querem enviar para o LCD.
Agora vamos ao programa.

Code: [Select]
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20,20,4);  // set the LCD address to 0x20 for a 16 chars and 2 line display

SoftwareSerial mikrotik(10, 11); // RX, TX

bool validDataFound = false;
char buffer[100];

void setup() 
{
  Serial.begin(9600);
  mikrotik.begin(9600);
  lcd.init();
  lcd.backlight();
  writeLcd("Reading Mikrotik");
}

void loop()
{
  storeData();
  writeLcd(buffer);
}

void writeLcd(char * name)
{
  lcd.clear();
  lcd.setCursor(1,0);//Collum 1, Row 0
  lcd.print("Arduino + Mikrotik");
  lcd.setCursor(3,1);//Collum 3, Row 1
  lcd.print("Mikrotik name:");
  lcd.setCursor(3,2);//Collum 3, Row 2 
  lcd.print(name);
 
}

void findMarker()
{
  byte tester;
  while(1)
  {
   if(mikrotik.available()>0)
      {
        tester = mikrotik.read();
        Serial.write(tester);
      }
   if(tester == 0x3A)break; //Means de marker : has been found   
  }
}
 
void storeData()
{
 uint8_t i =0;
 byte temp;
 buffer[0] = '\0';
 findMarker(); 
 while(1)
 {
   if(mikrotik.available()>0)
   {
     temp = mikrotik.read();
     if(temp != 0x20 )
      {
       //Insert the byte on the char array
       validDataFound = true;
       buffer[i++] = temp;
       buffer[i] = '\0';
      }
     if(validDataFound == true && temp == 0x20)
      { 
       validDataFound = false;
       break;   
      }     
    }     
  }
Serial.println(buffer);
}

No meu caso fiz uso de um interface I2C para ligar o LCD de modo a simplificar o numero de fios necessários na breadboard.No entanto qualquer outro LCD pode ser usado bastando apenas remover a lib I2C e implementar no código usando o modelo que  desejar.
Esquema de ligação:




Para verem o funcionamento final podem ver aqui:
http://www.youtube.com/watch?v=OasP8sf4y6A

2
This tuturial is for thoose want to build a small box to run Mango or ScadaBr
Since I was looking for a small pc I remember to use a Alix board that is more cheap than a pc and more compact and try to build a linux debian based system and them install MANGO
In this tuturial I will try to explain the steeps I take to sucssefuly install the debian and then the Mango. My choise of using mango was because I can't get ScadaBr running because of the installer script so I turn to Mango

In my configuration I will use:

An Arduino Duemilanove
an Alix Board 2D from PC Engines GmbH, can be bought at http://pcengines.ch/alix.htm
1 CF card 4Gb (for debian instalation and MANGO)


After a seach on google I found a website with some instrutions that help me to get all up and running
You can see all the instrutions where http://www.gooze.eu/howto/debian-installation-on-alix-board-howto/setting-time but for now I will try to resume some of then.
In case you have some dificult I sugest you to read the instrutions on the above link.
You will need a pc with a CFcard reader to start the instalation on the CFcard, in my case I'm using a Linux Mint distro but any other will do
I will assume you have some linux experience and soo I will not go to deep
Soo insert the CFcard on your reader.You will need to know waht was the /dev/sdXXX your system give to the CFcard. There are diferent ways to see this, I will describe 2 ways:
before insert the card open a console and type: "tail -f /var/log/messages" then insert the CFcard, you will see the text will flick and there you can read the /dev/sdXX that was assigned to your card
after that just hit CTRL+C to exit from the tail.Now you know the id of your device
Another way is just use the gparted wich is a disk tool to manage partitions on linux with a nice GUI.there you can also see the "/dev" id of your card

we will use the "dd" command to copy an image to CFcard with a prebuild of a debian instalation
open again a console in case you close the last one and download the image
$wget http://download.gooze.eu/embedded/debian/images/debian.tar.gz
then extact the tar using:
$tar -xvf debian.tar.gz
After that we can transfer the image to the CFcard using:
$ dd if=debian.img of=/dev/sd[b,c,d]
double check the command because if you make some mistake you can delete or harddrive!!!
it will take a while so just wait until you get the prompt again with the details of the duration and speed of the copy
After that remove the card and insert the CFcard on the alix board.Before you power it you will need a Serial cable to connect the alix board to your computer
You will also need a hiperterminal client, I had used gtkterm but you can use "screen" or putty, its up to you.
The baud is 38400N,8,1
Open the port with with configuration and the power the alix board.
You should start to see some lines of a test memory which is normal on the alix board and the wait until you see the debian installation menu.This can take a while , do not remove the power, if so perhaps you will need to reinstall the image of the last step
Follow the setup as normal(if you have trouble read the instructions on the link I give above)
After the installation is complete install ssh for remote access.I will assume you already have Internet connection on the alix
$apt-get install openssh-server
If you want to install mysql to support the Mango databases you can just install it by using:
$apt-get install mysql-server

Mango needs to have JAVA installed
In my case using "apt-get install sun-java6-jdk" it give me a message no package found then I had need to add a source to a new repository
use vi or nano and add the following line to /etc/apt/sources.list "deb http://archive.canonical.com/ lucid partner" without the " of course
Save it and update all sources using "apt-get update"
after that you should be able to install java then type "apt-get install sun-java6-jdk"
Then install a ntp package to automatically update the time of your system
$apt-get install ntpdate
$ntpdate pt.pool.ntp.org

In my case I'm using a Portuguese NTP server, adapt to your needs
after that confirm the date and time using
$date
It must display the right time and date now.
Now that we have all the requirements lets move to the MANGO installation.
Visit the link http://mango.serotoninsoftware.com/download.jsp
Here we can find the parts we need
Open a console again and choose a location to store the installation.I had installed on /usr
$cd /usr/local
Lets Download the TOMCAT:
$wget http://mango.serotoninsoftware.com/downloads/apache-tomcat-6.0.20.tar.gz
Extract it:
tar -xvf apache-tomcat-6.0.20.tar.gz
Rename the folder to tomcat just to be more simple
$ mv -R apache-tomcat-6.0.20 tomcat
$ cd tomcat/bin

For test the apachTomCat lets fire-up it and see if it runs.To do this just do:
$ ./startup.sh
This will start the Service and now he would be able to open the welcome page of tomcat opening http://ip_of_box:8080
If you see the page you are ok, close it and lets stop it for now using :
$ ./shutdown.sh
Now we need to remove some folders inside the webapps/ROOT folder to store the MANGO
to do this use:
$cd /usr/local/tomcat/webapps/ROOT
Remove all folders using:
$rm -R
This will remove all folders and files on this location, we need to remove it because this is the root dir of tomcat, this are the files and folder displayed when you start Tomcat, since we want just the MANGO lets now download it for this directory and extract it here.
Assuming you still are in the same folder ("/usr/local/tomcat/webapps/ROOT") download the MANGO
$wget http://mango.serotoninsoftware.com/downloads/mango-1.13.0.tar.gz
Extract it :
$tar -xvf mango-1.13.0.tar.gz
To confirm all files and folder are now here just do an "ls -al" to list the directory:
$ls -al
you should see something like this:

root@supervisao:/usr/local/tomcat/webapps/ROOT# ls -al
total 28532
drwxr-xr-x 10 root root 4096 Jan 1 2000 .
drwxr-xr-x 7 root root 4096 May 14 2009 ..
drwxr-xr-x 12 root root 4096 Dec 19 15:52 WEB-INF
drwxr-xr-x 3 root root 4096 Dec 19 15:52 audio
drwxr-xr-x 3 root root 4096 Jan 1 2000 backup
-rw-r--r-- 1 root root 6619 Mar 6 2011 customViewExample.jsp
drwxr-xr-x 2 root root 4096 Dec 19 15:52 exception
drwxr-xr-x 18 root root 4096 Dec 18 23:34 graphics
drwxr-xr-x 3 root root 4096 Dec 19 15:52 images
-rw-r--r-- 1 root root 1712 Mar 6 2011 index.jsp
-rw-r--r-- 1 root root 29117044 Dec 19 15:52 mango-1.13.0.zip
drwxr-xr-x 3 root root 4096 Dec 19 15:52 resources
-rw-r--r-- 1 root root 2436 Mar 6 2011 soundmanager2.swf
-rw-r--r-- 1 root root 8119 Mar 6 2011 soundmanager2_flash9.swf
drwxr-xr-x 2 root root 4096 Jan 19 12:15 uploads

If this is your output to you are almost finish the installation.
In my case In using an arduino to communicate to outside world via USB port.In this case I need to include a file on java dir to be able to communicate with serial ports ("dev/ttyUSB0 in my case")
If this is also your case lets just download the librxtxSerial.so and import it:
$wget http://mango.serotoninsoftware.com/downloads/librxtxSerial.so
Now we need to save in <jdk1.6-home>/jre/lib/i386
To find this location on your installation just use:
$updatedb
$locate /jre/lib/i386
This will display the path of you java, now lets move the librxtxSerial.so to that location.In my case it was:
$mv librxtxSerial.so /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/

It's everything done
Lets start the Tomcat and test it on your alix Board
$cd /usr/local/tomcat/bin
$./startup.sh

In the first run the system will build the MANGO database so it can take a while until the page loads.
It could take about 40 seconds so be patient
When the page loads just enter the default login :admin admin and your MANGO small box is ready!!

I hope this tutorial help those you want to test it on a alix board.
I not a Linux expert then it is possible to some steps could be wrong and could be a better way to do it.
This manual can be modified to get better and suggestions are accepted

3
Projetos / Seat Ibiza CD Faker
« on: February 26, 2013, 10:35:07 PM »
A cerca de um mês atrás decidi tentar criar uma forma de poder ouvir musica MP3 no meu Ibiza sem recorrer à cassete com o famoso fio.A qualidade por este método é horrível na minha opinião e infelizmente o radio de origem como todos os colegas devem saber não tem leitor de CD's incluído, a não ser que se utilize uma caixa de CD's.
O radio de origem possui Line In's para o som mas infelizmente elas estão amarradas à dita caixa de CD's, ou seja sem caixa elas não activam!
Aqui a uns tempos vi umas box's a vender no Ebay que ainda custavam uns 55 euros que permitiam enganar o radio de forma a ele libertar as entradas para depois se poder ligar um MP3 ou outra qualquer fonte de som.
  A cerca de três semanas um colega com uma caixa destas encravou la um CD dentro da caixa dele e deu me a caixa para tentar repara-la.
A reparação foi fácil de fazer, mas quando a tinha desmontada lembrei-me de tentar desvendar como é que a caixa original troca informação com o radio para este libertar as entradas e talvez poder fazer igual.
Após uma breve pesquisa na Internet encontrei o PIN OUT do Cabo da Caixa de CD's.
Para ver o sinal que era trocado entre a caixa de CD's e o radio peguei no meu osciloscópio para observar a comunicação.
Os níveis de tensão são TTL, mas para poder saber o tempo de cada impulso enviado fiz uso de um Logic Analizer da Saleae para desvendar o resto.
Após recolher as amostras da comunicação tinha tudo o que era necessário para fazer um programa que repetisse o sinal.
Basicamente o programa tem de gerar uma trama de clock aproximadamente a cada 45ms.
Quando este tempo é atingido por cada bit recebido no Data IN tem de ser gerado um sinal PWM com um periodo de +/- 20 us.O duty cicle é de aproximadamente 56%
Após isto programei um velhinho PIC 16F84A que tinha de antigas brincadeiras para reproduzir o sinal que a caixa manda para o radio de modo a enganar o Radio.
Montei em breadboard e funcionou as mil maravilhas. Desenhei uma placa dedicada a este protejo no Eagle Cad de dupla face para dar um toque profissional ao projecto.
No final a placa montada ficou espectacular.
Agora baste me ligar esta placa no cabo que está na mala e o radio pensa ter a caixa de CD´s podendo ligar o meu iPhone carregado de MP3.Mudando no radio para CD ele aceita a funçao.
A qualidade de som agora é soberba e considero todas as horas que dediquei a isto um sucesso.

Aspecto Final


De momento tenho o cabo de audio passado desde a mala ate ao banco do passajeiro mas é possivel ligar directamente a placa ao conector Mini-Iso localizado na parte de traz do Radio.Desta forma a instalaçao fica mais limpa e nao se veem fios.
Irá ser o meu trabalho num proximo fim de semana.





Pages: [1]