Arduino Uno serial monitor printing garbage - arduino

I am using an Arduino Uno and GSM sim800l for a project. It looks like something is wrong and I don't know what it is. Here is my code:
#include <AltSoftSerial.h>
AltSoftSerial altSerial;
void setup() {
Serial.begin(19200);
Serial.println("AltSoftSerial Test Begin");
altSerial.begin(19200);
altSerial.println("Hello World");
}
void loop() {
char c;
altSerial.print("altSerial is working.");
if (Serial.available()) {
c = Serial.read();
altSerial.print(c);
}
if (altSerial.available()) {
c = altSerial.read();
Serial.print(c);
}
}
Its output was like this:
AltSoftSerial Test Begin (linebreak)
Hello World (linebreak)
ltSerial is ok⸮⸮M⸮ɥ⸮⸮⸮is okalt //insert long random garbage here
I tried changing the baud rate of the code and serial monitor to keep it matched, but it is not working. I tried to lower it as low as 300 and tried up to 19,200 baud as well.
I also tried menu Tools → Fix encoding and reload, but it still didn't solve the problem. It is my first time using this type of hardware, so please bear with me. My goal is to use it to send SMS messages. but right now I'm trying a smaller task with it to try and understand it better.
The Arduino IDE version I am using is 1.8.7.

It is a troubleshooting tree:
I am going to assume the system is Windows 10, but the basic ideas are the same if the way to achieve them are different.
Plug in your Arduino. You already said your serial monitor is set to 19200, but be sure you are sure, because that is very often the problem.
if you are sure of #1, open Control Panel → Device manager → Ports
If you don't see "Ports" in the list, then your computer isn't seeing the Arduino. This could be anything from a bad Arduino to a bad cable to a bad USB port on your PC. Try switching all those out one at a time to see if you can get anything talking to the COM port at speed. Since you were getting something in the serial monitor, this won't be your particular problem.
Click on "Ports" to expand it, and verify you see the Arduino listed. Right click on the Arduino, disable, and enable it again. See if that fixes the baud rate problem.
Look at Arduino properties
Does it say your device is working properly? If no, look at events and you will see an error description. Fix whatever it says is wrong. If yes, continue.
Port settings will likely be 9200, 8, None, 1, None. Even if your baud rate in the serial monitor window is 19200, you will still probably see 9200 in Device Manager, don't worry about it. It feels wrong, but it is normal. Microsoft seems to like keeping 9600 here, even if the last thing I did with this port was different. The data bits, and other settings listed above are a different matter.
next, click on Advanced
is your Arduino-assigned port number showing up? Does it say 'In Use' beside it? If it does, this is your problem. I know. Strange, huh? Trust me, if it says 'In Use', that means that something internal to Microsoft is using the port, but it isn't your Arduino. Power shell can help you resolve what has it, but that's another story, but the best bet now is reinstall your driver.
Click the Driver tab, and verify your Driver Provider is Arduino LLC. I've never seen it not that, but if it isn't, I would try to find out why.
Go ahead and Update the driver and reboot your computer, even if you aren't prompted to reboot, do it anyway.
Didn't fix it? In the Driver tab, Disable the device, and re-enable it. That might fix the problem, too.
Didn't it fix it? Don't uninstall the driver just yet.
Click Details. Do you see Arduino?
Look at the Events tab. If you see an error, then fix it.
Still not working? Uninstall your serial driver, and reinstall it.
Still no 19200? If you have garbage, the timing on your RX pin is not synchronized with the Arduino TX pin. You now need a logic analyzer, and that is more than can be covered here.

Related

Arduino serial monitor does not show anything for AT command

