Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Acties:
  • +1Henk 'm!

  • Gé Brander
  • Registratie: september 2001
  • Laatst online: 14:04
Mede-auteurs:
  • klump4u
  • Registratie: februari 2008
  • Niet online

klump4u

  • Willie Wortel
  • Registratie: maart 2012
  • Niet online

Willie Wortel

Topic wordt opgebouwd op dit moment. Als het klaar is zal deze tekst verwijderd worden.

Link naar de nieuwe website voor het downloaden van de software: http://ultimate-datalogging.nl/
Software is op dit moment alleen nog op verzoek verkrijgbaar. In dit stadium is brede verspreiding nog niet aan de orde.

In dit topic wordt de DaL software voor de Raspberry Pi besproken welke door @Willie Wortel is geschreven en geport naar de Raspberry Pi. Deze versie is gebouwd voor Windows IoT en zal andere mogelijkheden bevatten dan de vorige NetDuino versie. Zaken die over de NetDuino versie gaan graag bespreken in het betreffende topic en voor de Windows IoT op Raspberry Pi graag hier bespreken.



Een beknopte handleiding:

Installeer Visual studio 2017 community op je computer
https://www.visualstudio.com/downloads/
Installeer de SDK op je computer.
https://developer.microso.../downloads/windows-10-sdk

Installeer Windows 10 IoT Core op je Raspberry Pi2 of 3, dit kan met je IoT dashboard. https://developer.microsoft.com/en-us/windows/iot/downloads
Gebruik bij voorkeur een nieuwe 8 of 16 GB SD-kaart met class10, in het Win IoT Dasboard onder "Setup a new device" staan voorbeelden van ondersteunde SD-kaarten.
De eerste keer opstarten van de Raspberry met de nieuwe software kan even duren dus heb geduld.
Inloggen op je Raspberry via het IoT-dasboard: gebruikersnaam = minwinpc\Administrator en het wachtwoord wat je zelf hebt ingevuld tijdens installatie.

Download DaL-pakketje van de website. https://ultimate-datalogging.nl/
Uitpakken in een map b.v.: Dal 1.0.1
Je hebt nu 2 mappen te weten: Dal en Raspberry_Dal_Webpages.
In Dal staat de software die je via Visual Studio 2017 naar je raspberry moet deployen.
Klik op DaL op DaL.sln, als alles goed gaat start nu Visual studio op, dit duurt even.
Als alles geladen is (2 projecten) klik je links boven aan op Project en dan op Dal properties, vul bij Debug het IP-adres van je Raspberry in.
Zet je deploy op remote machine en ARM processor
Deploy de kale DaLsoftware d.m.v het groene driehoekje (midden bovenaan) naar je Raspberry, dit duurt even (in je immediate window zie je of het gelukt is)
Stop VS en start DaL op in je IoT dashboard in het tabblad Apps-Appsmanager.
Als alles goed is gegaan heb je nu een draaiende kale Dal.
Stop eventueel een USB-Stick geformateerd fat32 en naam DAL in je Raspberry Pi, dit voorkomt het vele schrijven naar je SD-kaart.
Verander nu in de map Raspberry_Dal_Webpages de RaspberryConfig (rechtermuisknop, openen met kladblok) je IP van de Raspberry en laat het poortnummer staan op 65444
code:
1
2
3
4
//Raspberry1
    RaspberryOnline[0] = "http://192.168.0.22";
    //Raspberry1 port
    RaspberryOnline[1] = 65444;

Even het bestand saven en sluiten.
Start de OPTIONS pagina in Dal 1.0.1/webpages/pages/OPTIONS.HTML
Stel de opties in via deze pagina(bovenaan staat een wikihelp) en save dit naar DaL op je Raspberry(wachtwoord is standaard "raspberry")
Start je Raspberry of Dal-software opnieuw op via de Windows Device portal.

Denk eraan dat je de Raspberry altijd uitzet in de Device Portal en nooit zo de spanning eraf halen, aanzetten is gewoon de spanning erop zetten.
Vragen kun je op dit forum :)





