Go Down

Topic: Reporgramming sparkfun openlog (Read 8521 times) previous topic - next topic

cyclegadget

Looking at the board, I would guess that the pro-mini 328 would be similar to the open-log board. Try that and if it does work try other 328 board choices.

http://www.sparkfun.com/products/9530
Quote
Reprogrammable ATmega328 using the Arduino IDE
Good links: Eagle tutorial= http://www.youtube.com/playlist?list=PLDE1858BD83D19C70
General Arduion tutorials = http://tronixstuff.wordpress.com
http://www.gammon.com.au/forum/bbshowpost.php?bbtopic_id=123

jumpjack

Found in google cache:

IDE: "Arduino Pro or Pro Mini 5V/16MHz w/ ATmega328"
Quote

    Get an FTDI Basic and a crossover board
    Download a new copy of the Arduino IDE version 0022 into a different directory than your normal Arduino installation. For example 'c:\arduino-0022-openlog\'. Note that Arduino v1.0 is not yet supported. Please use v0022.
    Download the OpenLog firmware either directly here or by checking out the repository (more advanced and not necessary for more people)
    Replace the file located here: C:\arduino-0022-openLog\hardware\arduino\cores\arduino\HardwareSerial.cpp with the HardwareSerial.cpp found in the OpenLog firmware zip file that you just downloaded. More information below.
    Open the OpenLog_v2 sketch in this special version of Arduino-OpenLog and compile. (If you experience problems, make sure that Arduino isn't referencing a newer SdFat library in your home/Arduino/libraries folder)
    Connecting the FTDI Basic, then the crossover board, then the OpenLog
    Select the "Arduino Pro or Pro Mini 5V/16MHz w/ ATmega328" under the Arduino Boards tab
    Select the right COM port to connect to the FTDI Basic
    Upload the code
    High five your nearest neighbor


I also found this:




jumpjack

Version 3 of firmware looks quite different; this appears to be the code part I'll have to modify to get analog pins logged:

Code: [Select]
  //Start recording incoming characters
  while(escape_chars_received < setting_max_escape_character) {

    uint8_t n = NewSerial.read(localBuffer, sizeof(localBuffer)); //Read characters from global buffer into the local buffer
    if (n > 0) {

      if (localBuffer[0] == setting_escape_character) {
        escape_chars_received++;

        //Scan the local buffer for esacape characters
        for(checkedSpot = 1 ; checkedSpot < n ; checkedSpot++) {
          if(localBuffer[checkedSpot] == setting_escape_character) {
            escape_chars_received++;
            //If n is greater than 3 there's a chance here where we receive three esc chars
            // and then reset the variable: 26 26 26 A T + would not escape correctly
            if(escape_chars_received == setting_max_escape_character) break;
          }
          else
            escape_chars_received = 0;
        }
      }

      file.write(localBuffer, n); //Record the buffer to the card

      STAT1_PORT ^= (1<<STAT1); //Toggle the STAT1 LED each time we record the buffer

      idleTime = 0; //We have characters so reset the idleTime

      if(timeSinceLastRecord++ > maxLoops) { //This will force a sync approximately every second
        timeSinceLastRecord = 0;
        file.sync(); //Sync the card
      }

    }
    else if(idleTime > MAX_IDLE_TIME_MSEC) { //If we haven't received any characters in 2s, goto sleep
      file.sync(); //Sync the card before we go to sleep

      STAT1_PORT &= ~(1<<STAT1); //Turn off stat LED to save power

      power_timer0_disable(); //Shut down peripherals we don't need
      power_spi_disable();
      sleep_mode(); //Stop everything and go to sleep. Wake up if serial character received

      power_spi_enable(); //After wake up, power up peripherals
      power_timer0_enable();

      escape_chars_received = 0; // Clear the esc flag as it has timed out
      idleTime = 0; //A received character woke us up to reset the idleTime
    }
    else {
      idleTime++;
      delay(1); //Burn 1ms waiting for new characters coming in
    }

  }

jumpjack

I received the device but can't get it working: upon connecting to FTDI and to PC, LEDs blink (in a "random" sequence", the they completely stop blinking; no prompt visible in terminal; I switch off and I extract the card, which put into a card reader shows several log files, all empty, and a log file setting baud rate to 9600 bps, just like my terminal was set.

How can I know the meaning of LEDs sequences? How can I get this thing working?!?

cyclegadget

Quote
Remember, if you get OpenLog stuck into an unknown baud rate, there is a safety mechanism built-in. Tie the RX pin to ground and power up OpenLog. You should see the LEDs blink back and forth for 2 seconds, then blink in unison. Now power down OpenLog and remove the RX/GND jumper. OpenLog is now reset to 9600bps with an escape character of 'ctrl+z' pressed three consecutive times.


https://github.com/sparkfun/OpenLog/wiki/Command-Set
Good links: Eagle tutorial= http://www.youtube.com/playlist?list=PLDE1858BD83D19C70
General Arduion tutorials = http://tronixstuff.wordpress.com
http://www.gammon.com.au/forum/bbshowpost.php?bbtopic_id=123

jumpjack


Quote
Remember, if you get OpenLog stuck into an unknown baud rate, there is a safety mechanism built-in. Tie the RX pin to ground and power up OpenLog. You should see the LEDs blink back and forth for 2 seconds, then blink in unison. Now power down OpenLog and remove the RX/GND jumper. OpenLog is now reset to 9600bps with an escape character of 'ctrl+z' pressed three consecutive times.


https://github.com/sparkfun/OpenLog/wiki/Command-Set

Thanks, but the config fils lets me think it's already configured at 9600 bps.

jumpjack

So no news from anybody?
Tips about the "led error code"?
Explanations for empty files?

madd0c

I also would like to see more information from anyone who has sucessfully used OpenLog as a stand alone logging device. I am having significant issues using a seperate RTC(SPI) and Openlog to try to make a standalone logger capable of timestamping.
There is very little informtation or examples (any?) of a modified firmware for openlog.

I know this thread is 7 months old with no activity, but hopefully someone will see this.

jumpjack


I also would like to see more information from anyone who has sucessfully used OpenLog

I switched to PIC32 Pinguino Micro: https://www.olimex.com/Products/Duino/PIC32/PIC32-PINGUINO-MICRO/

madd0c

Sadly to large a form factor for my needs. I appreciate the information, I do hope someone who has been able to actually get a moddded OpenLog working will chime in.
I just would like to see some examples, especially of multiple SPI devices.

Thanks in advance

dlkeng

I have modified the OpenLog firmware to make a portable serial uSD card data logger. This was relatively easy using the sources from the SparkFun OpenLog GitHub.

More info on my modifications can be found at http://dlkeng.cwahi.net/AVR/SD_Logger/My SD Data Logger Info.html

Unfortunately, I didn't use the SPI interface in my modifications.


jumpjack

It sounds very interesting!
Could you please explain how exactly to upload your firmware to openlog? Sparkfun instructions are old and unsatisfactory.

dlkeng

On the SparkFun Flashing Firmware web page (https://github.com/sparkfun/OpenLog/wiki/Flashing-Firmware), they suggest using their FTDI Basic and Crossover Breakout for FTDI boards to connect to the OpenLog board. I just used a RS-232 serial-to-TTL adapter I had instead (in the schematic on my web page for the portable serial data logger, you can see I used a MAX233 device - note, it is wired as a DTE so a null-modem adapter is needed to connect the correct signals on the DB-9 to the COM port on the PC). The signals that need to be connected are: Rx, Tx, DTR, and GND.

Anyway, after connecting the OpenLog to the PC, the Arduino software environment (Arduino 1.0 or later) is used to reprogram the OpenLog device similar to what would be done if you were programming/uploading to a standard Arduino board. In fact, the OpenLog appears to operate as an Arduino Uno, so, in the Arduino software environment, set the board under Tools->Board to Arduino Uno.

All of this is spelled out reasonably well in the Updating Firmware on OpenLog v3 section on their Flashing Firmware web page. If you follow their instructions, including obtaining the needed SerialPort and SdFat libraries, you should be able to recompile the OpenLog_v3.ino from their GitHub site and load that on your OpenLog device as a start. From there, its just a matter of modifying the original source for the feature changes you need. (If you look at the source files on my web site, you will notice I split the original OpenLog_v3.ino into multiple .ino files to make it easier to manage as separate functional modules that all get compiled into one executable by the Arduino software environment.)



mikrodb

hello friends...
i`ll try to edit  openlog source code, but many errors when i opened this file.
some people can help?


PaulS

Quote
some people can help?

Based on pictures? No.

Post the code, and the TEXT of the error messages.

Go Up