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.

cce1911's Content

There have been 59 items by cce1911 (Search limited from 09-June 23)


By content type

See this member's


Sort by                Order  

#51796 Toolbox.NETMF.Hardware.DS1307 problem

Posted by cce1911 on 30 July 2013 - 07:16 PM in Netduino Plus 2 (and Netduino Plus 1)

I purchased this RTC: http://www.adafruit.com/products/264

 

But when I go to set the time using the Toolbox.NETMF.Hardware.DS1307 I get the following error:

"Something went wrong setting the time. Did you use proper pull-up resistors and is there a 3V battery connected?"

 

The wiring is pretty simple and I've double checked it (see pic).The kit has the resistors and the battery, any ideas?

 

Here is the code where it fails:

DS1307 RTC = new DS1307();

RTC.SetTime(2013, 7, 29, 23, 14, 0);

 

here is the toolbox code where the call is throwing an exception

public void SetTime(DateTime Time)

{

// Writing 7 bytes to the buffer, starting at address 0

int BytesTransferred = this._Device.Write(new byte[] {

0x00,

(byte)Tools.Hex2Dec(Time.Second.ToString()),

(byte)Tools.Hex2Dec(Time.Minute.ToString()),

(byte)Tools.Hex2Dec(Time.Hour.ToString()),

(byte)Tools.Hex2Dec(((int)Time.DayOfWeek).ToString()),

(byte)Tools.Hex2Dec(Time.Day.ToString()),

(byte)Tools.Hex2Dec(Time.Month.ToString()),

(byte)Tools.Hex2Dec((Time.Year - 2000).ToString())

});

if (BytesTransferred != 8) throw new ApplicationException("Something went wrong setting the time. Did you use proper pull-up resistors and is there a 3V battery connected?");

}

 

 

Attached Thumbnails

  • 1307.jpg



#51766 Adafruit Motor shield v2 library

Posted by cce1911 on 29 July 2013 - 02:53 PM in Netduino Plus 2 (and Netduino Plus 1)

Have you looked at the .Net Micro Framework Toolbox?

 

http://netmftoolbox....pported devices




#51765 Using a Netdruino 2 as a PLC

Posted by cce1911 on 29 July 2013 - 02:51 PM in Netduino Plus 2 (and Netduino Plus 1)

I'm in the process of converting a PLC application over to the Netduino in order to reduce cost. I've been using Crouzet PLC's but they are too expensive and have too little RAM. The Netduino with a keypad, 2 line LCD and a cheap 4 relay board will do what I need at a fraction of the cost.




#51764 N+2 Socket problem

Posted by cce1911 on 29 July 2013 - 02:40 PM in Netduino Plus 2 (and Netduino Plus 1)

I found the problem with my code. In the server app, the 2nd while loop should have had totalread instead of 0 for the second parameter of the .receive call. I was overwriting the data each time. Maybe this will help someone in the future...




#51676 N+2 Socket problem

Posted by cce1911 on 25 July 2013 - 03:15 AM in Netduino Plus 2 (and Netduino Plus 1)

If I look at the byte array data, after receiving all the data, every byte above 255 has a value of 0. It's as if it stops reading at 255. If I debug.print in the while loop filling "data", I get the following output:

 

client accepting data client.Receive sizeinfo: currentread = 4, totalread = 4 total message size = 3296 client.Receive data: currentread = 252, totalread = 252 client.Receive data: currentread = 256 totalread = 508 client.Receive data: currentread = 256 totalread = 764 client.Receive data: currentread = 256 totalread = 1020 client.Receive data: currentread = 256 totalread = 1276 client.Receive data: currentread = 256 totalread = 1532 client.Receive data: currentread = 256 totalread = 1788 client.Receive data: currentread = 256 totalread = 2044 client.Receive data: currentread = 256 totalread = 2300 client.Receive data: currentread = 256 totalread = 2556 client.Receive data: currentread = 256 totalread = 2812 client.Receive data: currentread = 256 totalread = 3068 client.Receive data: currentread = 228 totalread = 3296 client.Receive data final: currentread = 228 totalread = 3296

 

So it is accepting 256 bytes each time, but they are all zero. Obviously, I don't understand what's going on:(




#51669 5v Power Supply?

Posted by cce1911 on 24 July 2013 - 07:57 PM in Netduino Plus 2 (and Netduino Plus 1)

This is a great question, but I'm curious to know what people are using for battery packs. My N+2 is driving a single 4 channel relay board...




#51667 N+2 Socket problem

Posted by cce1911 on 24 July 2013 - 07:42 PM in Netduino Plus 2 (and Netduino Plus 1)

I'm new to sockets and just can't seem to get my app working. What I want to do is send a log file from the N+2 back to my laptop. The approach I took was to prepend the file size to the byte array before sending. However, I never seem to receive exactly what I send. I realize this is a very common problem with folks who are new to sockets and I've searched high and low to find tips on how to avoid this problem. Maybe this is something unique to N+2, but I kind of doubt it.
 
Here is my code. I've got a client app that runs on the N+2 and a console app running on my laptop. The data file I'm retrieving is attached below. This sort of works, but is not delivering the file consistently. Any help you can give me would be appreciated.
 
Client app running on N+2. When you press the onboard button, it sends the file.

 

[font="'courier new', courier, monospace;"]using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Text;
using System.IO;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;[/font]

[font="'courier new', courier, monospace;"]namespace SocketClient
  {[/font]

[font="'courier new', courier, monospace;"]   public class Program
  {
  static string strDeviceIP = "";
  static string strDeviceSubnet = "";
  static string strDeviceGateway = "";
  static string strDevicePort = "";
  static string strControllerIP = "";[/font]

[font="'courier new', courier, monospace;"]   public static OutputPort opLED = new OutputPort(Pins.GPIO_PIN_D13, false);
  InputPort button = new InputPort(Pins.ONBOARD_SW1, false, Port.ResistorMode.Disabled);[/font]

[font="'courier new', courier, monospace;"]   public static void Main()
  {
  strDeviceIP = "192.168.2.102";
  strDeviceSubnet = "255.255.255.0";
  strDeviceGateway = "192.168.2.2";
  strControllerIP = "192.168.2.222";
  strDevicePort = "9999";
  InterruptPort btn = new InterruptPort(Pins.ONBOARD_SW1, false,[/font]

[font="'courier new', courier, monospace;"]Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeLow);
  btn.OnInterrupt += new NativeEventHandler(ButtonPress);[/font]

[font="'courier new', courier, monospace;"]   while (true)
  {
 
  }
  }[/font]

[font="'courier new', courier, monospace;"]   public static void ButtonPress(uint data1, uint data2, DateTime time)
  {
  opLED.Write(true);[/font]

[font="'courier new', courier, monospace;"]   Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  IPAddress hostAddress = IPAddress.Parse(strControllerIP);
  IPEndPoint endpoint = new IPEndPoint(hostAddress, Int32.Parse(strDevicePort));[/font]

[font="'courier new', courier, monospace;"]   string fileName = "runlog2.txt";
 
  // read the file into a byte array
  byte[] data = File.ReadAllBytes(@"SD" + fileName);
  byte[] sizeinfo = new byte[4];
  byte[] senddata = new byte[4 + data.Length];[/font]

[font="'courier new', courier, monospace;"]   // check to make sure it's not too big
  if (data.Length > 850 * 1024)
  {
  Debug.Print("File too large");
  }[/font]

[font="'courier new', courier, monospace;"]   // convert data.length into a byte array
  sizeinfo[0] = (byte)data.Length;
  sizeinfo[1] = (byte)(data.Length >> 8);
  sizeinfo[2] = (byte)(data.Length >> 16);
  sizeinfo[3] = (byte)(data.Length >> 24);[/font]

[font="'courier new', courier, monospace;"]   // prepend the size into the senddata array
  sizeinfo.CopyTo(senddata, 0);[/font]

[font="'courier new', courier, monospace;"]   // copy read data into the senddata array
  data.CopyTo(senddata, 4);[/font]

[font="'courier new', courier, monospace;"]   // send the data
  socket.Connect(endpoint);
  socket.Send(senddata);
  socket.Close();
  opLED.Write(false);
  }
  }
  }[/font]

 

 

[font="'courier new', courier, monospace;"]Here is my server side console app.[/font]

 

[font="'courier new', courier, monospace;"] [/font]

[font="'courier new', courier, monospace;"]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Collections;
using System.Threading;[/font]

 

 

[font="'courier new', courier, monospace;"]namespace SocketConsole
  {
  class Program
  {
  static void Main(string[] args)
  {
  Thread thread1 = new Thread(new ThreadStart(Listener));
  thread1.Start();[/font]

 

[font="'courier new', courier, monospace;"]   while (true)
  {
  }
  }[/font]

[font="'courier new', courier, monospace;"] public static void Listener()
  {
  try
  {
  Socket sktMain = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  sktMain.Bind(new IPEndPoint(IPAddress.Parse("192.168.2.222"), 9999));
  sktMain.Listen(10);
  var message = new ArrayList();[/font]

[font="'courier new', courier, monospace;"]   while (true)
  {
  // create the client socket
  using (var client = sktMain.Accept())
  {
  //If connected,
  if (SocketConnected(client, 100))
  {
  while (SocketConnected(client, 100))
  {
  byte[] sizeinfo = new byte[4];[/font]

[font="'courier new', courier, monospace;"]   //read the size of the message into sizeinfo
  int totalread = 0, currentread = 0;
  currentread = totalread = client.Receive(sizeinfo, 4, SocketFlags.None);[/font]

[font="'courier new', courier, monospace;"]   while (totalread < sizeinfo.Length && currentread > 0)
  {
  currentread = client.Receive(sizeinfo, totalread, sizeinfo.Length - totalread, SocketFlags.None);
  totalread += currentread;
  }[/font]

[font="'courier new', courier, monospace;"]   int messagesize = 0;
  messagesize |= sizeinfo[0];
  messagesize |= (((int)sizeinfo[1]) << 8);
  messagesize |= (((int)sizeinfo[2]) << 16);
  messagesize |= (((int)sizeinfo[3]) << 24);[/font]

[font="'courier new', courier, monospace;"]   byte[] data = new byte[messagesize];
  totalread = 0;
  currentread = totalread = client.Receive(data, 0, data.Length - totalread, SocketFlags.None);
  var received = Encoding.UTF8.GetChars(data);[/font]

[font="'courier new', courier, monospace;"]   int diff = data.Length - totalread;[/font]

[font="'courier new', courier, monospace;"]   while (totalread < messagesize && currentread > 0)
  {
  currentread = client.Receive(data, 0, data.Length - totalread, SocketFlags.None);
  totalread += currentread;
  for (var i = 0; i < received.Length; i++)
  message.Add(received[i]);
  }
  string fName = "runlog.txt";
  if (File.Exists(fName)) File.Delete(fName);[/font]

[font="'courier new', courier, monospace;"]   BinaryWriter bWrite = new BinaryWriter(File.Open(fName, FileMode.Create));
  bWrite.Write(data);
  bWrite.Close();
  }
  }
  }
  }
  }
  catch (Exception ex)
  {
  Console.WriteLine(ex.Message);
  }
  }[/font]

[font="'courier new', courier, monospace;"] // socket polling
static bool SocketConnected(Socket s, int ms)
{
return !(s.Poll(ms, SelectMode.SelectRead) & (s.Available == 0));
}[/font]

[font="'courier new', courier, monospace;"]   }
  }[/font]

 

 

Attached Files




#51284 Dive Computer and Rebreather Controller Based on a Netduino Mini

Posted by cce1911 on 10 July 2013 - 03:21 AM in Project Showcase

What do you use for a HUD?

 

It looks like you have certainly found a creative outlet :) I look forward to following your progress...




