CAN low speed to CAN high speed adaption [closed] - arduino

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 6 years ago.
Improve this question
I wonder if is possible to adapt a low speed fault tolerant CAN network (100kbps) to a high speed CAN network. I need this to connect a newer infotainment board (CIC) to my K-CAN inside my BMW e60 car. I already managed to wake up and control (on a workbench) the CIC via Arduino and MCP2515 shield.
Do you have any idea if is possible ?
Thanks!

The easiest thing to do is probably to simply replace the CAN transceiver IC on the infotainment board you're putting into the car, to one that matches the bus type you already have in the car. The different transceiver ICs are usually drop-in replaceable, so no problem with that.
However, even with a matching transceiver, the data bit rate needs to match as well, so you need to determine the bit rate used by the board and the one used by the vehicle's bus.
If the bit rates don't match, there's no point in replacing the transceiver IC - in this case the only solution is probably to create a bidirectional store-and-forward adapter/gateway.
One may construct such a gateway using an Arduino, but it'd have to have two CAN bus "shield" daughter boards - one for each bus, where each daughter board carries a CAN transceiver appropriate for the bus it'd connect to, and its CAN controller configured to the appropriate bit rate.
Each of the CAN controllers connects to the Arduino via SPI. It is very much possible for multiple slave devices to share a single SPI bus, with the master device (e.g., the Arduino microcontroller) selecting the device it wishes to communicate with using the chip/slave select (CS/SS) lines. For more information about SPI communication, including multi-slave, see here and here.
For off-the-shelf Arduino "shields" relying on SPI, additional shields (beyond the first) might requires physical rerouting of their CS/SS line to a different control line coming from the Arduino microcontroller, to allow slave selection. Consult the boards' pinouts and/or schematics to determine which modifications are required. Specifically, if using seeed's CAN bus circuit, check the "CS pin" section of its Wiki.
In terms of software, the gateway would basically need to constantly copy messages received in one bus to the other, with a small FIFO buffer to keep a few messages in case the target bus is busy.
Some modifications to the CAN bus library's source code might be required, to support multiple CAN controllers and switching between them using the CS/SS lines.
BTW, Stack Overflow is probably the wrong place for this question, as it's not really a programming question.

Related

Why is BLE beacon technology used instead of Wi-Fi infrastructure which is already installed? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
The Beacon radiates signal. A nearby Bluetooth enabled device receives this signal. When a particular application recognizes its signal, it connects it to an action or content track stored in the cloud and allows the user to view it. By editing the application on your phone, you can set how it reacts to signals.
For example:
Beacon systems are installed in the shops within a mall. All Beacons have their own fixed ones. When the signal of Beacon, which broadcasts with its own private ID, reaches your phone, the application of the shopping center (which should be pre-installed) will process this signal and give you outputs such as the store discount coupon, navigation proposal varying according to the application's program.
When I set out from this example, I have the following question in my mind. Why is BLE beacon technology used instead of Wi-Fi infrastructure (already installed in phone and mall)? When we periodically scan Wi-Fi signals, we can access SSID, MAC and RSSI information. When we use this information as a query tool by using an application, the approximation recognition with the beacon is completed. In this way, we do not have to invest in BLE beacon infrastructure. What is the keypoint of BLE beacon technology? Why do people need to use this technology?
The simplest answer is in the fact that BLE devices are extremely power conscious (therefore the name, Bluetooth Low Energy). A BLE beacon can run on a coin cell battery for a year or even more without any issue. This is a huge advantage over WiFi which is relatively considered power hungry. It is also an advantage over other low energy wireless technologies (e.g. ZigBee, ANT, etc) in that phones and tablets have Bluetooth built in and therefore do not require any extra hardware. There may be other minor reasons such as indoor performance and interference, but the Low Energy aspect is the main differentiator.
There are many articles that discuss this in length, I recommend the following:-
Comparing Low Power Wireless Technologies
BLE vs WiFi: Which is Better for IoT Product Development
The Pros and Cons of Bluetooth Low Energy
Finally, I recommend posting a similar question in the future to other StackExchange networks (e.g. ElectricalEngineering) as StackOverflow is mainly for programming related questions and you'd probably get more traction and better answers in other sites.
I hope this helps.

