arduino-uno


Baud rate arduino


I am implementing a simple visible light communication module with two arduinos, as transmitter and receiver, with a short text message consisting of 120 characters. I have used Manchester encoding with on-off -keying modulation.
Altogether, in my message frame, with Manchester encoding and with preambles and end-of-frame byte, there are 2480 bits. I have set one bit period to be 500 micro second. In the receiver side I am sampling this bit four times, at (500/4) 125 micro seconds. From my knowledge, since each bit is 500 us, there are 2000 bits/s that are being transmitted from the transmitter so a baud rate of 9600 bits/s should work. However, 9600 is not working and any baud rate above 38400 upto 115200 is working and I can properly decode this short message in my receiver.
Can anyone please explain me the behavior? Why is baud rate of 9600 not working though I am only transmitting 2000 bits per second.
Further information, I have set the prescalar to 128, so the ADC sampling frequency is (16MHz/128)/13 = 9.6kHz.
Thank you very much.
When you suddenly started talking about "baud rates", it implied that you're using the Hardware Serial port on the Arduino. If so, then realise that feeding 2,000 bits per second (bps) into a device expecting 9,600 bps has problems.
The way that an Asynchronous UART works is that it waits for a start signal (bit), then decodes the next (typically) 9 signals at the current bit rate. It then checks that the 9th bit is a stop bit; if it isn't, it discards the byte.
Since you're only changing every 9600/2000 = 4.8 bits, then odds on the 9th "stop" bit will be of the wrong sense, and the data will be lost.
I'm going to draw an ASCII diagram (I don't have the resources necessary for some of the gorgeous diagrams I've seen on this site...) for the timing that I'm talking about.
I'll use the bitstream 00101101 for the signal produced by the circuit, with a . as a 0ms separator between bits;
I'll use a ^ to point out where the UART is sampling the bits;
I'll use a * to indicate a "correct" byte (insofar as the byte ends in a correct stop bit);
I'll use a ! to indicate an "incorrect" byte (insofar as the byte ends in an incorrect stop bit);
Of course, I'll assume a baud rate of 10,000bps (5 rather than 4.8...)
00000.00000.11111.00000.11111.11111.00000.11111
^^^^^.^^^^!.......^^^^^.^^^^*.......^^^^^.^^^^*
This sequence would result in the UART recording the following 3 bytes:
Error
0xF0 (LSb first is defined...)
0xF0 (LSb first is defined...)

Related Links

how to send dummy data on gpio pins of arduino uno.?
Serial Port not working () on Arduino in JetBrains CLion
Error in using IF statement
Arduino not displaying results
Python ImportError: No module named yahoo_finance
Can I take solar panel's output as an input to Arduino
I cannot find UID of my Arduino
Arduino Program Reset Bug
arduino uno R3 input pins with gsm shield
Light weight machine to machine communication with Arduino
Interfacing RM5 evolution coin acceptor with arduino
Arduino-ESP8266 Sending URL from a client browser connected to the esp8266 AP and receiving the entered URL in the arduino board
Need explanations about a code relative to MPU6050
Arduino Programmer only works after unlugging and plugging back in
How do I communicate between Arduino board and Intel Edison Arduino board using XBee S2?
I cannot solve my arduino program error

Categories

HOME
maven
java
drivers
single-sign-on
kde
plone
appx
iterator
lodash
bpmn
setup-deployment
google-oauth
sqlite3
gps
win32gui
ebean
paradox
dax
qt-creator
spring-tool-suite
size
windows-server-2012
django-simple-history
openrefine
visual-composer
scichart
swiftlint
mps
chromium-embedded
firebase-crash-reporting
qhull
chromebook
greendao
assistant
ejabberd-module
bpel
unboundid
skia
jspresso
noraui
avcapturesession
picasso
bitbucket-pipelines
cookiecutter-django
ncalc
grid.mvc
mime
avconv
filepicker
multipeer-connectivity
celery-task
tropo
boost-preprocessor
cudafy.net
mcafee
vtigercrm
word-vba-mac
probability-density
phishing
pcf
hill-climbing
cloudbees
msys
sdhc
ruby-2.2
atk4
quicklisp
method-parameters
sortedlist
composite
graph-api-explorer
pretty-print
kineticjs
camanjs
codeigniter-url
id3v2
kgdb
mcts
ril
excel-2003
chronoforms
seed
hamiltonian-cycle
gdata-api
semantic-diff
punbb
netdna-api
libc++
external-accessory
zend-translate
web-application-design
thunderbird-lightning
compiler-specific
audio-capture
backcolor
premature-optimization
sustainable-pace
commodore
ntvdm.exe

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App