De topic start zal nog verder worden bijgewerkt gedurende de komende tijd. Hieronder staan vrijwel alle belangrijke posts uit het oude topic met betrekking tot de Raspberry Pi versie.

Bedankt voor jullie support zover!
quote:
klump4u schreef op vrijdag 12 mei 2017 @ 19:56:
[...]

Je bent dus met windows 10 bezig op de raspberry?
Ja DaL voor de Raspberry .... onder Windows 10 IOT...... (je maakt wat mee) ben ik mee bezig en al best ver mee. Er moet een nieuw draadje geopend worden zodat alle schema's, uitleg etc voorhanden zijn. De eerste versie, ....... ik moet eerst wachten tot ik de bestelde artikelen binnen heb zodat ik kan testen.

Laden van en wegschijven direct op een USB geheugen, extern device.
quote:
junr schreef op woensdag 17 mei 2017 @ 13:38:

Maar geef de moed niet op Willie😉
[raspberry3]

Ik geef de moed niet op hoor.

Hier de programma code overgezet van Netduino naar Raspberry voor de sainsmart display. Rechts zie je de aangesloten raspberry 3 met een groot display op zijn kop liggen.
We proberen alles zo eenvoudig mogelijk te maken.



Alle timings zijn opnieuw uitgerekend, de Netduino heeft een andere verwerking snelheid.

[raspberry 3]

De Bosch BME280 temperatuur, luchtdruk en luchtvochtigheid sensor wordt in de Raspberry geprogrammeerd, in plaats van de DHT22. De Bosch is super accuraat moet ik zeggen. Zo heb je met 1 sensor een compleet setje.

Ik zal deze sensor (als ik tijd heb) in de Neduino programma code ook nog meenemen.

https://www.bosch-sensort...ducts/all_products/bme280


InDepth waarom?

De raspberry 3 Windows 10 IoT kent geen gebufferde interrups (Queue) met de GPIO pins methode "ValueChanged" en geeft ook geen time argument mee waardoor je niet weet wanneer de "ValueChanged" is getriggerd. Hierdoor wordt het programmeren in C# of VB van sensoren als de DHT22 onmogelijk. De Netduino met netMF heeft dit alles wel aan boord.

[raspberry 3]

De oneWire DS18B20 temperatuur sensor in combinatie met een DS2482-100 I2C zit in de DaL Raspberry software geprogrammeerd.

software aanroep:
Visual Basic:
1
2
3
4
5
6
7
8
Dim devices = oneWireDeviceHandler.OneWireDevices.GetDevices(Of Temperature.DS18B20.DS2482_100.IoT.OneWire.DS18B20)()

For Each oneWireItem In devices

      Debug.WriteLine(oneWireItem.GetTemperature())
      Debug.WriteLine(oneWireItem.OneWireAddressString)

Next

De software wordt uiteraard bestuurd met de opstartstring uit de OPTIONS pagina en werkt identiek als de Netduino.

De library van de arduino is overgezet en ook delen van Rinsen (die ook de arduino lib heeft overgezet)
https://github.com/cyberg...e/blob/master/OneWire.cpp
https://github.com/Rinsen/OneWire

quote:
klump4u schreef op dinsdag 30 mei 2017 @ 14:06:
Je maakt het wel spannend Willie.
Ik ga maar eens sparen voor een pi3
[Raspberry 3]

Duurt nog wel zo een 2 maanden voordat de eerste versie voor de Raspberry 3 klaar is.
Kan wel tussentijds, indien gewenst, en testversie online zetten.

De windows 10 IoT is een jong besturingssysteem waardoor nog niet alle drivers voor sensors etc beschikbaar zijn zoals PWM voor de servo en OneWire voor de GPIO pins. Er moesten dus workarounds gehatseflatst worden.

Ik heb van de week de 2482-100 bridge voor de ds18b20 over I2C op een SO8 micro breakout boardje gesoldeerd, ondanks dat het miniatuur is en ik 3 brillen tegelijk moest gebruiken ging dat voorspoedig.

Volgende week eens testen hoe al dat I2C geweld met elkaar werkt, zoals de ds18b20 x5 + sainsmart display + luchtdruk sensor. Blijft het soepel lopen?, zit een en ander met elkaar in de weg? etc?

