{"id":1233,"date":"2021-01-23T12:24:31","date_gmt":"2021-01-23T12:24:31","guid":{"rendered":"https:\/\/bxproject.co.uk\/blog\/?p=1233"},"modified":"2021-03-21T11:07:52","modified_gmt":"2021-03-21T11:07:52","slug":"can-in-the-middle-citm-adapter","status":"publish","type":"post","link":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/","title":{"rendered":"Can In The Middle (CITM) Adapter"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\"><\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">min. read<\/span><\/span>\n<p>In a <a href=\"https:\/\/bxproject.co.uk\/blog\/diy-can-bus-adapter\">previous article<\/a>, I proved out the idea of using an Arduino and CAN adapter board to get onto the Freelander&#8217;s CANBus network. To build on this, I wanted to make a CANBus adapter with dual channels. Messages could be passed between the channels, and the Arduino would be able to interrogate the messages. This CAN-in-the-middle (CITM) adapter allows real-time interaction with the messages and a whole number of opportunities<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">CITM Adapter Overview <\/h2>\n\n\n\n<p>In the overview below, the existing vehicle bus is connected to one channel of the CITM, labelled as A. The messages are passed from the vehicle bus, into channel A adapter, through the Arduino and back out to the adapted bus on Channel B. Equally the flow can be reversed from the adapted bus to the vehicle bus through the Arduino.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"390\" src=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2-Over-View-1024x390.png\" alt=\"Overview of how the CITM adapter will operate\" class=\"wp-image-1236\" srcset=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2-Over-View-1024x390.png 1024w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2-Over-View-960x365.png 960w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2-Over-View-300x114.png 300w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2-Over-View-768x292.png 768w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2-Over-View.png 1251w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Overview of how the CITM adapter will operate<\/figcaption><\/figure>\n\n\n\n<p>We&#8217;ve previously looked at identifying messages sent onto a bus by a specific module, at a bench level. This process meant only one module was on the BUS so it was easy to identify which message was sent out by the module. But on a vehicle bus, there can be a number of modules and an even greater number of signals.<\/p>\n\n\n\n<p>By placing the CITM adapter between the module under investigation and the vehicle network, it is possible to see the direction of the messages. This in turn simplifies the task of identifying which messages relate to a module, allowing the direction of the message flow to be seen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The electrical circuit<\/h2>\n\n\n\n<p>The electrical circuit is very simple to the previous design. In this case, two TJA1050&nbsp;adapter shields are connected to the Arduino. The signal wires for both CAN adapter boards are connected to the controller. Each Chip Select (CS) line is connected to a different pin on the Arduino, which allows each CAN adapter to be controlled in sequence.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"341\" src=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_14_800.png\" alt=\"CITM circuit schematic in Fritzing\" class=\"wp-image-1235\" srcset=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_14_800.png 800w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_14_800-600x256.png 600w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_14_800-300x128.png 300w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_14_800-768x327.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>CITM circuit schematic in Fritzing<\/figcaption><\/figure>\n\n\n\n<p>Again, the circuit was designed using the <a href=\"https:\/\/fritzing.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Fritzing <\/a>software.  The picture above shows the schematic view of the circuit. This time the parts where no positioned in the breadboard view as a slightly different approach was taken.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">PCB Design<\/h2>\n\n\n\n<p>Along with the Breadboard layout and Schematic layout, Fritzing can also help with the design of the (PCB Printed Circuit Board). The software isn&#8217;t the best for detailed electronic designs, but in this case, the PCB layout was perfect for the size of the board.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"332\" src=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_01_800_Board.png\" alt=\"Top and bottom outlines for the CITM PCB\" class=\"wp-image-1237\" srcset=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_01_800_Board.png 800w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_01_800_Board-600x249.png 600w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_01_800_Board-300x125.png 300w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_01_800_Board-768x319.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>Top and bottom outlines for the CITM PCB<\/figcaption><\/figure>\n\n\n\n<p>Amazingly it only took a short while to turn the schematic into a PCB outline. The first PCB design I ever made was drawn very carefully in Microsoft Paint and printed out. This process was far less stressful. Unfortunately, I seem to have forgotten everything I knew about PCB design and the resulting outlines, shown above, are terrible. Never mind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Getting the PCB made<\/h2>\n\n\n\n<p>One of the most interesting functions of the Fritzing software is the ability to export the PCB design directly to a fabrication house. I&#8217;ve never had a PCB design professionally made before, so this was something of an adventure I wanted to take. The process was surprisingly easy and with a couple of clicks, and payment made, the order was in.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_02_800.jpg\" alt=\"JLC PCB parts arrived faster than expected\" class=\"wp-image-1238\" srcset=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_02_800.jpg 800w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_02_800-600x450.jpg 600w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_02_800-300x225.jpg 300w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_02_800-768x576.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>JLC PCB parts arrived faster than expected<\/figcaption><\/figure>\n\n\n\n<p>A month or so later and a small package arrived from <a href=\"https:\/\/jlcpcb.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">JLC PCB<\/a> having been manufactured in China. This was a surprisingly exciting arrival, far faster than had been predicted by the ordering process. I certainly didn&#8217;t wait long to unwrap them!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"568\" src=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_07_800.jpg\" alt=\"Unwrapped circuit boards where of excellent quality\" class=\"wp-image-1239\" srcset=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_07_800.jpg 800w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_07_800-600x426.jpg 600w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_07_800-300x213.jpg 300w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_07_800-768x545.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>Unwrapped circuit boards where of excellent quality<\/figcaption><\/figure>\n\n\n\n<p>I&#8217;m not sure the picture does the quality of the board&#8217;s justice. They did take a little while to arrive, but the \u00a315 or so for 5 pieces that the cost, these circuit boards are fantastic value. I definitely should have paid more attention to the PCB design before I sent it for manufacture, the faults were really obvious now they where made.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Populating the board<\/h2>\n\n\n\n<p>It didn&#8217;t take too long to populate the boards. Rather than the Arduino UNO that was used to prove the concept, this design uses an Arduino Pro Mini. The controller needs a regulated 5v and to deliver this the design uses an <a href=\"https:\/\/www.sparkfun.com\/datasheets\/Components\/LM7805.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">LM7805 regulator<\/a>. This converts the vehicles 12v nominal supply voltage so something safe for the Arduino.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"464\" src=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_08_800-1.jpg\" alt=\"Fully assembled CITM adapter\" class=\"wp-image-1241\" srcset=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_08_800-1.jpg 800w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_08_800-1-600x348.jpg 600w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_08_800-1-300x174.jpg 300w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_08_800-1-768x445.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>Fully assembled CITM adapter<\/figcaption><\/figure>\n\n\n\n<p>The same CANBus shields were used as the proof of concept design, however, I didn&#8217;t consider the width of the board. Or in fact, measure the boards before designing the PCB. This lead to the boards overlapping at the edges. It worked and made the board more compact, but it wasn&#8217;t intentional.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Programming the CITM<\/h2>\n\n\n\n<p>Because the Arduino Pro Mini is so small, it doesn&#8217;t include an onboard USB adapter like the UNO. Instead, a <a href=\"https:\/\/thepihut.com\/products\/usb-to-ttl-serial-cable?variant=758600325&amp;currency=GBP&amp;utm_medium=product_sync&amp;utm_source=google&amp;utm_content=sag_organic&amp;utm_campaign=sag_organic&amp;gclid=CjwKCAiAr6-ABhAfEiwADO4sfeW9w7DqPn0I7LQ5ySflvn6aTw_Yz9aB4-y9lh5KqlnVCnhmmQJV-xoCjy0QAvD_BwE\" target=\"_blank\" rel=\"noreferrer noopener\">TTL to USB adapter<\/a> is used to connect the board to a PC and allow it to be programmed. After that, writing the commends into the Arduino IDE is much the same as any other type of board.<\/p>\n\n\n\n<p>Using the code from the previous project as a base, the changes to get both CAN shields working are quite small. Like in the first project, we have to initialise each CAN shield, remembering which pin of the Arduino we are connected to. In this code I have called the CAN channels CAN0 and CAN1.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"886\" height=\"543\" src=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/Arduino-CAN-Setup.png\" alt=\"Setting up the CAN channels in Arduino IDE\" class=\"wp-image-1245\" srcset=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/Arduino-CAN-Setup.png 886w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/Arduino-CAN-Setup-600x368.png 600w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/Arduino-CAN-Setup-300x184.png 300w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/Arduino-CAN-Setup-768x471.png 768w\" sizes=\"auto, (max-width: 886px) 100vw, 886px\" \/><figcaption>Setting up the CAN channels in Arduino IDE<\/figcaption><\/figure>\n\n\n\n<p>To make the pass-through work, we need to read a message from the vehicle CAN (CAN0) and send it through to (CAN1). If we send this to the serial port, we can see the direction of the messages on the connected PC. This allows us to quickly build up a picture of all the message the module is sending to the BUS. If the module was an input device, like a set of buttons, we could quickly identify which button press relates to which signal.<\/p>\n\n\n\n<p>The code in the GitHub repository also includes some filtering to allow different signals to be modified. In this case, the CCF byte for the vehicle type can be changed in real-time. In the case of the infotainment screen, we can tell it that it&#8217;s in a different car and potentially find new features.<\/p>\n\n\n\n<p>The source code for the project can be found on the BXProject GitHub pages here;<br><a href=\"https:\/\/github.com\/BXProject\/CITM02\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/BXProject\/CITM02<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Real-World Application<\/h2>\n\n\n\n<p>To make use of the CITM in my own car, I decided to make up a small harness. This allowed the circuit board to plug in between the infotainment screen and the vehicle harness. This way the flow of data between the vehicle CANbus and FCDIM could be monitored.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800.jpg\" alt=\"CITM can bus adapter with pass through cable for the FCDIM\" class=\"wp-image-1246\" srcset=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800.jpg 800w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800-600x338.jpg 600w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800-300x169.jpg 300w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800-150x84.jpg 150w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800-768x432.jpg 768w, https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800-250x141.jpg 250w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>CITM can bus adapter with pass through cable for the FCDIM<\/figcaption><\/figure>\n\n\n\n<p>I&#8217;ll cover the application of the adapter in another article, but it did make the process of identifying signals easier. No more guessing which messages where being sent by the module. Specific outputs could be identified by pressing buttons on the screen and changing modes.<\/p>\n\n\n\n<p>I&#8217;ve actually had use for the CITM adapter in work as well. It is used regularly to simulate specific CANBus traffic to allow certain operations in the target ECU to be checked. I hadn&#8217;t considered other uses for the adapter board during design, but it&#8217;s proven to be very handy!<\/p>\n\n\n\n<p>I&#8217;m still impressed that the PCB design, with all its faults, worked the first time. And the process was remarkably simple. It&#8217;s proving to be very useful with all five PCBs populated and in use. While the CITM adapter board has turned out to be very compact, I&#8217;m sure the design could be improved.  Perhaps by incorporating the CAN shields into my PCB? Certainly, something I can look at in the future.<br><br>M<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Following on from the proven DIY CAN adapter, this article follows the addition of function by creating a dual CAN PCB design to use as a CAN in the middle (CITM) device.<\/p>\n","protected":false},"author":1,"featured_media":1246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[87,155,16],"tags":[89,231],"class_list":["post-1233","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-canbus","category-diagnostics","category-electronics","tag-canbus","tag-diagnostics"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Can In The Middle (CITM) Adapter - Arduino CANBus - BX Project<\/title>\n<meta name=\"description\" content=\"The proven CAN adapter using Arduino was built on for a more functional dual CAN PCB design to use as CAN in the middle (CITM)\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Can In The Middle (CITM) Adapter - Arduino CANBus - BX Project\" \/>\n<meta property=\"og:description\" content=\"Following on from the proven DIY CAN adapter, this article follows the addition of function by creating a dual CAN PCB design to use as a CAN in the middle (CITM) device.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/\" \/>\n<meta property=\"og:site_name\" content=\"BX Project\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/BXProjectFB\" \/>\n<meta property=\"article:author\" content=\"BXProjectFB\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-23T12:24:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-03-21T11:07:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"450\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Admin_M\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bxprojectT\" \/>\n<meta name=\"twitter:site\" content=\"@BXProjectT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Admin_M\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/\"},\"author\":{\"name\":\"Admin_M\",\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/cdb60b055febb747294e9606dc156e1b\"},\"headline\":\"Can In The Middle (CITM) Adapter\",\"datePublished\":\"2021-01-23T12:24:31+00:00\",\"dateModified\":\"2021-03-21T11:07:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/\"},\"wordCount\":1309,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/CITM2_13_800.jpg\",\"keywords\":[\"CANBus\",\"Diagnostics\"],\"articleSection\":[\"CAN Bus\",\"Diagnostics\",\"Electronics\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/\",\"url\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/\",\"name\":\"Can In The Middle (CITM) Adapter - Arduino CANBus - BX Project\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/CITM2_13_800.jpg\",\"datePublished\":\"2021-01-23T12:24:31+00:00\",\"dateModified\":\"2021-03-21T11:07:52+00:00\",\"description\":\"The proven CAN adapter using Arduino was built on for a more functional dual CAN PCB design to use as CAN in the middle (CITM)\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/CITM2_13_800.jpg\",\"contentUrl\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/CITM2_13_800.jpg\",\"width\":800,\"height\":450,\"caption\":\"CITM arduino canbus adapter\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/can-in-the-middle-citm-adapter\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Can In The Middle (CITM) Adapter\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/\",\"name\":\"BX Project\",\"description\":\"Automotive Adventures\",\"publisher\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/#organization\",\"name\":\"BXProject\",\"url\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/BXP_RJW_banner-300-dpi-800.jpg\",\"contentUrl\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/BXP_RJW_banner-300-dpi-800.jpg\",\"width\":800,\"height\":267,\"caption\":\"BXProject\"},\"image\":{\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/BXProjectFB\",\"https:\\\/\\\/x.com\\\/BXProjectT\",\"https:\\\/\\\/www.instagram.com\\\/bxproject_ig\\\/?hl=en\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCO7rHKgcIafXLItQRGj-BXQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bxproject.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/cdb60b055febb747294e9606dc156e1b\",\"name\":\"Admin_M\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d1993dfbb08228583c93eda998592304d6d62589c3c1aaf39555713522778745?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d1993dfbb08228583c93eda998592304d6d62589c3c1aaf39555713522778745?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d1993dfbb08228583c93eda998592304d6d62589c3c1aaf39555713522778745?s=96&d=mm&r=g\",\"caption\":\"Admin_M\"},\"sameAs\":[\"http:\\\/\\\/bxproject.co.uk\\\/blog\",\"BXProjectFB\",\"https:\\\/\\\/www.instagram.com\\\/bxproject_ig\",\"https:\\\/\\\/x.com\\\/bxprojectT\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Can In The Middle (CITM) Adapter - Arduino CANBus - BX Project","description":"The proven CAN adapter using Arduino was built on for a more functional dual CAN PCB design to use as CAN in the middle (CITM)","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:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/","og_locale":"en_GB","og_type":"article","og_title":"Can In The Middle (CITM) Adapter - Arduino CANBus - BX Project","og_description":"Following on from the proven DIY CAN adapter, this article follows the addition of function by creating a dual CAN PCB design to use as a CAN in the middle (CITM) device.","og_url":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/","og_site_name":"BX Project","article_publisher":"https:\/\/www.facebook.com\/BXProjectFB","article_author":"BXProjectFB","article_published_time":"2021-01-23T12:24:31+00:00","article_modified_time":"2021-03-21T11:07:52+00:00","og_image":[{"width":800,"height":450,"url":"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800.jpg","type":"image\/jpeg"}],"author":"Admin_M","twitter_card":"summary_large_image","twitter_creator":"@bxprojectT","twitter_site":"@BXProjectT","twitter_misc":{"Written by":"Admin_M","Estimated reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/#article","isPartOf":{"@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/"},"author":{"name":"Admin_M","@id":"https:\/\/bxproject.co.uk\/blog\/#\/schema\/person\/cdb60b055febb747294e9606dc156e1b"},"headline":"Can In The Middle (CITM) Adapter","datePublished":"2021-01-23T12:24:31+00:00","dateModified":"2021-03-21T11:07:52+00:00","mainEntityOfPage":{"@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/"},"wordCount":1309,"commentCount":6,"publisher":{"@id":"https:\/\/bxproject.co.uk\/blog\/#organization"},"image":{"@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/#primaryimage"},"thumbnailUrl":"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800.jpg","keywords":["CANBus","Diagnostics"],"articleSection":["CAN Bus","Diagnostics","Electronics"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/","url":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/","name":"Can In The Middle (CITM) Adapter - Arduino CANBus - BX Project","isPartOf":{"@id":"https:\/\/bxproject.co.uk\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/#primaryimage"},"image":{"@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/#primaryimage"},"thumbnailUrl":"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800.jpg","datePublished":"2021-01-23T12:24:31+00:00","dateModified":"2021-03-21T11:07:52+00:00","description":"The proven CAN adapter using Arduino was built on for a more functional dual CAN PCB design to use as CAN in the middle (CITM)","breadcrumb":{"@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/#primaryimage","url":"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800.jpg","contentUrl":"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800.jpg","width":800,"height":450,"caption":"CITM arduino canbus adapter"},{"@type":"BreadcrumbList","@id":"https:\/\/bxproject.co.uk\/blog\/can-in-the-middle-citm-adapter\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bxproject.co.uk\/blog\/"},{"@type":"ListItem","position":2,"name":"Can In The Middle (CITM) Adapter"}]},{"@type":"WebSite","@id":"https:\/\/bxproject.co.uk\/blog\/#website","url":"https:\/\/bxproject.co.uk\/blog\/","name":"BX Project","description":"Automotive Adventures","publisher":{"@id":"https:\/\/bxproject.co.uk\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bxproject.co.uk\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/bxproject.co.uk\/blog\/#organization","name":"BXProject","url":"https:\/\/bxproject.co.uk\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/bxproject.co.uk\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/07\/BXP_RJW_banner-300-dpi-800.jpg","contentUrl":"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/07\/BXP_RJW_banner-300-dpi-800.jpg","width":800,"height":267,"caption":"BXProject"},"image":{"@id":"https:\/\/bxproject.co.uk\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/BXProjectFB","https:\/\/x.com\/BXProjectT","https:\/\/www.instagram.com\/bxproject_ig\/?hl=en","https:\/\/www.youtube.com\/channel\/UCO7rHKgcIafXLItQRGj-BXQ"]},{"@type":"Person","@id":"https:\/\/bxproject.co.uk\/blog\/#\/schema\/person\/cdb60b055febb747294e9606dc156e1b","name":"Admin_M","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/d1993dfbb08228583c93eda998592304d6d62589c3c1aaf39555713522778745?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d1993dfbb08228583c93eda998592304d6d62589c3c1aaf39555713522778745?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d1993dfbb08228583c93eda998592304d6d62589c3c1aaf39555713522778745?s=96&d=mm&r=g","caption":"Admin_M"},"sameAs":["http:\/\/bxproject.co.uk\/blog","BXProjectFB","https:\/\/www.instagram.com\/bxproject_ig","https:\/\/x.com\/bxprojectT"]}]}},"jetpack_featured_media_url":"https:\/\/bxproject.co.uk\/blog\/wp-content\/uploads\/2021\/01\/CITM2_13_800.jpg","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1133,"url":"https:\/\/bxproject.co.uk\/blog\/diy-can-bus-adapter\/","url_meta":{"origin":1233,"position":0},"title":"DIY CAN Bus Adapter","author":"Admin_M","date":"1 January 2021","format":false,"excerpt":"I can't afford to use industry-standard CAN bus hardware, but can I make my own DIY CAN Bus Adapter with simple components?","rel":"","context":"In &quot;CAN Bus&quot;","block_context":{"text":"CAN Bus","link":"https:\/\/bxproject.co.uk\/blog\/category\/electronics\/canbus\/"},"img":{"alt_text":"Can in the middle version 1","src":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/12\/CITM1.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/12\/CITM1.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/12\/CITM1.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/12\/CITM1.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":245,"url":"https:\/\/bxproject.co.uk\/blog\/canbus-whispering\/","url_meta":{"origin":1233,"position":1},"title":"CANBus &#8211; Whispering With BusMaster","author":"Admin_M","date":"1 June 2020","format":false,"excerpt":"We know what the CANBus is, and what hardware is needed to make the connection will. Lets start listening to the car!","rel":"","context":"In &quot;CAN Bus&quot;","block_context":{"text":"CAN Bus","link":"https:\/\/bxproject.co.uk\/blog\/category\/electronics\/canbus\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/05\/CANBus.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/05\/CANBus.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/05\/CANBus.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/05\/CANBus.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":241,"url":"https:\/\/bxproject.co.uk\/blog\/canbus-adapter\/","url_meta":{"origin":1233,"position":2},"title":"CANBus &#8211; Using an adapter to talk to a car","author":"Admin_M","date":"30 May 2020","format":false,"excerpt":"To get our PC onto the BUS we're going to need a little hardware!","rel":"","context":"In &quot;CAN Bus&quot;","block_context":{"text":"CAN Bus","link":"https:\/\/bxproject.co.uk\/blog\/category\/electronics\/canbus\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/05\/CANBus.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/05\/CANBus.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/05\/CANBus.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/05\/CANBus.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":464,"url":"https:\/\/bxproject.co.uk\/blog\/symptom-driven-diagnostic-sdd-diagnostic-adapter\/","url_meta":{"origin":1233,"position":3},"title":"Symptom Driven Diagnostic (SDD) \u2013 Diagnostic Adapter","author":"Admin_M","date":"6 July 2020","format":false,"excerpt":"Land Rovers of a certain age eventually cry out for a diagnostic session. With dealer diagnostic sessions costing as much as \u00a3145 per hour, you may want to DIY. This will put you on the slippery slope of the Land Rover Symptom Driven Diagnostic (SDD) system and diagnostic adapter. In\u2026","rel":"","context":"In &quot;Diagnostics&quot;","block_context":{"text":"Diagnostics","link":"https:\/\/bxproject.co.uk\/blog\/category\/electronics\/diagnostics\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/07\/SDD.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/07\/SDD.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/07\/SDD.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":253,"url":"https:\/\/bxproject.co.uk\/blog\/canbus-crash-reset\/","url_meta":{"origin":1233,"position":4},"title":"CANBus &#8211; How to reset a crash","author":"Admin_M","date":"2 June 2020","format":false,"excerpt":"You've connected to the Land Rover and now it's not happy. How do you reset a CANBus crash? Read on to find out!","rel":"","context":"In &quot;CAN Bus&quot;","block_context":{"text":"CAN Bus","link":"https:\/\/bxproject.co.uk\/blog\/category\/electronics\/canbus\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/06\/CANBusShort.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/06\/CANBusShort.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/06\/CANBusShort.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/06\/CANBusShort.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":261,"url":"https:\/\/bxproject.co.uk\/blog\/canbus-data-frames\/","url_meta":{"origin":1233,"position":5},"title":"CANBus &#8211; Interpreting Data Frames","author":"Admin_M","date":"3 June 2020","format":false,"excerpt":"What is in a CAN frame, and how do we start to break it down?","rel":"","context":"In &quot;CAN Bus&quot;","block_context":{"text":"CAN Bus","link":"https:\/\/bxproject.co.uk\/blog\/category\/electronics\/canbus\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/06\/CANBusShort.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/06\/CANBusShort.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/06\/CANBusShort.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bxproject.co.uk\/blog\/wp-content\/uploads\/2020\/06\/CANBusShort.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/posts\/1233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=1233"}],"version-history":[{"count":0,"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/posts\/1233\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/media\/1246"}],"wp:attachment":[{"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=1233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=1233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bxproject.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=1233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}