What is the purpose of an Arduino? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 5 years ago.
Improve this question
What can an Arduino do that a Raspberry Pi can't?
Arduino is a microprocessor, not a computer. It means that Arduino has inputs and outputs that you can connect to different electronic components such as motors, lights, sensors, etc.
Those inputs and outputs are only pins that you can send or receive a certain amount current.
Arduino has a pretty limited memory so you can only store a simple program on it, not a OS. It is mostly used in automation. For example you want to automate a garden so you have sensors to detect the amount of water in the ground and then use this information to enable a motor that will turn the water on. There is a complete API to simplify the coding between the programmer and the device.
For example, you have a function that will control the speed of the motor in rpm so you only have to give the speed as a parameter of that function.
Raspberry pi is a complete computer, so you can plug a screen, mouse, keyboard to it. There is some OS available for it. It is not just only pins as inputs or outputs, but HDMI input or usb port.
So Raspberry pi and Arduino are completely different and have both a different field of interest.
You will not order a Raspberry Pi to automate the temperature of your coffee as you will not use a Arduino to make a OS.
I hope this will help making the difference between the two.
Good luck!
I would say that the functions and capabilities of the Pi Zero and the Arduino boards have started to overlap, as have the prices (although where I live the Pi Zeros are still somewhat more expensive that Arduinos). Perhaps we will see the applications start to overlap, too.
Conventionally, the Pi has been used in situations that demanded, or at least benefited from, running a full operating system, while the Arduino was more for running a single, custom program. I don't think there's been much interest in running code on a Pi that does not run under an OS, but it seems to be possible, up to a point. I'm not whether all the hardware is accessible this way, because some of it requires proprietary drivers, IIRC.
Because the Pi conventionally runs a full Linux kernel and utilities, it's been slower to start up in embedded applications, whereas the Arduinos essentially boot right into application code. The Pis have slightly greater power consumption (quite a bit greater, with the full-size models), and are a bit larger.
I suspect that, if you were planning commercial production, basing something around Arduino-type hardware is more likely to be productive that using a Pi. I have come across Pis being used for commercial products, but not (I think) for mass-market applications. The hardware and programming style of an Arduino is much closer to the kind of thing that you can miniaturize into a consumer product, even though the Arduino itself may be comparatively expensive.
In short, I would expect that for casual, home, and research use, it's increasingly easy to justify using a Pi Zero over any kind of microcontroller; but if I had to prototype a mass-market item, Arduino would still be closer to the final hardware spec.

