Data Logger - Atlas Scientific ENV-32X

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.

  • 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
  • ≈15x20x5mm

Data Logger - Atlas Scientific ENV-32X Product Help and Resources

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels

Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

3 Electrical Prototyping

Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Member #23051 / about 8 years ago * / 2

    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.

  • Member #502146 / about 9 years ago / 1

    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:

  • Member #463048 / about 9 years ago * / 1

    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);
      ReadBuffer += outchar;
      if(outchar == '\r') {
      ReadBufferCheck = true;
    if (Serial.available()){
      char inchar = (char);
      WriteBuffer += inchar;
      if(inchar == '\r') {
      WriteBufferCheck = true;


    if (ReadBufferCheck == true){

    ReadBuffer = "";
    ReadBufferCheck = false;


    if (WriteBufferCheck == true){

    WriteBuffer = "";
    WriteBufferCheck = false;



    • Member #532932 / about 9 years ago / 1

      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!

  • Member #408716 / about 10 years ago / 1

    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?


  • Member #78736 / about 10 years ago * / 1

    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:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

  • I Dream of JNE / about 10 years ago * / 1

    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.

    • I Dream of JNE / about 10 years ago / 1

      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.

      • JPNYC / about 10 years ago / 1

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

  • 13th / about 10 years ago / 1

    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?

    • 13th / about 10 years ago / 1

      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).

  • Member #224979 / about 10 years ago / 1

    Anyone know the power draw on this device?

  • Sgt_Lemming / about 10 years ago / 1

    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).

    • rj44319 / about 10 years ago / 1

      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.

      • Sgt_Lemming / about 10 years ago / 1

        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.

        • WimL / about 10 years ago / 1

          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.

          • Ted M / about 10 years ago / 1

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

  • pphillipsud / about 10 years ago / 1

    I believe the memory chip can be purchased here:

Customer Reviews

No reviews yet.