You could do this by adding an extra column to your cart to indicate if an item should have free shipping.
With the column added you will need to update the add to cart server behaviors to bind a value to this new column, you could set it to 0 for items that will not have free shipping and 1 for the others.
You will need a new shipping charge rule. In your new shipping charge rule in the calculation portion you would say 'based on items with a specific value', then choose 'total of total price where <your new column> has a value of 0'.
This way you would have a shipping charge rule that will only apply to items that you want to charge shipping on. The total price is just one of the columns you could base the shipping on, you could also choose to use the weight column to devise your shipping costs. Let us know how this will work for you.
This way the