What is the difference between USB host VS USB OTG support when it comes to Microcontrollers? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
This microcontroller claims to have USB host, device and OTG support here.
It is STM32F411CEU6 from ST Microelectronics.
While this one from Atmel(ATSAM3X8C) just claims acting as USB host and device.
I think any chip that can act as device and host can be used to implement OTG functionality. Am I right? Or the microcontroller should explicitly support the OTG feature?
PS: The 2 chips above are just samples and the 2nd says it supports OTG in datasheet as Jonny_boy said (yes! bad sample but I can't change it now that it came to this!!). But the question still remains.
Looking at the datasheet, I'm pretty certain that this mcu would be considered as having usb OTG. It definitely fits the definition.
Moreover, doing a ctrl+f through the product series summary turns up several registers and pins with "OTG" in the name. If you look at chapter 12, "Embedded peripherals overview", section 12.9 explicitly says that "USB On-The-Go High Speed Port" is a feature of this MCU. Please read the datasheet more carefully.
edit 1:
As far as the general case goes, Wikipedia is pretty explicit:
"Use of USB On-The-Go allows those devices to switch back and forth between the roles of host and client devices"
The official usb website, usb.org, has similar (but more verbose) language in its OTG section.
The USB On-The-Go and Embedded Host Supplements addresses these scenarios by allowing portable devices and non-PC hosts to have the following enhancements:
Targeted host capability to communicate with selected other USB peripherals
Support for direct connections between OTG devices
Power saving features to preserve battery life
We can unequivocally say "yes, a ('non-pc' (whatever that means)) device with both host and slave capabilities is considered OTG.

IBeacon receivers / transmitters [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I am trying to determine whether IBeacon technology would be useful in tracking equipment in an office building.
Everything I've read required a beacon, a smart phone (i phone, i pad, etc), and the app that is running. If I understand correctly, a person would walk around with a smart phone "searching" for beacon signal. When in range of a signal, it would then register on the phone. This involves walking around and searching for the signal.
What I am wanting to do is have stationary receivers located around the building. Each receiver would a specific ID number. A beacon would attached to the piece of equipment. As the equipment moves around, it's signal would be picked up by the individual receivers. The equipment's location could then tied to a specific receiver.
Some of the problems would be:
1) I would like to use bluetooth technology so that I do not have to be tied into an existing wireless network. This eliminates network and configuration problems.
2) When a signal is identified by a receiver it needs to be "relayed" between multiple receivers until the data is received by the computer that runs the tracking database software. The original beacon ID and location needs to be transmitted.
3) The receivers/transmitter signals must go through floors and walls.
4) All this needs to be done a a relatively low cost per beacon and per receiver.
I think that this can be done with I Beacon technology,it's just finding the right setup.
Any thoughts would be extremely help.
You can do this with iBeacon technology (I have built similar systems) but there are some difficulties:
The stationary receivers must be constantly powered, so they must be near outlets. If sonebody unplugs them (think the cleaning crew to use a vacuum) they go offline until you detect the system isn't functioning and plug them back in. You need tools to monitor this.
The stationary receivers won't be super cheap. You can make them out of a raspberry pi and a bluetooth dongle (~$40 including power supply) an Android mini computer (similar cost) or an iPod touch ($200). Whatever your choice, it is a fair amount of software to write. These detectors need monitoring software to make sure they stay up 24-7.
The Bluetooth info relay to the database adds the biggest level of complexity. You are building your own mesh network, which is possible, but nontrivial. Using WiFi to a web service would be much easier.
This is all possible, but it is a big job. Don't underestimate it.

Does anyone have any sample code or suggestions to help me to interface my 100 pin uc3a1512to a device via RS-485? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 2 years ago.
Improve this question
I am attempting to connect and control a device which only accepts RS-485 input. I wish to communicate to this device via my existing UC3A1512. Does anyone have any existing source code or examples that may help me to create this interface?
I need a method of outputting data via RS-485 format.
I do not need to establish round trip communication, I simply need the ability to send commands to the device.
I have looked at Atmel's website and also on AVRFreaks and I see nothing of value to my project.
Please review page 10 of this Adobe PDF from Lin Engineering to understand more about the device I need to communicate with.
RS-485 is just the electrical specification for a differential serial bus. There are many different data formats that can be used. To connect RS-485 to a microcontroller you need some hardware driver IC, there are plenty to choose from (a quick search at Farnell found 39).
The low level serial format may be 9600 8N1, if page 13 of the driver manual is any indication.
The higher level format (how to send commands to the motor) is not specified in the document, and I didn't find it elsewhere.
In the UC3A1512 you need to configure one of the USARTs to RS-485 operation, see Chapter 26 of the data sheet. Once the interface is configured the operation may be similar to RS-232, if a simple command format is used.
RS485 is a simple symmetrical serial bus. The data that you need to send over that serial link must be specified in the reference data sheet for your UC3A1512 device.
To create and debug your application (probably on an emulator it is useful that you can send it from your host PC before you try it from the embedded controller. This is easy, as RS485 allows multiple connections in contrast to RS232 which is point to point.
RS485 can be converted to regular serial RS232.
If your computer has no RS232 port anymore (most don't) you can get an USB to RS232 converter.
So far the most relevant answers have come from my question posted on electronics.stackexchange.com
Had I known this existed prior to posting my question on Stack I would have limited my question to Electronics & Robotics ONLY. As I had already asked the question and receive answers, I have opted to keep both questions open.
Thanks for your responses!

Resources