Difference between revisions of "PC-Microcontroller Communications"
Russ hensel (talk | contribs) |
|||
(11 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== Introduction == | == Introduction == | ||
− | Many times an embedded system or microcontroller needs to be connected to a PC. This topic discusses the various methods for doing this. This is one of a series of articles on Microcontroller Serial Communications, rooted at this site here: [[Microcontroller Serial Communications Articles]] | + | Many times an embedded system or microcontroller needs to be connected to a PC. This topic discusses the various methods for doing this. This is one of a series of articles on Microcontroller Serial Communications, rooted at this site here: [[Microcontroller Serial Communications Articles]]. This article is for working on the PC side, for information on the microcontroller side see: [[http://www.opencircuits.com/RS232]] |
− | == Serial Communications from a PC to Microcontrollers == | + | == Serial Communications from a PC to Microcontrollers -- Terminal Emulators == |
− | This is often done using Hyperterminal ( a program bundled with MS Windows ) to communicate with the microcontroller using RS232 or virtual RS232 over USB. This program is pretty painful to use, we | + | This is often done using Hyperterminal ( a program bundled with MS Windows ) to communicate with the microcontroller using '''RS232''' or '''virtual RS232 over USB'''. This program is pretty painful to use, we list some alternatives to it here: |
{| class="wikitable" | {| class="wikitable" | ||
Line 22: | Line 22: | ||
|From the site: | |From the site: | ||
''The I/O Commander is designed to communicate, test and control our line of digital and analog I/O products. However, due to its flexible nature, it can also be used as a general purpose terminal emulator (color coded TXD/RXD, split screen modes, and 32/1024 "hot-keys") and, as a drum sequencer. The terminal emulator now supports COM1 through COMX, and data rates from 300bps to 921.6Kbps. Now with flow control and parity. Same low cost: Free'' | ''The I/O Commander is designed to communicate, test and control our line of digital and analog I/O products. However, due to its flexible nature, it can also be used as a general purpose terminal emulator (color coded TXD/RXD, split screen modes, and 32/1024 "hot-keys") and, as a drum sequencer. The terminal emulator now supports COM1 through COMX, and data rates from 300bps to 921.6Kbps. Now with flow control and parity. Same low cost: Free'' | ||
+ | <!--------------------------------> | ||
+ | |-valign="top" | ||
+ | |[http://www.com-port-monitoring.com/datalogger.html RS232 COM Port Logger] | ||
+ | |Capture and log RS232 port dataflows Review anyone? Open Source. For Windows. | ||
+ | |||
+ | 'Claims that it can be used to log the data flowing between two applications, but I found that it grabbed the COM port itself and was only able log incoming data from a single source. The help file added nothing to what was already visible on the screen. I used Eltima's virtual COM ports many years ago and was quite happy with them, but I found this product to be pretty useless. - mickeyf 2013/05/09' | ||
+ | |||
<!--------------------------------> | <!--------------------------------> | ||
|-valign="top" | |-valign="top" | ||
Line 31: | Line 38: | ||
|From the site: | |From the site: | ||
''last updated: Aug. 9, 1999 Tera Term (Pro) is a free software terminal emulator (communication program) for MS-Windows. It supports VT100 emulation, telnet connection, serial port connection, and so on.'' | ''last updated: Aug. 9, 1999 Tera Term (Pro) is a free software terminal emulator (communication program) for MS-Windows. It supports VT100 emulation, telnet connection, serial port connection, and so on.'' | ||
+ | * Cost: Free | ||
+ | * Related: [http://www.ayera.com/teraterm/ TeraTerm Pro Web 3.1.3 - Enhanced Telnet/SSH2 Client] | ||
<!--------------------------------> | <!--------------------------------> | ||
|-valign="top" | |-valign="top" | ||
|[http://www.ontrak.net/adrcom.htm Using ADRCOM Terminal Emulation Software] | |[http://www.ontrak.net/adrcom.htm Using ADRCOM Terminal Emulation Software] | ||
|From the site: | |From the site: | ||
− | ''ADRCOM is a FREE terminal emulation program available from Ontrak Control Systems that allows simple ASCII commands to be sent and received via a serial port. It can be used to verify hardware connection of an ADR device and familiarize programmers with the ASCII commands used with the interfaces. In this example an ADR112 is connected to com1.'' Looks nice, how about a review? | + | ''ADRCOM is a FREE terminal emulation program available from Ontrak Control Systems that allows simple ASCII commands to be sent and received via a serial port. It can be used to verify hardware connection of an ADR device and familiarize programmers with the ASCII commands used with the interfaces. In this example an ADR112 is connected to com1.'' Looks nice, how about a review? ` |
+ | * Cost: Free | ||
<!--------------------------------> | <!--------------------------------> | ||
|-valign="top" | |-valign="top" | ||
− | |[http://www.freedownloadmanager.org/downloads/terminal_emulator_software/] | + | |[http://www.freedownloadmanager.org/downloads/terminal_emulator_software/ Terminal Emulators] |
|A list of terminal emulators, may be a good one in the bunch or several. | |A list of terminal emulators, may be a good one in the bunch or several. | ||
+ | <!--------------------------------> | ||
+ | |-valign="top" | ||
+ | |[www.google.com BoostC] | ||
+ | |BoostC has a termainal window as part of its IDE. Free version available. | ||
+ | * Cost: Free Version | ||
+ | <!--------------------------------> | ||
+ | |-valign="top" | ||
+ | | | ||
+ | |Some PIC programmers have terminal windows, this needs more research | ||
+ | <!--------------------------------> | ||
+ | |-valign="top" | ||
+ | |[http://realterm.sourceforge.net/Serial Terminal -- Real Term] | ||
+ | |Open Source. take a look | ||
+ | * Cost: Free | ||
+ | <!--------------------------------> | ||
+ | |-valign="top" | ||
+ | |[http://www.com-port-monitoring.com/datalogger.html RS232 COM Port Logger Capture and log RS232 port dataflows] | ||
+ | |Review anyone? | ||
+ | <!--------------------------------> | ||
+ | |-valign="top" | ||
+ | |[http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm Tiny PIC bootloader] | ||
+ | |16F and 18F chips. Has a terminal emulator | ||
+ | <!--------------------------------> | ||
+ | |-valign="top" | ||
+ | |[http://www.aggsoft.com/serial-port-monitor/ Serial Port Monitor] | ||
+ | |Allows to detect a communication problem with some instrumentation. With this software, you can able to monitor the commands going over the RS232 line and determine a good course of action to solve any problem. | ||
<!-------------------------------- | <!-------------------------------- | ||
|-valign="top" | |-valign="top" | ||
Line 58: | Line 94: | ||
<!--------------------------------> | <!--------------------------------> | ||
|} | |} | ||
+ | |||
( for the search engines: dump HyperTerminal find a better communications program ) | ( for the search engines: dump HyperTerminal find a better communications program ) | ||
− | For some notes on how to plan the microcontroller end of the communications see: [[RS232]] and for a particular | + | For some notes on how to plan the microcontroller end of the communications see: [[RS232]] and for a particular implementation take a look at [[BitWacker PIC USB Development Board]] and the specialized PC program for it and similar devices: [[BitWacker Java Communications]] |
For general information on terminal emulators see: [http://en.wikipedia.org/wiki/Terminal_emulator Terminal emulator From Wikipedia, the free encyclopedia] | For general information on terminal emulators see: [http://en.wikipedia.org/wiki/Terminal_emulator Terminal emulator From Wikipedia, the free encyclopedia] | ||
Line 73: | Line 110: | ||
* Slow | * Slow | ||
* Requires bulky connectors and level translators | * Requires bulky connectors and level translators | ||
− | * Many new computers especially laptops don't have serial ports | + | * Many new computers especially laptops don't have rs232 serial ports |
+ | |||
+ | == Serial Communications from a PC to Microcontrollers -- Writing Programs == | ||
+ | |||
+ | Writing PC programs to communicate with Microcontrollers can be very challenging, or not so much. The easiest I have encountered are the libraries for the Arduino which are part of the Processing environment. Look at the Arduino examples. You do not have control over all rs232 parameters or the ability to manage all possible errors, but you do have a quick way to program that works. Under the hood this is based on using Java. Should run on all major operating systems. This is free and largely open software. | ||
+ | |||
+ | *insert links here | ||
+ | |||
+ | The USB Bitwacker comes with a Liberty Basic program that seems to work quite well. Liberty Basic is not free, but I think has a demo version that is enough ability to run reasonable programs. If you can live with this situation and Basic, this could be for you. | ||
+ | |||
+ | |||
+ | *insert links here | ||
+ | |||
+ | I have written several programs using Java, there has not been much interest on the net so I have worked on them only for my own use and from time to time. | ||
+ | |||
+ | *insert links here. | ||
+ | |||
+ | |||
+ | I have heard VB proponents claim that it is pretty easy with VB. Someone else will have to provide more information. | ||
+ | I | ||
== USB Communications from a PC to Microcontrollers == | == USB Communications from a PC to Microcontrollers == | ||
− | Many modern computers especially laptops do not have serial ports and the serial connector port is big and bulky. RS232 communication requires the use of level shifters which add parts. Serial communication can also be slow. | + | Many modern computers especially laptops do not have serial ports and the serial connector port is big and bulky. RS232 communication requires the use of level shifters which add parts. Serial communication can also be slow. Note that USB often appears as virtual RS232 on the PC which allows you to use RS232 on the microcontroller and rs232 techniques on the PC. |
− | An alternative is more and more microcontrollers now have native support for USB which has smaller connectors, is faster, and works with the plug and play architecture of modern OSs. The disadvantage is that the firmware is much more complex and the PC side requires an device driver and corresponding INF file. Lucky, many generic drivers are available and many microcontroller | + | An alternative is more and more microcontrollers now have native support for USB which has smaller connectors, is faster, and works with the plug and play architecture of modern OSs. The disadvantage is that the firmware is much more complex and the PC side requires an device driver and corresponding INF file. Lucky, many generic drivers are available and many microcontroller manufacturers that support USB provide sample firmware. |
{| class="wikitable" | {| class="wikitable" | ||
|-valign="top" | |-valign="top" | ||
− | | | + | |Category |
|Site | |Site | ||
|Comments | |Comments | ||
Line 109: | Line 165: | ||
|Device Driver | |Device Driver | ||
|[http://msdn2.microsoft.com/en-us/library/aa476426.aspx WinUSB] | |[http://msdn2.microsoft.com/en-us/library/aa476426.aspx WinUSB] | ||
− | |Free generic device driver provided by | + | |Free generic device driver provided by Microsoft for Windows XP and Vista |
<!--------------------------------> | <!--------------------------------> | ||
Line 125: | Line 181: | ||
* No level translators and small connectors | * No level translators and small connectors | ||
* Works with computers that don't have serial ports | * Works with computers that don't have serial ports | ||
− | * Ability to implement standard devices such a keyboards, mice, memory card readers, and sound cards without | + | * Ability to implement standard devices such a keyboards, mice, memory card readers, and sound cards without writing a device driver. |
Disadvantages: | Disadvantages: | ||
Line 136: | Line 192: | ||
== Ethernet-TCP/IP Communications from a PC to Microcontrollers == | == Ethernet-TCP/IP Communications from a PC to Microcontrollers == | ||
− | Ethernet and the Internet is | + | Ethernet and the Internet is everywhere so many embedded devices now have Ethernet connections. Network connections can be very long and it's possible to use cheap commodity hardware such as WiFi bridges. Several microcontroller manufacturers are now providing sample TCP/IP stacks some of them with embedded web servers so that the hardware can be controlled from a PC via a web browser such as IE or Firefox. PC programming has a mostly OS independent API called sockets that is available on both Windows and Unix. |
{| class="wikitable" | {| class="wikitable" | ||
Line 156: | Line 212: | ||
Advantages: | Advantages: | ||
* Fast | * Fast | ||
− | * Long cable lengths and commodity | + | * Long cable lengths and commodity equipment |
* PC API is mostly OS independent | * PC API is mostly OS independent | ||
* No device drivers required | * No device drivers required | ||
Line 168: | Line 224: | ||
== Bluetooth-SPP Communications from a PC to Microcontrollers == | == Bluetooth-SPP Communications from a PC to Microcontrollers == | ||
− | Many laptops and even desktops now have bluetooth support or a bluetooth dangle can be purchased for a small amount of money. This makes bluetooth a good choice for controlling microcontrollers wirelessly. Several | + | Many laptops and even desktops now have bluetooth support or a bluetooth dangle can be purchased for a small amount of money. This makes bluetooth a good choice for controlling microcontrollers wirelessly. Several drop inn modules are available that implement the Bluetooth SPPprotocoll which allows direct emulation of a serial cable. The models usually have an AT command set for configuring the module and establishing connections. Most Bluetooth stacks on the PC have support for SPP and will expose the device as a COM port. Detection of the COM port is difficult since Bluetooth doesn't have a standard stack for Windows. |
{| class="wikitable" | {| class="wikitable" | ||
|-valign="top" | |-valign="top" | ||
− | | | + | |Category |
|Site | |Site | ||
|Comments | |Comments | ||
Line 180: | Line 236: | ||
|Hardware | |Hardware | ||
|[http://www.sparkfun.com/commerce/product_info.php?products_id=8461 Bluetooth DIP Module - SparkFun] | |[http://www.sparkfun.com/commerce/product_info.php?products_id=8461 Bluetooth DIP Module - SparkFun] | ||
− | |Bluetooth | + | |Bluetooth drop in serial replacement module from SparkFun |
<!--------------------------------> | <!--------------------------------> | ||
Line 198: | Line 254: | ||
== RS232 Level Translation == | == RS232 Level Translation == | ||
− | Many microcontrollers do rs232 but do not output levels that are rs232 standard. I have often seen statements that they work anyway. Could be true. The standard solution is to use a MAX232 chip. Rather than put one in every project you can use a | + | Many microcontrollers do rs232 but do not output levels that are rs232 standard. I have often seen statements that they work anyway. Could be true. The standard solution is to use a MAX232 chip. Rather than put one in every project you can use a separate board or cable. |
Some links: | Some links: |
Latest revision as of 11:39, 9 May 2013
Contents
- 1 Introduction
- 2 Serial Communications from a PC to Microcontrollers -- Terminal Emulators
- 3 Serial Communications from a PC to Microcontrollers -- Writing Programs
- 4 USB Communications from a PC to Microcontrollers
- 5 Ethernet-TCP/IP Communications from a PC to Microcontrollers
- 6 Bluetooth-SPP Communications from a PC to Microcontrollers
- 7 RS232 Level Translation
Introduction[edit]
Many times an embedded system or microcontroller needs to be connected to a PC. This topic discusses the various methods for doing this. This is one of a series of articles on Microcontroller Serial Communications, rooted at this site here: Microcontroller Serial Communications Articles. This article is for working on the PC side, for information on the microcontroller side see: [[1]]
Serial Communications from a PC to Microcontrollers -- Terminal Emulators[edit]
This is often done using Hyperterminal ( a program bundled with MS Windows ) to communicate with the microcontroller using RS232 or virtual RS232 over USB. This program is pretty painful to use, we list some alternatives to it here:
Program | Source/Comments
|
RS232/USB Probe | RS232/USB Probe Now in testing, a specialized program for microcontroller communication on the PC side. |
R. E. Smith I/O Commander | From the site:
The I/O Commander is designed to communicate, test and control our line of digital and analog I/O products. However, due to its flexible nature, it can also be used as a general purpose terminal emulator (color coded TXD/RXD, split screen modes, and 32/1024 "hot-keys") and, as a drum sequencer. The terminal emulator now supports COM1 through COMX, and data rates from 300bps to 921.6Kbps. Now with flow control and parity. Same low cost: Free |
RS232 COM Port Logger | Capture and log RS232 port dataflows Review anyone? Open Source. For Windows.
'Claims that it can be used to log the data flowing between two applications, but I found that it grabbed the COM port itself and was only able log incoming data from a single source. The help file added nothing to what was already visible on the screen. I used Eltima's virtual COM ports many years ago and was quite happy with them, but I found this product to be pretty useless. - mickeyf 2013/05/09' |
PIC Chip Communication with a PC | Date on this is 2001, does it still run? |
Tera Term Home Page | From the site:
last updated: Aug. 9, 1999 Tera Term (Pro) is a free software terminal emulator (communication program) for MS-Windows. It supports VT100 emulation, telnet connection, serial port connection, and so on.
|
Using ADRCOM Terminal Emulation Software | From the site:
ADRCOM is a FREE terminal emulation program available from Ontrak Control Systems that allows simple ASCII commands to be sent and received via a serial port. It can be used to verify hardware connection of an ADR device and familiarize programmers with the ASCII commands used with the interfaces. In this example an ADR112 is connected to com1. Looks nice, how about a review? `
|
Terminal Emulators | A list of terminal emulators, may be a good one in the bunch or several. |
[www.google.com BoostC] | BoostC has a termainal window as part of its IDE. Free version available.
|
Some PIC programmers have terminal windows, this needs more research | |
Terminal -- Real Term | Open Source. take a look
|
RS232 COM Port Logger Capture and log RS232 port dataflows | Review anyone? |
Tiny PIC bootloader | 16F and 18F chips. Has a terminal emulator |
Serial Port Monitor | Allows to detect a communication problem with some instrumentation. With this software, you can able to monitor the commands going over the RS232 line and determine a good course of action to solve any problem. |
( for the search engines: dump HyperTerminal find a better communications program )
For some notes on how to plan the microcontroller end of the communications see: RS232 and for a particular implementation take a look at BitWacker PIC USB Development Board and the specialized PC program for it and similar devices: BitWacker Java Communications
For general information on terminal emulators see: Terminal emulator From Wikipedia, the free encyclopedia
Advantages
- Relatively simple firmware and PC software
- Ability to use terminal emulators to test hardware
- Long cable lengths
Disadvantages:
- Slow
- Requires bulky connectors and level translators
- Many new computers especially laptops don't have rs232 serial ports
Serial Communications from a PC to Microcontrollers -- Writing Programs[edit]
Writing PC programs to communicate with Microcontrollers can be very challenging, or not so much. The easiest I have encountered are the libraries for the Arduino which are part of the Processing environment. Look at the Arduino examples. You do not have control over all rs232 parameters or the ability to manage all possible errors, but you do have a quick way to program that works. Under the hood this is based on using Java. Should run on all major operating systems. This is free and largely open software.
- insert links here
The USB Bitwacker comes with a Liberty Basic program that seems to work quite well. Liberty Basic is not free, but I think has a demo version that is enough ability to run reasonable programs. If you can live with this situation and Basic, this could be for you.
- insert links here
I have written several programs using Java, there has not been much interest on the net so I have worked on them only for my own use and from time to time.
- insert links here.
I have heard VB proponents claim that it is pretty easy with VB. Someone else will have to provide more information.
I
USB Communications from a PC to Microcontrollers[edit]
Many modern computers especially laptops do not have serial ports and the serial connector port is big and bulky. RS232 communication requires the use of level shifters which add parts. Serial communication can also be slow. Note that USB often appears as virtual RS232 on the PC which allows you to use RS232 on the microcontroller and rs232 techniques on the PC.
An alternative is more and more microcontrollers now have native support for USB which has smaller connectors, is faster, and works with the plug and play architecture of modern OSs. The disadvantage is that the firmware is much more complex and the PC side requires an device driver and corresponding INF file. Lucky, many generic drivers are available and many microcontroller manufacturers that support USB provide sample firmware.
Category | Site | Comments |
Getting started book | USB Complete | Introduction to USB. Covers both the hardware as well as some of the software issues like drivers and classes. |
Formal Specification | USB 2.0 Specification | Free reference documents that cover the hardware and core software of USB |
Formal Specification | USB Classes | Free reference documentation for standard USB device classes. |
Device Driver | WinUSB | Free generic device driver provided by Microsoft for Windows XP and Vista |
Sample Framework/Device Driver | MCHPFSUSB v1.3 USB Framework | Sample USB framework for PIC18F USB Microcontrollers. Framework handles device enumeration and control endpoint requests. A free generic device driver is provided. |
Advantages:
- Fast
- Plug and Play
- No level translators and small connectors
- Works with computers that don't have serial ports
- Ability to implement standard devices such a keyboards, mice, memory card readers, and sound cards without writing a device driver.
Disadvantages:
- Complex Firmware and PC software
- Requires OS specific device drivers and installers
- PC application software is more OS specific
- Short cable lengths
- May require the use of an expensive hardware bus analyzer
Ethernet-TCP/IP Communications from a PC to Microcontrollers[edit]
Ethernet and the Internet is everywhere so many embedded devices now have Ethernet connections. Network connections can be very long and it's possible to use cheap commodity hardware such as WiFi bridges. Several microcontroller manufacturers are now providing sample TCP/IP stacks some of them with embedded web servers so that the hardware can be controlled from a PC via a web browser such as IE or Firefox. PC programming has a mostly OS independent API called sockets that is available on both Windows and Unix.
Catagory | Site | Comments |
Sample Firmware/Stack | Microchip TCP/IP Stack v4.18 for PIC18, PIC24, dsPIC and PIC32 MCUs | Sample TCP/IP firmware for many Microchip microcontrollers |
Advantages:
- Fast
- Long cable lengths and commodity equipment
- PC API is mostly OS independent
- No device drivers required
- Many OSs include free packet sniffers for easy analysis of network traffic
Disadvantages:
- More complex firmware then either serial ports or USB
- High part count and complex hardware
- Device detection is not plug and play. It can be complex to find the IP address of an embedded device.
Bluetooth-SPP Communications from a PC to Microcontrollers[edit]
Many laptops and even desktops now have bluetooth support or a bluetooth dangle can be purchased for a small amount of money. This makes bluetooth a good choice for controlling microcontrollers wirelessly. Several drop inn modules are available that implement the Bluetooth SPPprotocoll which allows direct emulation of a serial cable. The models usually have an AT command set for configuring the module and establishing connections. Most Bluetooth stacks on the PC have support for SPP and will expose the device as a COM port. Detection of the COM port is difficult since Bluetooth doesn't have a standard stack for Windows.
Category | Site | Comments |
Hardware | Bluetooth DIP Module - SparkFun | Bluetooth drop in serial replacement module from SparkFun |
Advantages:
- Fast
- Wireless
- Quick conversion of existing serial port based devices to wireless
- No device drivers to install
Disadvantages:
- Pairing devices can be complex
- Difficult to make the system plug and play
- AT command set can get in the way of data if binary data is sent.
RS232 Level Translation[edit]
Many microcontrollers do rs232 but do not output levels that are rs232 standard. I have often seen statements that they work anyway. Could be true. The standard solution is to use a MAX232 chip. Rather than put one in every project you can use a separate board or cable.
Some links:
- P4 Adapter/Serial Cable My favorite, think is comes from next reference
- RS232 to TTL (5V Signal) Converter Kit The RLC-1 is a compact, reliable RS232 to logic level converter ideal for interfacing microcontroller projects or products to a computer. The logic level interface supports 5 volt or 3 volt logic levels and draws only a small amount of power.