[vz-dev] neue fontend hardware plattform ?!

Bart Van Der Meerssche bart.vandermeerssche at student.kuleuven.be
Thu Sep 9 10:50:23 CEST 2010


Hallo Harald,

Reading your mail, one might come to think that it's an extensive 
description of a Fluksometer. I made a post on the Jokamajo website 
listing the design trade-offs in this problem space [1]. There's a 
picture of the first prototype included. The FOSDEM '10 presentation [2] 
will give you an overview of the current hardware. The Lua daemon code 
running in an OpenWRT environment is available on github [3]. You might 
have a look at nixio as well, the Lua posix-library which has been 
developed as part of the LuCI project. Great for low-level (and 
not-so-low level, e.g. TLS) Linux basteln.

We are now in the midst of designing and building a fully custom 
open-hardware main router board, called the Dragino, based on an Atheros 
AR2317 wifi SoC with 8MB Flash/16MB RAM [4]. The router board has 2x7 
and 2x8 pin headers for connecting a sensor daughter board. The Eagle 
schematics and layout of a first example sensor board with 3 analog 
inputs, 2 pulse inputs and an RS-485 interface are on github as well 
[5]. This sensor board can connect to the outside world via the 2x7 pin 
header to the 12-position screw terminal on the main board (green 
connector on the top right).

Our aim with the modular design of the Dragino is to make it an order of 
magnitude more easy to design your own custom hardware since all it 
would require is a re-design of the sensor board.

[1]: http://jokamajo.org/content/fonduino
[2]: http://www.flukso.net/files/presentations/flukso.20100206.pdf
[3]: 
http://github.com/icarus75/flukso/tree/develop/mote/v1/openwrt/package/flukso
[4]: http://www.flukso.net/files/images/dragino_prototype.jpg
[5]: 
http://github.com/icarus75/flukso/tree/develop/mote/v2/eagle/prj/flukso.sensor.board.v2.0


Best regards,
Bart Van Der Meerssche.