I am a beginner to arduino and trying to follow one of the videos from youtube to make a project- Master And Slave using HC-05 modules. I followed every step from that video carefully. Here's the link to the video -> https://www.youtube.com/watch?v=BXXAcFOTnBo For Slave Module when I type AT commands in the serial monitor nothing shows up. I searched in Internet for the this problem and still didn't fix it. Here's What i have done:
tired restarting my pc
tried Changing arduino, At first i used arduino nano and then uno
I tried changing the baud rate to all other values and nothing happened
And there is no change in light blink, it stays on AT command mode until power is turned off and on again.
This is how is looks
Thank You For the Answer
Not responding to AT commands is common with cloned HC-05 modules. The biggest reason for this is that the ENABLED pin is not plugged in. Right next to the VCC pin, there is a pin called KEY that should be idle. When you feed that pin with 3.3V, you will see that you get a response to the AT commands. If you don't get any response, don't forget to press the button on the BT Module after making the connection. If that doesn't work, be sure to remove the EN pin and press the button again. You should try these ways until you get a response from the AT command. Every time you write AT on the serial port screen, the bluetooth module will also respond to these requests with the led on it.

How to fix Failed to connect to ESP32: Timed out waiting for packet header error?

I tried to flash an ESP32 but I didn't succeed, I tried with esptool.py and Arduino IDE. I tried to press the boot button and reset but it didn't work. Here is the error:
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
If using the Arduino IDE, try lowering the upload speed (Tools/Upload Speed). Lowering mine from 921600 to 460800 did the trick.
First ensure that you are in download mode:
Start the serial monitor and set the speed (mine is 115200).
While pressing the "boot" button, press and release the "en" button (your buttons may be labeled differently).
You should see something like this on the serial monitor:
waiting for download
Now start the upload
My development machine, a 2013 iMac is connected via USB to the USB-c port on my ESP32 Dev Module. Apparently the iMac's USB or ESP32 board's USB cannot keep up at the 921600 upload speed.
DISCLAIMER! May not be correct answer but may help to save time for someone.
Quick answer if you do not want read my experience: Disconnect all wires from pins and try uploading again! It may help.
I came across with the same error and could not figure it out. I first thought that something is wrong with the code, because it happened after I edited working code while figuring out where to connect what pin 😀. I also wasn't able to upload simple HelloWorld after it happened with connected wires. But then I disconnected all my wires from the board and the upload works fine.
I can not figure out the WHY factor but I think it must had been the input/data pin I was using, in my case D13. I have the DevKit with fewer pins. Maybe someone can comment why connected pins may make the error come up?
To make your ESP32 board go into flashing/uploading mode automatically, you can connect a 10 μF electrolytic capacitor between the EN pin and GND. When I had the same problem, when I followed this advice, the problem was solved.
References
Failed to connect to ESP32: Timed out waiting for packet header
espressif/arduino-esp32 - issue
On some AliExpress-like ESP32s you have to press the boot button in order to upload your sketch.
If you are watching the Arduino IDE console ouput and Connecting ... appears, you have to press the boot button for approximately 2 seconds until the console output changes.
Try to do this one after the other
Press the boot button when press uploading button until it write the code.
Try disconnect esp32 from the board/header/pcb that you are using right at the time.
Disconnect any other connection that your esp32 might have.
Do not connect to anything even your hand if possible.
Try put it in something that doesnt have a moist surface. look pic number 3.
MY CASES(30 pin version):
Case 1: I dont know why. I was connecting the pin to a female header it doesnt work and sometimes it just work like that. look pic number 1.
Case 2: when Im holding esp32 on my hand sometimes it wont work then i put it on my table and another time it doing well.
Case 3: pressing boot button when uploading it helped sometimes, and the other time it just work like it should.
Case 4: when it connected to pcb its simply just wont work, but when disconnected boom it work like nothing ever happen. look pic number 2.
Maybe just maybe something with capacitive or something like that (just assuming because number Case 1). hope that will help you out.
pic 1pic 2pic 3
This technique definitely working
Goto Tools > programmer, Select ISP and Upload Your Code.
if you can't see any programmer, then download 1.8.12 version.
https://www.arduino.cc/en/software/OldSoftwareReleases
With Arduino IDE
Make sure the Com port is selected under Tools menu. My experience with ESP32 is Com 5.
If it is not available as an option, try changing USB ports and/or re-select Tools - Board - ESP32 dev module.
Watch the "Compiling Sketch" window.
Press the "Boot" button as soon as you get the red message "Serial port Com 5" You can release the button as soon as it starts to upload.
If this doesn't work,try plugging into another USB port.
The Reset button only resets the uploaded sketch to re-initialise and has nothing to do with the uploading.
Install expressif.exe and port drivers,connect the port and flash the esp32 ,upload the code using ardiuno,solve the error
in my case buttons are new but not shorting properly as multimeter showed ..opened both scratched resoldered and all working
Changing by upload speed from 921600bps to 115200bps fixed it. No need to press any buttons.
Just download the drivers x)
CP210x: CP210x USB to UART Bridge VCP Drivers
FTDI: FTDI Virtual COM Port Drivers