#51282 Dive Computer and Rebreather Controller Based on a Netduino Mini

Posted by cce1911 on 10 July 2013 - 02:39 AM in Project Showcase

Wow, that's a heck of an undertaking! So what's the motivation? Are you implementing features not found on the Shearwater or Hammerhead units? (BTW, I'm not a CCR diver but I was tech diving long before the term was ever coined.)




#51277 Dive Computer and Rebreather Controller Based on a Netduino Mini

Posted by cce1911 on 10 July 2013 - 01:16 AM in Project Showcase

I saw you using gradient factors in the video. What deco algorithm are you using and did you code that yourself?




#51239 NeonMika.Webserver

Posted by cce1911 on 09 July 2013 - 02:06 AM in Project Showcase

Am I missing something? I downloaded the N+2 Version (10.12.12) and have it running,  but I can't create the "network name". Its not a parameter in

Server WebServer = new Server(PinManagement.OnboardLED, 80, false, "192.168.1.25", "255.255.255.0", "192.168.1.1");

 

[font="arial, helvetica, sans-serif;"]Does the N+2 version have this?[/font]




#51238 NeonMika.NetduinoControl & NeonMika.Webserver.ClientLibrary

Posted by cce1911 on 09 July 2013 - 01:57 AM in Project Showcase

What version of Visual Studio is this built in? I get an error saying the project is incompatible with VS2010.




#51228 Whacky Device Advice?

Posted by cce1911 on 08 July 2013 - 07:05 PM in General Discussion

The moles will be anywhere from 10 yards to 35 yards from the central controller and up to 10 yards from each other.




#51226 Whacky Device Advice?

Posted by cce1911 on 08 July 2013 - 06:34 PM in General Discussion

I'm at the conceptual stage of a project and would like some advice. The project can best be described as a game. The "Whack-a-Mole" game is a pretty close approximation of what I'm trying to do except the "moles" are further apart. If you don't know what this game is, watch this 22 seconds of video: https://www.youtube....h?v=D0n8N98mpes

 

There will be n number of devices in the network and one master controller. I'm thinking the controller will be a laptop, but I'm open to other ideas.

 

Each device will "display" according to an algorithm running on the master controller. If the mole is whacked while its displayed, a signal should be sent back to the master controller with the time it was whacked.

 

So my question is what is the best way for the master controller to communicate with the moles? After doing some research, it seems to me that each mole should be an N+2 with a Edimax BR-6258n wireless router running the NeonMika webserver. However, my concern is speed. Would Bluetooth be a better option or maybe one of the Xbee protocols? What about using a Mini instead of a N+2?




#50422 3x4 Matrix Keypad bounce problem

Posted by cce1911 on 11 June 2013 - 01:20 PM in Netduino 2 (and Netduino 1)

Thanks for the input Karl. I'll give your suggestion a try.

-Capel




#49972 3x4 Matrix Keypad bounce problem

Posted by cce1911 on 25 May 2013 - 10:16 PM in Netduino 2 (and Netduino 1)

This is weird. The clock works. Debug printing .Now shows the clock incrementing. Maybe it is the keypad.




#49970 3x4 Matrix Keypad bounce problem

Posted by cce1911 on 25 May 2013 - 09:45 PM in Netduino 2 (and Netduino 1)

I'll have to retract that last post. It does not work either. Looks like there is something wrong with the clock...




#49967 3x4 Matrix Keypad bounce problem

Posted by cce1911 on 25 May 2013 - 08:53 PM in Netduino 2 (and Netduino 1)

To start with I'm using the N+2. Sorry about posting in the wrong forum if this has anything to do with it.

 

The value of the "time" parameter is always 00:00:00 as if there were no clock at all on board. I don't expect the board to have the current time, just the time relative to startup. I can work around my problem with the code below, but I expected the Toolbox.NETMF.Hardware.MatrixKeyPad code to work and was wondering if anyone else had seen this problem.

static void kb_OnKeyDown(uint KeyCode, uint Unused, DateTime time){   KeyDown(KeyLookup((int)KeyCode), DateTime.Now);}// Process the keypad inputstatic void KeyDown(int KeyVal, DateTime dtTime)  {  if (ButtonLastPushed.AddMilliseconds(intBounceWait) > dtTime) return; // prevent bounce  ButtonLastPushed = dtTime;...



#49963 3x4 Matrix Keypad bounce problem

Posted by cce1911 on 25 May 2013 - 06:19 PM in Netduino 2 (and Netduino 1)

I'm using this keypad: http://www.adafruit.com/product/419

with the Toolbox.NETMF.Hardware.MatrixKeyPad driver and I'm getting a lot of bounce. It appears that the "time" parameter of the event handler is not working correctly. For example, in the code below, ButtonLastPushed is initially 0 and the first time the button is pushed "time" is zero also. Has anyone else run into this problem and found a fix?

/// Triggered when a key is pressedstatic void kb_OnKeyDown(uint KeyCode, uint Unused, DateTime time) {   if (ButtonLastPushed.AddMilliseconds(intBounceWait) > time) return; // prevent bounce   ButtonLastPushed = time;   Debug.Print("Key pressed: " + KeyLookup((int)KeyCode).ToString()); }



#49527 Issues with buttons and LCD

Posted by cce1911 on 18 May 2013 - 04:24 AM in Netduino 2 (and Netduino 1)

Hanzibal,

Tweaking the delay to 2ms did the trick. I also removed the pull-downs. Thanks for all your help.




#49507 Issues with buttons and LCD

Posted by cce1911 on 17 May 2013 - 01:04 PM in Netduino 2 (and Netduino 1)

I'll remove the pull-downs on d0-d3, but do you think that is causing this problem?




#49502 Issues with buttons and LCD

Posted by cce1911 on 17 May 2013 - 01:58 AM in Netduino 2 (and Netduino 1)

Here is the picture. I'll set the other board up this weekend.

Attached Thumbnails

  • breadboard.jpg



#49493 Issues with buttons and LCD

Posted by cce1911 on 16 May 2013 - 01:55 PM in Netduino 2 (and Netduino 1)

Hanz,

Yes, I will stand up a new board with just the LCD on it and see if my wiring is the issue. It is a rather complex breadboard. I will also take a picture of the setup and what I'm seeing on the LCD. I won't be able to do this until this evening after work.




#49477 Issues with buttons and LCD

Posted by cce1911 on 16 May 2013 - 02:26 AM in Netduino 2 (and Netduino 1)

Hanzibal,

First let me say thank you for your assistance. I've been working with your code and I can't seem to get it to work. My breadboard is wired as shown in the attached image. I'm not sure if I have the pins assigned wrong or your code need to be tweaked for the N+2. Here is my code using your sample:

using System;using System.IO;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.Netduino;using Hd44780Test;namespace FirstPlus    {    public class Program        {        public static void Main()            {            // create the LCD driver class (d4, d5, d6, d7, E, RS)            var lcd = new Hd44780(Pins.GPIO_PIN_D4, Pins.GPIO_PIN_D5, Pins.GPIO_PIN_D6, Pins.GPIO_PIN_D7, Pins.GPIO_PIN_D9, Pins.GPIO_PIN_D8);            lcd.Write("- Hd44780 Demo -");            bool onoff;            for (int i = 0; true; i++)                {                onoff = (i & 1) == 0;                lcd.ChangePosition(1, 0);                lcd.Write((i & 0xff).ToString("X2") + " LED is " + (onoff ? "ON " : "OFF"));                //led.Write(onoff);                Thread.Sleep(250);                }            }        }    }

Attached Thumbnails

  • wiring_diagram2.png



#49464 Issues with buttons and LCD

Posted by cce1911 on 15 May 2013 - 01:17 PM in Netduino 2 (and Netduino 1)

I agree, it's hardly a h/w error "anymore". Using a shiftregister would probably help but you need to change your wiring to use SPI with the shift register and probably have to use a different library (e.g. Mario's) too. Before trying that, I could post you some code to try when I'm home after work today. That code would be more or less a drop in replacement.

 

Any suggestions you have would be appreciated.





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.