On 09/09/2010 12:41 AM, Harald Koenig wrote:
> Hallo mal wieder,
>
> erstmal danke fuer den tipp zum dockstar -- wirklich ein schnaeppchen!!!
>
>
> nun zum subject: als fontend linksys wrt54gl oder nun dockstar oder oae. verwenden...
>
> dockstar o.ae. plus "usbfoo" (url s.u.) scheinen mir eine super kombination zu sein um ein frontend
> nach meinem geschmack zu bekommen.  long story:
>
> mit dem AVR NET IO als fontend werde ich einfach nicht warm, was so einige gruende hat:
> - kein wlan, da ich sowohl hauptzaehler als auch sicherungskasten weit weg vom ethernet bin
> - kein linux -- spezielle firmware
> - bastelei (spannungsregler und/oder bausatz), ... -- nicht dass ich generell was gegen basteln haette, s.u.;)
> - erstmal kein gehaeuse/netzteil/....
> - muss man extra bestellen -- liegt nicht einfach in der bastelkiste (und wie es der zufall so will:
>    dort liegt schon ein wrt54gl, der auch wlan hat und linux kann... ;-)
>
> vor allem das "kein linux" ist fuer mich einfach unbequem, fuer eigene ideen/tests/aenderungen waere mir das einfach naeher...
>
>
> 1. akt:
>
> daher hab ich mal angefangen mit einem noch herumliegenden linksys wrt54gl zu spielen:
> man kann dort einfach z.b. die linux-distro "openwrt" installieren.
> der wrt54gl hat 2 serielle schnittstellen, eine ist erstmal als serielle konsole belegt,
> die zweite noch frei -- man muss jedoch erstmal nen pfostenstecker loeten (== basteln;),
> der rest geht dann wieder bequem mit stecken -- das kabel "cd/dvd-laufwerk nach pc-mainboad
> aus der bastelkiste hat schon die richtigen 3 pins fuer die serielle schnittstelle belegt!;).
>
> und siehe da, meine "McGyver" loesung, den zaehlerpuls direkt auf die serielle schnittstelle
> zu legen klappt auch hier!  kaum ist strace/wget/awk installiert (nur strace und sty fehlen
> beim default image) klappt mein mini-skript und man kann die pulse zaehlen und uebers netz jagen,
> alles nur mit ssh-login ins linux und ein bissl scripting.
>
> mit der shell/strace/awk/wget loesung ist das aber auch nicht wirklich schoen, eher ein erster proof of concept.
> aber beim openwrt gibts ein web-interface "luci" fuers setup, welches auf lua basiert.
>
> lua? eine nette kleine skriptsprache von der ich schon viel gehoert habe: klein/schlank/schnell,
> auch gut objektorienttiert (wenn man das will), systemnah, ...
> und siehe da: in lua brauchts nur ganz wenige zeilen, alles ist viel lesbarer, keine
> haesslichen tricks mit strace fuer die timestamps etc. -- und wieder ein bequemes skript
> zum testen/aendern/erweitern -- hier mal kurz das skript:
>
> --- 8<  ------ 8<  ------ 8<  ------ 8<  ------ 8<  ------ 8<  ------ 8<  ------ 8<  ---
> #!/usr/bin/lua
>
> require "socket"
> http = require("socket.http")
>
> tty="/dev/cua/1"
>
> os.execute("rdate harald")
> os.execute("stty 50 time 1 min 1 -icanon<  " .. tty)
>
> rserial=io.open(tty,"r")
>
> t1=0
> while true do
>          chaine=rserial:read(1)
>          t=socket.gettime()
>          url="http://harald/volkszaehler.org/httplog.php?uuid=00000000-0000-0000-0000-000000000001&port=0000000&time=" .. math.floor(t + 0.5)
>          -- print (t,url,t-t1)
>          http.request(url)
>          t1=t
> end
> --- 8<  ------ 8<  ------ 8<  ------ 8<  ------ 8<  ------ 8<  ------ 8<  ------ 8<  ---
>
>
> dann kam euer tipp mit dem dockstar -- 2. akt:
>
> auch fuer den dockstar gibts openwrt, es hat eine serielle schnittstelle, wenn auch nur eine.
> aber wenns mal laeuft braucht man ja keine serielle konsole mehr, als im init login-shell
> abklemmem und schon greift die selbe loesung -- im dockstar ist sogar die steckerleiste
> schon geloetet, und der "rest" meines cdrom-kabels vom wrt54gl hat noch einen bislang
> nicht gebrauchten stecker mit 2mm rastermass -- der passt perfekt auf die 3 pins fuer die
> serielle schnittstelle, als gar kein loeten;)
>
> sowohl mein wrt54gl als auch beim dockstar kann ich den S0-ausgang eines SWISSNOX zaehler
> direkt anschliessen, jeweils als pulldown gegen masse und die pulse kommen prima als
> zeichen auf der seriellen schnittstelle rein.
>
> lua macht auf dem dockstar allerdings erstmal noch ein problem, hier muss man im lua socket bzw. posix modul
> noch ein bissl was fixen (ist eingetuetet) damit die timestamps klappen, aber dann klappts damit auch wieder recht huebsch.
>
>
> ABER beide loesungen kranken erstmal daran, dass ich nur einen eingang habe (beim wrt54gl koennte ich
> noch nen zaehler auf die zweite serielle schnittstelle legen -- 3 zaehler fuer alle 3 phasen gehen
> aber auch hier nicht, geschweige denn noch mehr eingaenge).
>
> es braucht also ein ein bissl hardware mit mehr puls-eingaengen, welches dann fuer jeden puls
> ein zeichen ueber die serielle schnittstelle oder usb fue den dockstar ausgibt,
> z.b. '0' fuer puls an pin 0, '1' fuer puls an pin 1 usw. (bzw. buchstaben o.ae. fuer mehr als 10 ports, s.u.;).
> das klingt nun nach einer aufgabe, die wirklich sehr abegrenzt ist was so ein kleiner atmel machen koennte.
>
> und eher zufaellig habe ich so ein schnuckelchen auf dem linux-tag in berlin beim merchendising-stand am eingang
> von Petra und Nils von "kernel concepts" entdeckt -- damals noch ohne ganz konkrete idee und aufgabe (aber mit so einer vorahnung;)
>
>
>
> 3. akt: auftritt "USBFOO" (links unten...)
>
> mit dem "usbfoo" (at90usb162) in kombination mit der "lufa" library und dem demo-beispiel von "kernel concepts"
> braucht es nur noch ein paar mehr zeilen C-code (und den gcc-avr) und der usbfoo  gibt fuer jeden puls ein zeichen
> ueber usb aus. mit dem CDC class usb treiber meldet sich das teil dann unter linux (z.b. auch im dockstar)
> als /dev/ttyACM0 als serielle schnittstelle - und schon kann man das strace- oder lua-skript wieder anwerfen,
> diesmal aber eben mit mehr eingaengen -- der usbfoo hat 16+ I/O pins rausgefuhert -- das reicht erstmal!
>
> mein demo-code fuer usbfoo liefert derzeit noch je ein zeichen fuer jeden *flankenwechsel*,
> uppercase fuer startflanke und lowercase fuer rueckflanke.  bislang noch nicht mit
> echter serieller schnittstelle fuer meinen wrt54gl (kann sein dass ich das gar nicht mehr brauche,
> ein usb-wlan-stick fuer den dockstar koennte der bessere wlan-router/zaehler werden;)
> und auch noch nicht im interruptbetrieb sondern plumpenn polling (soll aber gehen mit der hardware),
> scheint aber erstmal zu klappen:
>
> 	http://www.tat.physik.uni-tuebingen.de/~koenig/vz/usbfoo-vz1.tar.gz
>
> usbfoo flashen mit
>
>          dfu-rpgrammer at90usb162 erase
>          dfu-rpgrammer at90usb162 flash usbfoo-vz1.hex
>
> und fertig...
>
>
> was haltet ihr denn von einer solchen hw-loesung als fontend ?
>
> wer hat AVR erfahrung und kann mal einem blutigen laien kommentieren, ob
> - LUFA was taugt
> - polling schon reicht
> - wie man die input ports auf interrupts (data change) bekommt....
> - das alles so keinen sinn hat
>
>
> wenns den dockstar nicht mehr gaebe waere meine naechste hw-plattform zum testen der "Fonera+",
> ein recht winziger wlan-router fuer 30 EUR den ich derletzt mal gesehen habe (hab noch keinen),
> auch da soll inzwischen freewrt u.ae. laufen (hat auch 16 MB ram wie der linksys, also
> kein vergleich zum dockstar -- aber regulaer lieferbar und schon mit wlan, einer internen
> seriellen konsole und angeblich bei neueren hw-versionen auch mit usb):
>
>        https://shop.fon.com/FonShop/shop/DE/ShopController?view=product&product=PRD-018
>
>
> und hier mal noch einige links
>
> usbfoo: (auf dieser seite gibts dann auc links zur sw-library "lufa" sowie zum demo-source)
>          http://shop.kernelconcepts.de/product_info.php?cPath=1_27&products_id=102
>
> bastel-anleitung zum WRT54GL:
>
> http://www.jbprojects.net/articles/wrt54gl_mods/
> http://oldwiki.openwrt.org/OpenWrtDocs%282f%29Hardware%282f%29Linksys%282f%29WRT54GL.html#head-dd43b50d854c2f0348686e6d7d165cdfd83a7e59
>
> openwrt auf WRT54GL installieren:
>
> http://www.myslug.de/index.php?title=Openwrt_auf_wrt54GL
>
>
> openwrt auf dockstar installieren:
>
> http://ahsoftware.de/dockstar/#ubootpatches
> http://www.cs.cmu.edu/~ecc/dockstar-howto.html
>
>
> ein paar bilder der kompletten hw gibs hoffentlich morgen...
>
>
> ueber kommentare/ideen/anregungen freut sich wie immer:
>
> Harald


More information about the volkszaehler-dev mailing list