hc-05 bluetooth disables serial port?

I mean, can this be possible?
I have tried several times to upload normal projects to my arduino and works well. But when I upload a code related to the hc-05 (despite that i still haven't figured out how this module works after an entire day of trial-and-error, because it simply doesn't work) it cuts the serial connection (ttyACM0) and it's impossible to upload any other project of any kind to the arduino. The port is blocked and nothing i can do to unblock it (yeah i alreday surfed the web for solutions and none of them worked, i swear the only thing that has worked it's formatting the Ubuntu and re-installing it, which wasn't any drama due to my little data stored).
I am completely aware that formatting is not the solution and this sounds stupid, but i swear is what happens. It's just doing anything related with the Bluetooth module and the port is gone for transfering data via the Arduino IDE (plugging other things like mouse and pendrives still work).
Thanks for the help in advance. I'm desperate. Any hugs will be also appreciated.
EDIT: The problem that is face after this is, in the IDE:
Error at opening serial port '/dev/ttyACM0'.
EDIT 2: Here is the code. As mentioned in the comments, now seems like the port only blocks when I change from 9600 to any other baud rate HIGHER (not 4800).
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
mySerial.begin(38400);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("configuracion!");
// set the data rate for the SoftwareSerial port
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
EDIT 3: As said in the comments, the port ACM0 is blocked "forever and ever" again, even if I restart the computer. Could be that the port becomes "tired" of too many trials uploading sketches?
EDIT 4: As said in the comments, after running the arduino IDE in sudo mode
$ sudo arduino
it allows me to upload all the sketches I want, and doesn't seem to have any problems with the changings in the baud rate.
After all, seems like is a permissions issue, but i wonder how this went so big, and how permissions changed with a simple operation. Anyway, i can't make it work without sudo (I must say that I am already a member of the dialout group), so here we are by now (Exciting isn't it?).
[SOLVED?]: I've changed the baud rate by code, so where it was 38400, now its 9600 bauds:
mySerial.begin(9600);
Seems like my version of the HC-05 module (version zs-040) needs to work at 9600 bauds for an effective entry to the AT mode and (for what i've seen) for working normally, although that in most websites you will see it works at 38400. Not for this version or I couldn't do the way the other people make it work at 38400.
In http://www.martyncurrey.com/arduino-with-hc-05-bluetooth-module-at-mode/ i've seen that this particular module has 4 ways for entering in the AT mode, but in my case only the 4th method that appears there has worked for me.
So here it is the solution if we can call it like that, change the baud rate established in the code to 9600 bauds. No issues since i did that, everything working smoothly.
Thanks #frarugi87 and #Fabricio for your comments, which have helped me on finding the correct way.
I noted that you are using Linux, please check that ACM0 has the rights user permissions.
To enable for read and write you should set the permissions for ACM0 or can also add you user to dialog group. I prefer to add the user to dialog group because it will persist on reboot:
sudo usermod -a -G dialout [youruser]
Note: Please take in account that you need to logout and login again to the group reflect the new user.
Edit 1:
If your device is not in dialout group please run the next command:
sudo chgrp dialout /dev/[yourdevice]
This change will work until reboot, but it will help you to know if the issues come from group/user/device configuration.
I hope this helps :)

Uploading program to teensy not working