De slimme meter uitlezen icm de UART RX op de Raspberry werkt overigens uitstekend.

Voor DaL voor de Raspberry heb je Visual Studio (Community) 2017 nodig op je computer.
https://www.visualstudio.com/downloads/

DaL voor de Raspberry is trouwens een idee van Gé Brander en de hardware is ook door hem beschikbaar gesteld.

[raspberry 3]

@Cranberry ik vermoed dat de Windows 10 IoT ook op een Raspberry 2. draait, de DaL software is op win 10 iot gebaseerd. Als het er niet op werkt weet ik het ook niet, ik heb geen Raspberry 2.

@junr De P1 loggen kan, de display werkt ook, voor de ds18b20 heb je de eerder beschreven hardware nodig maar dat is maar een paar euro. ADD: de pulsemeter werkt ook, sterker nog, haast alle oude sensoren werken.

Wat je verder nodig hebt is een extern USB stick geheugen (hoe noem je zo een ding), daar gaat de opstart string op en wordt de data naar toe gelogd. In welk slot de USB zit maakt niet uit.

De software zal kijken of er een USB aanwezig is met het volume naam "DAL" of "DaL_startupString.txt"
Visual Basic:
1
2
3
4
5
6
7
Public Const DEFAULT_USB_VOLUME_NAME As String = "DaL"

Public Const CONFIGURATION_FILE As String = "DaL_startupString.txt"
    

Public Const MEMORY_FILE As String = "DaL_Memoryfile.txt"
Public Const DEFINITIONS_HISTORY As String = "DaL_Definitions.txt"

Is er geen USB of geen DAL volumenaam of geen opstart string aanwezig dan wordt de USB lezen schrijven uitgezet.

waarom extentie .txt ? omdat alle extenties in het pakket manifest moet worden aangemeld en de txt bestandjes kunnen met 1 klik worden geopend met wordpad.


[raspberry 3]
Voor het deployen van DaL moeten een paar instellingen worden veranderd aan het programma.


Selecteer TAB Project/DaL properties:
Tab DEBUG.


Als de instellingen niet zo staan selecteer dan target: REMOTE MACHINE en vul het IP adres in van je Raspberry.

Het IP adres haal je uit het IoT dashboard.


Het IP adres kan je veranderen door rechtermuis en optie OPen in Device Portal.


Je kan ook in je router een static adres aanmaken icm het MAC adres van je raspberry. (dit heb ik gedaan)

Het invoeren van de IP adres etc invoer in de Dal Options.html pagina is komen te vervallen. Hiervoor is het Windows 10 IoT dashboard in de plaats gekomen.




reset van de raspberry is ook ondersteund, dit was wel even uitvogelen how to.
Visual Basic:
1
Windows.System.ShutdownManager.BeginShutdown(Windows.System.ShutdownKind.Restart, TimeSpan.FromSeconds(10))

EN NU HET BELANGRIJKSTE:

Ga in het begin niet alles tegelijk aanzetten in de Options pagina. Begin sensor voor sensor. Zo kan je heel snel zien of er wat fout gaat en waar het fout gaat. Als alles tegelijk is gekozen dan is het zoeken naar een naald in een hooiberg.

Dus eerst de P1, testen. Dan x erbij, testen. etc....

Het overzenden van de opstart String naar de Raspberry werkt goed maar mijn voorkeur in het begin is hardcoded.

[raspbery 3]

De raspberry kent maar 1 UART, deze staat dus ook gelinkt met de P1

Later kunnen er externe UARTS toegevoegd worden.

De GPIO (General Purpose Input Output) die geselecteerd kunnen worden in de PulseMeters:


zijn gelijk aan deze:



Dus GPIO 25 = dPin 25 De UART0 = is de UART RX pin op de Raspberry

