Kæmpe projekt, Raspberry PI, Arduino MEGA 2560-R3 og en masse andet. (Læst 13753x)

Offline Danni-Hansen

  • µProcessoren
  • *
  • Indlæg: 544
  • Antal brugbare Indlæg: 17
    • Vis profil
Hej Elektronik nørder.

Jeg har lavet dette emne på et internationalt board.
http://arduino.cc/forum/index.php/topic,99197.0.html

Idé'en var at jeg vil bruge Raspberry PI boardet som main board, med trådløs USB dongle i, også koblet op til et Arduino MEGA 2560 - R3 board.
Men, så igen, det er meget elektronik der skal kobles sammen, og jeg ville vel egentligt helst gerne lave det meste selv (Får nok ikke liiiige mulighed for at lave Raspberry boardet selv)

Spørgsmålet er nok mere hvordan jeg får lavet et C/C++ program til at køre på Raspberry PI boardet, som læser informationerne fra Arduino MEGA 2560 - R3 boardet, dvs:
Når Arduino boardet læser fra en sensor, regner ud hvordan Arduino skal bruge informationerne, og så smider informationerne over til Raspberry PI boardet, som logger det.

Nogen der kan sætte mig lidt igang med programmeringen bag det? Det er jo ikke fordi det er så svært at lave et program på min pc, som kan læse fra mit i forvejen existerende Arduino UNO board, så jeg kan teste det af, før jeg køber alle mulige ting osv.

Mvh. Danni.
Mvh. Danni Hansen.

 

Offline gerd

  • Administrator
  • µProcessoren
  • *****
  • Indlæg: 915
  • Antal brugbare Indlæg: 97
    • Vis profil
    • Hjemmeside med nogle af mine projekter
Hej Danni-Hansen,
Du kan også take en Bluetooth-Dongle sammen med Raspberry-PI.
http://computerusb.com/images/Mini_Square_USB_Bluetooth_Dongle.jpg

Og et Bluetooth-modul til Arduino:
For eksempel en BT-222 eller dette: http://arduino.cc/it/Main/ArduinoBoardBluetooth

Softwaren  på Arduiono:
Kode:
Serial.begin(9600);
if (Serial.available() > 0) {
    // get incoming byte:
    inByte = Serial.read();
...
}

Softwaren  på Raspberry-Pi (eller en andre PC med Linux):
Kode:
  Serial.Open("rfcomm0",9600,8,"N",1);
  Serial.Write("xxx");
Source code er meget forenklet !!

Så du kan også starte med en normal PC med Linux, eller med en Windows PC og VirtualBox og Linux.

gerd



 

Offline Danni-Hansen

  • µProcessoren
  • *
  • Indlæg: 544
  • Antal brugbare Indlæg: 17
    • Vis profil
Hmm, tror der er opstået en misforståelse.

Idé'en var at starte en terminal op hos mig selv i nykøbing f, den skal så connecte med raspberry boardet i stege (Møn), som står til trådløst forbundet med routeren i stege, og så forbinder jeg raspberry boardet til arduino via et usb kabel :)

Hvis jeg kan det?
Mvh. Danni Hansen.

 

Offline Danni-Hansen

  • µProcessoren
  • *
  • Indlæg: 544
  • Antal brugbare Indlæg: 17
    • Vis profil
Sådanner her.

Kode:
sudo -i
#PASSWORD#
cd /directory/
avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o led.o led.c
avr-gcc -mmcu=atmega328p led.o -o led
avr-objcopy -O ihex -R .eeprom led led.hex
avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:led.hex

Så har jeg en fil der hedder led.c
Hvor flg. Kode er i:
Kode:
#include <avr/io.h>
#include <util/delay.h>

enum {
 BLINK_DELAY_MS = 2500,
};

int main (void)
{
 /* set pin 5 of PORTB for output*/
 DDRB |= _BV(DDB5);

 while(1) {
  /* set pin 5 high to turn led on */
  PORTB |= _BV(PORTB5);
  _delay_ms(BLINK_DELAY_MS);

  /* set pin 5 low to turn led off */
  PORTB &= ~_BV(PORTB5);
  _delay_ms(BLINK_DELAY_MS);
 }

 return 0;
}

