Introduction: AvoRipe - Checking If Your Avocado Is Ripe
It happened to everyone, you buy an avocado, it's not ripe yet. A few days pass by, and by the time it's ripe you have forgotten about it... and in a few days, it may go bad!
lucky for you we designed and built AvoRipe, a device that checks your avocado twice a day, or on-demand, sends you a notification to your smartphone if your avocado is ripe and allows you to track the softness of your avocado over time.
Who are we?
Proudly created by Elad Goldberg and Eden Bar-Tov a from IDC Herzliya in McCann Valley, Mizpe Ramon and the media innovation lab at IDC (MiLab). A practical thanks to Zvika Markfeld, of ForRealTeam, for teaching us everything about IoT, supplied us with all the equipment and went with us to the desert, where we built most of this device.
Special thanks to Instructables and Thingiverse, for giving us some inspiration and ideas and to this guy that designed a 3D model that we used in our device.
this is the list of things that we used, needless to say, that every component here is replaceable and was chosen mostly by the availability to us in the time of making this project.
Micro-Controllers, boards, and shields
- 1x ESP8266 boards (we used LoLin-made WeMos D1 minis)
- 1x D1 Mini servo Shield
- 1x Micro-USB Cable
- 20 x jumper cables
- 1 x 10K Ohm resistor
- 1 x Breadboard
- 1 x Servo motor (we advise on a robust one, from our experience the little ones sometimes won't do)
- 1x Thin Film Pressure Sensor Force Sensor
- 1x RGB Color Detector Using TCS3200 Sensor Module
- 1 x Smart Box
- 7x rings that will form a stand
- 2x 70X100 cm
- Avocado Griper (originally Petri Dish Gripper that we found here)
Step 1: Understanding the Device and Data Flow
The AvoRipe is designed to check your avocado's ripeness twice a day (morning and evening) and it can also check it in a push of a button on your phone whenever you want wherever you are!
If the avocado is ripe (by color and softness) than a push notification will be sent to you by the BLYNK app letting you know it is time to eat your delicious avocado.
Since we are advocates of data to the people, we also build a dashboard using AdafuitIO that will keep track of your avocado's progress (softness level, current color, and ripeness) in order to keep you up to speed.
Step 2: Building the Parts
- After printing the parts of this 3D model, and the 70x100 mm plastic square
- assemble the 3D model as seen in the original designer's instructions
- since we use a bigger servo, we won't be using the biggest part of the model to keep the servo in place, instead, we'll use the 70x100 mm plastic square and glue them together as seen in the picture.
- after a lot of trial and error, we came to the conclusion that some duct tape and a little weight from above can go a long way into smoothing things out - so we recommend using something heavy to put on the top part - we used play-dough but it doesn't really matter.
- we used some duct-tape to soften the blunt plastic claw so the avocado will be cozy and we connected the force sensor to one of the arms.
- after inserting the light sensor inside the largest ring (we suggest to drill a small hole for the jumpers to go through) glue together all the rings until you reach the desired height.
we used makercase to make the box, and assemble it. the box gives us a hight boost for the claw and also a place to store the wemos circuits
Step 3: The Circuit
In this step, we will connect all the sensors.
- Connect VCC to + in the breadboard.
- Connect G and A0 to the 10K Ohm resistor.
- Connect the other resistor leg to - in the breadboard.
- Connect the VCC to + in the breadboard
- Connect the Ground to - in the breadboard
- and connect the source to D8
RGB sensor (TCS3200):
- Connect the S0 to D4
- Connect the S1 to D3
- Connect the S2 to D6
- Connect the S3 to D7
- Connect the out to D5
Step 4: Required Software
Install Arduino IDE:
Touch the QR-code icon and point the camera to the QR code below
after that send yourself the authentication code (we will use it in the next step)
Step 5: Dashboard
Create an account: https://io.adafruit.com
Go to "Feeds" and create 3 new feeds:
Then, go to the "Dashboard" tab and create a new dashboard.
After the dashboard is created, enter the dashboard and add 3 new blocks using the "+" button:
1. A line chart, and add the squishiness feed to it, that block will show the avocado squishiness progress over time.
2. A color picker, and add the avocadoColor feed for it. that block will show the avocado's color.
3. An indicator, and pick the isRipe feed for it. that block will measure whether the avocado is squishy enough to be determined ripe. make sure to set the condition in this block to "=", and the value to 2.
Step 6: Code
The code is attached, hopefully, you will find it easy to use (we tried to document it as much as possible).
Open Arduino IDE and import the code, make sure that you are working on the right board (use Tools -> board)
run serial monitor (CTRL+SHIFT+m) and see the angle of the servo and the force applied to the sensor at every stage.
When you are running the serial monitor, make sure you are on 9600baud.
Modify all are places in the code you need to modify, it's well commented in the code (mostly your WiFi details, adafuitIO, and BLYNK authentication).
We suggest that you calibrate the value of the force needed to decide that an avocado is ripe after you test a few hard and a few ripe avocados and find a sweet spot (we have learned that every set up is a bit different since the force sensor is pretty delicate).
We also suggest that you calibrate the Color sensor. You can do that by opening the serial monitor (CTRL+SHIFT+m) in the Arduino IDE and then entering "c" in the upper line. after that, just follow the printed instructions in order to calibrate the sensor.
Step 7: BLYNK App and Notification
In the BLYNK app, make sure the timers are set to the desired time and that your device allows notifications from the app.
A little explanation about how the BLYNK app and the code work together:
we have set a virtual pin (V0) that is being checked constantly by the wemos, the app will change it from 0 (don't check avocado ) to 1 (do check avocado) when:
- the on button is pushed (make sure to push it to off afterward)
- one of the timers sets off.
we set another virtual pin (V4) will determine if the avocado is ripe (V4 = 2) or isn't ripe (V4=1 ) this will be determined inside the wemos and will be sent to the app.
Also if the avocado is ripe the wemos will trigger a notification through the app. to learn more about the notification widget check out this link.