de P1 routine is totaal nieuw, hier een stukje:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 Private Async Sub readOutP1port()

        Dim aqs = SerialDevice.GetDeviceSelector(DaL.P1config.commPort)
        Dim allCOMMDevices As DeviceInformationCollection = Await DeviceInformation.FindAllAsync(aqs)

        _serialDevice = Await SerialDevice.FromIdAsync(allCOMMDevices(0).Id)

        _serialDevice.ReadTimeout = TimeSpan.FromMilliseconds(1000)
        _serialDevice.BaudRate = DaL.P1config.Baudrate
        _serialDevice.Parity = DirectCast(DaL.P1config.parity, SerialParity)
        _serialDevice.StopBits = DirectCast(DaL.P1config.stopBits, SerialStopBitCount)
        _serialDevice.DataBits = CUShort(DaL.P1config.dataBits)
        _serialDevice.Handshake = SerialHandshake.None


        Dim dataReaderObject = New DataReader(_serialDevice.InputStream) With {
            .InputStreamOptions = InputStreamOptions.None
        }

        Do While True

Het loggen naar de data providers UbiDots, PVOutput, ThingSpeak, GroveStreams, MinderGas en naar de sd kaart is vernieuwd en output is gelijk gebleven. De sdCard is uiteraard de USB stick geheugen uit mijn vorige uitleg.


En last but not least, er is een nieuw module GlobalFeatures:
quote:
klump4u schreef op maandag 5 juni 2017 @ 20:51:
De aansluitschema's van de P1 en S0 zijn hetzelfde gebleven met de weerstanden e.d.?
Er mag op de Raspberry alleen maar 3,3v worden gebruikt volgens mij.
[raspberry]
Ja, de aansluitschema's zijn dezelfde. Het verschil zit in het lezen bijvoorbeeld dPIN 3 = GPIO 3, dus lees voor dPIN GPIO. In de selectie dropdown is alles aangepast, je kan dus niet selecteren wat er niet is.

zoek maar pin 14, 15 .... :)


Nu kan ik dat wel in de options pagina veranderen maar dan moeten alle schema's aangepast worden, dat is een karwei.

------
De 5v,..... ik weet dat niet, ik zit hier alles aan te sluiten op de 5v uitgangen. De Sainsmart display werkt niet op 3.3v

https://www.sainsmart.com...-arduino-uno-mega-r3.html


------
Het beste is een nieuw draadje te openen voor dit projectje, een draadje wat de lading dekt, zoiets als " Log It Easy met DaL op de Raspberry. " :) ...... verzin maar.
quote:
klump4u schreef op dinsdag 6 juni 2017 @ 08:16:
Ik zeg het verkeerd, volgens mij mag er niet meer dan 3,3v op de gpio ingangen komen.
Goed dat je het opmerkt Klump.

Zou zomaar kunnen dat de GPIO input niet 5 volt tolerant zijn. Tot nu toe werkt alle geteste sensoren en de raspberry zoals het hoort. Geen vreemde dingen ontdekt.

Van de week sluit ik alle sensoren tegelijk aan tot een orkest zeg maar.

Zolang Microsoft geen native code voor de ds18b20 levert, zijn we tot de ds2482 veroordeeld:



Nu moeten er nog 2 zaken aangepakt worden en dan is alles overgezet.

1- de LDR resistor, omdat de raspberry geen ADC analog naar digitaal converter heeft moet dit gedaan worden door de ads1115, ik moet deze code nog overzetten.

2.- de sevensegments moet nog aangepakt worden.


------------------

aan het begin van de DAL programma code staat een klein hulp programmatje die kan helpen om je ds18b20 temperatuur sensoren te tunen.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'here your I2C_address 0x18 or 0x19 or 0x1A or 0x1B      replace 0x for &H 
Dim I2C_address As Byte = &H18

Dim oneWireDeviceHandler As OneWireDeviceHandler = New OneWireDeviceHandler(I2C_address)

Dim _collection = oneWireDeviceHandler.GetDevices(Of DS18B20)()

Do While True

   For Each oneWireSensor In _collection

      oneWireSensor.ReadTemperatureFromScratchpad()
      Debug.WriteLine(oneWireSensor.Celcius)
      Debug.WriteLine(oneWireSensor.OneWireAddressString)
      Debug.WriteLine(oneWireSensor.ID)
   Next

   Task.Delay(3000).Wait()
