Tag Archives: Moo

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 10: Moo 2.0 PCB Modifications

Moo 2.0 Progress

This past week was devoted to mapping out the PCB board (and corresponding circuit schematic) modifications that will need to be made for the next generation Moo: Moo 2.0.  This began with making a component of the Wolverine MCU (MSP430FR5969) 48-pin QFN package.  I created a schematic symbol for the MCU from the datasheet and used the component wizard in Altium 10 (virtual connect to CAEN machine) to generate the corresponding footprint from the dimensions indicated in the datasheet.

After creating the component and swapping out the existing MSP430F2618 64-pin PM component from the schematic, I have begun slowly making the corresponding connections with the rest of the circuit board.  While some of the connections are trivial (Vss, Vdd, etc.), several of the pins are defined and placed differently on the new MCU (ADC ports, crystal, etc.).  It is worth noting the main differences between the two MCUs and what modifications we will need to make to the board. I believe that updating the schematic as well as the firmware to operate on the new platform will be far more challenging than rerouting the physical traces on the PCB board and is more prone to error, as well.  I have created the following (on-going) google doc to keep track of the design changes for the Wolverine chip on a pin-by-pin basis.


Next Steps for Moo 2.0

  • continue to read through Wolverine MCU user guide and datasheet and make appropriate modifications to PCB schematic
  • continue to read through MSP430 design basics for more info on how firmware/hardware works
  • Verify schematic operation with Denis, TI folks (?), and others
  • Begin placing and routing new MCU on board

Applications of current Moo 1.1

Detecting Human Motion via tag rate