Så er spørgsmålne flg.
Kan jeg bruge det samme fremgangs måde hos Arduino Mega 2650 Rev. 3?
Hvad skal jeg ændre for at få det til at virke på samme måde med Mega 2650 rev. 3?


Mere kommer senere, efter svar. :)
Tak.
Mvh. Danni Hansen.

 

Offline gerd

  • Administrator
  • µProcessoren
  • *****
  • Indlæg: 915
  • Antal brugbare Indlæg: 97
    • Vis profil
    • Hjemmeside med nogle af mine projekter
Har du en PC med Linux ?
Jeg synes det er en god idé at starte med en PC med Linux og med din Arduino Uno -
eller med Windows og VirtualBox+Linux.
Jeg har Ubuntu.

Med din første kode du kompilere C-programmen "led.c" og med avrdude du overfører den på Arduiono.
Vil du gøre det på den måde? Vil du programme Arduino med Raspberry PI, eller vil du kun læser og skriver informationerne fra Arduino ?

Arduino kan kommunikere med en PC eller med en Raspberry:
Der er en Arduino-Library http://arduino.cc/en/Reference/Serial

For PC eller Raspberry-pi du skal have en C program det kan kommunikere med Arduino.
Her er en god start:
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/
Der er også koden: "arduino-serial.c"

Med:
Kode:
./arduino-serial -b 9600 -p /dev/cu.usbserial -s Danni
du kan sende en "Danni" til Arduino .... fra nykøbing.

Med en Apache Webserver og CGI du kan starte dette C program  fra din webbrowser.

Og derefter .. jeg kan dette også herfra ....  ;)

gerd
« Senest Redigeret: April 02, 2012, 20:35:15 af gerd »

 

Offline Danni-Hansen

  • µProcessoren
  • *
  • Indlæg: 544
  • Antal brugbare Indlæg: 17
    • Vis profil
Hej Gerd.

Jamen, jeg bruger faktisk kun Ubuntu her hjemme :) Både på bærbar og stationær.

Jeg har faktisk set den der todbot.com siden, og har prøvet at pille ved det, men, får ikke c koden til at retunere det serial svar jeg har skrevet til controlleren.

Det virker dog fint i Arduino IDE programmet, på linux, der finder Serial monitor uden problemer når jeg fx. justere på potmeteret.
Mvh. Danni Hansen.

 

Offline gerd

  • Administrator
  • µProcessoren
  • *****
  • Indlæg: 915
  • Antal brugbare Indlæg: 97
    • Vis profil
    • Hjemmeside med nogle af mine projekter
>jeg bruger faktisk kun Ubuntu her hjemme

Ah! Det er godt!
Jeg har også en Arduino UNO. Jeg prøver det på påsken.
à propos ... har Du en oscilloscope ?

gerd

 

Offline Danni-Hansen

  • µProcessoren
  • *
  • Indlæg: 544
  • Antal brugbare Indlæg: 17
    • Vis profil
Jeg ejer desværre ikke et Oscilloscope.. Og ved heller ikke lige hvordan jeg betjener et.

Ubuntu er den bedste vej til at bruge verden ordenligt ;) Hvis du spørger mig.
Mvh. Danni Hansen.

 

Offline gerd

  • Administrator
  • µProcessoren
  • *****
  • Indlæg: 915
  • Antal brugbare Indlæg: 97
    • Vis profil
    • Hjemmeside med nogle af mine projekter
Hej Danni,

Jeg har nu prøvet det med en Arduino.
Problemet er:
USB-kablet deles af begge: IDE  til programmering og seriel kommunikation.
Når du starter eller forlader programmet, Arduino vil genstarte.

Jeg har skrevet et lille program:

For Arduino:
Kode:
String command = "";
char c;
int val;
int ledPin = 13;                 // LED connected to digital pin 13

void setup() {
  pinMode(ledPin, OUTPUT);   // sets the digital pin as output
  Serial.begin(9600);        // opens serial port, sets data rate to 9600 bps
}

