Hola me gustaría saber si se puede implementar una Raspberry pi como servidor junto con un Arduino para que active o desactive salidas o incluso realice avisos dependiendo de las ordenes que se reciban mediate un interface (programación php, apache....etc).
La cuestión es esa, que la Rpberry sea la protagonista a la hora de hacer de servidor en vez de la ethernet shield porque está claro que permite mucha mas versatilidad a la hora de implementar seguridad,un diseño del entorno mas agradable.....en fín todo eso y el Arduino para que realice sus funciones según se trate de lo que queramos hacer.
En un principio en cuanto a la hora de la programación del entorno en la Rberry no habría problema y del Arduino( Espero porque nunca he programado ninguno, he copiado programas y eso aunque no creo sea excesivamente complicado).
La duda entre otras muchas es la forma de conectar físicamente el Arduino a la Rberry y sobre todo cómo dedirle tanto a uno como a otro que que las ordenes que se reciban via software por la Rberry pasen a ejecutarse mediante el Arduino y al contrario, que los datos obtenidos mediante sensores pasen a la Rberry.
Vamos,lo que sería un contról domótico si en su caso fuera.
Por cierto que ya he visto por ahí lo del tema de las dif
erentes tensiones y bueno mas o menos he visto como lo solucionan algunos.
Deacuerdo, es probable que ambas actuen de forma parecida o al menos así lo dices como yo me guio por lo que he leido en los foros, sólo que por lo visto una hace mejor unas cosas que otra, por ejemplo si me dices que a una ethernet shield se le puede implementar un entorno html algo complejo,con su seguridad y todo al inicio de sesión......etc sería estupendo pero me han comentado que para eso se queda algo corta,dime si me equivoco por favor y la Rpberry es algo mas compleja a la hora de configurar sus pines GPIO....no se.
Ahora bien, te adelanto que de electrónica no mucho,he visto lo que marcas de UART,SPI,I2C,
SPI, supongo que son las diferentes opciones de conectar hacia el arduino mediante el RX TX o qué?
Y de ser así qué tipo de comandos habría que meter en la Rberry y Arduino respectivamente para que actuara el uno sobre el otro?
Gracias y disculpa por mis preguntas por quizá querer avanzar demasiado rápido.......je je pero me pica la curiosidad.
En mi caso, conecto la raspberry al arduino por puerto USB, y uso un servidor web sobre la raspberry, empleando el PHP como programa. Por medio de php y el puerto serial asignado a arduino (/dev/ttyACM0 por lo general) puedo enviar instrucciones al arduino y luego capturar la respuesta que da el arduino.
En ese caso, uso un programa en arduino que interpreta lo solicitado, por ejemplo, una cadena de 20 caracteres, en los cuales le envio 1/0 para indicar si la salida debe quedar encendida o apagada, tomando cada posición de la cadena como el valor que debe tomar cada puerto.
Luego puedo usar la respuesta de arduino al comando, (serial.writeln) para devolver el estado de algun sensor.
Hla Hfabión, me preguntaba si podría comentarte en tu correo un proyecto que tengo en mente ya que por lo que veo sería algo muy parecido a lo que tu tienes,el tema de programación podría no ser un problema es mas que nada el montaje de los diferentes elementos que me gustaría o creo serían de gran utilidad hubiese en esta idea.
Más que nada antes de aventurarme a pedir algún que otro elemento.
Gracias ya de por adelantado por contestar.
Como configurar la Raspberry para interactuar con Arduino conectada por USB a la Raspberry ?
Simplemente es conectar y ya está en un dispositivo /dev ? O que hay que hacer ?
Porque me pasa lo mismo que a feperval, que yo de programación no tengo problemas, pero de electrónica ando justillo, y al poder usar la Arduino para encender y apagar cosas directamente .. solo me falta poder conectarlo a la Raspberry y programar un entorno WEB que interactue con ella.
Yo sigo pensando que es más sencillo utilizar solamente la raspberry pi. Se puede alojar el servidor y manipular el gpio.
Pero bueno, yo también le pille el gusto al arduino así que: Arduino Playground - SerialNet
Aqui tienes multiples programas que sirven para exactamente eso (pasar la comunicación serie a network).
Si tienes alguna duda pregunta o cuando tenga tiempo te paso un ejemplo
Bubuwuena por lo que he leído con Raspberry solo se puede usar 1 canal GPIO y con la Arduino 6 además de 8 entradas analógicas.
Por eso lo de usar la Arduino !
Hombre claro depende del calibre de tu proyecto, pero normalmente con el i2c i el spi vas más que listo.
Lo bueno de arduino es más sencillo y si lo tienes a mano usalo.
$fp = fsockopen ("localhost", "5331", $errno, $errstr, 10);
//Con esto te comunicas con arduino a traves de puerto serie.
fputs($fp, $mensaje); // Enviar
$rmensaje fgets($fp);// Recibir
--arduino--
void setup() {
Serial.begin(19200);
Serial.print(mensaje); //envia
while(Serial.available()){ //Mientras haya mensaje..
mensaje=Serial.read() //lee i guarda en mensaje
Suponiendo que en el archivo "serproxy.cfg" asignes tu COMX al puerto "5331" y la velocidad de transmission como "19200".
Espero que veas por donde van los tiros. No me acuerdo muy bien pero más o menos es así.
Ya he conseguid conectar. Ha sido fácil.
Simplemente conectar Arduino en el USB de abajo de la Raspberry y accesible desde /dev/ttyACM0
Para mandar un 1 ... echo -ne "1" > /dev/ttyACM0
Ahora estoy intentando desde un php mandar algo al puerto, pero de momento no me funciona.
Buenos dias, estoy intentado hacer lo mismo para realizar una comunicacion bi-direccional entre Arduino y RaspberryPi, y he conseguido hacerlo por Python y por c. Pero justamente por C++ no se hacerlo T_T... quizas intente probar por Php porque he visto que suele haber perdidas de datos en la comunicacion entre los 2 dispositivos.
Os dejo los tutos que he seguido para C y para python, si alguno lo consigue al 100% por php o por C++ porfa ponganlo por aqui.
En la raspberry puedes instalar un linux + Lazarus y programar todas tus entradas y salidas desde ese lenguaje (object-pascal), incluso con entorno grafico para usar en un tv.
Por otro lado si usas un expansor IO como PCF8575 que te dá 16 Entrada o Salidas configurables, y puede poner hasta 4. Tamien las lecturas analogicas no son problema, porque hay muchos conversores AD que funcionan por I2C o SPI.
¿Por qué usar Arduino como actuador, por ejemplo, controlar relés o otras cosas, si la propia Raspberry Pi tiene pines para hacer lo mismo directamente?
Me pregunté esta pregunta a mi mismo hace tiempo. Leyendo bien cada dispositivo vale la pena unir Raspberry Pi y Arduino, también puede ser Raspberry Pi con PIC a secas sin Arduino, sobre todo para hacer placas específicas. Ya que Rasp tiene la posibilidades de comunicación de varios protocolos y poco GPIO, es decir, pocos conecciones directas, bajo mi punto de vista es bueno añadirle otro dispositivo como un microcontrolador, en este caso una placa llamada Arduino. Para los que quieran más entradas o salidas digitales o analógicas hay circuitos integrados que puedes poner más pines como el PCF8574 bajo protocolo I2C en este caso.
Puedes utitlizar 4 IC PCF8574 y otros 4 PCF8574A, entre ellos solo cambian la dirección física, por eso se pueden poner 8 en total. Tienes de pines para artarte tanto configurable como entrada o salidas directamente al Pi, también se pueden comunicar con Pi, Arduino y los PCF. En caso de que no dispongan los PCF8574, puedes usar PIC que emule los PCF8574, solo que este hay que programarlo, también te vale programar independientemente el AVR del Arduino UNO en este caso llamado Atmega328, la ventaja que se puede extraer.
Hay gente que no tiene claro estas cosas, así para los nuevos visitantes que aún leen estas líneas y no saben lo que es lo dejo claro aquí abajo.
1.Microcontrolador es un dispositivo programable para controlar periféricos como sensores de temperatura, ondas de choque o ultrasonido, sensor de movimiento pantalla LCD 4x20 y mil cosas más. 2. PIC es un microcontrolador de la firma de Microchip. 3. AVR es un microcontrolador de la firma Atmel.
4. Arduino es una placa que integra la comodidad de ya disponer USB, resistencias, oscilador externo y demás componentes para facilitar al usuario la parte de la electrónica, programar sinsaber a ciencia cierta su hardware. Má adelante cuando aprenda, usará el microcontrolador con su propia placa fabricada por uno mismo para una tarea específica, Arduino es genérico para aprendizaje.
Hace tiempo, iba hacer un servidor Web en PC de una torre normal, primero bajo Windows ya que es más fácil para empezar, sobre personas nóveles y luego en Linux que al final aún no he hecho. Mucho más adelante sacan un Raspberry Pi, ahora quiero hacer un buen tutorial o manual en pdf sobre estos dispositivos, incluido Arduino UNO rv3 cargado de detalles.
Un ejemplo de un turorial en pdf lo puedes ver aquí.
Según voy aprendiendo se hará un buen servidor Web con Raspberry y Arduino o simplemente también con Arduino y el Web Server Shield que es su complemento. Ya se verá lo que quieren usredes.
El que tenga un servidor Web hecho de prueba, lo hace saber por aquí, para que nos invite a probarlo desde Internet, como controlar Led, WebCam, motores, etc y scar nuestras propias conclusiones. En caso de que sea yo el que lo haga cuando tenga estos dispositivos en mis manos y acabe con el proyecto, se los haré saber desde mi Blog y por estos foros creando un tema nuevo. Mi idea es, que alguien de aquí entren en una Web, tendrá acceso con password y login que se los diré, para que no entren todo el mundo, solo lo controla uno. Luego podran contralar dos servomotores con una WebCam, Led, motores, ventiladores, y sensor de temperatura sea el DS1820 digital o el LM35 analógico o cualquier sensor. Será gravado el vídeo y se publicará aquí si lo desea el manipulador de Raspberry Pi a distancia.
Me alegro mucho de que llegaran hasta aquí leyendo este pequeño testamento.
Explicacion basica de la sintaxis de consulta, para coneccion a la placa.
Basicamente, cada vez que por serial le indiquemos algo a la placa se hara por medio de estas consultas.
*****************************************************************************************************************************************************************************************/
//****************************************************************
// CONSULTA:
// ACCION PUERTO VALOR
// 10 + 3 + 4 + 5
//****************************************************************
// EJEMPLOS
//
// READ ANG 03 (leer valor pin analogico n3 )
// WRITE ANG 03 255 (escribir valor del pin analogico 3 en 255)
// READ DGT 13 (leer estado pin digital 13)
// WRITE DGT 13 000 (apagar pin digital 13)
//***************************************************************
// ACLARACION
//
// Los datos de escritura de un pin analogico van desde 0 a 255
// Los datos de lectura de un pin analogico van desde 0 a 1023
//
// Los datos de escritura de un pin digital van desde 0 a 999 ( igual hasta ahora solo tomamos 000 ( LOW ) y 1 ( HIGH )
// Los datos de lectura de un prin digital son booleanos ( true or false )