Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.

monewwq1's Content

There have been 104 items by monewwq1 (Search limited from 29-April 23)


By content type

See this member's


Sort by                Order  

#18211 High resolution light measurement

Posted by monewwq1 on 19 September 2011 - 07:11 PM in General Discussion

The c



#18207 High resolution light measurement

Posted by monewwq1 on 19 September 2011 - 06:23 PM in General Discussion

P.S. A quick way to help determine if the Netduino's memory is getting filled with events is printing out the avaiable memory using Debug.Print(Debug.GC(true)); in your loop (not the event -- Debug.Print will slow down your event).



Here's the Debug.GC(true) output, and I ran this from the main loop, not the event:

27888
27000
27912
31056
32796
32796
32796
32796
32796
32796
32796
32796
32796
32796
32796
32796
32796
32796
32532
20472

After the 20472, I lose connection with the IDE. I am using a Netduino Plus by the way. If I turn off networking, would that help? I see that with networking turned off, I should have 60k of RAM. If so, how do I turn off networking? If that won't help, what else can I do?



#18204 High resolution light measurement

Posted by monewwq1 on 19 September 2011 - 05:48 PM in General Discussion

Chris, et. al, Here is the simple version of my code: [



#18195 High resolution light measurement

Posted by monewwq1 on 19 September 2011 - 02:30 PM in General Discussion

Hi NickDuino,

I'm just picking up on this thread now, but are you using InputPort to meeasure the time in managed code instead of using InterruptPort (which passes a fairly precise timestamp of the original event)?


Hi Chris,

I am using InterruptPort:

                // the pin is expected to interrupt on rising edges
                InterruptPort _dataOutInterruptPort = 
                    new InterruptPort(Pins.GPIO_PIN_D2, false,
                                       Port.ResistorMode.Disabled,
                                       Port.InterruptMode.InterruptEdgeHigh);

                // add an interrupt handler to the pin
                _dataOutInterruptPort.OnInterrupt += 
                    new NativeEventHandler(_dataOutInterruptPort_OnInterrupt);

And in the event handler _dataOutInterruptPort_OnInterrupt, I am simply counting the pulses with a long variable:

            private void _dataOutInterruptPort_OnInterrupt(uint port, uint state, DateTime time)
            {
                _pulseCount++;
            }

I'm then using the _pulsecount to determine the frequency and then using some additional math to get the irradiance. If I cover the TSL sensor with a black cloth, I do get a few readings from the Netduino, but after that, my Interrupt stops firing. If I shine a bright light on the TSL sensor, I never get any readings and the Netduino becomes "busy" and unresponsive to the IDE.

Perhaps there is too much code in my interrupt routine. I am going to write a real simple version that does not do any irradiance calculations and only prints a very limited amount to the Debug console. I will post the code to this thread later today.



#18221 High resolution light measurement

Posted by monewwq1 on 20 September 2011 - 12:46 AM in General Discussion

I have actually tried it and it is able to measure 10 kHz - unfortunately, I don't have neither signal generator nor Netduino firmware with the newest PWM implementation, so I cannot try higher frequencies.


CW2, here are some of the numbers I am getting with your code:

F = 1802.8 Hz
F = 2467.3 Hz
F = 2930.0 Hz
F = 4076.6 Hz
F = 3125.0 Hz
F = 3232.6 Hz
F = 3125.0 Hz
F = 3348.4 Hz
F = 3349.0 Hz
F = 2467.3 Hz
F = 3347.8 Hz
F = 2930.0 Hz
F = 3125.0 Hz
F = 4688.2 Hz
F = 2467.3 Hz
F = 4075.8 Hz
F = 5208.3 Hz
F = 7401.9 Hz
F = 8635.6 Hz
F = 7812.5 Hz
F = 16581.6 Hz
F = 17081.8 Hz
F = 17347.7 Hz
F = 17987.1 Hz
F = 17790.1 Hz
F = 17701.4 Hz
F = 16971.8 Hz
F = 14610.1 Hz
F = 14322.9 Hz
F = 14802.9 Hz
F = 15828.6 Hz 

I shined a bright light near the sensor and that is how the frequency jumped over 10k. However, if I shine the light directly on the sensor, the whole thing locks up again.

I have added the Interlocked increment statement and that does not help:

// TODO: Probably needs lock here (or InterlockedIncrement)
            if (Interlocked.Increment(ref pulseCount) == 0)



#18237 High resolution light measurement

Posted by monewwq1 on 20 September 2011 - 12:14 PM in General Discussion

It should work at 1000 Hz (in all likelihood you'd need to replace '0' in the interrupt condition with a positive number, e.g. 10, and check durationSeconds to avoid division by zero), but you probably mean 1000 kHz - I am sorry, but I don't think this can be achieved in managed code.


Yes, sorry about that. I meant 1000kHz (1MHz).

Stefan W. is completely right; the actual limit is significantly lower than 500 kHz: at 100 kHz the interrupt occurs every 10 µs, which is too fast for managed code to keep up - I don't have exact numbers right now, but execution of managed code statements takes roughly tens of µs (it is not possible to measure code execution precise enough, due to the resolution of the system clock, but I could do that with my custom firmware that has improved clock resolution 2.7 µs).


I am building your custom firmware this morning, but will it work with Netduino Plus? And if I run your custom firmware with this project, do I have a chance of achieving 1000kHz?



#18248 High resolution light measurement

Posted by monewwq1 on 20 September 2011 - 02:19 PM in General Discussion

The answer is yes, to both questions.


Thank you.



#18243 High resolution light measurement

Posted by monewwq1 on 20 September 2011 - 01:51 PM in General Discussion

I own a truck: it has 500HP. I wonder why it can't reach 300Km/h...But I'm sure: it's 500HP powered! Much more than a Ferrari!...
I definitively want it will able to reach 300Km/h, even it's a truck...
What can I do?




#18241 High resolution light measurement

Posted by monewwq1 on 20 September 2011 - 01:29 PM in General Discussion

No, the custom firmware just increases clock resolution, it does not make code run magically faster. Seriously, you are wasting your time.
I don't get why you think this is a reasonable goal ... you will not be able to count pulses coming in at 1mhz in managed code. Why are you so fixated on directly interfacing this sensor with the netduino?
As was already suggested in the beginning: Use another sensor, e.g. with a phototransistor or photoresistor (it does not get much cheaper or easier than this) or use another MCU to do the counting for you.


Adding more hardware to this project is a kludge since the chip on-board the Netduino can count these pulses, and I'm not going shopping for more components when I have what I need right here. I just need to know how to be able to count the pulses up to 1MHz. I want to get this sensor to work with an ARM7 48MHz chip, and Netduino has one. I do not care if this project cannot run in managed code.

Is it possible to get this sensor working with native code on Netduino, or not? Can I build my own custom Netduino firmware using the porting kit and make this sensor work?



#18166 High resolution light measurement

Posted by monewwq1 on 18 September 2011 - 10:10 PM in General Discussion

Can someone please speed up my Netduino? Does anyone have a Netduino Ultra I could borrow? :D



#18171 High resolution light measurement

Posted by monewwq1 on 19 September 2011 - 01:38 AM in General Discussion

Can an Atmel AT91SAM7X512 microcontroller support the functions of the Taos TSL235R?

I am still not convinced that I need to throw more components at this problem. Netduino has an ARM7 48MHz processor- why should we deny that there is plenty of speed right on this development board? If I were to remove the processor from the Netduino and program it directly, or remove the .Net firmware and run C/C++ on it, I am sure that this sensor would run fine. I've read in these forums that version 4.1.2 of the Netduino firmware is supposed to offer run-time native code interop. I've also read about someone's project called "Fluent", which runs code something like 20 to 30 times faster than the managed code. I've also read that you can run FreeRTOS on the Netduino platform. Can't you run a quadrocopter with FreeRTOS? Isn't that real-time?

Does version Netduino 4.1.2 have runtime native code interop? If not, when will it have this functionality? Where can I get this "Fluent" project? Where can I find resources on how to run my own C/C++ on this board?

I understand the opinion that more tools will help me solve this problem, but I would rather use what I have instead of having to then deal with connecting, learning, and powering these other pieces.



#18164 High resolution light measurement

Posted by monewwq1 on 18 September 2011 - 09:50 PM in General Discussion

I just set up that FEZ code to run with the Netduino and the TLS235R, and Netduino still chokes on it after three reads. I also had to cover up the sensor with black cloth or else the Netduino failed immediately. Here are the readings I'm getting with the sensor completely covered:

Using an Interrupt
Reading 0
20400 Hz
221739.13043478262 uW/cm2
2650.3369113867698 lux (single)
163.81671308080081 lux (gauss)

Reading 1
20500 Hz
222826.08695652176 uW/cm2
2663.3287589916072 lux (single)
164.61973618413808 lux (gauss)

Reading 2
20400 Hz
221739.13043478262 uW/cm2
2650.3369113867698 lux (single)
163.81671308080081 lux (gauss)

Reading 3
3500 Hz
38043.478260869568 uW/cm2
454.71466616929877 lux (single)
28.105808616804058 lux (gauss)

Invalid frequency 0
Invalid frequency 0
Invalid frequency 0

I guess I am going to have to learn how to program another bare MCU and use that for my readings. It is really cool to watch the frequency change on my oscilloscope as the light levels change. The readings look nice and stable. And yes, I shined a really bright light on the sensor and watched the scope and it did go to one pulse every 2µs.



#18126 High resolution light measurement

Posted by monewwq1 on 17 September 2011 - 07:52 PM in General Discussion

Yes, if an Arduino can interface with this sensor, I find it hard to believe that a Netduino cannot.

This is the wiring I am using right now:

TSL235R ------ Netduino
======= ---- ========
GND(1) ---- GND
Vcc(2) ------ +5V
Out(3) ------ Digital I/O pin 2

I also have a 0.1uF cap wired from Vcc to GND, as mentioned in the TSL235R datasheet.

This does not work, and when I try to load my C# via USB, it says: "An error occurred: Please check your hardware." Edit: If I remove the TSL235R from the Netduino, I do not get the hardware error. I have no other devices plugged in to the Netduino.

I also tried wiring it to 3.3V on the Netduino and that does not work either.

Does anyone know what is wrong with my wiring?



#18119 High resolution light measurement

Posted by monewwq1 on 17 September 2011 - 04:37 PM in General Discussion

I am under the impression that I can use an InterruptPort on the Netduino without the need for additional components. Perhaps code like this would work with the TSL235R? I will give it a try and let you know the results.



#18116 High resolution light measurement

Posted by monewwq1 on 17 September 2011 - 02:50 PM in General Discussion

I am trying to find a suitable component that would allow me to measure the brightness of an image appearing on a computer monitor. Specifically, the computer is set up to flash different colored images and I want my Netduino to read and interpret the brightness values of those images. I bought this light-to-frequency converter: http://www.sparkfun.com/products/9768, which looks promising. Does anyone have any other suggestions for suitable components? I suppose I could use a standard photodiode, but I am looking for a large resolution, and I need a fast response time because the colors on the monitor will flash on and off quickly. I am thinking that having a large resolution will allow me to set up a larger range of commands that could occur depending on the light frequency that the Netduino reads. The end goal is to be able to allow a user to program certain aspects of my Netduino using the variances of light frequencies coming from images on a web page. In effect, a "'dark" frequency might represent a "1", and a "light" frequency might represent a "0". A company called Aniomagic has an e-textile product called "Sparkle" that allows you to program it by holding it up to your computer monitor, but I have much bigger plans for this basic idea. You can see "Sparkle's" program page here: http://www.aniomagic...program/?hl=en. Do you think the light-to-frequency converter would work for a Netduino project like this?



#18139 High resolution light measurement

Posted by monewwq1 on 18 September 2011 - 09:20 AM in General Discussion

Page 3 of this document indicates that the TSL235R can be used for photographic applications. Instead of the project I mentioned above, let's say I want to build an accurate light meter for a camera. How could I make the TSL235R work with the Netduino from 1Hz all the way to the full 1MHz output frequency so that I have full resolution? If I programmed this in native code, would that work? Or is there another component I could use to obtain the frequency from the TSL235R and then somehow send the results to the Netduino? If so, how can I do this?



#18129 High resolution light measurement

Posted by monewwq1 on 17 September 2011 - 11:29 PM in General Discussion

Ok, this code works, using the wiring method I mentioned in my other reply above:

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.NetduinoPlus;

namespace TSL235R
{
    public class Program
    {
        // Constants
        const ulong period = 10000;			   // Number of light frequency measurements
        const float area = 0.0092F;			 // Sensing area of TSL235R device (cm2)
        // Variables
        static ulong pulses = 0;		  // Counter of measurements of the TSL235R
        static ulong frequency;		   // Read the frequency from the digital pin (pulses/second)
        static float irradiance;			    // Calculated irradiance (uW/cm2)

        private static InputPort TSL235R_Pin = new InputPort(Pins.GPIO_PIN_D7, false, Port.ResistorMode.Disabled);

        static int readCount = 0;
        static bool result = false;
        static bool prev_result = false;
        public static void Main()
        {
            while (true)
            {
                while (readCount < 10000)
                {
                    result = TSL235R_Pin.Read();
                    if (result == true && prev_result == false) // Rising
                        pulses++;
                    if (result == false)
                        prev_result = false;
                    if (result == true)
                        prev_result = true;          
                    readCount++;
                }
                getfrequency();			    
                Debug.Print("Frequency:  ");
                Debug.Print(frequency.ToString() + " pulses/second");		 
                getirradiance();			  
                Debug.Print("Irradiance: " + irradiance.ToString() + " uW/cm2");		
                readCount = 0; 
                pulses = 0;		
               Thread.Sleep(1000);        
            }
        }

        static ulong getfrequency () {
            frequency = pulses/(period/10000);    // Calculate the frequency (pulses/second)
            return (frequency);
        }

        static float getirradiance()
        {
            irradiance = frequency / area;	// Calculate Irradiance (uW/cm2)
            return (irradiance);
        } 
    }
}

Example results from debug console:

Frequency:  
1786 pulses/second
Irradiance: 194130.438 uW/cm2
Frequency:  
1790 pulses/second
Irradiance: 194565.219 uW/cm2
Frequency:  
1932 pulses/second
Irradiance: 210000 uW/cm2
Frequency:  
2375 pulses/second
Irradiance: 258152.172 uW/cm2
Frequency:  
2478 pulses/second
Irradiance: 269347.812 uW/cm2
Frequency:  
2640 pulses/second
Irradiance: 286956.5 uW/cm2
Frequency:  
2435 pulses/second
Irradiance: 264673.906 uW/cm2
Frequency:  
3001 pulses/second
Irradiance: 326195.656 uW/cm2
Frequency:  
2720 pulses/second
Irradiance: 295652.156 uW/cm2
Frequency:  
2540 pulses/second
Irradiance: 276086.938 uW/cm2
Frequency:  
2104 pulses/second
Irradiance: 228695.641 uW/cm2
Frequency:  
2742 pulses/second
Irradiance: 298043.469 uW/cm2

There are two problems here though:
  • I am not using an InterruptPort, because it did not work properly for me.
  • I do not know if the readings I am getting are really accurate irradiance measurements.

Regarding Point 1, if anyone knows how to modify this code to use an InterruptPort, please reply and let me know. I tried to add InterruptPort code, but it causes my Netduino to lock up and become non-responsive to my C# IDE.

Regarding Point 2, I put a black piece of felt cloth over the sensor, and the reading went way down. I then shined a bright light onto the sensor and the reading went way up, so I know I am getting semi-valuable readings. However, the readings fluctuate by about 20 to 50 values while I am at a particular light level, and I am uncertain why. The readings do go up and down as expected, but they also "jump" while they are within that range. How can I fix this? Perhaps there is nothing wrong. I wonder if shadows are causing the "jumps".



#18150 High resolution light measurement

Posted by monewwq1 on 18 September 2011 - 06:28 PM in General Discussion

The sensor looks great, but there is a problem that makes any conversion hard. You may notice that the sensor has a dynamic of 10E6, i.e. from 1 to 1MHz. In other words, if this sensor was a voltage generator and you were using an ADC, you should consider at least a 20-bit ADC.
So, I guess the Arduino would be the easiest way to monitor the frequency produced by the sensor, just because you may code the best algorithm without great efforts.
Hope it helps.
Cheers




Pardon my ignorance, but does this mean I could connect a 20-bit ADC to an Arduino and use it to measure the TSL235R output and then connect an Arduino to my Netduino via SPI? This way, the Arduino could report the measurements to the Netduino at a certain reasonable time interval. Is that correct?

I found this ADC chip that looks like it interfaces with an Arduino nicely. Although it is a 24-bit ADC, they were getting 18-to-19-bit precision in testing. Would this chip work for me?



#18154 High resolution light measurement

Posted by monewwq1 on 18 September 2011 - 07:24 PM in General Discussion

I am still confused as to why I cannot directly interface it with a Netduino. Does it somehow make a difference if it is outputting a 50% duty cycle and not a pulse train? How are they doing this with a .Net Micro Framework board? Here is an example of directly interfacing a TSL230R with a .Net FEZ board, using .Net Micro Framework C# code. Am I missing something? Are they scaling the result or something?



#18152 High resolution light measurement

Posted by monewwq1 on 18 September 2011 - 06:51 PM in General Discussion

No, the ADC was for an hypothetical analog sensor. If you're hooking your sensor to an arduino, you can directly count the pulses with it and then send that number to your netduino. However, using an arduino is overkill for that, you could just use a "naked" microcontroller (e.g. an atmega168 or similar - also overkill for this, but a lot cheaper than a "full" arduino :) - that is, if you already have a programmer/are planning to buy one anyway).




#19615 Netduino - WiFi

Posted by monewwq1 on 23 October 2011 - 12:57 AM in Project Showcase

Andy, The firmware update program is called gs_flashprogram.exe. It is simple to use. Let me know how it goes. Nick



#19598 Netduino - WiFi

Posted by monewwq1 on 22 October 2011 - 03:30 PM in Project Showcase

Hi,

Can you tell me the commands I need to pass using the usb ttl device to firstly connect to my network and secondly do the firmware update.

I have connected to the device and have found my network but can't figure out how to connect to it?

Also I have no idea what I need to do to flash the new firrmware on to it?

I am using the tera term app that came with the firmware update files.

Thanks in advadance your help is much appreciated.

Andy


If you're using a USB-to-TTL connection, just connect it directly to the Gainspan. You do not need to connect to any network. You're using UART comms at that point.

If you have the full documentation, the FIrmware download should have provided a com port program to use for updating the firmware (note: this is not the Tera Term app; it is another app in the download files. SOrry, I don't remember the name of it at the moment).



#15767 Netduino - WiFi

Posted by monewwq1 on 22 July 2011 - 12:49 AM in Project Showcase

I bought a Netduino Plus but decided I really need to go wireless, so I picked up a Gainspan WiFi breakout board from Sparkfun (http://www.sparkfun.com/products/10505) and after some fiddling with the AT commands, I was able to get a WiFi connection going.



#16132 Netduino - WiFi

Posted by monewwq1 on 01 August 2011 - 01:09 AM in Project Showcase

Hi all, For those interested, just an update on this Gainspan module- please note that in order to obtain the newest firmware and future updates, you will need to sign a mutual Non-Disclosure Agreement with Gainspan. I wasn't real happy about having to do this, but it was relatively painless and the new firmware opened up a world of more possibilities. It took me 8 days to get my NDA approved.



#18887 Netduino - WiFi

Posted by monewwq1 on 07 October 2011 - 02:36 AM in Project Showcase

I'm using the gainspan 1011. I followed your source code and have tcp working nicely, thanks! I'm trying to get the httpsend feature working to send an http post. I setup a php script that accepts two fields and I've verified it works using putty. So far, the php script is telling me I'm sending an empty message. So, I'm definitely talking to the server, just not sending any data. I think maybe I've got the escape sequence incorrect. Here's the relevant commands I'm sending the gainspan:

at+httpconf=20,User-Agent: Mozilla/4.0\r
at+httpconf=3,keep-alive\r
at+httpconf=11,<myhost>\r
at+httpconf=7,application/x-www-form-urlencoded\r
at+httpopen=<myhostip>\r
at+httpsend=0,3,10,/test_post.php,23\r\x1BHname=myName&info=myInfo

Any suggestions? I'm not sure what to try next.


Hi, unfortunately I have not used the built-in http features of the Gainspan. For my Gainspan projects I rolled my own http communications.




home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.