Loop

Ik krijg de seven segments display zo 123 niet aan de praat op de Raspberry. Er licht zelfs niet eens een pixel op.


heb de code onder handen genomen, nu werkt ook de seven segments met een Raspberry.

Hier het testlab in beeld:


Hier als voorbeeld met 2x ds18b20 temperatuur sensoren.

aansluitschema:


Het 7 segment kan door gelust (cascade) worden tot 8 modules.

te koop op ebay.:
http://www.ebay.com/sch/i...+display+arduino&_sacat=0

In de Options pagina aangepast, er zijn 2 SPI bussen aanwezig op de Raspberry, dus je kan maximaal 16 modules van de 7 segments in cascade door lussen:



Kijk, ook de clock frequenties zijn op een Raspberry anders, heel wat uitzoekwerk:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Async Function setDevice() As Task

        Try

            '// Set clock to 10MHz 
            Dim settings = New SpiConnectionSettings(0) With {
                .ClockFrequency = 164000, ' 10000000 '164000 '  300000 '  1000000   '164000
                .Mode = SpiMode.Mode0,
                .SharingMode = SpiSharingMode.Shared
            }

            '// Get a selector string that will return our wanted SPI controller
            Dim aqs As String = SpiDevice.GetDeviceSelector(_SPIbus)

            '// Find the SPI bus controller devices with our selector string
            Dim dis = Await DeviceInformation.FindAllAsync(aqs)

            _device = Await SpiDevice.FromIdAsync(dis(0).Id, settings)

        Catch ex As Exception
            DaL.exeptions.storeExeption("trouble with SPI device", ex)

        End Try

    End Function

Nieuw in DaL voor de Raspberry (dus niet voor de Netduino)

De Bosch BME280 Luchtdruk, Temperatuur en luchtvochtigheid sensor.



Pas Op, BME280 en BMP280.....zitten beide in DaL voor de raspberry,.... het is maar 1 lettertje maar andere sensoren. Je moet natuurlijk voor de BME280 gaan, daar zit ook een luchtvochtigheid uitlees in.

de pulldown menu's


en in livedata:


Wat niet terug komt in DaL voor Raspberry:

de display met buttons.
de display van Digole.
de grafische display van Digole.

Dus alleen de sainsmart display over I2C blijft ondersteund.
quote:
klump4u schreef op vrijdag 9 juni 2017 @ 12:29:
@Willie Wortel
Moet het een echte sainsmart display zijn of werken de 20x4 met I2C ook? (of gewoon proberen natuurlijk)
2 dagen gekloot om Windows 10 ioT op een Pi2 te krijgen, soms lukte het en vaker niet.
Er moet blijkbaar een goede SD-kaart in anders werkt het voor geen meter bij mij.
Ga maar eens kijken voor een goed kaartje.
Klump, met welk display werk je nu dan mee.?

Sainsmart heeft een bepaalt protocol wat onze software aanroept/gebruikt. Ik weet niet of een ander display daar ook mee werkt, dat is te proberen. Kijk de diepe gedachte is om de raspberry eigen pagina's te laten hosten en de data direct vanaf de usb in te lezen. Zo krijg je een mini pvoutput. :) Maar dat kost ook geheugen......dus ballast verwijderen om teleurstelling te voorkomen.

De sd kaart,... ja ik weet het niet, ik heb de IoT er opgezet niet meer aangekomen, het draait goed moet ik zeggen. Ik werk wel met een raspberry 3 wifi, werkt ook super moet ik zeggen.
quote:
klump4u schreef op vrijdag 9 juni 2017 @ 12:52:
Ik heb nu de button lcd op een Netduino en op de andere een 20x4 van Ebay.
Ik denk dat ik binnenkort een Rp3 ga bestellen dan is me misschien een hoop ellende al bespaard.
Als ik er een heb laat ik je het wel weten.
Wifi zit al op de Rp3 geloof ik.
Als ik het goed heb dan werk ik met deze:
https://www.sossolutions....OaW6q_NsNQCFcoaGwod8BgJoQ

Er is een dropdown menu in de pulsemeter menu:


