Show Posts
Pages: 1 ... 15 16 [17] 18 19 ... 24
241  International / Deutsch / Re: Gelöst: Arduino per USB an OpenWRT Router - Kann man ihn dann Programmieren? on: November 19, 2012, 05:26:48 pm
Hi,

seltsam... so ein Auf und Ab wegen der paar kb für den Arduino.
Die Grafik hab ich mir lange anschauen müssen, um zu verstehen, daß hier der freie RAM angezeigt wird.

Auf deinem Blog hab ich gesehen, daß du jede Menge Zeugs an dem Router dran hast.
Das machts wohl nicht schlanker ;-)

Brauche ich nur zum Flashen eines Arduino eigentlich einen externen USB-Stick? Dann muss ja auch gleich noch ein USB-HUB mit dran.
Wobei ich irgendwo gelesen habe, daß der USB2.0-Port des Routers Probleme mit USB 1.x Teilnehmern hat, und man aus dem Grund schon einen USB-HUB dranhängen soll.

Wo muss den eigentlich das Hex-File für den Arduino zum Flashen abgelegt werden?
Nach deinem Code liegt es auf Laufwerk W: Ist das auf deinem Rechner, oder auf dem Router?
Code:
:/# avrdude -p m328p -P /dev/ttyACM0 -c arduino -b 115200 -C /etc/avrdude.conf -U flash:w:/tmp/Blink.cpp.hex

242  International / Deutsch / Re: Arduino retten on: November 19, 2012, 06:19:39 am
Vergiss es.

Die teuren Bautele (AVRs) werden wohl hinüber sein.
Und das SMD-Hühnerfutter (R,C,etc) lohnt sich nicht zum runterlöten.
243  International / Deutsch / Re: Gelöst: Arduino per USB an OpenWRT Router - Kann man ihn dann Programmieren? on: November 19, 2012, 06:17:30 am
Hi,

danke für die Antwort.
Ein paar Fragen hab ich noch. smiley-red
- EXTRAM??? Software, die Flashspeicher auf USB-Stick emuliert???
- Ich will das Teil ja nur dazu verwenden, um einen Arduino zu flashen. Reicht da der Flash nicht? Man braucht ja nicht alle Pakete installieren oder?
- Evtl. nehme ich dann einen anderen Router mit mehr Flash/RAM. Der TP-Link ist halt schön klein, und es hat ihn schon jemand zum Laufen gebracht.

Generell gefragt: Ist es schwierig OpenWRT auf einen Router zu bringen? Ich bin zwar softwaretechnisch kein Anfänger, aber wenn ich auf C mit makefile anfangen muss, dann wirds auch für mich grenzwertig.
Gibts da gute Anleitungen im Netz?

gruß/hk007
244  International / Deutsch / Re: Gelöst: Arduino per USB an OpenWRT Router - Kann man ihn dann Programmieren? on: November 18, 2012, 04:08:10 pm
Hallo,

da muss ich mich jetzt mal dranhängen.

Bin ja auch auf der Suche meinen Arduino aus der Ferne zu flashen. Hab z.Zt das Ariadne Projekt verfolgt. Ist aber noch nicht für meinen MEGA.
Das mit dem OpenWRT-Router wär mal ein ganz andere Ansatz.
Hab allerdings noch nie was damit zu tun gehabt. Werd mich mal die Woche etwas einlesen.
Welchen Router könnt ihr mir da empfehlen? Ich kenn nur die von AVM, und da ist lt. OpenWrt nur der 7170 freigegeben. Und das ist mir etwas zu teure "Hardware" für so einen Anwendungsfall.
Wenn der Router noch einen Ethernet-Hub hat, dann könnte man ja auf WiFi verzichten?. Ein Netzwerkkabel hab ich sowieso beim Arduino, da er als Webserver dient.

gruß/hk007
245  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 18, 2012, 09:27:35 am
6-stellige Temperaturen als Abschaltkriterium, da denk evtl. noch mal drüber nach smiley-wink

Ein int geht von -32768 bis 32767, das ist doch schon mal was. Selbst in 0.1 °C Schritten sollte das erstmal reichen
( zumindest im negativen Bereich )


Er wollte ja keine Abschalttemperatur, sondern einen Korrekturwert zu seinem Gaszähler.
Das mit der Temp war ja nur aus meinem Projekt, damit er was zum nachschauen hat.
Also mir reichen 2stellige Temperaturen zum Abschalten der heizung im Warmwasserboiler LOL & ROFL
246  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 02:56:28 pm
Hurra, kann den Wert nun auslesen, am Ende hat ein clear auf den String readstring gefehtl nun geht es ... Allerdings kann der Code nur 2 Stellen auslesen, mein Wert hat aber 6 Stellen, kannst du mir zeigen wie man das auf 6 Stellen erweitern kann...

Danke.

also das ist doch wohl nicht so schwer...
Einfach das erweitern:
Code:
AbschaltTemp = ((int(readString.charAt(DP+1))-48)*10) + (int(readString.charAt(DP+2))-48); // die 2 Zeichen nach dem '=' in Zahl wandeln

Happy birthday  smiley-mr-green
247  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 02:54:08 pm
Hi,

probier mal das:
Code:
/*
  Web Server
 
 A simple web server that shows the value of the analog input pins.
 using an Arduino Wiznet Ethernet shield.
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional)
 
 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe
 
 */

#include <SPI.h>
#include <Ethernet.h>


String readString = String(100);
int AbschaltTemp = 0;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
// listen for incoming clients
 EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        
        if (readString.length() < 100) {
           readString = readString + c;
           }
            
        Serial.print(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        
        
        if (c == '\n' && currentLineIsBlank) {
           Serial.println (readString);
        

   // AbschaltTemperatur
          if(readString.indexOf("AbschaltTemp") > -1){
             int DP = (readString.indexOf("="));   //Zeichen '=' suchen
             AbschaltTemp = ((int(readString.charAt(DP+1))-48)*10) + (int(readString.charAt(DP+2))-48); // die 2 Zeichen nach dem '=' in Zahl wandeln
          }

Serial.println ("----------------------------");
Serial.println (AbschaltTemp);
Serial.println ("----------------------------");
 
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    
    readString="";
  
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}
  


EDIT:
zu spät ;-)
248  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 01:02:47 pm
Hi,

readstring ist keine Funktion, sondern eine Variable.
Ich poste dir hier mal das "Lesen" vom Telegramm