One potential application for the current Moo devices is using the inherent drop in tag rate of the Moo devices in the presence of humans to detect motion in a room.  Essentially, if a human were to stand between the reader and Moo devices, the transmission rate would change (i.e. drop to zero), thus behaving almost as a binary sensor to determine whether a human being is present or not.  I ran a simple experiment to verify that the tag rate will indeed change (https://docs.google.com/a/umich.edu/document/d/1htijqlbp-M36Qd0hf9DxoLl7tm29m0e1s7DlHBi1jOA/edit) in the presence of a human.  Building on this idea, I also ran an experiment using multiple reader antennas and multiple Moos in a straight line to see if it is possible to track human movement in a particular direction.  This experiment was also documented (https://docs.google.com/a/umich.edu/document/d/1L3HcSI5A6K1BFru7CkutJnyPxbUT-ZbOi7nSuUgQATg/edit).  However, the results were less illuminating because it the multiple antennas made it difficult to isolate the attenuation from human presence).

Week 9: Further Lab experiments with Moo

Last week was shortened due to the 4th of July holiday.  On Monday, July 1st 2013, Denis placed three additional Moos in the 9th row of the rear wall and one Moo on the 9th row of the side wall.  He placed the Moos such that an antenna (half ground and half signal) would be poking into an empty cinder block (note there is very little clearance).  We are hoping that this orientation may allow us to better communicate  with the reader during the curing process by mitigating the effects of attenuation.  In our laboratory experiments, we found that if the signal antenna is poking out of a fully submerged Moo inside water, we can still get a reading.

Inside the lab, Mike and I performed some additional experiments with the Moos to better understand how they would respond in two new environments: subzero temperature inside a mini-fridge and submerged inside wet sand.

Fridge Experiment (7/1/13)

  • We placed a Moo inside of the fridge in a relatively static position along with the reader.
  • Logged data and recorded observations (see google doc Moo/Experiments).
  • TODO: plot data using R (Denis)
  • Observations: Noticed a sudden drop in tag rate several times during experiment.  Not sure what was causing this – maybe a subtle shift or moisture from the fridge.  When opening the door and closing it again or repositioning the Moo inside fridge, we were able to get rate back.

Wet Sand Experiment (7/1/13)

Water Experiment (7/3/13)

  • placed Moo inside very small puddle of water with antenna underneath.  No tag rate as long as water is barely touching the signal (right) antenna.
  • Moo Tx_counter resets after pulling Moo out of water (even after very short amount of time).  This implies that the Moo is not able to receive power from reader nor communicate with water because volatile memory is reset.
  • Ground antenna can be completely submerged inside water without affecting the tag rate.

Possible Ideas to improve communication

  • Measure length of dipole antenna (as a multiple of lamba).  How would performance be affected if we increased (maybe doubled) the length of the Moo antenna.  Re-solder a longer antenna on to the Moo and measure performance affects.  Who is the expert on this? Post question to the Wisp forum.

Reading this Week (with Notes):

Radiation and Antennas (chpt. 9) of Emag textbook: basic principles of antenna design (includes dipole antennas)

  • Most effective performance (max power density) when object is placed at 90 degrees off of dipole axis (i.e. perpendicular position).
  • Current flowing through dipole antenna has symmetrical distribution wrt center of dipole and current is zero at its ends.
  • [Impedance Match] to maximize power transfer to the load, the load impedance must be chosen such that ZL = complex conjugate of Z in (i.e. RL = Rrad and Xl = -Xin).
  • Friis Transmission Formula: Power transfer ratio P_received/P_transmit = Gt*Gr*(lambda/4*pi*radius)^2.  (i.e. Inversely proportional to radial distance squared)

Next Steps (??)

  • begin development of Moo 2.0 PCB Board modifications (have finished and sent before August)
  • begin making poster for ESWeek.  Gather Notes & place info inside google doc.  What editor should I use? LaTeX?  Some Ideas on general format and structure?
  • Test other ideas to improve tag rate before side wall and front wall deployment begins (roughly 2 weeks from now).

Week 8: Moo Concrete + Tag Rate concerns

Last week was relatively slow in comparison to the week before.  Due to rain plus other delays, the contractors were not able to make much progress on the house and we were not able to deploy any additional Moos.  However, this gave us some time to go over to the house to investigate why the the Moos that we currently have in the wall are not transmitting data back to the readers.  Other than one lone tag transmission from the far right Moo on the rear wall, we were not able to get any readings.  While it is expected that the concrete mixture will attenuate the signal, we are still hoping that the tag rate might improve as the concrete dries further.  This has led us to investigate new approaches to getting around this issue.

Possible solutions to improving Moo penetration as of right now:

1. Adding an air-gap around the Moo antennas (possibly using a straw or other contraption to prevent the concrete from hardening right over the antenna).  We found that the tag rate does not suffer nearly as much when the Moo has some air separation.

2. Lengthening/altering the Moo antennas to peak out of the empty cinder blocks.  Since the antenna length is inversely proportional to the transmitting frequency, this may pose some issues.

3. Modifying the transmitting frequency to improve tag rate. While we are bound within certain limits and cannot arbitrarily change the frequency (need a new radios), we may find that there is a certain frequency that penetrates through concrete much better.  The theory tells us that the lower the frequency the better it will penetrate through certain materials.  I will continue to read up on some of the theory behind antenna and RFID design.

Also, it would be nice to know with more certainty if the Moos are not being powered sufficiently or if the problem lies with actually transmitting the data back to the reader.  It will be hard to test this, but I think we could perform an experiment with an unpotted Moo that we probe with the Fluke to see how Vdd is affected by the the water.  We will need a bag to prevent the equipment from getting wet.

Additionally, last week I made some final revisions to the following two google docs regarding the potting process as well as more info on the concrete and temperature measurement philosophy.

1. https://docs.google.com/a/umich.edu/document/d/16Wkrig_IKuzrpk8N1KOeCJ-F8KR8KhrSXs1LUeLVyjw/edit#heading=h.pfvqeful6fy1

2. https://docs.google.com/a/umich.edu/document/d/17-RQcx9tDLwJc1nJJYHpBYMYCrXHmBGo6Rju0_xRYmU/edit

Next steps

1. read more articles on RF signal basics and their properties. (e.g. http://my.safaribooksonline.com/book/certification/cwna/9780470438909/radio-frequency-fundamentals/radio_frequency_behaviors)

2. perform some experiments with air-gaps and/or metal backing to see how tag rate is affected.

Week 7: Moo Concrete Deployment [On-site]

Last week was spent mostly on-site at the house setting up the readers and Moo devices for deployment.  We began by first flashing the 20+ working Moos from the lab with the latest working firmware (see past post for details).  Half of the Moos were flashed to default to a temperature sensor and the other half defaulted to the accelerometer sensor.  After recording the status of each device and encoding its unique ID type in the EPC field, Denis began epoxying the devices to ensure their protection from the elements.  Image

After epoxying the devices, we ran some tests to see how water and moisture would affect the tag rate and overall communication with the reader.  We found that when the Moo is completely submerged in water it is not able to communicate with the reader.  This motivated us to perform some additional experiments to see how the the tag rate would vary with the moisture content of concrete.  After obtaining some wet concrete (mixed with pebbles instead of sand), we performed an experiment to see how the Moo would perform as the concrete dried.  We used the thermal chamber (at 65 degrees) to speed up the drying process.  We found the tag rate increase as the concrete began to dry.  We plan on using this test as a baseline for what to expect from the actual deployment process.  Details of the experiment available below.



After purchasing all of the necessary equipment from Home Depot (Plywood, electrical tape, zip ties, power cord extensions, ethernet cables, etc.), Denis constructed the stand to hold the antenna and readers in a vertical position at various heights (2 ft, 4 ft, and 6 ft).

Photo Jun 19, 8 22 52 AM

The rest of the week was spent on-site setting up the readers at the house and waiting as the concrete blocks got built up to a sufficient level on the back wall.  We agreed upon the following positioning for the Moo devices in order to give us maximum coverage and provide measurements near where the wall had cracked in the past.

Moo Placement – Rear Wall View

We decided to use the duraWall ladder (placed every 2 ft high) to attach the Moo directly to the inner front face of the cinder block via a zip tie.  This allowed us to place the Moos as close as possible to the readers – reducing signal attenuation from the concrete.

Photo Jun 21, 9 58 27 AM

Rear wall before cinder blocks got laid (Wednesday).

Photo Jun 19, 12 59 45 PM

Once the contractors were ready to pour the concrete, we immediately began the data logging from the readers to hopefully capture the curing temperature curve of the concrete.

Photo Jun 21, 11 08 06 AM

First batch of Moos get deployed inside concrete (two temperature-defaulted Moos plus a supercapped Moo).  Note: we experienced more difficulty when trying to reader from the supercapped Moo (middle antenna).

Photo Jun 21, 10 37 08 AM

Second round of Moo’s get deployed at 4 ft high level (one accel and one temp)

Photo Jun 21, 4 41 51 PM

Note: we are limited by the number of reader that we currently have on-site (four total) and thus we will not be able to take measurements from more than four Moos at any one point in time.  Since the wall is being slowly built up (and hence cured in the mean time), we are hoping to capture most of the curing process by repositioning the reader antennas as the concrete dries.

Photo Jun 20, 1 29 39 PM

Next Steps

In the coming week, we will continue to remain on call as the contractors build up the rear wall to the 9th row of cinder blocks.  After this point, all eight Moos will have been implanted in the back wall and we can record all necessary data.

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.