Tag Archives: concrete deployment

Week 13: Last Moo deployed + TerraSwarm Abstract Submission

Last week, the contractors built-up the front wall of the basement and the final Moo (#13) was placed at the ninth course.  This marks the end of the two-month deployment process!  The placement of the Moos on the front wall can be found here: https://docs.google.com/a/umich.edu/drawings/d/1q02Q3-czy8DOJkogW27gtXUN2Q1CBVJklI0ARvrMgCk/edit

Remarks on the Front Wall Deployment

  • All Moos on front wall were placed with the signal antenna poking as far as possible into an empty cell.
  • Tin foil was used inside the empty cells to help aid backscattering of the signal on all Moos on the front wall.
  • Able to successfully read from the tested Moos on the front wall (#5 and #29) with max rate of 5 tags/sec.
  • repositioned the reader to read from Moo #29 instead of Moo #25 on the side wall (stopped responding when additional blocks were laid).

Picture of Moo #29 at third course of front wall:



  • bring additional (white square) antenna on-site so that we can collect from more of the newly placed Moos.
  • analyze current Moo data more thoroughly (Denis).

Re-flowing (Reviving) Non-working Moos in the lab

After testing the nonworking Moos from the lab, I was able to diagnose why some of them were not working.  I noticed that some of the Moos behaved better when adding a little pressure on certain parts of the circuit.  For example, some of the components did not seem to be completely seated on the PCB board and likely not fully connected.  I re-soldered the components in question and was able to get seven additional Moos working.

Observations from Tests

  • some Moos only work when JTAG is plugged in for power.  Will need to re-analyze why these are not generating enough power from the charge-pump circuit.
  • some Moos are able to generate 5.5V+ on Vout but still cannot communicate back to the reader.

TerraSwarm Submission

The remainder of the week was spent writing up a 1-2 page Abstract for the ESWeek terraSwarm workshop in September.  Mike and I collaborated on the submission and were able to finish two abstract submissions before the August 2nd deadline.  A sample of the two papers for ESWeek can be found in the google drive under Moo/Posters_Papers.

1st Abstract TitleThe Moo and Cement Shoes: Future Directions of a Practical Sense-Control-Actuate Application

2nd Abstract Title: An Attacker-Centric Threat Model for Actors in the Swarm

Next Steps

Picking up where I left off, I will try to have the Moo 2.0 schematic finished later this week so that I can start laying the new board out.

Week 11: Moo 2.0 Schematic Modifications (cont.)

Roughly half of last week was spent working on the Moo 2.0 Schematic modifications and the other half was spent either on-site or in the lab experimenting with ways to improve the tag rate in mortar.  I will first discuss the status update on the concrete deployment project and go into some detail about the Moo 2.0 modifications.

Concrete Deployment Update

Monday morning, Mike and I went over to the house to deploy two additional Moos inside the 3rd course of the sidewall (Moos #29 and #214).  Both Moos were placed with the signal antenna sticking slightly out of the cinder block.  We found that we were able to get a pretty good tag rate with #214 both before and after the remaining wall got built up.  However, we struggled to get a reading from #29 even before more cinder blocks were laid on top.  This motivated us to research ways in which we can improve the tag rate inside wet mortar.  After obtaining a sample of wet mortar from the construction site, Mike and I ran some additional experiments in the lab to see if you could improve the communication inside mortar.  The following google doc summarizes our findings and observations from this experiment: Tin Foil & mortar experiment

Summary of experiment:

  • placing tin foil behind the full submerged moo with 4 inch air-gap improved the tag rate from 0 (no reading) to 16 tags/sec (max).  First time getting a reading from a completely submerged moo inside wet mortar!
  • not able to get a reading when tin foil was placed directly on top of the moo (i.e. no air-gap separation)
  • experiment yielded similar results when performed outdoors (with added ambient noise)

This prompted Denis to place two additional (super-capped) moos with tin foil surrounding the inner walls of the two adjacent (non-filled) cinder blocks on the 6th course of the sidewall.

The following day, Mike and I performed some additional experiments outside of the lab using a cinder block filled with wet sand and a sheet of tin foil placed halfway through hole as well as on the two adjacent openings (see picture below).  In this orientation with one moo antenna sticking out, we were able to get a tag rate of 19.5 tags/sec.


Later that day, Mike, Denis, and I went back to the house to reposition the readers and map out the moo placement on the front wall.  While walking around with the reader and power cords inside my backpack (aka “Ghostbuster pack”) and my laptop in my hands, we were able to scan the moos one-by-one  inside the walls for signs of a tag rate.  We were able to successfully get a tag rate from the following moos

Rear wall: #23 (max rate of ~6), #17, #26

Note: we observed that the reader antennas performed best in certain orientations and at very specific positions against the wall.  Denis placed tape on the walls indicating their orientation.  Also, we noticed that certain antenna types worked best with certain moos.

Side wall: #25 (max ~40), #214 (max ~60), and #19 (stray moo)

We repositioned the readers to record #23, #25, and #214 with hopes of catching the curing process.

Update from Mike (on July 20, 2013 at around 1pm):

#214 had a reading of 1.2 tags/sec

#25 has no reading (last seen on 7/17 at 10:06pm)

#23 has a reading of 21.9


Moo 2.0 Improvements Update
For the rest of the week, I continued to read through the MSP430 Book, Wolverine Datasheet and user guide as well as the F2618 user guide and datasheet to better understand how the MCU functions. I have continued to make modifications to following google doc (Schematic Design Notes) tracking my notes for easier reference later on. Below is a screen capture of the schematic as of this writing.


I have placed the connections for power (AVss, DVss, gnd), the crystal oscillator (LFXIN and LFXOUT) along with their external load capacitors (see google doc), and the JTAG connections (TCK, TDO, TMS, TDI, RST, and TEST). Note: the TEST pin is used on the F5969 to enable the JTAG pins. This pin was not required on the F2618 because the MCU’s JTAG pins were dedicated (aka not shared with GPIO pins). We will have to modify the Program header board schematic to accommodate for this additional pin (see below).

As can be seen from the schematic, I still need to route the connections for Transmit, Receive from the RF circuit, ADC inputs (temp, accelerometer, etc.) and the supervisor interrupt.  I have begun contacting Jeremy Gummerson with questions regarding the old design as well as suggestions for the new one.


Week 6: Moo Concrete Deployment Cont. (Troubleshooting)

This past week was spent mostly updating the current Moo firmware and troubleshooting issues with the temperature and accelerometer sensor readings in preparation for the concrete deployment next week.  Originally, we had intended on modifying the software from the last deployment, which used a remote procedure call (rpc) command to toggle between three different applications: kill, beep, and read temperature.  However, after struggling for several days to get the firmware to successfully report back the accelerometer (and temperature) readings via the 2B data field (known as ackReply), we decided to completely change direction with how we programmed the Moo devices.  After a string of emails between Ben, Shane, and Andres, I requested a meeting to iron out some of the details that may have been lost over email communication.

Mike and I worked on adding functionality to toggle the accelerometer and external temperature sensors directly by using the existing application (SENSOR_DATA_IN_ID) and calling a new sensor header file (sensor.h) which includes the required functionality to initialize, read, and sample both of these sensors.  After gaining access to the Umassmoo GitHub page, we created a new branch (Moo_Concrete_MI) and committed all of our changes directly to the online repository.  A link to the GitHub branch with the most up-to-date version of the software can be found here.  Note that this software was modified from the software used to run the “Saturn Demo”.  Some superficial changes were made to the Impinj Reader Software Application in order for reader to interpret the 12-bit ADC values correctly.  Using the sensor_counter along with a simple modulus operation, we were able to achieve the toggling function in a few lines of code.  The appropriate sensor data is then sent back via the EPC directly (6 B of data for accelerometer and 2B for temperature).  The first byte indicates the sensor type (0x0B for Accelerometer and 0x0F for external temp sensor).  Though this solution is slightly less elegant than sending a rpc command directly to the Moo device, it requires less memory overhead and results in a significantly better tag rate at short distances from the reader.  Since the concrete will increase attenuation of the signal from the reader, it is very important that we keep the communication between the reader and the Moo devices simple to avoid excess energy consumption.

After logging some “noisy” temp data from the Moo devices, I did some further investigating to figure out some of the sources of the sensor variations and why they seemed to be inconsistent between trials.  I found that the temp Data appeared different if one were to vary the tag rate (i.e. distance from the reader) or step-through the code with the JTAG Debugger.  This led me to further probe several of the pins on the Moo device in order to get to the root of the problem.  Using the Fluke multimeter, I looked at Vreg, Vout, and Temp_Data_Analog to see if these voltages were consistent between experiments.

Below are a list of peculiarities that may need to be addressed in future revisions of the hardware and/or software.

1. Vreg (i.e. output of the voltage regulator) operates at 3.4 V when the JTAG Debugger is connected as opposed to it’s regulated value of 1.8 V when powered strictly by the reader.  Even when changing the configuration of the jumper on the Moo header board, Vreg remains at around 2.8 – 3.0 V when the JTAG device is plugged in.  This will likely cause some variations in the sensor readings (due to multiple power levels) and overall performance of the Moo devices when plugged in.  In order to minimize variations between the plugged-in vs. reader-powered performances of the Moo, we should consider connecting the JTAG (3.4 V) power supply to Vout (i.e. input to the regulator) as opposed to the regulator output directly.  This will allow the regulator to step-down the voltage to 1.8V for the MCU and sensor periphals (hence keeping the operation more consistent).

2. The MSP430 Chip supports an internal Voltage reference of either 2.5V or 1.5V that can be configured via the software and used to keep ADC and sensor readings consistent.  However, I noticed that originally the External Temperature Sensor function (adapted from quick_accel_sensor.h) was set to use the 2.5V volt reference instead of the 1.5V for ADC sampling.  This poses a problem because the functionality (and hence temp sensor data) will be different based on whether or not the JTAG device is plugged in (i.e. the power supply of the MCU changes).  I was able to confirm these differences using some simple math (NADC = 4095 * Vsense/Vref), and modified the code to work with the 1.5V reference generator in order to keep the measurements more consistent.  Note: A 2.5V reference generator will likely get clipped to the voltage supply (Vss = Vref = 1.8V) on the chip and not return a consistent measurement.  I fixed this problem by making a simple modification to the temp sensor code.

3. In the user manual for the MSP430 chip, it mentions that a 10 uF cap in parallel with a 0.1 uF cap should be connected between Vref and AVss- on the chip in order to keep the internally generated voltage more stable.  I did not see this cap present on the schematic and/or PCB board.  While I do not find it to be of critical importance, we should make sure to include this on the next generation of the Moo.

I also spent some time last week modifying the sensor.c file to sample from the internal temperature sensor on the MSP430.  The code was adapted from the int_temp_sensor.h file found on Hong’s old computer.  However, I was not able to get the code to run correctly.  Specifically, the code gets stuck in a infinite loop waiting for the ADC to sample the voltage from the ADC and set the ADC12BUSY pin low.  I have requested a copy of the internal temp sensor code that was used by Ben in the past.

I performed some thermal chamber experiments to help further validate (and/or calibrate) the external temperature sensor on the Moo devices.  I placed the Reader Antenna and Moo device directly in the chamber and swept the temperature from 25 deg C to 60 deg C with a rate of 3 deg C/min and let the device cool back down to room Temp.  The details of the experiment can be found below along with a plot of the data.  As can been seen from the plot, the ADC value (and hence voltage) do indeed decrease as the sensor is heated up.  This agrees with the temp sensor spec sheet provided here.  From the ADC value I was able to to calculate the analog voltage of the temp sensor using the equation: V_temp_analog = 1.5 * ADC_Value/ 4095 and then calculate the expected temperature using the look-up table provided in the spec sheet (using the lowest gain setting).  At 26 deg C and 60 deg C, I found that the expected temp agreed with the actual temperature with less than 2 deg error.

Thermal Chamber Experiment

thermal chamber plot

Next Steps to be completed before Deployment

1. validate all working Moo devices with latest firmware.  Make sure to flash devices with correct serial # (change MOO_ID in mymoo.h to correspond to correct tag identifier listed on device).

2. re-solder antennas onto semi-working (yellow) Moo devices and retest functionality.  record results in google doc.