Hallo liebe Community,
Habe gerade mit einem Schulprojekt gestartet:
Lichtsteuerung über das LAN
Dazu benötigen wir einen µC oder einen µC + einen weiteren Baustein mit
dem wir folgendes realisieren können:
Ethernet Anbindung
USART / RS232 Schnittstelle
I2C Bus
25 I/O Pins
In der Schule haben wir bis jetzt nur mit dem Atmega16 gearbeitet und
für diesen auch ein eigenes Board.
Wie realisiert man dies nun am besten?
(Vor allem für Einsteiger wie uns)
Für uns ist auch wichtig, dass wir hier ein eigenes System aufbauen und
nicht ein fertiges Nutzen (Stichwort Raspberry Pi)
Bis jetzt sind wir auf Ethernet Controller wie den ENC28J60 gestoßen
Atmel µC wie den AT32UC3C164C
und die PIC18F97J60 FAMILY
Freue mich auf eure Inputs
LG flying12
Vielleicht arduino mit Ethernet Shield. Man könnte anstatt lan auch wlan
über nen esp8266 machen aber das ist evtl nicht die Aufgabe.
Wenn ihr unbedingt selbst bauen wollt, dann nimmt zumindest gängige
Ethernet Controller wie z.B. auf den Shields verwendet werden oder vom
Pollin NetIO.
Also wenn man (W)LAN machen will, dann braucht man ja auch das ganze
DHCP und Co. Gedöns. Da tut es verdammt gut wenn das jemand für einen
selber erledigt hat.
Beim ESP8266 ist das in dem SDK enthalten, beim ENC28J60 müsstet ihr
halt sehen woher ihr die Implementation nehmt (gibt sicher was für).
Alternativ seid ihr faul und nehmt nen raspi, der bringt für alles
fertige Treiber mit und hat auch gleich ein OS, das diese korrekt
verwaltet.
Auf Euer Atmega16-Board paßt ein 1284P, der zusammen mit einem ENC28J80
und µIP/lwIP Euer Schulprojekt durchaus realisierbar erscheinen läßt,
und auch der Anforderung "eigenes System" einigermaßen nahe kommt.
Das einfachste für LAN ist das hier:
http://www.lantronix.com/products/xport/
Da kommt am Ende eine serielle Schnittstelle raus, an die Ihr Euch
ranhängt. Das ganze Web/Netzwerk-Zeug wird im XPort gemacht. Ist also
was für Dumme oder Eilige, kostet aber auch einiges.
Die mit Abstand billigste Lösung ist der PIC18F67J60. Schaltung gibts
hier
https://www.olimex.com/Products/PIC/Proto/PIC-P67J60/
Software gibts von Microchip, alles da, wenn auch ein wenig
unübersichtlich.
Nachteil: Lochraster ist nicht. Das ist ein Chip mit 0.5mm Rastermaß.
Lässt sich problemlos löten, wenn man das richtige Flussmittel (Gel,
nichts flüssiges) hat, erfordert aber eine professionell gefertigte
Leiterplatte. Mit Selberätzen macht Ihr Euch nur unglücklich. Das
Ergebnis kann dann wie auf den Fotos aussehen.
ARM oder AVR32 ginge auch, hat für Euch aber keine Vorteile, sondern nur
den Nachteil, dass Ihr neben dem Prozessor mit Ethernet-Controller auch
noch einen extra PHY (den Analogteil der Ethernet-Anbindung) braucht,
und schon habt Ihr zwei Chip im 0.5mm Raster, zwei Quarze und noch
einiges mehr an Schaltungsaufwand. Im PIC ist das alles eingebaut, das
ist viel weniger Hardware-Aufwand.
Der ENC28J60, der oft mit AVRs verwendet wird, ist im Prinzip das
gleiche, was als Peripherieeinheit im PIC verbaut ist. Mit dem
Unterschied, dass der PIC direkt per Speicherzugriff auf die
Ethernet-Register und das RAM zugreifen kann und nicht durch das
SPI-Nadelöhr gehen muss, was natürlich sehr umständlich ist und bremst.
Der Schaltungsaufwand ist auch deutlich höher, vor allem, wenn der AVR
mit 5V und der ENC mit 3.3V läuft. Der einzige Vorteil liegt daran, dass
Ihr hier keine geätzte Platine braucht, sondern ein Lochrasteraufbau
möglich ist.
fchk
Solche Projekte laufen meist nicht auf Anhieb. Und dann kommt sofort die
Frage "Hardware oder Software? Wer hat gepfuscht?". Wenn dann noch
Routine fehlt, kommt schnell Frust auf.
Ich würde eine fertige Hardware nehmen und eine vorhandene Software nach
und nach ändern. So hat man schnell ein Erfolgserlebnis und wird
motiviert. Wenn es dann läuft, kann man immer noch auf die eigene
Hardware umstellen.
Den ATMega16 vergiss mal schnell wieder, nimm dir einen ATMega1284. Dann
hast du eine Engstelle weniger.
Als Hardware würde ich den AVR NETIO von Pollin nehmen. Für die Hardware
gibt es diverse Software als Vorlage (mehr oder weniger komplex). Der
Radig Webserver ist imho hinreichend fehlerarm und noch überschaubar,
also eine gute Basis für eigene Entwicklungen.
Georg G. schrieb:> Als Hardware würde ich den AVR NETIO von Pollin nehmen
Für das NETIO fällt mir so gar keine Existenzberechtigung mehr ein ...
http://www.ti.com/tool/EK-TM4C1294XL
- gleicher Preis wie NETIO
- 1M Flash, 256k RAM, Eth 10/100, viel mehr I/O als NETIO
- Programmer/Debugger on Board
- Arduino-like oder "richtige" IDE
> ein eigenes System
Das ist heutzutage nicht mehr so einfach. Es gibt ja nur mehr 3
Möglichkeiten. Ein Chip mit allem drauf. Oder 2 Chips plus eine fertige
Library. Oder eine Linux-Platine plus ein ausgereiftes Betriebssystem.
Komponenten, mit denen man so ein IO-Teil selbst entwickeln kann, werden
nicht mehr angeboten.
Auf dem Arduino Ethernet Shield werkelt ein W5100. Der lässt sich
einfach über SPI ansteuern, macht aber etwas Programmieraufwand. Für den
Fall, dass ihr den ATmega16 weiterhin nutzen wollt.
Von diesem Hersteller gibt es ebenfalls fertige UART to LAN Wandler, die
außerdem mal viel günstiger sind, als der XPort.
flying12 schrieb:> eigenes System
IMO kommen wir hier ohne Erläuterung des Begriffs "eigenes System" und
Darlegung der Lernziele nicht wirklich weiter :)
Vielen Dank mal für die ganzen Antworten werde sie mir jetzt mal alle
durchschauen.
Nochmal ein Paar Details zum Projekt:
Ist ein Schulprojekt mit 2 Wochenstunden zu zweit. (+Freizeit)
Haben das ganze Schuljahr zeit jedoch sollte im Halbjahr (Februar) 1.
Ergebnisse zu präsentieren sein.
Zum Thema eigenes System:
Projektanforderung ist in erster Linie eher auf Hardware bezogen.
(eigener Print usw. )
Lichtsteuerung soll an einem Modelhaus mit LEDs aufbaut werden.
Dies lässt sich über nen LED Ansteuer Chip sehr leicht realisieren. Wenn
wir nen Rasberry Pi verwenden, bleibt uns dort an eigener Hardware nur 2
dieser Chips mit I2C Anbindung und eventuell wenn wir nicht die I/O Pins
des Rasperrys benutzen noch 2 I/O Chips die dann wahrscheinlich
ebenfalls am I2C Bus hängen.
An der USART hängt auch nur ein fertiges GSM Modul.
Deshalb wollten wir den µC Controller Teil + LAN Anbindung auch selbst
realisieren.
LG
flying12
flying12 schrieb:> Projektanforderung ist in erster Linie eher auf Hardware bezogen.> (eigener Print usw. )
Könnt ihr gute zweiseitige Platinen mit Durchkontaktierung machen? Die
modernen Chips haben durchweg Minigehäuse mit engen Abständen. Oder
wollt ihr nur das Layout selbst machen und dann (in China) fertigen
lassen?
Für THT oder gar Steckbrett ist das Angebot sehr begrenzt.
flying12 schrieb:> Ist ein Schulprojekt mit 2 Wochenstunden zu zweit. (+Freizeit)> Haben das ganze Schuljahr zeit jedoch sollte im Halbjahr (Februar) 1.> Ergebnisse zu präsentieren sein.> Projektanforderung ist in erster Linie eher auf Hardware bezogen.> (eigener Print usw. )
Realistisch bleibt da wohl nur ein Atmega1284P (wg. Eurer Vorkenntnisse
mit Atmega16) mit ENC28J80 (wg.
Steckbrett/Lochraster-Prototyp-Tauglichkeit) und µIP (wg. Steuerung über
http zur Vermeidung zusätzlichen Aufwandes für spezielle
Bediensoftware).
Hallo Flying12,
flying12 schrieb:> Dazu benötigen wir einen µC oder einen µC + einen weiteren Baustein mit> dem wir folgendes realisieren können:>> Ethernet Anbindung> USART / RS232 Schnittstelle> I2C Bus> 25 I/O Pins>> In der Schule haben wir bis jetzt nur mit dem Atmega16 gearbeitet und> für diesen auch ein eigenes Board.>> Wie realisiert man dies nun am besten?> (Vor allem für Einsteiger wie uns)
Ich rate euch zu einem WIZ820IO oder WIZ550IO, z.B. von TME oder
Watterott. Damit liegt ihr vom Schwierigkeitsgrad her zwischen einem
Arduino-Ethernet-Shield und einem rohen W5500 (der aber für ein
Hardware-Projekt natürlich auch interessant wäre).
In jedem Fall solltet ihr euch das Gefrickel mit ENC28J60 und AVR NETIO
und die dabei wirklich aufwendige low-level-Programmierung des
TCP/IP-Stacks ersparen, die Anwendungsprotokollebene von DHCP und DNS
ist Aufwand genug.
LG, Sebastian
PS: Vielleicht ist für euch
http://s.wangnick.de/doku.php?id=iot-basisstation interessant.
Sebastian W. schrieb:> wirklich aufwendige low-level-Programmierung
Der Unterschied zwischen einem IP-Stack in Hardware oder als lib ist
jetzt nicht sooo signifikant, die
> aufwendige low-level-Programmierung des TCP/IP-Stacks
hat sicherlich niemand ernsthaft in Erwägung gezogen.
Sebastian W. schrieb:> das Gefrickel mit ENC28J60 und AVR NETIO
hat den Vorteil, dass es hier und an vielen anderen Ecken des Netzes
etliche Leute gibt, die sich damit auskennen und helfen können. Auch das
Angebot an funktionsfähiger Software für diese Lösung ist gut.
Ethernet Anbindung bedeutet nicht TCP/Ip wenn man einfach etwas sehen
will. Wenn man sowieso bei Null anfaengt kann man nach ausgibigem
Studium des Datenblattes irgend ein Packet ausgeben und auf einem
identischen Device empfangen.
Falls irgend ein Packet dann geht, im Interrupt mode, bastelt man sich
etwas mit variablem Blocklaengen und einem Buffer fuer mehrere Packete.
Dann schaut man sich mal ein dickes Buch ueber TCP/IP an und sendet ein
IP Packet, ohne Sinn.
Wenn das dann geht wird die Zeit eh um sein, und man kann nachgaengig
noch etwas drueber nachdenken was die oberen Schichten des TCP/IP
Protokolles sollen, weshalb sie so sind usw.
Die oberen Schichten werden nicht mehr so spannend zu implementieren
sein. Auf IP Ebene kommen dann noch BOOTP, ARP & RARP.
Ohne 32bitter macht's allerdings wenig Sinn. Der 29J60 ist eher sinnlos,
die Anbindung sollte Parallel sein.
Oder D. schrieb:> Ethernet Anbindung ...> Wenn man sowieso bei Null anfaengt
Ein eigener Netzwerkstack, auf welchen Level auch immer, ist für ein
Schulprojekt im gegebenen Zeitrahmen ebenso realistisch wie eine
bemannte Marsmission in gleichen Zeitrahmen :)
> die Anbindung sollte Parallel sein.
Völlig unnötig für ein paar HTML-Seiten zum Licht Ein-/Ausschalten.
Unser Lehrer hat uns mal nen Link zum Chip KSZ8851SNL/SNLI in Bezug auf
den Atmega16 geschickt.
Noch zu den Prints:
Doppelseitig ohne Durchkontaktierung sind an der Schule fertigbar.
Ansonsten über Firmenkontakte sicher auch Prints mir Durchkontaktierung.
flying12 schrieb:> Unser Lehrer hat uns mal nen Link zum Chip KSZ8851SNL/SNLI in Bezug auf> den Atmega16 geschickt.
Dieser Chip erfordert ein SRAM-artiges Speicherinterface. Klar, man kann
das in Software auf einem Mega16 nachbilden, aber empfehlenswert ist das
nicht. Wenn Dir unbedingt bei AVR bleiben müsst, wäre ein
Mega64/128/1281/2561/640/1280/2560 das Mittel der Wahl, weil der genau
so ein External Memory Interface in Hardware eingebaut hat (Ports
A,C,G). Buszugriffe sind über das Hardwareinterface mindestens Faktor 5
schneller als per Bitfriemel-Software.
Die genannten AVRs sind aber alle im TQFP64 oder TQFP100 Gehäuse, der
Ethernet-Controller ebenso. Plus: Wenn der AVR mit voller
Geschwindigkeit laufen soll, braucht er 5V und damit am External Memory
Interface zwei Pegelwandler wie zB 74LVCC4245. Also nochmals mehr
Schaltungsaufwand. Gegenüber dem PIC18F67J60, der alles komplett in
einem einzigen Chip hat, habt Ihr nur Nachteile.
> Noch zu den Prints:> Doppelseitig ohne Durchkontaktierung sind an der Schule fertigbar.
Vergesst das. Bei TQFP-Chips wollt Ihr 0.3mm Vias haben, galvanisch
durchkontaktiert, und Ihr wollt Lötstopplack beidseitig haben.
> Ansonsten über Firmenkontakte sicher auch Prints mir Durchkontaktierung.
Genau. Gibt ja genügend Angebote im Netz.
fchk