INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Avr NetIO als Arduino mit Ethernet-Shield
18.08.2016, 13:47
Beitrag #1
Avr NetIO als Arduino mit Ethernet-Shield
   
   
   
Hallo,

da ich mich wegen eines Bekannten letztens mit Arduino und ENC28J60 Ethernet-Chip befassen durfte, ergab sich eine Idee.
Bei liegen noch 2 oder 3 AVR--NetIO von Pollin rum. Bestückt mit einem Mega32 und 16MHz Quarz. Ich habe die Idee heute mal in Angriff genommen.

Nötige Änderungen am NetIO: Leiterbahn zum Pin 7 der RS232-Buchse auftrennen (wird ohnehin nicht genutzt) und statt dessen mit Pin 4 der Buchse verbinden, damit steht DTR für die Arduino-IDE zu Verfügung.
Kondensator 100n zwischen Pin 9 des MAX (ist frei) mit Pin 9 des AVR (Reset) verbinden, damit kann die IDE den Bootloader starten.

Jetzt ist ein ISP-Programmer nötig (oder ein Arduino mit dem ISP-Sketch).
In der IDE muß Mighty-Core installert werden, um den Mega32 bekannt zu machen. In Datei -> Einstellungen Boardveralter -URL also hinzufügen:
https://mcudude.github.io/MightyCore/package_MCUdu...
und in der Boardverwaltung das Paket installieren. IDE jetzt besser beenden und neu starten.

Jetzt einen USB-RS232-Adapter (diesmal ein echter mit RS232-Pegeln) an
das NetIO gesteckt. Wer ein NetIO hat, hat ja eigentlich ohnehin noch
rumliegen oder eben an eine echte Serielle soweit vorhanden.
Bei den Boards sollte jetzt der Mega32 verfügbar sein.

Den ISP-Programmer auswählen und Bootloader auf den Mega32 brennen.
Klappte bei mir prompt nicht, mit meinem China-AVR-ISP kam AVRDude wohl nicht zurecht. Also Bootloader und Fuses aus AVR-Studio geflasht.

Das AVR-NetIO hat sich anschließen problemlos in der IDE gemeldet, den Test-Sketch statt für den ProMini für den Mega32 geflasht und (erstmal) fertig.

Die UIPEthernet-Lib muß man noch installiren, die enthält den TCP-Stack
und den treiber für den ENC28J60.
https://github.com/ntruchsess/arduino_uip

Die IDE meldete auf der seriellen die Debug-Ausgaben und MQTT.fx empfing
die Messages vom NetIO.

Natürlich kann man auch andere Arduino-übliche Anwendungen draufpacken,
den Mega32 durch den Mega644 oder 1284 ersetzen, dann hat man auch genug
Flash und Ram verfügbar.

Ich habe inzwischen einen Mega1284P draufgesteckt, der war noch da.
Bootloader und Fuses wieder mit AVR-Studio fertig gemacht, ich hatte keine Lust, Ursachenforschung zu betreiben, warum mein China-AVR-ISP aus der IDE nicht antwortete.

Ein "Arduino" mit Ethernet-Shield onBoard und 128k Flash/16k Ram/4k EEPOM ist das Ergebnis.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.08.2016, 15:09
Beitrag #2
RE: Avr NetIO als Arduino mit Ethernet-Shield
Hey super Idee, hab auch noch so ein Ding bei mir rumliegen. Hab momentan keine Zeit dazu, werde aber auf deine Beschreibung zurückkommen. Danke!

Hier könnte ihre Werbung stehen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.08.2016, 17:42 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2016 17:43 von amithlon.)
Beitrag #3
RE: Avr NetIO als Arduino mit Ethernet-Shield
Hallo,

(18.08.2016 15:09)Scherheinz schrieb:  Hey super Idee, hab auch noch so ein Ding bei mir rumliegen.

als kleiner Nachschlag: da die Pollin-Relaiskarte auch noch rumlag schnell mal weitergemacht:
Spannungsregler auf der Relaiskarte ein China-StepDown, der aus 12V (wegen der Relais) 5V macht. Die speisen auch gleich noch das NetIO, damit ist der dortige 7805 arbeitslos und heizt nicht mehr.

Sketch diesmal dabei, Topic usw. für MQTT bitte im Source nachschauen.
Code:
/*
                     +---\/---+
           (D 0) PB0 1|        |40 PA0 (AI 0 / D24)
           (D 1) PB1 2|        |39 PA1 (AI 1 / D25)
      INT2 (D 2) PB2 3|        |38 PA2 (AI 2 / D26)
       PWM (D 3) PB3 4|        |37 PA3 (AI 3 / D27)
    PWM/SS (D 4) PB4 5|        |36 PA4 (AI 4 / D28)
      MOSI (D 5) PB5 6|        |35 PA5 (AI 5 / D29)
  PWM/MISO (D 6) PB6 7|        |34 PA6 (AI 6 / D30)
   PWM/SCK (D 7) PB7 8|        |33 PA7 (AI 7 / D31)
                 RST 9|        |32 AREF
                VCC 10|        |31 GND
                GND 11|        |30 AVCC
              XTAL2 12|        |29 PC7 (D 23)
              XTAL1 13|        |28 PC6 (D 22)
      RX0 (D 8) PD0 14|        |27 PC5 (D 21) TDI
      TX0 (D 9) PD1 15|        |26 PC4 (D 20) TDO
RX1/INT0 (D 10) PD2 16|        |25 PC3 (D 19) TMS
TX1/INT1 (D 11) PD3 17|        |24 PC2 (D 18) TCK
     PWM (D 12) PD4 18|        |23 PC1 (D 17) SDA
     PWM (D 13) PD5 19|        |22 PC0 (D 16) SCL
     PWM (D 14) PD6 20|        |21 PD7 (D 15) PWM
*/

#include <UIPEthernet.h>
#include <PubSubClient.h>

#define DEBUG

long starttime = 0;
long waittime = 30000;

// Update these with values suitable for your network.
byte mac[]    = {  0x02, 0xED, 0xBA, 0xF2, 0xFD, 0xED };
byte server[] = { 192, 168, 0, 99 };
byte ip[]     = { 192, 168, 0, 201 };

void callback(char* topic, byte* payload, unsigned int length);

EthernetClient ethClient;
PubSubClient mqtt_client(server, 1883, callback, ethClient); //

void setup()
{

#ifdef DEBUG
  Serial.begin(115200);
  Serial.println("\r\nStart...");
#endif

  starttime = millis();
  
  Ethernet.begin(mac, ip);
  delay(100);
  if (mqtt_client.connect("NETIO1-Client"))
  {

#ifdef DEBUG
    Serial.println("MQTT online");
#endif
  
    mqtt_client.publish("NETIO-1/Status","online");
    mqtt_client.subscribe("NETIO-1/Relais/#");
  }


  for (byte i=16; i<24; i++)
  {
    digitalWrite(i,LOW);
    pinMode(i,OUTPUT);
  }
  
}

void loop()
{
if (millis() > (starttime + waittime))
{

#ifdef DEBUG
  Serial.println("Test");
#endif

   mqtt_client.publish("NETIO-1/Test", "ok");

   starttime = millis();  
}
mqtt_client.loop();
}

//-----------------------------------------------------------------------------

void callback(char* topic, byte* payload, unsigned int length)
{
  String tempstring;
  for (int i=0; i<length; i++)
  {
    tempstring += (char)payload[i];
  }
  tempstring.trim();

  String topicstring = topic;

#ifdef DEBUG
    Serial.println(topicstring + " # " + tempstring);
#endif

  String topicarray[5];
  int i = 0, start = 0, topic_index = 0;
  
  while ((topic_index = topicstring.indexOf('/',start)) != -1)            // Slash gefunden          
  {
    topicarray[i] = topicstring.substring(start,topic_index);
    start = topic_index + 1;
    i++;
  }
  topicarray[i] = topicstring.substring(start);
  topicarray[i].trim();

  if (topicarray[0] == "NETIO-1")
  {

#ifdef DEBUG
    Serial.println(topicarray[1] + " # " + topicarray[2] + " # " + tempstring);
#endif

    if (topicarray[1] == "Relais")
    {
      byte nummer = topicarray[2].toInt() + 15;    
      if ((nummer > 15) and (nummer < 24))                // gültiger Bereich der Pinnummer
      {
        if (tempstring == "ein")
        {
          digitalWrite(nummer,HIGH);
        }
        else
        {
          digitalWrite(nummer,LOW);
        }
      }  
    }  
  }
}
[/code]
Stromversorgung ist jetzt erstmal ein übliches 12V/1,5A-Steckernetzteil.

Was ich nun damit mache, weiß ich allerdings noch nicht... Wink

Gruß aus Berlin
Michael


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Schrittmotor ruckelt beim Start und im laufenden Betrieb - Arduino+Motor Shield grt35a 3 270 21.09.2016 06:56
Letzter Beitrag: Bitklopfer
  Steuerung eines Schrittmotor und eines Lüfters auf einem Shield phischmi 7 277 18.08.2016 20:58
Letzter Beitrag: phischmi
  Welches WiFi-Shield? alpenpower 1 344 14.07.2016 11:19
Letzter Beitrag: alpenpower
  Probleme mit dem Arduino Ethernet-Shild jalu4601 25 1.347 06.06.2016 16:09
Letzter Beitrag: Bitklopfer
  Motor Shield wird Heiß erwin 8 1.121 24.03.2016 11:29
Letzter Beitrag: hotsystems
  Per Keypad Shield zwischen zwei Programmen schalten Rob-LE 9 925 09.03.2016 14:27
Letzter Beitrag: iks77
  Multi functional Expansion Board Sensor Shield Astropikus 5 783 03.03.2016 22:32
Letzter Beitrag: hotsystems
  Arduino DUE mit W5100 Shield crissy-98 15 1.507 15.02.2016 15:57
Letzter Beitrag: crissy-98
  Arduino DUE und GSM Shield oniudra 1 369 08.02.2016 16:54
Letzter Beitrag: hotsystems
  Motor shield #elextro19 2 654 25.01.2016 09:24
Letzter Beitrag: #elextro19

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste