Jan

Jan

Marvin zonder ethernet shield? II

De tuinPosted by Jan Thu, December 20, 2012 19:51:48
Waar was ik al weer gebleven? Ach ja: “Hoe doe je dat; een Arduino op het internet aansluiten zonder ethernet shield?”
Zoals je vast wel weet spreekt je computer met de Arduino over een USB kabel. Die USB kabel moet je eigenlijk zien als een verpakking voor een seriële kabel. Mensen die al wat ouder zijn hebben wel al gehoord van een rs232 kabel. Dus ook al gebruik je een USB kabel om je Arduino met je computer te verbinden de communicatie is seriële communicatie. Dat betekend dat alles via een seriële poort gaat. In de Arduino IDE vertaalt zich dat door een seriële monitor waarmee je met je Arduino sketch kan "spreken".
Als je nu een router vindt die een seriële poort of USB poort heeft kan je die op de Arduino aansluiten net zoals op je computer. Nu zijn seriële poorten heel vaak te vinden in de router maar niet zo vaak aan de buitenkant. Modernere routers hebben al vaker een USB poort en die kan je dus ook gebruiken.
Als je dus een router hebt met een seriële poort of een USB poort en je kan op die router een programma draaien dat communiceert met de Arduino -en de resultaten op het netwerk zetten- dan heb je een arduino op het netwerk zonder ethernet shield. Dit programma luistert naar web commando’s en Arduino commando’s en informatie. Zo kan het programma de website op de Arduino vervangen.
Ook als je de voorgaande paragraaf goed begrepen hebt zal je vast en zeker een hele hoop vragen hebben. Zoal:
1) Hoe kan ik een programma installeren op een router die ik gekocht heb?
2) Hoe vind ik een router met een seriële poort of een usb poort als ik die zowiezo niet kan zien.
3) Hoe kan een programma die op de router draait mij helpen om de Arduino naar het web te ontsluiten.
Allemaal heel zinnige "hoe doe ik het nu?" vragen.
Laten we beginnen met de eerste vraag : "Hoe kan ik een programma installeren op een router die ik gekocht heb?"
Zoals je vast wel weet kan je voor een Arduino een programma schrijven en dat programma op de Arduino zetten. Dit is omdat er op je Arduino een chip zit die dat programma kan begrijpen en uitvoeren. Net hetzelfde is waar voor de (meeste?) routers. Met andere woorden je router is een grote arduino waar een programma op draait. En net zoals met je arduino heb je arduino's met weinig geheugen en veel geheugen. Dus afhankelijk van de router kan je veel extra programma's draaien of helemaal geen. Maar er is meer.
Je hebt vast al ergens gelezen dat een Arduino sketch zonder OS draait. Dit betekend dat je 1 sketch op je Arduino zet en die kan alle bronnen gebruiken omdat hij toch helemaal alleen is. Jouw computer draait een OS. Dat is bv MAC os of een linux variant (Ubuntu, Red Hat,...) of android of windows. Het OS staat tussen de bronnen en de programma's en zorgt ervoor dat conflikten tussen de programa's vermeden worden. En nu komt het. Op de (meeste) routers draait een OS.
Goed denk je dan ... Ik heb hier een computer van men ouders gekregen maar ik kan geen programma's installeren omdat ik geen rechten gekregen heb van men ouders.
Inderdaad. Sommige routers zijn meer open dan andere. En sommige routers zijn gehacked door slimmere mensen dan ons zodat je zelf je OS kan installeren. De bekendste voor routers is openwrt. Dus net zoals je een nieuw OS kan installeren op de pc die je van je ouders gekregen hebt waar je geen programma's kan op installeren kan je een OS installeren op je router. En dan kan je programma's installeren tot het geheugen/disk vol is.

En dan de tweede vraag "Hoe vind ik een router met een seriële poort of een usb poort als ik die zowiezo niet kan zien."
Laten we de vraag omkeren en aan het antwoord van vraag 1 hangen. Dan krijg je: "Ik wil openwrt op een router installeren die een seriële of een usb poort heeft met veel geheugen zodat ik extra zaken kan installeren". Wie kan die vraag beter beantwoorden dan de mensen van Openwrt zelf? Zij hebben een lijst met compatibele routers en daar staat in hoeveel geheugen die router heeft en of er seriële en of usb poorten zijn.
Ikzelf heb voor Marvin een Linksys WRT54GL router gekozen. Persoonlijk had ik liever wat meer geheugen/disk gehad. Daar kom ik later nog op terug

En dan de laatste vraag: "Hoe kan een programma die op de router draait mij helpen om de Arduino naar het web te ontsluiten."
Er zijn ontelbare mogelijkheden. Voor mensen die de "goede oude command prompt" kennen is de makkelijkst vatbare aanpak de volgende:
Gebruik een (secure)telnet om naar de router te gaan. Dat is dus een command prompt die op je computer draait maar de comando's uitvoer op de router.
In die telnet draai je minicom. minicom is een seriële monitor. Of met andere woorden een variant van de Arduino IDE serial monitor. So kan je vanop afstand je Arduino via de seriële monitor sturen.
Omdat we verwent zijn willen we natuurlijk ook een webpagina en een manier om een nieuwe sketch up te laden maar dat is voor later.



Fill in only if you are not real





The following XHTML tags are allowed: <b>, <br/>, <em>, <i>, <strong>, <u>. CSS styles and Javascript are not permitted.