SparkFun Electronics will be closed in observance of memorial day on Monday, May 29th. We will resume normal business hours on Tuesday, May 30th. Any orders placed after 2pm Mountain Time on Friday, May 26th will process and ship out on Tuesday, May 30th.

Retired Product

This product has been retired from our catalog and is no longer for sale. This page is made available for those looking for datasheets and the simply curious.

Creative Commons images are CC BY 2.0

Description: Atlas Scientific is on a mission to make high-quality sensors for environmental monitoring available to everyday hackers and makers. All of their kits are easy to calibrate and connect to your microcontroller-based project.

You know what’s exciting? Oh yes, data-logging. No, seriously, by logging data in the field for later analysis, you can generate some really informative results! There are a lot of ways to go about logging your data, but Atlas Scientific has put together a really simple and compact solution for those times when you just need to get a probe logging and deployed.

The ENV-32X data logger is specifically designed to record strings of data up to 128 characters long. Each string, terminated with a carriage return, is saved to one of 32,760 separate and individual pages in memory. And after you’ve logged all your data and you’re ready to retrieve it, the ENV-32X supports two different organized read-back methods.

Boasting low power-consumption, 32Mb of memory and blazing fast read-write operation, the ENV-32X is a packaged solution for logging metrics in the field.

Note: The Arduino example code shows the logger hooked up to 5V. This is incorrect, it needs to be connected to 3.3V.

Dimensions: ≈15x20x5mm


  • 32Mb flash memory
  • No drivers required
  • Specifically designed to hold strings of up to 128 characters long
  • Read/ Write/Erase 32,760 individual strings
  • Fast operation read/write a 128 byte string in just 3ms
  • Write to memory confirmation
  • Two different organized read back methods
  • 20 year data retention
  • Up to 3,276,000,000 program/erase cycles
  • Simple RS-232 connectivity (voltage swing 0-VCC)
  • Simple instruction set consisting of only 7 commands
  • Debugging LED’s
  • 3.3 volt operation
  • Low power consumption
  • Well suited for airborne applications weighing only 1.53 grams


Recommended Products