Het standaard password = "raspberry"

het standaard port nummer = 65444



TESTING.......de nieuwe NOW op de raspberry:



je ziet hier 2 ds18b20 temperatuur sensoren met de BME280 over I2C

in livedata:


Nu moet (voorlopig) nog de LDR erin geprogrammeerd worden en dan kan DaL voor de Raspberry getest worden.

Je kan dus ook alle tekst aanduiding in de source code naar believen veranderen : oa in de JSON builder.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
'dit niet veranderen
Case "BME280sensor"

   For p As Integer = 0 To DaL.BME280sensors.Length - 1

      'de rode tekst mag veranderd worden.
      z &= (If(p = 0, """bme280sensor"":[", ",") & "{ ""ID"":""" & DaL.BME280sensors(p).ID & """" &
                             ",""temperature"":" & DaL.BME280sensors(p).Celcius.ToString("F1") &
                             ",""airPressure"":" & DaL.BME280sensors(p).Airpressure.ToString("F1") &
                             ",""Humidity"":" & DaL.BME280sensors(p).Humidity.ToString("F1") &
                             ",""Dewpoint"":" & DaL.BME280sensors(p).DewPoint.ToString("F1") & "}")
   Next

Het is best wel veel werk want ook alle web pagina's moesten aangepast worden, één lettertje verkeerd en de boel loopt vast.

Ik heb veel tijd verloren waarom de MAX7219 in cascade wel werkt op een Netduino en waarom niet op een Raspberry.

Maar hij werkt het nu ook in cascade op een raspberry. ppffffff

in combinatie met de ds18b20 temp sensoren en de BME280 luchtdruk.


voor geïnteresseerden:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Sub Write(register As Byte, value As Byte, Optional ByVal cascadeDevice As Integer = 0)

        Dim WriteRegister() As Byte = New Byte(1 + (cascadeDevice * 2)) {}

        WriteRegister(0) = register
        WriteRegister(1) = value

        For t As Integer = 1 To (cascadeDevice * 2) Step 1
            WriteRegister(t + 1) = &H0
        Next

        _device.Write(WriteRegister)

        Task.Delay(2).Wait()
        _device.Write(New Byte() {&H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0})

    End Sub

Om wat tijd te winnen zal ik de rest even laten voor wat het is een pakketje samenstellen voor de testers, dat drop ik in je PM postbakje.

Tweakers, even op herhaling:, hier haal je webpagina's de IP en Port nummer vandaan.
RaspberryConfig.js


Bij problemen, door in de solution explorer menu op "DAL (universal windows)" rechtermuistoets, kan je het project "clean" en "rebuild" te klikken.



misschien heb je de NUGET manager nodig want NetCore MOET geïnstalleerd zijn.


Het klinkt allemaal wat overweldigend maar is het niet.
Veel plezier ermee.

De link naar de testversie is niet openbaar omdat we het groepje testers niet te groot willen hebben. Na die test fase wordt de source code van DaL voor de raspberry gewoon op Tweakers of zo (Gé ? ) geplaatst.
quote:
klump4u schreef op zondag 11 juni 2017 @ 09:57:
@Willie Wortel
Kan ik de visual 2017 ook nog gebruiken voor de netduino?
kan ik alle oude van de pc verwijderen en dan alleen 2017 erop zetten
Nee, voor de Netduino zit je vast aan de versie VS 2013.

Je kan de verschillende Visual Studio versies naast elkaar gebruiken op 1 pc.

klump4u wijzigde deze reactie 30-07-2017 18:17 (229%)
Reden: Handleiding toegevoegd

In Forza 6 and Forza Horizon 3: The Racer Also Known As Aad1970 - http://dalue.codeplex.com - http://www.brander.site

Pagina: 1


Apple iPhone XS Red Dead Redemption 2 LG W7 Google Pixel 3 XL OnePlus 6T (6GB ram) FIFA 19 Samsung Galaxy S10 Google Pixel 3

Tweakers vormt samen met Tweakers Elect, Hardware.Info, Autotrack, Nationale Vacaturebank, Intermediair en Independer de Persgroep Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True