Code:
String readString = String(100);


 // listen for incoming clients
 EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        
        if (readString.length() < 100) {
           readString = readString + c;
           }
            
        Serial.print(c);
        if (c == '\n' && currentLineIsBlank) {
           Serial.println (readString);


//und dann hier die Abfrage nach dem enthaltenen Text:
   // AbschaltTemperatur
          if(readString.indexOf("AbschaltTemp") > -1){
             int DP = (readString.indexOf("="));   //Zeichen '=' suchen
             AbschaltTemp = ((int(readString.charAt(DP+1))-48)*10) + (int(readString.charAt(DP+2))-48); // die 2 Zeichen nach dem '=' in Zahl wandeln
          }

wstring.h hab ich nicht eingebunden
249  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 10:27:31 am
Mach es halt so, wie es michael_x geschrieben hat.

Nimm den zweiten Code aus meinem Beitrag in den Arduino.
Dann gibst du in die Browserzeile z.B. "http://192.168.0.11/?AbschaltTemp=66" ein.
IP musst du halt anpassen.
Im Arduino wird dann mit meinem Code der Variablen Abschalttemp der Wert 66 zugewiesen. Die HTML-Ausgabe lässt du halt dann sein.

Eine Frage sei mir aber noch gestattet:
Was macht denn dein Webserver eigentlich, wenn er keine Webseite ausgibt?????
250  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 06:58:17 am
Hi,

also ich hab es mit der get-Methode auf der HTML-Seite gemacht.
Hier siehst du einen Auszug aus meiner Webseite.
Da wird in einem Tabellenfeld ein Wert (Abschalttemperatur) über den Browser eingetragen und dann wieder über HTML ausgegeben.

Code:
  // Abschalttemperatur (bei Überschreitung roter Hintergrund
          client.print("<tr><td>AbschaltTemperatur</td>");
       if (OverTemp) {
          client.print("<td><form method=get style='display:inline'><input style='background-color:#FF0000;text-align:right;font-size: 12pt;'size=1 maxlength=2 name=AbschaltTemp value='" + String(AbschaltTemp) + "'></form> &degC</td></tr>");
       }
       else if (!OverTemp) {
          client.print("<td><form method=get style='display:inline'><input style='background-color:#9EC1C4;text-align:right;font-size: 12pt;'size=1 maxlength=2 name=AbschaltTemp value='" + String(AbschaltTemp) + "'></form> &degC</td></tr>");
       }

Im Arduino frage ich das Ethernet-Telegramm nach dem Wert ab:
Code:
   // AbschaltTemperatur
          if(readString.indexOf("AbschaltTemp") > -1){
             int DP = (readString.indexOf("="));   //Zeichen '=' suchen
             AbschaltTemp = ((int(readString.charAt(DP+1))-48)*10) + (int(readString.charAt(DP+2))-48); // die 2 Zeichen nach dem '=' in Zahl wandeln
          }

Hilft dir das weiter??
251  International / Deutsch / Re: Arduino IDE für eigene Boards on: November 17, 2012, 03:15:54 am
Wenn der Chip einen Bootsektor definiert hat, wird bei einem Programm-Upload das Programm immer hinter das Bootloader-Segment geschrieben.

Bist du dir da sicher??? Ich bin der Meinung, das Programm beginnt bei 0x000h. Und ein Bootloader z.B. bei 0xE000h. Also im hinteren Bereich des Flash.
Wobei "Vorne" ist bei mir 0x0000h

Edit:
Hab dazu was gefunden:
252  International / Deutsch / Re: Arduino IDE für eigene Boards on: November 17, 2012, 01:56:39 am
Wenn du einen externen Quarz mit 8 ... 20 MHz für dein Projekt verwendest passt du die Frequenz und deinen ISP in der boards.txt an und lädst einmal den Bootloader hoch.
Wieso den ISP??
Wird das nicht vom Menüpunkt "Programmer" übersteuert?

Quote
Danach lädst du dein Programm über "Upload mit ISP" hoch, der Bootloader ist weg und die Fuses bleiben.
Hmmm.... OK, der Bootloader ist weg, aber die Fuses haben doch noch immer die Einstiegsadresse vom Bootloader. Und die liegt doch im oberen Speicherbereich.
Wie startet dann der AVR nach einem Reset wieder mit dem Anwenderprogramm??
Ob Bootloader oder Start von 0x0000h wird doch durch das BOOTRST Fusebit gesteuert. Und wenn das nicht geändert wird, dann will doch der AVR wieder an der Startadrese des Bootloaders starten und da ist dann keiner mehr.
253  International / Deutsch / Re: Arduino IDE für eigene Boards on: November 16, 2012, 05:57:41 pm
Ja, aber die Fuses die in der boards.txt stehen sind so berechnet, daß sie mit bootloader laufen.
Wenn ich jetzt bei meinem Mega keinen Bootloader will, dann muss ich doch die Fuses ändern.

Hmm.... generell stellt sich mir jetzt die Frage, wann Arduino die Fuses eigentlich schreibt. Nur beim Bootloader flashen? Oder auch jedesmal beim flashen des Anwenderprogrammes.
254  International / Deutsch / Arduino IDE für eigene Boards on: November 16, 2012, 05:30:38 pm
Hi,
brauch mal wieder eure Hilfe:
Ich hab noch ein Board mit einem ATMega8 rumliegen. Für eine kleine Anwendung würde mir der reichen.
Da ich mich mit der Arduino IDE sehr gut angefreundet habe, möchte ich diese gerne dazu benutzen um das Programm damit zu entwickeln, und den Chip über ISP zu programmieren.
Hab auch gesehen, daß man in der IDE ein Board namens "Arduino NG/ATmega8" auswählen kann.

Wenn ich das nehme, meinen Code schreibe und dann mit ISP auf den Chip brenne... passt das dann?
Ich meine wegen der Fuses und so.
Ich hab auch mal in der "boards.txt" nachgeschaut. Da stehen zwar Fuses drin, aber die sind doch nur wegen dem Bootloader oder?
In der Datei könnte man doch ein Board kopieren, und dann in der Kopie Parameter wie Taktfrequenz ändern, wenn ich jetzt nur einen 8MHz Quarz hätte. Geht das?
Und welche Fuses nimmt die IDE eigentlich her, wenn ich mein Programm ohne Bootloader auf die CPU brennen will? Den brauch ich ja nicht, wenn ich über ISP flashe.
255  International / Deutsch / Re: AD9850 Shield Frequenz Generator on: November 16, 2012, 07:08:45 am
Aha,
bei ebay werden die Dinger verkauft.

Na ja: 24,-€. Stolzer Preis. Das Modul kostet keine 5Euro. Da werd ich mir wohl selber was zusammenstricken.
Pages: 1 ... 15 16 [17] 18 19 ... 24