{"id":1993,"date":"2015-08-21T22:17:10","date_gmt":"2015-08-21T14:17:10","guid":{"rendered":"https:\/\/gergely.imreh.net\/blog\/?p=1993"},"modified":"2015-08-22T22:55:47","modified_gmt":"2015-08-22T14:55:47","slug":"pcieduino","status":"publish","type":"post","link":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/","title":{"rendered":"My first non-trivial hardware: PCIeDuino"},"content":{"rendered":"<p>Just a bit more than a year ago I&#8217;ve started to work on a hardware idea as a challenge &#8211; a mini-PCIe form factor <a href=\"https:\/\/www.arduino.cc\/\">Arduino<\/a> clone, the <a href=\"https:\/\/www.tindie.com\/products\/imrehg\/pcieduino\/\">PCIeDuino<\/a>. \u00a0The inspiration was working with a bunch of embedded boards, especially the <a href=\"http:\/\/www.viaembedded.com\/en\/boards\/pico-itx\/vab-600\/\">VIA VAB-600 Springboard<\/a>, that had a mini-PCIe connector, but not that many accessories that can go in there. (Disclaimer, I work at VIA at the moment, though this wasn&#8217;t a work project). I thought it would be cool to put an embedded-grade microcontroller on these boards, mostly to expand the I\/O capabilities.<\/p>\n<h2>Idea<\/h2>\n<figure id=\"attachment_2034\" aria-describedby=\"caption-attachment-2034\" style=\"width: 720px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2034\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min-1024x715.jpg\" alt=\"The original PCIeDuino sketch in my lab book\" width=\"720\" height=\"503\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min-1024x715.jpg 1024w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min-500x349.jpg 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min-768x536.jpg 768w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><figcaption id=\"caption-attachment-2034\" class=\"wp-caption-text\">The original PCIeDuino sketch in my lab book<\/figcaption><\/figure>\n<p>Looking at the mini-PCIe specs, the connector has mandatory USB 2.0 lines so communication was solved. The area available, roughly 5.1 x 3.0 cm, is not too bad \u00a0-more than how big the <a href=\"https:\/\/www.arduino.cc\/en\/Main\/ArduinoBoardNano\">Arduino Nano<\/a> is in comparison. The biggest challenge probably was that there are only 3.3V power lines available, and most example designs use 5V power supply.<\/p>\n<p><!--more--><\/p>\n<p>Fortunately Arduino is released under quite permissive <a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\">Creative Commons CC-BY-SA<\/a>\u00a0license, which means whoever makes an Arduino clone, also has to release it under the same license. This gave a lot of interesting designs to scout and learn from.<\/p>\n<p>The original plan was using a similar Bill of Materials as the Nano, based around the <a href=\"http:\/\/www.atmel.com\/devices\/atmega328p.aspx\">ATmega328P<\/a>, but two things happened to change it. First, I&#8217;ve changed my mind that I didn&#8217;t want to use the FTDI FT232 chip they used for USB-to-UART conversion. Second, my clever electronics friend Niko figured out that the tiny bit more advanced\u00a0<a href=\"http:\/\/www.atmel.com\/devices\/atmega328p.aspx\">ATmega32U4<\/a>\u00a0microcontroller would also work at 3.3V and since it speaks USB natively, could cut a bunch of components (that&#8217;s always good). The trade-off is a bit of clock speed (running at 8MHz), but that&#8217;s acceptable.<\/p>\n<h2>Design<\/h2>\n<p>I did find clone with these parameters (3.3V power and ATmega32U4), the <a href=\"https:\/\/www.sparkfun.com\/products\/12587\">SparkFun Pro Micro 3.3V<\/a>. \u00a0Took that basic design, replaced some components, added a Power LED, \u00a0and broke out the pins differently. Done in <a href=\"http:\/\/www.kicad-pcb.org\/\">KiCad<\/a>, the result is this PCIeDuino design below (or check the <a href=\"https:\/\/github.com\/moonpunchorg\/pcieduino\/blob\/master\/pcieduino.pdf\">PDF version)<\/a>.<\/p>\n<figure id=\"attachment_2055\" aria-describedby=\"caption-attachment-2055\" style=\"width: 604px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/pcieduino_schematic.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2055\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/pcieduino_schematic-1024x724.png\" alt=\"PCIeDuino Schematic (click for full size)\" width=\"604\" height=\"427\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/pcieduino_schematic-1024x724.png 1024w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/pcieduino_schematic-500x354.png 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/pcieduino_schematic-768x543.png 768w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><figcaption id=\"caption-attachment-2055\" class=\"wp-caption-text\">PCIeDuino Schematic (click for full size)<\/figcaption><\/figure>\n<p>The next step was fitting all these components onto a mini-PCIe card. The board size was sketched in detail in the specs, though somehow all the dimensions were described in a way that it was quite inconvenient for making a board outline. Nothing that an hour of math cannot fix&#8230;<\/p>\n<figure id=\"attachment_2061\" aria-describedby=\"caption-attachment-2061\" style=\"width: 641px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/miniPCIe_full.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2061\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/miniPCIe_full.png\" alt=\"Full sized mini-PCIe card dimensions\" width=\"641\" height=\"400\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/miniPCIe_full.png 641w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/miniPCIe_full-500x312.png 500w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/a><figcaption id=\"caption-attachment-2061\" class=\"wp-caption-text\">Full sized mini-PCIe card dimensions<\/figcaption><\/figure>\n<p>Actually, had to do the board layout twice, because for the first prototype (that I actually got printed) somehow had a crystal footprint that doesn&#8217;t correspond to any available 8Mhz crystal that I needed &#8211; so had to start again a bit. I took that chance to reorganize the board bit, and that extra round of design did a lot of good to the quality! More logical layout, better component grouping, simplified arrangement.<\/p>\n<p>The biggest challenge at this stage was wiring the output pins. That part was done with a few tries of autorouting with <a href=\"https:\/\/github.com\/nikropht\/FreeRouting\/\">FreeRouting<\/a>. The idea being that it&#8217;s a low frequency, small board so likely not too demanding design-wise, and getting it printed is more important that fine-tuning it to death. The USB line was hand-matched, though, and the LEDs were arranged to face the same way for easier mounting, so not all just auto-optimize.<\/p>\n<p>The tape-out happened in May, about 9 months after getting started (and about 4 months downtime in between).\u00a0The resulting board looks like this:<\/p>\n<figure id=\"attachment_2056\" aria-describedby=\"caption-attachment-2056\" style=\"width: 604px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/seeed_20150524_top_small_functional_white.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2056\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/seeed_20150524_top_small_functional_white-1002x1024.png\" alt=\"Functional Diagram (click to enlarge)\" width=\"604\" height=\"617\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/seeed_20150524_top_small_functional_white-1002x1024.png 1002w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/seeed_20150524_top_small_functional_white-489x500.png 489w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/seeed_20150524_top_small_functional_white-768x785.png 768w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/seeed_20150524_top_small_functional_white.png 1164w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><figcaption id=\"caption-attachment-2056\" class=\"wp-caption-text\">Functional Diagram (click to enlarge)<\/figcaption><\/figure>\n<p>I&#8217;ve submitted the board to <a href=\"http:\/\/www.seeedstudio.com\/service\/index.php?r=pcb\">Seeed Studio&#8217;s Fusion PCB service<\/a>, and got it back in about 2 weeks. In the meantime the components were ordered from <a href=\"http:\/\/www.mouser.tw\/Home.aspx\">Mouser<\/a>, the parts for 10 boards (equal to the number of PCBs printed)\u00a0\u00a0just being above the minimum threshold for free shipping.<\/p>\n<h2>Alive<\/h2>\n<p>Then came the assembly &#8211; hand soldered surface mount components can be really frustrating, but I really got to like them by now. If only my left hand was better (I&#8217;m right handed &#8211; solder in right hand, tweezers supposed to be in left).\u00a0The assembly took about 1 hour altogether.<\/p>\n<figure id=\"attachment_2057\" aria-describedby=\"caption-attachment-2057\" style=\"width: 604px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_magnifying.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2057\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_magnifying-1024x576.jpg\" alt=\"Under the magnifying glass (early prototype)\" width=\"604\" height=\"340\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_magnifying-1024x576.jpg 1024w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_magnifying-500x281.jpg 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_magnifying-768x432.jpg 768w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><figcaption id=\"caption-attachment-2057\" class=\"wp-caption-text\">Under the magnifying glass (early prototype)<\/figcaption><\/figure>\n<p>Now it&#8217;s time for waking the board up. Fortunately SparkFun&#8217;s\u00a0<a href=\"https:\/\/github.com\/sparkfun\/SF32u4_boards\">Pro Micro firmware<\/a> fits nicely onto the PCIeDuino too. Using an <a href=\"https:\/\/learn.adafruit.com\/usbtinyisp\/overview\">USBTinyISP<\/a> clone (from eBay), a bunch of <a href=\"http:\/\/www.mouser.tw\/Search\/ProductDetail.aspx?R=0922-0-15-20-75-14-11-0virtualkey57510000virtualkey575-922015\">pogo pins<\/a>, and the ISP headers on the board I could flash the firmware.<\/p>\n<p>Plug it into the the embedded board and powering up, the blinking D13 LED showed that everything should be pretty close to alright!<\/p>\n<figure id=\"attachment_2058\" aria-describedby=\"caption-attachment-2058\" style=\"width: 604px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_spark.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2058 size-large\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_spark-1024x576.jpg\" alt=\"The spark of life\" width=\"604\" height=\"340\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_spark-1024x576.jpg 1024w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_spark-500x281.jpg 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/PCIeDuino_spark-768x432.jpg 768w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><figcaption id=\"caption-attachment-2058\" class=\"wp-caption-text\">The spark of life &#8211; PCIeDuino in a Springboard<\/figcaption><\/figure>\n<p>Since then I&#8217;ve assembled altogether 7 of the boards (still takes about 1 hour each by hand, but I&#8217;m getting better). Had a few failures, but now I also know how to diagnose those issues better.<\/p>\n<p>(If curious, so far had &#8220;magic smoke&#8221;, cold joint, shorted microcontroller pins, and now a board with a short somewhere that triggered the fuse. Ah, the learning!)<\/p>\n<h2>Advanced<\/h2>\n<p>Now the <a href=\"https:\/\/www.tindie.com\/products\/imrehg\/pcieduino\/\">PCIeDuino is available on Tindie<\/a> (whenever I have a bit of time to assemble more). It a great experience trying to make a compelling maker project that other people want to use too! Having better documentation, more explanation, better software, better communication, and actually going out finding people who are interested in this could be pretty much full time work!<\/p>\n<p>I got my first <a href=\"http:\/\/hackaday.com\/2015\/07\/24\/arduino-pci-express\/\">Hackaday feature<\/a> too, not that it was a great article, but the discussion was very illuminating and helped me to polish my own idea regarding this project.<\/p>\n<p>All the <a href=\"https:\/\/github.com\/moonpunchorg\/pcieduino\">KiCAd source and Gerber files<\/a> are available on Github with CC-BY-SA license, so others can take this design to places too!<\/p>\n<h2>Future<\/h2>\n<p>The PCIeDuino is still very much a prototype project, more suitable probably for advanced users who are not put off when not every path is well worn out. I have to test it a lot more too, and <strong>find interesting use cases<\/strong>!<\/p>\n<p>It looks like that the SparkFun <strong>firmware<\/strong> is not very well maintained, and it could be useful to look for alternatives. <a href=\"https:\/\/github.com\/Optiboot\/optiboot\">Optiboot<\/a> seems to be interesting, but it also needs some work for the ATmega32U4 chip. Software support is super important, though, so this got to be a high priority improvement.<\/p>\n<p>The original idea was to use this on embedded boards, that are mostly ARM systems. It should also be easy to use, Arduino IDE compatible project. The problem is, that the two parts are at odds with each other. The <strong>Arduino IDE doesn&#8217;t quite work well on ARM<\/strong> yet, so it&#8217;s mostly command line operation at the moment. Not a breaking change, but still a fail that needs to be remedied somehow.<\/p>\n<p>The board is designed to conform to the mini-PCIe board specs. It fulfills the full-sized board variation&#8217;s requirements: the board outline, 1.0mm PCB thickness, connector pins, \u00a0mounting, keep out zones, &#8230;. It does not do the beveled cut at the connector (45\u00ba bevel cut needed, but seems to work regardless). To help other people to design mini-PCIe boards, I&#8217;ve put together a <strong>bare board starter kit<\/strong> in KiCad,\u00a0<a href=\"https:\/\/github.com\/moonpunchorg\/baseboards\">available on Github<\/a>, which includes the connector schematic, board outline, pin placement, and top-end mounting holes. Would be good to make a half-sized board variation design as well in the future, though at the moment it&#8217;s not a priority (pull requests welcome!)<\/p>\n<figure id=\"attachment_2069\" aria-describedby=\"caption-attachment-2069\" style=\"width: 604px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/moonpunchorg\/baseboards\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2069\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/baseboard-1024x671.png\" alt=\"Mini PCIe baseboard in KiCad (click for source)\" width=\"604\" height=\"396\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/baseboard-1024x671.png 1024w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/baseboard-500x327.png 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/baseboard-768x503.png 768w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/baseboard.png 1139w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><figcaption id=\"caption-attachment-2069\" class=\"wp-caption-text\">Mini PCIe baseboard in KiCad (click for source)<\/figcaption><\/figure>\n<p>This project also gave me a lot of <strong>ideas for future devices<\/strong>:\u00a0similar mini-PCIe designs with ATXmega or ARM Cortex-M microcontrollers, and\u00a0other Arduino clones with special functionality, e.g. built around the <a href=\"http:\/\/www.atmel.com\/devices\/ATMEGA2564RFR2.aspx\">ATmega2564RF2<\/a>\u00a0for \u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/IEEE_802.15.4\">802.15.4<\/a> mesh networking&#8230; But first, take this design to its full potential&#8230;<\/p>\n<p>If you like this idea, check out the <a href=\"https:\/\/www.tindie.com\/products\/imrehg\/pcieduino\/\">PCIeDuino on Tindie<\/a>, and would love to hear any kind of feedback or comment too! There&#8217;s a lot to improve, even if this is really the most complex electronics design I made so far&#8230; Now back to the drawing board and to soldering!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Just a bit more than a year ago I&#8217;ve started to work on a hardware idea as a challenge &#8211; a mini-PCIe form factor Arduino clone, the PCIeDuino. \u00a0The inspiration was working with a bunch of embedded boards, especially the VIA VAB-600 Springboard, that had a mini-PCIe connector, but not that many accessories that can [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[111],"tags":[88,168,122,169],"class_list":["post-1993","post","type-post","status-publish","format-standard","hentry","category-maker","tag-arduino","tag-hardware-design","tag-open-hardware","tag-tindie"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>My first non-trivial hardware: PCIeDuino - ClickedyClick<\/title>\n<meta name=\"description\" content=\"Making of an Arduino clone that fits on a mini-PCIe card.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"My first non-trivial hardware: PCIeDuino - ClickedyClick\" \/>\n<meta property=\"og:description\" content=\"Making of an Arduino clone that fits on a mini-PCIe card.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/\" \/>\n<meta property=\"og:site_name\" content=\"ClickedyClick\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:published_time\" content=\"2015-08-21T14:17:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-08-22T14:55:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min-1024x715.jpg\" \/>\n<meta name=\"author\" content=\"Gergely Imreh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@imrehg\" \/>\n<meta name=\"twitter:site\" content=\"@imrehg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gergely Imreh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated 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\":\"Article\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/\"},\"author\":{\"name\":\"Gergely Imreh\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"headline\":\"My first non-trivial hardware: PCIeDuino\",\"datePublished\":\"2015-08-21T14:17:10+00:00\",\"dateModified\":\"2015-08-22T14:55:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/\"},\"wordCount\":1390,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/08\\\/LabBook1-min-1024x715.jpg\",\"keywords\":[\"arduino\",\"hardware design\",\"open hardware\",\"Tindie\"],\"articleSection\":[\"Maker\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/\",\"name\":\"My first non-trivial hardware: PCIeDuino - ClickedyClick\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/08\\\/LabBook1-min-1024x715.jpg\",\"datePublished\":\"2015-08-21T14:17:10+00:00\",\"dateModified\":\"2015-08-22T14:55:47+00:00\",\"description\":\"Making of an Arduino clone that fits on a mini-PCIe card.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/#primaryimage\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/08\\\/LabBook1-min.jpg\",\"contentUrl\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/08\\\/LabBook1-min.jpg\",\"width\":5376,\"height\":3752,\"caption\":\"The original PCIeDuino sketch in my lab book\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/pcieduino\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"My first non-trivial hardware: PCIeDuino\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\",\"name\":\"ClickedyClick\",\"description\":\"Life in real, complex and digital.\",\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\",\"name\":\"Gergely Imreh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"caption\":\"Gergely Imreh\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\"},\"description\":\"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net\",\"sameAs\":[\"https:\\\/\\\/gergely.imreh.net\\\/\",\"https:\\\/\\\/www.facebook.com\\\/gergely.imreh\",\"https:\\\/\\\/www.instagram.com\\\/imrehg\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/gergelyimreh\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GergelyImreh\"],\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/author\\\/gergely\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"My first non-trivial hardware: PCIeDuino - ClickedyClick","description":"Making of an Arduino clone that fits on a mini-PCIe card.","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:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/","og_locale":"en_GB","og_type":"article","og_title":"My first non-trivial hardware: PCIeDuino - ClickedyClick","og_description":"Making of an Arduino clone that fits on a mini-PCIe card.","og_url":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/","og_site_name":"ClickedyClick","article_publisher":"https:\/\/www.facebook.com\/gergely.imreh","article_author":"https:\/\/www.facebook.com\/gergely.imreh","article_published_time":"2015-08-21T14:17:10+00:00","article_modified_time":"2015-08-22T14:55:47+00:00","og_image":[{"url":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min-1024x715.jpg","type":"","width":"","height":""}],"author":"Gergely Imreh","twitter_card":"summary_large_image","twitter_creator":"@imrehg","twitter_site":"@imrehg","twitter_misc":{"Written by":"Gergely Imreh","Estimated reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/#article","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/"},"author":{"name":"Gergely Imreh","@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"headline":"My first non-trivial hardware: PCIeDuino","datePublished":"2015-08-21T14:17:10+00:00","dateModified":"2015-08-22T14:55:47+00:00","mainEntityOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/"},"wordCount":1390,"commentCount":5,"publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/#primaryimage"},"thumbnailUrl":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min-1024x715.jpg","keywords":["arduino","hardware design","open hardware","Tindie"],"articleSection":["Maker"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/","url":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/","name":"My first non-trivial hardware: PCIeDuino - ClickedyClick","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/#primaryimage"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/#primaryimage"},"thumbnailUrl":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min-1024x715.jpg","datePublished":"2015-08-21T14:17:10+00:00","dateModified":"2015-08-22T14:55:47+00:00","description":"Making of an Arduino clone that fits on a mini-PCIe card.","breadcrumb":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/#primaryimage","url":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min.jpg","contentUrl":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/LabBook1-min.jpg","width":5376,"height":3752,"caption":"The original PCIeDuino sketch in my lab book"},{"@type":"BreadcrumbList","@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/pcieduino\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gergely.imreh.net\/blog\/"},{"@type":"ListItem","position":2,"name":"My first non-trivial hardware: PCIeDuino"}]},{"@type":"WebSite","@id":"https:\/\/gergely.imreh.net\/blog\/#website","url":"https:\/\/gergely.imreh.net\/blog\/","name":"ClickedyClick","description":"Life in real, complex and digital.","publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gergely.imreh.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0","name":"Gergely Imreh","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","caption":"Gergely Imreh"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g"},"description":"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net","sameAs":["https:\/\/gergely.imreh.net\/","https:\/\/www.facebook.com\/gergely.imreh","https:\/\/www.instagram.com\/imrehg\/","https:\/\/www.linkedin.com\/in\/gergelyimreh\/","https:\/\/www.youtube.com\/@GergelyImreh"],"url":"https:\/\/gergely.imreh.net\/blog\/author\/gergely\/"}]}},"_links":{"self":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/comments?post=1993"}],"version-history":[{"count":11,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1993\/revisions"}],"predecessor-version":[{"id":2070,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1993\/revisions\/2070"}],"wp:attachment":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/media?parent=1993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/categories?post=1993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/tags?post=1993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}