When you click on links to various merchants on this site and make a purchase, this can result in this site earning a commission. Affiliate programs and affiliations include, but are not limited to, the eBay Partner Network.
This is very similar to the RXDuino, but was developed for the Mazda3/MazdaSpeed3 market. It is just as universal as the shield, it is just very very small with 3 interfaces. They have written a "Middleware" for passing CANBUS or specifically removing or altering them. EVENTUALLY I feel like this could be a way to dynamically tune our cars with nothing more than a UART from a Bluetooth phone or a computer running Arduino IDE.
I went ahead and started the wave by buying one for around 100 bucks. Some of the Series II functions have already been mapped since they share some similarity with the Series II Mazdaspeed 3 & Gen 3 Mazda3. (<2014)
There is also some extra pins that are unused on the board that could be used for things like Methanol Injection, a shift light, or anything you think of with PWM. There is also several Analog ports open. I was thinking Methanol Injection based on the CANBUS MAF, LOAD, & APP packets. IE 75%-WOT would be your injection point to start at. (Maybe even a oil injection pump! (on a series 1))
Another interesting idea I had was a Haltech using CAN on the 3rd bus, passing information to BUS1 (Stock PCM), and BUS2(former stock PCM to everything else, then would be HALTECH), or technically selectively using the stock ECU for some operations & the Haltech for others. The possibilities are what you can program!
I will post some more pictures so you realize how tiny this thing really is. It literally is smaller than the palm of your hand. Amazing for the price point. This is absolutely a BETA/ALPHA so it isn't proven yet.
Anyone else on board with this so far? I want to do some routine maintenance on my car before I jump in, and I want to do so without cutting and splicing any wires.
Did you get one? I remember this when the guys were just getting started.
Is easy to get to the can buses, either go through the obd port or splice off the TPMS module.
Yes, I got it Thursday. I was looking at splicing at the Radio & LCD (Separating them), like everyone did with the RXDuino.
It is so small, I want to hide it in the dash if I get a BT 4.0LE device to work with it. Right now I am using oBDLINKMX, Torque, & A EVGA Tegra Note 7.
Do you have one? Not sure where the TMPS is actually.
I don't have one, but they're neat little tools! The TPMS module is right above the LCD in the dash. If you're mounting anything permanently I'd suggest doing it up there with whatever programming connections you need going to the glovebox sooner than going BT (have you considered an HC06? They're like $5 and work pretty well). There's a huge empty cavity up there with no nav unit installed.
I don't have one, but they're neat little tools! The TPMS module is right above the LCD in the dash. If you're mounting anything permanently I'd suggest doing it up there with whatever programming connections you need going to the glovebox sooner than going BT (have you considered an HC06? They're like $5 and work pretty well). There's a huge empty cavity up there with no nav unit installed.
It has BT 4.0 LE, but if I am doing anything with any kind of processing of CAN, it will be done via a hardwire or USB/FDTI. You were thinking use the HC06 as a BT UART Link? I have the Adafruit BT LE Friend that is a UART for Windows 7 only since Windows 8 supports BT LE and Windows 7 absolutely has no way to get LE. I was considering using Android as the UART, via the new Nvidia Shield. I was looking for something that would be easy to write software for and would work with everything else I plan on doing. (Was thinking of using the Shield as a HUD, Keeping the OBDLINKMX, using the Android IOIO I have, and adding int he CBT) If all else fails, I have an INTEL NUC I can use instead of Android. Until I have a reason, I am going to keep from doing serious modding to the electrical system. (One of the reasons I have hesitated for the ESC so long)
Sadly, I wanted to connect to the CBT with I2C and keep it simple, but the SCL and SDA pins are used for Initializing the 2nd and 3rd Canbus controllers, so I either need to remap them somehow, or do something else.
Last edited by badinfluence; 06-01-2015 at 09:50 AM.
Yeah, the SPI bus and I2C share the same pins on allot of microcontrollers. A simple option is to just throw in a SPI to I2C bridge ic, a few of them even have a few extra GPIOs included on chip.
If you wanted allot more power you could even add a second UC that has multiple of each bus on board.
picked up the triple and the OB2 adapter although I'll likely be hacking directly into a low speed bus on another "project" I have going on outside of the rotary world.
Yeah, the SPI bus and I2C share the same pins on allot of microcontrollers. A simple option is to just throw in a SPI to I2C bridge ic, a few of them even have a few extra GPIOs included on chip.
If you wanted allot more power you could even add a second UC that has multiple of each bus on board.
Sorry, what is UC? like the symbol for Micro and C for controller? Maybe I am thinking to hard about that?
I will take a peek at that, thanks for the advice. I dont understand why they used SPI instead of I2C considering canbus is also a 2 wire protocol, but meh it doesn't matter. The only thing I am afraid of is that I am going to overwork the Lenardo with to much processing and stuff on the SPI. Is that a realistic problem you think?
They probably just used SPI to talk to the CAN bus because SPI can send simple commands to a CAN controller ic, while I2C would be using the microcontoller to generate CAN style messages and send it through an I2C to CAN bridge ic. It might just be cheaper or conserve more processing power on the uC.
I don't think you'll run into overworking the Leonardo unless your code is pretty big.
They probably just used SPI to talk to the CAN bus because SPI can send simple commands to a CAN controller ic, while I2C would be using the microcontoller to generate CAN style messages and send it through an I2C to CAN bridge ic. It might just be cheaper or conserve more processing power on the uC.
I don't think you'll run into overworking the Leonardo unless your code is pretty big.
Presumably they saved a scent account of memory on the chip for users to work with. It should have 32kb of flash to work with, minus a couple for the bootloader.
so this little gadget is pretty neat. Mine arrived yesterday and I've already tapped into two of the buses on my "other" car.
Where did you tap at? I was considering tapping into the highspeed between the PCM and Gauge Cluster, but only AFTER the CBT is a bit more reliable. That bus is flipping scary when it acts up. The low speed bus, has many places it seems to be able to be tapped, my idea was between the LCD and Factory radio like the Rxduino. So that would be all 3 buses used up for me. I was thinking of basically bypassing the Gauge cluster in a way allowing something else to handle certain things.
IE PCM has a packet that talks about a Knock, the packet is passed to my "handler" then my handler displays it on the LCD screen warning of the knock, and turns down the radio.
If you're after the high speed bus just go with an OBD2 cable. I've heard (Paimon could confirm) that all 3 are accessible behind / inside the dash near the stereo / lcd FWIW.
I'm doing this on another vehicle and haven't decided if I'll go after the high speed bus or just rely on my existing BT ELM adapter.
Yup.... sniffing the wire, collecting codes, basically in a terminal emulator... old school fun.
If you're after the high speed bus just go with an OBD2 cable. I've heard (Paimon could confirm) that all 3 are accessible behind / inside the dash near the stereo / lcd FWIW.
I'm doing this on another vehicle and haven't decided if I'll go after the high speed bus or just rely on my existing BT ELM adapter.
Yup.... sniffing the wire, collecting codes, basically in a terminal emulator... old school fun.
Yeah, that was where I wanted to tap at. I think it is pins like 3 and the below pin? I have the Obd2, but I think most of them don't use that direct PCM connection because it is for Mazda to program with. I got the doc right off his site, which is pretty **** btw.
The ones behind the dash are at the TPMS module. Just go from there! It's way easier than anything else.
None of the LCD wires are CAN, it's controlled through the radio/metra unit via a weird dual mode I2C bus. None of the two LCD+CAN interfaces that I've seen for the 8 actually go through the radio, but there is a CAN connection somewhere in the back (I wouldn't go from there just because it's way harder to work in that space.
The OBD port is also really simple, but that's not what we do here.
but after re-reading it's pretty clear you're after the the wires behind the dash. I dunno....
Yeah, the plan one to splice before the connector terminal so I don't wear out the pins. I bought the OBDII plug for other cars, but I am using on OBDLINKMX and I can already start to see is D/C when I hit a bump. More than likely going to hardwire that too, and keep the plug clear
Yeah 6 and 14, I thought the plug was the other way up in the picture.
np, any questions just ask, i'll do my best to answer in a timely manner
actually, do you know the commands for the stereo and/or steering wheel controls? I am going to try and break that bus off from the main network and I want to be able to control the stereo and LCD IE select a CD, set Volume, and hopefully adjust the HVAC?
It is pretty low priority with the other stuff I am planning, but I wanted to ask if you knew.
So trying to get support is proving to be problematic. I coded up a real nice example for doing BT LE and am able to communicate with the CBT's UART with no problems.... however it flat out ignores my request for data over BT... works fine over USB which is super annoying.
actually, do you know the commands for the stereo and/or steering wheel controls? I am going to try and break that bus off from the main network and I want to be able to control the stereo and LCD IE select a CD, set Volume, and hopefully adjust the HVAC?
It is pretty low priority with the other stuff I am planning, but I wanted to ask if you knew.
So if i remember correctly, you will see a response from peripheral 0xD6 on address 0x7E8 when you press UP on the cruse control, 0x9C for down, and 0x38 for the cancel button
Pressing ON/OFF will echo a message on 0x650 (data 0, x80 yellow, xFF green)
as far as stereo controls go, IIRC that is nothing more than the standard R2R ladder used in the industry (i.e. to comply with SWC harnesses and the like). I dont believe any responses are echo'd on the canbus for the stereo controls.