Author Topic: Omzlo one: An Arduino with built-in CAN-bus network you can control from a PC.  (Read 2564 times)

0 Members and 1 Guest are viewing this topic.

Offline L1L1

  • Contributor
  • Posts: 33
  • Country: gr
Hi,

I’ve been reading these forums for a while, but this is my first real post here. I would like to share a personal project I’ve been working for more than a year: the Omzlo One, an Arduino with builtin networking, which I’ve launched on Kickstarter.

https://www.kickstarter.com/projects/1242572682/omzlo-one-reinventing-the-arduino-with-built-in-ne

More precisely, the Omzlo One is a classic Arduino UNO compatible board powered by an Atmega328pb clocked at 16 Mhz, with an embedded CAN bus network interface that is also used to power the device (typically with 12 or 24 volts DC). Using a Ethernet cable or 4 plain electric wires, you can create a chain of Omzlo One devices that you can control from a PC, using a CAN-to-serial interface board: the Omzlo USB controller. It works over distances that can reach over 100 meters (320 feet). It targets applications where wireless approaches do not fit the bill, either because of signal issues, battery/powering issues, or the added setup complexity.

One key feature of the Omzlo One is that the added networking capability does not affect the I/O connectivity of the board. Indeed, when adding a network shield (e.g a CAN bus shield) to an Arduino UNO, this will always “use up” some of the Arduino’s breakout pins (i.e. the SPI pins or the Serial pins). This is not the case on the Omzlo One, which uses an extra I2C line of the Atmega328pb that is not present in the Arduino UNO’s breakout pins.
 
The I2C to CAN bus driver is based on an ARM Cortex M0 (an STM32F042) with a dedicated firmware that works together with the Atmega328pb to make networking very simple thanks to a higher level protocol built on top of CAN bus, which takes care of automated address assignment and messaging. A bootloader allows you to update the Atmega’s firmware over the network, through a simple web interface on your PC.

All this will be released as open source / open hardware. The board has ISCP and SWD headers, so you can repurpose it to something else (e.g. a CAN bus sniffer).


 

Offline janoc

  • Super Contributor
  • ***
  • Posts: 3056
  • Country: fr
Hum so using a 32bit ARM micro as a CAN interface to an 8bit ATMega? I guess I am not the target audience for this kind of gadget then ...

Why didn't you use one of the AVRs that actually have a CAN peripheral built-in? Atmel offers several. You would need to port the Arduino core to the new chip (I don't think they support any with built-in CAN), but it would be a lot more useful. Running CAN over I2C is going to suck, especially when someone actually attempts to use this to interface with their car - where speeds up to 1Mbps are common.

 

Offline L1L1

  • Contributor
  • Posts: 33
  • Country: gr
Running CAN over I2C is going to suck, especially when someone actually attempts to use this to interface with their car - where speeds up to 1Mbps are common.

The Omzlo One device is not targeted for people who want to connect it to their car. It's for people who want to build simple Arduino networks to switch relays, turn on lights, control a garden watering system or get sensor data, all within the simplicity of the Arduino IDE. In fact, the other device I'm promoting on the Kickstarter, the Omzlo USB controller is a much better choice for a CAN bus interface: it can achieve 1Mbps if you put the appropriate firmware.

Car networks are rather small in length and you can achieve 1Mbps there in some cases, but to reach longer distances you need to decrease the bit rate. I wanted something that can reach long distances, like 100 meters (320 feet). The Omzlo One gives you an easy way to build a network of devices to reach such distances.

The ARM processor takes care of buffering packets and/or assembling several packets to build a single message, leaving much less work to the Atmel chip. While CAN bus payloads are limited to 8 bytes, the Omzlo One can transmit messages of up to 64 bytes thanks to the extra work done by the ARM. The ARM processor can also reboot the Atmega chip and launch the bootloader, which means that you can recover from situations where the Atmega is stuck, without plugging a programmer in the Omzlo One, which may be somewhere in a sealed box in your garden.

As an other plus, it turns out that the ARM processor is rather cheap. Cheaper than a dedicated CAN bus driver IC and cheaper than most Atmega chips as well.

Why didn't you use one of the AVRs that actually have a CAN peripheral built-in? Atmel offers several. You would need to port the Arduino core to the new chip (I don't think they support any with built-in CAN), but it would be a lot more useful.

To tell you the truth, I briefly considered using one of the new SAMC21 ARM chips Atmel has produced (which has CAN bus).  :)

But despite its flaws, the Arduino UNO with its Atmega328p remains by far the best selling product in the Arduino line today. I wanted something that was 100% compatible with the Arduino UNO both on a physical and binary level. I could not have achieved such perfect compatibility with another chip. Using the Atmega328pb offers me the best compromise here.

 
 
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf