Raspberry Pi native Serial port default for console output, if you want to use in your own program need to shut down the system to occupy this serial port.
The method is configured for Rasp-config, or directly modifies the/boot/cmdline.txt
#dwc_otg. lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator= Deadline Fsck.repair=yes Rootwai
Dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes Rootwai
After the modification will be more than a serial port device file/dev/ttyama0, you can use the command stty-f/dev/ttyama0 9600 set the serial port parameters, etc.
Can be installed under the command line debugging software minicom for serial port setup and data transceiver
sudo apt-get install minicom
If the desktop system is installed, more graphical debugging tools such as Cutecom
System comes with the serial port is the TTL level, if you want to communicate with the RS485 device, need to connect a 485 conversion chip, ready-made can be directly inserted on the board for the link
https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-951511554.15.23a61349h5N5xG&id=563656341277
can buy empty plate to buy their own components welding or buy welding ready-made. Board on the chip for ADM2587, chip-level power supply and signal are isolated 485 chip, the cost is not low, but for the motor and other interference large and go outside the security requirements of high-quality recommendations with isolation. To avoid system instability or burn out the motherboard
can also directly with the USB to 485 small module, suitable for debugging and so on is not 24-hour use of the occasion. USB is often unstable, and the module does not signal isolation.
https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-951511554.15.23a61349h5N5xG&id=563656341277
Then do not install the driver, automatically will be more than a serial device file/dev/ttyusb0
Usage and programming as in the previous article
Since the two modules are self-contained transceiver automatic switching, if you do not have to change the control of a di/ri pin, of course, if the baud rate is high, it is best to manually control. Gpio control can use the WRINGPI library, while the serial port program can also use WRINGPI this library to write
Serial communication in various languages:
C language, using the WRINGPI library, a large number of online code calls to the LINUX API are not introduced
#include <wiringSerial.h>
int main (void)
{
int FD;
if (fd = Serialopen ("/dev/ttyama0", 9600)) <0)
{
printf ("Serial err\n");
}
while (1)
{
Uartbuff[0]=serialgetchar (FD);
if (uartbuff[0]== ' a ')
{
Serialputchar (Fd,uartbuff[0]);
}
Sleep (0.5);
}
return exit_success;
}
PYTHON Installation pyserial Module
Http://www.cnblogs.com/starspace/archive/2009/02/20/1394603.html
>>> ser = serial. Serial ('/dev/ttys1 ', 19200, timeout=1)
>>> x = Ser.read () # read one byte
>>> s = SER.R EAD # read up to ten bytes (timeout)
>>> line = Ser.readline () # read a ' \ n ' terminated line
>>> Ser.close ()
Shell
echo "123" >/dev/ttyama0
Cat/dev/ttyama0
PHP: Installing extensions
Https://github.com/oasynnoum/phpmake_serialport
<?php
Use Phpmake\serialport;
$device = ' COM4 '; On Windows
$device = '/dev/ttyusb0 '; On Linux
/*
* Create new instance
*/
$port = new SerialPort ();
try {
/*
* Open the Port
*/
$port->open ($device);
/*
* Configure baud rate
*
* can specify baud rate as Integer,
* or other class constants like serialport::baud_rate_*
*/
$port->setbaudrate (serialport::baud_rate_9600);
/*
* Configure Flow control
*
* Any other options is below.
* Serialport::flow_control_soft is software FLOW CONTROL.
* Serialport::flow_control_hard is hardware FLOW CONTROL.
*/
$port->setflowcontrol (Serialport::flow_control_none);
/*
* Configure canonical mode
*
* Canonical mode is for text-based communication.
* non-canonical mode is binary-safe.
* More detail information about VMIN and Vtime,
* See http://www.unixwiz.net/techtips/termios-vmin-vtime.html
*/
$port->setcanonical (False)
->setvtime (1)->setvmin (0);
/*
* Read data from port.
* You can get a size of actual read data with strlen ($DATA).
*/
$data = $port->read (256);
/*
* Send data.
*/
$port->write ($data);
} catch (Exception $e) {
Print $e->getmessage (). Php_eol;
}
if ($port->isopen ()) $port->close ();