i got a brand new Teensy 3.2 with the blinking LED programm on it.
When I now tried to upload another programm on the teensy, Arduino says:
Teensy did not respond to a USB-based request to automatically reboot.
Please press the PROGRAM MODE BUTTON on your Teensy to upload your sketch.
The automatically starting window of Teensy, doesn't give me a chance to (for example) reboot the Teensy as well, so something of the connection seems to be wrong or something, but what...
Even if I mannualy press the pushbutton, it's still not possible to upload something. Any ideas why?
I have encountered this problem twice. The first I tossed out the board. This time, when I power it, it runs the last program I burned on it, but when I try to program it again, the LED stops blinking and everything stops.
The claim that it might not be a data cable is not reasonable, because how can it stop the current program unless it was told to. I doubt very much that +5V can provide such commands.
I have tried different cables, different USB ports, rebooting my Linux box, reinstalling (twice), checking the pins on the Teensy and the cable... no clue.
It always boots up in the old app (I left the blinker running to indicate "liveness"). I had programmed a message to come out the hardware serial port. Could that have been the problem? Wait... Is there a way to set the baud rate on the USB? I wonder if that is the problem! --
Banner(void) {
Serial.begin(9600);
Serial1.begin(115200);
};
The example had me programming the USB serial! I bet that is the problem! Better yet, does anyone know what the protocol is for talking to USB serial commander?
Under Ubuntu 18.04 install this https://www.pjrc.com/teensy/49-teensy.rules file into /etc/udev/rules.d

Arduino Standalone

I have an Arduino Uno and I am using arduino 1.0.5 IDE. I followed he procedures for bootloading an atmega328P-PU on a breadboard.
I uploaded the ArduinoISP sketch first, made the connections(using the External Oscillator) and then wired it up. Then, I selected the programmer as Arduino as ISP, selected the board as Arduino duemilanove w/ Atmega328P. Then I selected the correct serial port and clicked Burn Bootloader.
I got the following errors:
avrdude.exe: stk500_program_enable(): protocol error, expect=0x14,
resp=0x50avrdude.exe: initialization failed, rc=-1 Double
check connections and try again, or use -F to override
this check.avrdude.exe: stk500_disable(): protocol error, expect=0x14,
resp=0x51
How to solve this issue? Also, can I upload the bootloader directly by using it on the Uno in place of the original chip. If so, how?
to my understanding the error you have indicates a bad reading from the chip. I experienced that with chips that were either dead or not properly connected, especially to power supply.
You may find more detailed information in th tutorial : https://www.arduino.cc/en/Tutorial/ArduinoISP
Especially those things :
Note for Arduino 1.0: you need to make one small change to the
ArduinoISP code. Find the line in the heartbeat() function that says
"delay(40);" and change it to "delay(20);".
Select the items in the
Tools > Board and Serial Port menus that correspond to the board you
are using as the programmer (not the board being programmed).
Instead of arduino built-in boot loader just go through below link and it will be great for uploading boot loader and verifying board status info
I am replying you this because same issue I got long back and it saved me.
One more thing for arduino boot loader: for atmega328 you need to put capacitor between reset and gnd( in case you missed)
For gammon bootloader you don't need it.
Be Innovative.
For reset line you might me using 100nf(thats what stated in documentation )...but sometimes it doesn't work...try something like 4.7uf, 22uf or 47uf or close values
I had a similar problem and the issue was that my programmer was a bit slow, I used the -B flag for avrdude to slow down the bitrate and it started working, I set the -B20 and works like a charm every time, but I use the USBTinyISP programmer, not the stk500 one, so this might not work for you.
In case someone stuck at this as I did and nothing like changing the cap value helped. Make sure you are using your USB-TTL adapter in a 5v mode (obviously for a 5v powered chip). I always used it in a 3.3v mode in order not to accidentally burn my 3.3v chips and it always worked. Until today, I was trying to flash my custom atmega8 board and everything worked with the ISP but I was having a hard time using the bootloader and after half a day searching and trying different stuff the 5v setting to the rescue.

Resources