Jump to content

ligação a uma base de dados remota através dum microcontrolador...


bubulindo
 Share

Recommended Posts

Viva,

Antes de mais, esta é uma dúvida um pouco abrangente pelo que pode estar completamente fora do assunto do sub-fórum, mas aqui vai.

Estou a fazer uma espécie de logger caseiro, tenho um microcontrolador com uma placa de interface Ethernet e já o consegui pôr a funcionar como servidor a enviar dados para o cliente. Mas agora, como sou preguiçoso demais para fazer um interface para um cartão SD e programar uma espécie de FAT (sim, eu sei que existem programas já feitos) para poder transferir facilmente os dados, lembrei-me que uma maneira mais "simples" de o fazer seria enviar os dados para uma base de dados.

Primeiro pensei em criar um script PHP que seria acedido pelo microcontrolador e o script encarregar-se-ia de passar os dados para a BD... mas porque não cortar o intermediário e ser o microcontrolador a inserir os dados na BD remota.

A minha dúvida é, será possível fazê-lo? Como? Há algum protocolo envolvido? É que estamos a falar de um microcontrolador de 8 bits... e apesar dos 30K de memória de programa seria preciso que fizesse mais alguma coisa.

Obrigado desde já por qualquer ajuda que me possam prestar. 😉

include <ai se te avio>

Mãe () {

}

Link to comment
Share on other sites

    Boa noite,

    Possível em teoria é. Dá uma olhade-la no funcionamento do mysql http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol#Organization. Provavelmente aqui encontras o que precisas de saber para fazer o microcontrolador comunicar com o Mysql.

    Agora que falas-te nisto fiquei curioso e interessado. 👍 Vai dando noticias 👍

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

Hmmm, então sempre dá. Tinham-me dito que não era possível, o que me pareceu estranho... afinal de contas são só bytes. Existe um handshake que dará mais ou menos trabalho, mas é possível.

Já andei à procura mesmo no mySQL por ligação através de IP mas nunca chegou a algo tão específico. Obrigado.

Tenho ainda de ver se o servidor aceita ligações remotas às bases de dados, senão talvez tenha de instalar um no meu computador e testar assim. 👍 Mas pronto, pelo menos sei que é possível.

Mais uma vez obrigado.

include <ai se te avio>

Mãe () {

}

Link to comment
Share on other sites

Bubulindo, antes de te atirares a isso... Se isso há-de ir parar a um servidor online, provavelmente existirá nesse mesmo servidor um webserver, certo? Porque é que não constróis apenas uma gateway na tua linguagem de eleição no servidor, com a qual o micro comunicará, e que depois se encarrega da BD?

Deverá ser bastante mais simples do que fazer um cliente MySQL em 30k...

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

    Boa noite,

    Se disponibilizares mais alguma informação posso tentar ajudar um pouco mais. Andei a pesquisar e falei com um amigo que fez algo semelhante mas com um Zilog Z80 que transmite dados para o Mysql apartir de RF.

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

Bubulindo, antes de te atirares a isso... Se isso há-de ir parar a um servidor online, provavelmente existirá nesse mesmo servidor um webserver, certo? Porque é que não constróis apenas uma gateway na tua linguagem de eleição no servidor, com a qual o micro comunicará, e que depois se encarrega da BD?

Deverá ser bastante mais simples do que fazer um cliente MySQL em 30k...

Sim... bastaria criar um .php num servidor e fazer um POST request. Eu pensei nisso e, infelizmente, está-me a parecer que vai ser essa a solucão.

Fazer o cliente mySQL em 30k serviria mais como prova de conceito do que solucão a adoptar. Pelo menos num micro de 30k... no entanto, ando a deitar o olho a um com 256k (menos o bootloader) onde uma solucão sem script php seria interessante.

No entanto, o ponto onde estou preso agora é mesmo arranjar um servidor de web hosting (à borla...) que permita acesso remoto directamente à base de dados. Depois aparece o problema da encriptacão e seguranca e nem sequer estou a pensar em problemas tipo endianness. lol

Tendo um servidor onde possa aceder remotamente, acho que vou comecar tentando comunicar através de sockets com o pc... Até porque com o meu trabalho, andar com o microcontrolador atrás é complicado e com o código que tenho já feito, creio que facilmente se passa de sockets para as "sockets" do micro.

Relativamente ao projecto, estou a usar uma placa Arduino (http://arduino.cc/en/Main/ArduinoBoardDuemilanove) (já referida no sub-fórum de electrónica), mas não utilizo a linguagem do Arduino (por incompatibilidades de feitio... o meu e de quem programou as librarias), estou a usar C com o AVR-GCC.

Para comunicar sobre IP estou a usar um Ethernet Shield (http://www.arduino.cc/en/Main/ArduinoEthernetShield) onde a stack de IP já está implementada e faz-se as comunicacões como se fosse uma porta série.

Finalmente, o objectivo...

A ideia inicial, surgiu numa brincadeira entre mim e a minha namorada em que ela disse que a nossa hamster também devia ter um computador... eu gozei, e lá fiz a analogia que para o tamanho dela tinha de ser um processador de 8 bits (nos dias de hoje, pelo menos) e que até podia fazer um para ela se ligar à net...

No dia seguinte ao olhar para a gaiola dela, pensei que até seria engracado recolher dados relacionados com a hamster, numero de voltas da roda, temperatura, luz, pressão barométrica, etc, etc... mas depois surgiu o problema de armazenar os dados. Ter um computador ligado ao micro não ia dar... e então, pensei na base de dados com o script...

Entretanto, tendo a cabeca já em overdrive pensei que poderia evitar voltar a pegar em PHP e ligar o micro à base de dados. 👍

Se existem aplicacões que possam fazer uso disto? Talvez... uma que me vem imediatamente à cabeca é construir uma espécie de tweet-a-watt usando a interface do google para monitorizacão de energia caseira. Outra algo mais ambiciosa seria, fazer o inverso e utilizar a BD como fonte de dados... controlo de acesso (isto já existe feito com script PHP)... agendamento de tarefas... Claro que existem melhores solucões para qualquer uma destas utilizacões, mas tendo em conta que não sou muito imaginativo e que estou a pensar ir dar mais algum à FEUP para me revalidarem o título que já me deram, podia usar isto como projecto/tese de mestrado e já ficava feito.

Vou ver como resolvo o problema do servidor de mySQL... já fiz um help request aos tipos do X10 hosting. Pode ser que tenha sorte...

No entanto, se realmente avancar com isto da FEUP, posso sempre utilizar um servidor local e provar a possibilidade de fazer algo assim.

include <ai se te avio>

Mãe () {

}

Link to comment
Share on other sites

Acabei por ainda não encontrar tempo para me dedicar a isto. Por um lado porque me falta a base de dados, por outro, porque estou a meio de desenvolver uma placa com os componentes de comunicacão todos lá metidos. Algo com USB, RF (Xbee) e Ethernet.

Entretanto, encontrei a pachube.com que acabou por resolver na altura o que pretendia.

Mas acho que vou aceitar a oferta. 😉

include <ai se te avio>

Mãe () {

}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.