void loop() {

  // Check, if there is data in the receive buffer
  if (Serial.available() > 0) {
    // read the incoming character
    c = Serial.read();

    // It was a "ENTER", so decode the command   
    if ((c=='\n') || (c=='\r')) {
     
      if (command == "L0") {
        Serial.println("Ok, I will turn off the LED for you!");
        digitalWrite(ledPin, LOW);   // sets the LED off 
      }

      if (command == "L1") {
        Serial.println("Ok, I will turn on the LED for you!"); 
        digitalWrite(ledPin, HIGH);   // sets the LED on 
      }
     
      if (command == "POT") {
        val = analogRead(0);    // read the input pin A0
        Serial.print("The potentiometer value is: "); 
        Serial.println(val,DEC);
      }

      // Clear the command
      command = "";
    }
    // if it was an other character, add this to the command string
    else if (command.length() < 32) {
      command = command +c;
    }
   
  }
       
}

Og for PC (Linux):
http://www.sebulli.com/forum/danni.c

Kompiler med:
Kode:
gcc -o danni danni.c

Starter med:
./danni LEDON
./danni LEDOFF
./danni GETPOT

LED er på pin 13 og GND / Potentiometer er på pin A0 ( og GND og 5V)

Efter et sekund LED er slukket igen.
Virker det?

For at dit projekt skal du forbinde din pc til pin TX og RX.
Så du vil har ingen problemer med RESET.


« Senest Redigeret: April 05, 2012, 20:53:12 af gerd »

 

Offline Danni-Hansen

  • µProcessoren
  • *
  • Indlæg: 544
  • Antal brugbare Indlæg: 17
    • Vis profil
Hej Gerd.

Jeg kigger lige på det i morgen når jeg er lidt mere frisk :) Og vender tilbage der.
Tak for response :)

Mvh. Danni.
Mvh. Danni Hansen.

 

Offline gerd

  • Administrator
  • µProcessoren
  • *****
  • Indlæg: 915
  • Antal brugbare Indlæg: 97
    • Vis profil
    • Hjemmeside med nogle af mine projekter
Ah .. undskyld!

http://www.sebulli.com/forum/danni.c
linje 43:
skal er:
Kode:
fd = serialport_init("/dev/ttyACM0", B9600);
i stedet for ...ttyS80...

gerd

 

Offline gerd

  • Administrator
  • µProcessoren
  • *****
  • Indlæg: 915
  • Antal brugbare Indlæg: 97
    • Vis profil
    • Hjemmeside med nogle af mine projekter
Jeg tror, ..jeg har fundet løsningen:
Et Client-Server-Appication.
Så serveren kan åbne og lukke serielt interface.

Server er her: http://www.sebulli.com/forum/danni_server.c
Client er her: http://www.sebulli.com/forum/danni_client.c

Kompiler med:
Kode:
gcc -o danni_server danni_server.c
gcc -o danni_client danni_client.c

Starter Server med:
Kode:
./danni_server
Starter Client med:
Kode:
./danni_client L1
.. eller L0 eller POT

Vil du fjernstyre MIN Arduino?
Starte ikke Server, men kun Client og ændre linie 21 af danni_client.c til "91.50.201.221". Det er min IP i dag. (April 06,2012, 17:00)

Men dette virker kun i dag !!!!  ;) ;) ;)

gerd
« Senest Redigeret: April 07, 2012, 16:59:31 af gerd »

 

Offline Danni-Hansen

  • µProcessoren
  • *
  • Indlæg: 544
  • Antal brugbare Indlæg: 17
    • Vis profil
Hej Gerd.

Forsøgte med client og server koden hjemmefra, virkede umidelbart ikke på hverken UNO eller Mega board... :(
Mvh. Danni Hansen.

 

Offline gerd

  • Administrator
  • µProcessoren
  • *****
  • Indlæg: 915
  • Antal brugbare Indlæg: 97
    • Vis profil
    • Hjemmeside med nogle af mine projekter
Har du en fejlmeddelelse ?
Har du brugt IP 127.0.0.1 ?
Har du også prøvet min IP 91.50.201.221 ?

gerd

 

Offline Danni-Hansen

  • µProcessoren
  • *
  • Indlæg: 544
  • Antal brugbare Indlæg: 17
    • Vis profil
Har intet rettet, og skal lige have fundet fejlen frem igen.
Den stod på 127.0.0.1
Mvh. Danni Hansen.