{"id":14077,"date":"2016-03-10T10:56:13","date_gmt":"2016-03-10T02:56:13","guid":{"rendered":"http:\/\/www.seeedstudio.com\/blog\/?p=14077"},"modified":"2018-10-19T10:21:18","modified_gmt":"2018-10-19T02:21:18","slug":"tutorial-grove-connector-project-examples-for-raspberry-pi-arduino","status":"publish","type":"post","link":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/","title":{"rendered":"Tutorial: Grove Connector Project Examples for Raspberry Pi \/ Arduino"},"content":{"rendered":"<p>At SwitchDoc Labs, we have been building prototypes for engineering projects for many years. Sometimes they move to being a product, sometimes not. We have been on the lookout for a good pluggable prototyping system that allows swap outs of parts and yet has a good mechanical interface. We have looked at a variety of systems over the years. What did we want? We wanted something that is supported by a number of manufacturers, no licensing fees involved, easy for beginners and younger folks to use, straight forward enough so we can build boards without much problem and flexible enough for use with all three of the Raspberry Pi, Arduino and the ESP8266. We have now found such a system that has some significant support in the industry.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-medium wp-image-14079\" src=\"\/wp-content\/uploads\/2016\/03\/Figure-1-1-300x171.jpg\" alt=\"Figure-1-1\" width=\"300\" height=\"171\" \/><\/p>\n<p>All of the parts in this tutorial are available from <a href=\"http:\/\/www.seeedstudio.com\/\" target=\"_blank\">www.seeedstudio.com<\/a> or <a href=\"http:\/\/www.robotmesh.com\/\" target=\"_blank\">www.robotmesh.com<\/a>.<\/p>\n<p>This is Part 2 of this series.<a href=\"http:\/\/www.seeedstudio.com\/blog\/2016\/03\/09\/tutorial-intro-to-grove-connectors-for-arduinoraspberry-pi-projects\/\" target=\"_blank\"> Part 1 describes the whole Grove connector system<\/a>.<\/p>\n<p>Part 3 will describe a more complex Grove application using the new <a href=\"http:\/\/www.switchdoc.com\/grove-i2c-4-channel-mux-board-wstatus-leds\/\" target=\"_blank\">Dual Grove\/Pin Headers I2C 4 Channel Mux.<\/a><\/p>\n<h3>What is the Grove System?<\/h3>\n<p><img decoding=\"async\" class=\"aligncenter size-medium wp-image-14080\" src=\"\/wp-content\/uploads\/2016\/03\/FullSizeRender-10-1-300x179.jpg\" alt=\"FullSizeRender-10-1\" width=\"300\" height=\"179\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/FullSizeRender-10-1-300x179.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/FullSizeRender-10-1-1030x614.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/FullSizeRender-10-1.jpg 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><a href=\"http:\/\/www.seeedstudio.com\/depot\/s\/Grove.html?search_in_description=0\" target=\"_blank\">Grove<\/a> is a modular, standardized connecter prototyping system. Grove takes a building block approach to assembling electronics. Compared to the jumper or solder based system, it is easier to connect, experiment and build and simplifies the learning system, but not to the point where it becomes dumbed down. Some of the other prototype systems out there takes the level down to building blocks. Good stuff to be learned that way, but the Grove system allows you to build real systems. It requires some learning and expertise to hook things up.<\/p>\n<p>The Grove system consists of a base unit and various modules with standardized connectors.<\/p>\n<p>The Base unit, generally a microprocessor, allows for easy connection of any input or output from the Grove modules. and every Grove module typically addresses a single function, such as a simple button or a more complex heart rate sensor.<\/p>\n<p>You don\u2019t need a Base unit to connect up to Grove modules. You an use a cable (Grove to Pin Header Converter) to run from the pins on the Raspberry Pi or Arduino to the Grove connectors. That is what We do in the SunRover project and in the examples below.<\/p>\n<h3>So what is a Grove Connector?<\/h3>\n<p><img decoding=\"async\" class=\"aligncenter size-medium wp-image-14081\" src=\"\/wp-content\/uploads\/2016\/03\/Figure-21-300x254.jpg\" alt=\"Figure-2\" width=\"300\" height=\"254\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/Figure-21-300x254.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/Figure-21.jpg 352w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Figure 2A Grove connector is a four pin standardized size connector used to plug into base units and Grove modules. Figure 1 shows the male Grove Connector. The male connectors come in flat 90 degree versions and vertical versions as in Figure 2. Seeedstudio has the exact dimensions in this specification [ <a href=\"http:\/\/www.seeedstudio.com\" target=\"_blank\">http:\/\/www.seeedstudio.com<\/a>\/<a href=\"http:\/\/www.seeedstudio.com\/wiki\/images\/6\/69\/3470130P1.pdf\" target=\"_blank\">wiki\/images\/6\/69\/3470130P1.pdf<\/a>]. These standardized connectors (common to all types of Grove Connectors) are the key to making this system work. They are keyed to prevent plugging them in backwards, and the four types of connectors (see below) are all designed so that if you plug the wrong type of device into the wrong type of base unit, there is no problem. They just won\u2019t work. This is a good thing.<\/p>\n<p>The one exception would be if you plugged in a 3.3V I2C Grove module that is non-5V tolerant into a 5V I2C Grove connector you could fry the device.<\/p>\n<p>In this post we discuss four simple grove projects.<\/p>\n<h3>Project 1: Connection a Grove Fan to the Raspberry Pi<\/h3>\n<p>We chose three simple, yet visually interesting Grove projects. The first module is the Grove Fan module. It is a Digital Grove module. The wiring was simple. I connected GPIO17 to D0 and 5V and GNDFigure 6 using a jumper to Grove To Pin Header Converter connector cable (always have these handy!). The software was very simple.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-14084 size-medium\" src=\"\/wp-content\/uploads\/2016\/03\/Figure-62-300x225.jpg\" alt=\"Figure-6\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/Figure-62-300x225.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/Figure-62-1030x773.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/Figure-62.jpg 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>#<br \/>\n#<br \/>\n# Test the Grove Fan<br \/>\n#<br \/>\n# Digital Grove Connector<br \/>\n#<br \/>\n# Gnd, 5V, GPIO4, GPIO17<br \/>\n# Grove<br \/>\n# Gnd VCC D1 D0<br \/>\n#<\/p>\n<p>import time<br \/>\nimport RPi.GPIO as GPIO<br \/>\nGPIO.setwarnings(False)<\/p>\n<p>GPIO.setmode(GPIO.BCM)<br \/>\nGPIO.setup(17, GPIO.OUT)<\/p>\n<p>try:<br \/>\nwhile (1):<\/p>\n<p>GPIO.output(17, GPIO.HIGH)<br \/>\ntime.sleep(2.0)<br \/>\nGPIO.output(17, GPIO.LOW)<br \/>\ntime.sleep(2.0)<br \/>\nexcept KeyboardInterrupt:<br \/>\n# here you put any code you want to run before the program<br \/>\n# exits when you press CTRL+C<br \/>\nprint &#8220;keyboard Interrupt&#8221;<\/p>\n<p>except:<\/p>\n<p>print &#8220;other error&#8221;<\/p>\n<p>finally:<br \/>\nGPIO.cleanup() # this ensures a clean exit<\/p>\n<p>&lt;a href=&#8221;http:\/\/www.switchdoc.com\/wp-content\/uploads\/2016\/02\/Figure-11.jpg&#8221; rel=&#8221;attachment wp-att-3352&#8243;&gt;&lt;img class=&#8221;aligncenter size-large wp-image-3352&#8243; src=&#8221;http:\/\/www.switchdoc.com\/wp-content\/uploads\/2016\/02\/Figure-11-1024&#215;768.jpg&#8221; alt=&#8221;Figure 11&#8243; width=&#8221;930&#8243; height=&#8221;698&#8243; \/&gt;&lt;\/a&gt;<\/p>\n<p>&nbsp;<\/p>\n<p>The only tricky part of this is that we use the Try \/ Except block to make sure that the GPIOs are tuned off (actually floating) when our program exits. Otherwise a bug in your code could leave the fan running.<\/p>\n<p>Of course, here is the video:<\/p>\n<p><iframe src=\"https:\/\/www.youtube.com\/embed\/lrJASczDAZw\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h3>Project 2: Connecting an Grove Electroluminescent cable to the Raspberry Pi<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-14086\" src=\"\/wp-content\/uploads\/2016\/03\/Figure-12-1-300x225.jpg\" alt=\"Figure-12-1\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/Figure-12-1-300x225.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/Figure-12-1-1030x773.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/Figure-12-1.jpg 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>The second example is powering an EL (Electro Luminescent) cable using the Grove Digital EL Control. This is a Digital Grove Module. We wanted to use the software PWM (Pulse Width Modulation) toFigure 12 brighten and darken the EL to illustrate a point about the Raspberry Pi. The Raspberry Pi is running a complex multitasking operating system (called Linux) and because of that the software timing for each of the pulses may be delayed by other important things happening inside the operating system. Therefore, you will see it flicker a bit, and differently each time. Using an Arduino or the Hardware PWM would produce a much smoother signal. When you are operating servo motors with software PWM, you will see the same thing in a shaking, almost a jitter, of the servo motor.<\/p>\n<p>#<br \/>\n#<br \/>\n# Test the Grove EL Interface<br \/>\n# Digital Grove Connector<br \/>\n#<br \/>\n# Gnd, 5V, GPIO4, GPIO17<br \/>\n# Grove<br \/>\n# Gnd VCC A4 A5<br \/>\n#<br \/>\nimport time<br \/>\nimport RPi.GPIO as GPIO<br \/>\nGPIO.setwarnings(False)<\/p>\n<p>GPIO.setmode(GPIO.BCM)<br \/>\nGPIO.setup(17, GPIO.OUT)<\/p>\n<p>try:<br \/>\nwhile (1):<br \/>\n# now do PWM on the line<br \/>\np = GPIO.PWM(17, 50) # 50 Hz<br \/>\np.start(0.0);<br \/>\nfor dc in range(0, 101, 5):<br \/>\np.ChangeDutyCycle(dc)<br \/>\ntime.sleep(0.1)<br \/>\nfor dc in range(100, -1, -5):<br \/>\np.ChangeDutyCycle(dc)<br \/>\ntime.sleep(0.1)<br \/>\np.stop()<\/p>\n<p>except KeyboardInterrupt:<br \/>\n# here you put any code you want to run before the program<br \/>\n# exits when you press CTRL+C<br \/>\nprint &#8220;keyboard Interrupt&#8221;<\/p>\n<p>except:<\/p>\n<p>print &#8220;other error&#8221;<\/p>\n<p>finally:<br \/>\nGPIO.cleanup() # this ensures a clean exit<\/p>\n<p>&nbsp;<\/p>\n<p>And a video:<br \/>\n<iframe src=\"https:\/\/www.youtube.com\/embed\/IE29lXWczNU\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h3>Project 3: Connecting an Grove O2 Sensor to the Arduino Mega2560<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-14087\" src=\"\/wp-content\/uploads\/2016\/03\/IMG_7512-300x171.jpg\" alt=\"IMG_7512\" width=\"300\" height=\"171\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512-300x171.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512-1030x587.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>For our third sample project, we decided to connect up a Grove O2 Sensor to the Arduino Mega2560. This is an Analog Grove module. It will work with other Arduino products but the Arduino Mega2560 is IMG_7512the one we had sitting on the bench. Hookup? We used male to male breadboard jumpers to turn the female connectors on the Grove to Pin Header Converter into male headers. A0 (see the Grove Connector Article) went to A0 not the Arduino. Red is connected to 5V and the Black line on the Grove connector goes to GND on the Arduino.<\/p>\n<p>The software is straightforward.<br \/>\n\/\/ test Grove &#8211; Gas Sensor(O2)<br \/>\n\/\/<br \/>\n\/\/ Analog Grove Connector<br \/>\n\/\/ Yellow Connected to A0<br \/>\n\/\/ Red to 3.3V or 5V<br \/>\n\/\/ Black to GND<br \/>\n\/\/<br \/>\n#include<\/p>\n<p>#define Version 11 \/\/ version, 1.0 or 1.1, which depands on your board you use as it is<br \/>\nconst int pinO2 = A0; \/\/ Connect Grove &#8211; Gas Sensor(O2) to A0<\/p>\n<p>#if Version==11<br \/>\nconst int AMP = 121;<br \/>\n#elif Version==10<br \/>\nconst int AMP = 201;<br \/>\n#endif<\/p>\n<p>const float K_O2 = 7.43;<\/p>\n<p>void setup()<br \/>\n{<br \/>\nSerial.begin(115200); \/\/Start the Serial connection<br \/>\n}<\/p>\n<p>void loop()<br \/>\n{<br \/>\nfloat sensorValue;<br \/>\nfloat sensorVoltage;<br \/>\nfloat Value_O2;<\/p>\n<p>sensorValue = analogRead(A0);<br \/>\nsensorVoltage =(sensorValue\/1024.0)*3.3;<br \/>\nsensorVoltage = sensorVoltage\/(float)AMP*10000.0;<br \/>\nValue_O2 = sensorVoltage\/K_O2;<\/p>\n<p>Serial.print(&#8220;Concentration of O2 is &#8220;);<br \/>\nSerial.print(Value_O2,1);<br \/>\nSerial.println(&#8220;%&#8221;);<br \/>\ndelay(1000);<br \/>\n}<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-14106\" src=\"\/wp-content\/uploads\/2016\/03\/600px-O2_figure-1.png\" alt=\"600px-O2_figure\" width=\"600\" height=\"350\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/600px-O2_figure-1.png 600w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/600px-O2_figure-1-300x175.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Results (after just turning it on). Note that it takes 48 hours of warmup before the sensor will be accurate. You can see where we breathed on the sensor to see that it is working.<\/p>\n<p>Concentration of O2 is 19.0%<br \/>\nConcentration of O2 is 19.0%<br \/>\nConcentration of O2 is 19.0%<br \/>\nConcentration of O2 is 19.0%<br \/>\nConcentration of O2 is 18.8%<br \/>\nConcentration of O2 is 18.8%<br \/>\nConcentration of O2 is 18.9%<br \/>\nConcentration of O2 is 19.0%<br \/>\nConcentration of O2 is 19.0%<\/p>\n<h3>Next Up? An I2C Grove Example<\/h3>\n<p>&nbsp;<\/p>\n<p><em>This post is originally from<a href=\"http:\/\/www.switchdoc.com\/2016\/02\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/\" target=\"_blank\">\u00a0switchdoc<\/a>.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>Tutorial part 1:<a href=\"http:\/\/www.seeedstudio.com\/blog\/2016\/03\/09\/tutorial-intro-to-grove-connectors-for-arduinoraspberry-pi-projects\/\" target=\"_blank\">Intro to Grove connectors for Arduino\/Raspberry Pi projects<\/a><\/p>\n<p><a href=\"http:\/\/www.seeedstudio.com\/depot\/Raspberry-Pi-2-Model-B-w-ARMv7-Quad-Core-1GB-RAM-p-2289.html?ref=newInBazaar\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-14180 size-full\" src=\"\/wp-content\/uploads\/2016\/03\/QQ\u56fe\u724720160311093528.png\" alt=\"raspberrypi\" width=\"740\" height=\"287\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/QQ\u56fe\u724720160311093528.png 740w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/QQ\u56fe\u724720160311093528-300x116.png 300w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Raspberry Pi 2 Model B is 9% off, click the banner to product page<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At SwitchDoc Labs, we have been building prototypes for engineering projects for many years. Sometimes<\/p>\n","protected":false},"author":1,"featured_media":14087,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-14077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tutorial: Grove Connector Project Examples for Raspberry Pi \/ Arduino - Latest News from Seeed Studio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Grove Connector Project Examples for Raspberry Pi \/ Arduino - Latest News from Seeed Studio\" \/>\n<meta property=\"og:description\" content=\"At SwitchDoc Labs, we have been building prototypes for engineering projects for many years. Sometimes\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/\" \/>\n<meta property=\"og:site_name\" content=\"Latest News from Seeed Studio\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-10T02:56:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-10-19T02:21:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"684\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"\u884c\u653f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u884c\u653f\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/\",\"name\":\"Tutorial: Grove Connector Project Examples for Raspberry Pi \/ Arduino - Latest News from Seeed Studio\",\"isPartOf\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg\",\"datePublished\":\"2016-03-10T02:56:13+00:00\",\"dateModified\":\"2018-10-19T02:21:18+00:00\",\"author\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/4a6f0df70e5aa1b470083e77a0919ba5\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#primaryimage\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg\",\"contentUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg\",\"width\":1200,\"height\":684,\"caption\":\"IMG_7512\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.seeedstudio.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Grove Connector Project Examples for Raspberry Pi \/ Arduino\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/\",\"name\":\"Latest News from Seeed Studio\",\"description\":\"Emerging IoT, AI and Autonomous Applications on the Edge\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/4a6f0df70e5aa1b470083e77a0919ba5\",\"name\":\"\u884c\u653f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4c87945076c1c9aea5570fea7739e112?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4c87945076c1c9aea5570fea7739e112?s=96&r=g\",\"caption\":\"\u884c\u653f\"},\"url\":\"https:\/\/www.seeedstudio.com\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Grove Connector Project Examples for Raspberry Pi \/ Arduino - Latest News from Seeed Studio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Grove Connector Project Examples for Raspberry Pi \/ Arduino - Latest News from Seeed Studio","og_description":"At SwitchDoc Labs, we have been building prototypes for engineering projects for many years. Sometimes","og_url":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/","og_site_name":"Latest News from Seeed Studio","article_published_time":"2016-03-10T02:56:13+00:00","article_modified_time":"2018-10-19T02:21:18+00:00","og_image":[{"width":1200,"height":684,"url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg","type":"image\/jpeg"}],"author":"\u884c\u653f","twitter_card":"summary_large_image","twitter_misc":{"Written by":"\u884c\u653f","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/","url":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/","name":"Tutorial: Grove Connector Project Examples for Raspberry Pi \/ Arduino - Latest News from Seeed Studio","isPartOf":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#primaryimage"},"image":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#primaryimage"},"thumbnailUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg","datePublished":"2016-03-10T02:56:13+00:00","dateModified":"2018-10-19T02:21:18+00:00","author":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/4a6f0df70e5aa1b470083e77a0919ba5"},"breadcrumb":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#primaryimage","url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg","contentUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg","width":1200,"height":684,"caption":"IMG_7512"},{"@type":"BreadcrumbList","@id":"https:\/\/www.seeedstudio.com\/blog\/2016\/03\/10\/tutorial-grove-connector-project-examples-for-raspberry-pi-arduino\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.seeedstudio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Grove Connector Project Examples for Raspberry Pi \/ Arduino"}]},{"@type":"WebSite","@id":"https:\/\/www.seeedstudio.com\/blog\/#website","url":"https:\/\/www.seeedstudio.com\/blog\/","name":"Latest News from Seeed Studio","description":"Emerging IoT, AI and Autonomous Applications on the Edge","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/4a6f0df70e5aa1b470083e77a0919ba5","name":"\u884c\u653f","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4c87945076c1c9aea5570fea7739e112?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4c87945076c1c9aea5570fea7739e112?s=96&r=g","caption":"\u884c\u653f"},"url":"https:\/\/www.seeedstudio.com\/blog\/author\/admin\/"}]}},"modified_by":"Lily","views":17012,"featured_image_urls":{"full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",1200,684,false],"thumbnail":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512-80x80.jpg",80,80,true],"medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512-300x171.jpg",300,171,true],"medium_large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",640,365,false],"large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512-1030x587.jpg",640,365,true],"1536x1536":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",1200,684,false],"2048x2048":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",1200,684,false],"visody_icon":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",32,18,false],"magazine-7-slider-full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",1200,684,false],"magazine-7-slider-center":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",936,534,false],"magazine-7-featured":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",1024,584,false],"magazine-7-medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",667,380,false],"magazine-7-medium-square":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2016\/03\/IMG_7512.jpg",675,385,false]},"author_info":{"display_name":"\u884c\u653f","author_link":"https:\/\/www.seeedstudio.com\/blog\/author\/admin\/"},"category_info":"<a href=\"https:\/\/www.seeedstudio.com\/blog\/category\/news\/\" rel=\"category tag\">News<\/a>","tag_info":"News","comment_count":"0","_links":{"self":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/14077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/comments?post=14077"}],"version-history":[{"count":11,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/14077\/revisions"}],"predecessor-version":[{"id":14181,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/14077\/revisions\/14181"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media\/14087"}],"wp:attachment":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media?parent=14077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/categories?post=14077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/tags?post=14077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}