Customer Comments

  • FYI, you can also check my Open Source Voltage logger and Pressure & Temperature Logger projects that run on on my Scorpion Board. It uses log_fs a simple, but robust record-based file system for AT45D DataFlash that I’m quite proud of.

  • I was experiencing the same problems as “I Dream of JNE” when using both the UNO and Duemilanove Arduino boards. To fix the problem, I used the AltSoftSerial library in place of the SoftwareSerial library. The ENV-32X now receives commands reliably and returns the correct data. AltSoftSerial library and details are available here:


  • For anyone having problems similar to “I Dream of JNE”: I found using the Arduino Uno was the problem. Switched to the Mega2560 and used serial3 for communications and the following code: (Ps use carriage return on serial monitor and if the led on the ENV-32X is not green send it a line ie. “M” and use 3.3V)

    //Test Code for ENV-32X by MDW (30-12-2013) using Atlas Scientific code as ref.

    boolean WriteBufferCheck = false;

    boolean ReadBufferCheck = false;

    String WriteBuffer;

    String ReadBuffer;

    void setup()





    void loop()


    while ((WriteBufferCheck == false) && (ReadBufferCheck == false)){

    if (Serial3.available()){
      char outchar = (char)Serial3.read();
      ReadBuffer += outchar;
      if(outchar == '\r') {
      ReadBufferCheck = true;
    if (Serial.available()){
      char inchar = (char)Serial.read();
      WriteBuffer += inchar;
      if(inchar == '\r') {
      WriteBufferCheck = true;


    if (ReadBufferCheck == true){

    ReadBuffer = "";
    ReadBufferCheck = false;


    if (WriteBufferCheck == true){

    WriteBuffer = "";
    WriteBufferCheck = false;



    • Hi, I have been working for days to write a simple bit of code to make a pushbutton send the D command to this data logger using software serial (altSoftSerial) and I have gotten nowhere, I took your code and modified it and within minutes I made great progress. I am still a bit stuck which is why I come here beaten by this machine begging you for help. All i need is for when a pushbutton is HIGH, the arduino sends the “D” command once. So for example, i could press it twice and clear the logger. Once i have that code I can change it up and add other functions but i need somewhere to start. Please Help me out! Thanks!

  • I am completely new to Arduino, and I am having a hard time following the example on the AtlasScientific website. I have everything setup as they have in the example with the voltage correction (3.3V), and I using the code provided. I am trying to write data to the data logger using the serial monitor of the Arduino software. Nevertheless, I don’t get the Y or N you are suppose to get, nor I can verify whether it has actually save some data since whenever I send a command I don’t receive anything back. I have tried all the possible combinations for the correct string command but still nothing. Any suggestions, or examples on how to pass commands to the data logger?


  • It seems like my Env-32x is not storing data. I’ve checked the connections and the power is 3.3V on an Arduino Mega. The input to and output from the Env-32x appears below. Is the memory bad? Are there other causes? Thanks….Tim

    sent to env M //Sent M to Env

    32765,4128384,65531 //Received this string from Env

    sent to env D

    sent to env D

    X //This indicates that it should have deleted all data, but it didn’t

    sent to env M


    sent to env *12345678 //Send some data to the env


    sent to env *12345678


    sent to env R1 //See what’s stored in the memory (looks like garbage)

    0:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ 1:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ 2:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ 3:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ 4:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ 5:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ 6:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ 7:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ 8:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ 9:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

  • The one I have garbles the data. It only occasionally responds to a command, as if the bit rate isn’t correct, but although that would explain the garbled text I haven’t been able to find a baud rate (other than 38400) that works. I only get garbled data back out, and I have to send every command several times before it “sticks”.

    I should add that it is still storing the data and trying to read it back out, but it messes it up. For example: Store “This is a sentence. 12345” and it will return something like: “}♦is is %^&ence. 1ss45” so I can see that the data is sort of in there. Upon repeated readouts it eventually has every character in the right place, but never all at once, so there’s clearly something wrong with readout, not with read-in (except for the problem receiving commands) or storage.

    • is there a better guide or a troubleshooting resource? I’ve done everything correctly as far as I can tell. What would be really helpful is a diagnosis for common problems (such as using the wrong voltage levels) so i can tell if my issue, and Member #78736 below, is due to static discharge frying the chip or something defective about it.

      • Member #78736 had a defective unit. His ENV-32X was replaced. For real help with your ENV-32X just send an email to: Support@Atlas-Scientific.com

  • It states in the specs 3.6v Max for VCC, but in the sample code pages provided for the Arduino and Mega they have it hooked up to the 5V pin on the Arduino. Am I missing something?

    • Ah, it looks like they just link to the EZ-COM (which uses 5v) sample code instead of one for the ENV-32X (which uses 3.3v).

  • Anyone know the power draw on this device?

  • Guys, 0 – VCC is not a valid RS-232 serial level. If you connected this to a proper RS-232 port, it would not work. Please correct this in the spec as it is misleading and some people would take it to mean you can connect it to a PC or something similar directly.

    RS-232 specifies that the voltage must swing between a negative voltage and a positive voltage to represent logical 0’s and 1’s. The minimum swing normally accepted for this is from -5V to +5v with anything in between being ignored (i.e. 0V).

    • It is RS232 TTL

      • My vote is for “TTL RS232” or “RS232 TTL” because it’s an unambiguous oxymoron.

        Anyway, there also doesn’t appear to be a crystal on the board, which means the comms are using the PIC intosc clock, so at the rated temperature extremes the comms rate can be far enough out of spec that it will fail. It’ll probably work Ok in the 0-60C range.

      • Sorry, but no it’s not.

        TTL == Transistor to Transistor Logic

        RS-232 == A standard defined by the Electronic Industries Association for the signalling and voltage levels of serial communications.

        All serial communications are not RS-232.

        • You are correct of course but we do need a good name for the really common “async serial using TTL voltage levels” interface. I see people use “RS-TTL” for it sometimes. “TTL-level serial” is maybe less slang-y and still gets the point across.

          • I’ve seen it called “UART”, or sometimes “TTL-level UART”. But, RS-232 certainly does imply higher voltages (+/-15 volts).

  • I believe the memory chip can be purchased here: http://www.digikey.com/product-detail/en/AT45DB321D-SU/AT45DB321D-SU-ND/1886162

Customer Reviews

No reviews yet.