Intro
Hy, I am working on a project which uses PIC18F4520 micro-controller to send data to my windows machine. In Windows, I am developing a python GUI using tkinter which will show the data after reading it through Serial port. The micro-controller would be connected to PC using Serial to USB converter.
Problem
The Problem is that I don't have that hardware physically available to test it, So I made a Proteus Simulation. Now I want to simulate the virtual port so that I connect to it using pyserial and receive data, How can I achieve that...
THANKS
You can use Virtual Serial Port. With this software, you need to make a virtual port and connect it to Proteus.
Related
I am trying to do a sample application using Qt to communicate to Arduino board DUE.
But When one communication is started other is not able to connect,meaning when i start my Arduino first I am not able to start Qt application to read or write data and viceversa.
Can anybody tell me whether this is possible if Yes please help me in this and i ll try to post my sample code.
If I understand your question correctly, you want to be able to connect to your Arduino device (via its USB to RS232 converter) while the Arduino IDE, and thus, the serial monitor is running.
If that's the case, that is simply not possible. Not because of Qt, nor because of Arduino. That's the way serial ports work. You can't connect to the same port twice from different processes.
Since the microcontroller on the Arduino DUE has 4 UARTS, you may consider using one of them (with another USB to serial adapter, and thus, having another COM port showing up on your PC) to interface the board with your Qt application while the Arduino IDE is still connected to the "main" serial port.
Also, keep in mind that the Arduino Due works with 3.3 V, so ensure that the USB to serial adapter is compatbile with that voltage range.
I am using the Arduino IDE and RasPiArduino (https://github.com/me-no-dev/RasPiArduino) to compile sketches for my Raspberry Pi Zero. It's working fine.
I figured that the Pi's USB OTG port could be used to directly upload the sketches via USB. So I have set up g_serial on the Pi and successfully logged into it using minicom. The Arduino IDE also lists the port under Tools -> Port. So far so good.
However, I am not yet able to actually upload a sketch over that port or to open the Serial Monitor. As far as I know, the IDE uses avrdude to upload sketches, but it seems that only works for Atmel chips? I am completely stuck here. Can this be done at all? Any ideas or pointers are greatly appreciated.
Thanks!
OK, I got it working as follows, thanks to the tip from jikuja:
Set up ethernet over USB using the gadget driver g_ether You may also have to set up a DHCP server (e.g. dnsmasq) on the Raspberry Pi in order to assign IPs to the Pi and the host. Details can be found here, for instance: https://gist.github.com/gbaman/50b6cca61dd1c3f88f41
Configure avahi to only provide the arduino service over the USB interface. To do this, modify /etc/avahi/avahi-daemon.conf and set options allow-interfaces=usb0 and deny-interfaces=wlan0.
The Arduino IDE (using RaspiArduino) should not be able to detect the Pi on the USB interface, but not the WiFi. Uploading sketches and serial monitor all work fine for me that way. :)
I have gone through several links online but I have not found any appropriate solution to it. I am wondering if there is a way to connect an Arduino with WiFi without using any shield or any other external hardware. My laptop is connected to WiFi and the arduino board is connected to the laptop with an USB cable. I want to access/run the data for the Arduino using WiFi. Is there a way to do it?
Hope my query makes a sense.
Thanks.
Let's restate your question for clarity - you want to share the laptop's Internet connection (e.g. via WiFi) with the Arduino connected to the laptop with a USB cable, with no additional hardware?
Assuming I restated it correctly, the Arduino's USB connection provides a virtual "serial port" for communication. This means you can use an "IP over serial" solution for Internet access. One such common and widely supported solution is PPP.
However, programing the Arduino with IP over PPP stack requires significant amount of memory and is probably an overkill for whatever it is you're trying to do.
You're probably better off designing a custom-tailored protocol for the serial communication between the Arduino and a small gateway program you can program and run on the laptop.
If you're bent on a complex solution that provides full Internet access to the Arduino, the steps to achieve what you're after are:
Program the Arduino with a TCP/IP over PPP protocol stack, running on the serial port. You'll probably need an Arduino MEGA.
Setup the laptop to be a PPP endpoint on the Arduino's serial port. For a Windows machine you can refer to this page for information on how to do that.
Once the PPP link is up, you can setup the laptop's OS to share Internet access to the PPP link.
I need to send data (an integer) from an Arduino to a C program on a PC. I know that the connection is fine, because with X-CTU works perfectly. I need to do this in AT mode but I don't know how to start.
If you're using the XBee modules in AT mode, then it isn't much different than what you'd have to do with a direct serial cable connection between the Arduino and PC. Look for sample programs demonstrating serial communications for both platforms.
Having the connection working with X-CTU is an excellent starting point, since you have confirmed that the radio modules are communicating correctly.
On the PC, you might want to look at this Open Source XBee Host Library on GitHub. It includes a sample program called "xbee_term" that demonstrates a simple serial terminal for using an XBee in AT mode. It also has a layered API to allow for easy use of XBee modules in API mode -- which you would need to use if the PC was going to communicate with multiple Arduino nodes running in AT mode.
As for sending an int, you can use sprintf() to format it as a string to send over the wireless link, and strtol() to convert it back to an int on the PC end.
I'm using an Arduino to read data from the web and display it. I can easily pass the data as serial using the supplied drivers, because they identify the COM port so I can send serial to the COM port.
However, I want to use 'real' USB techniques so the device can be plugged in and out like a normal USB device. I'm looking at using WinUSB as the driver. However, USB is all new to me. Is there an .inf file that uses WinUSB and an Arduino (I have an Uno)?
The lack of information on this is making me think I am going about this incorrectly.
Turns out that an Arduino Uno is not a genuine USB device.
It acts as a Serial to USB adapter. Consequently USB drivers don't talk to it.
I got round this by writing a sketch which reported back what device it was when it got the correct query from the PC.
On the PC I just iterated the Serial ports and sent the query to each port. The one that replied was the Arduino.
After that I record the port number and send serial data to the Arduino.
To learn the USB portion, maybe you could combine V-USB and the UNO?
Check out V-USB.
V-USB is a software-only implementation of a low-speed USB device for Atmel’s AVR® microcontrollers, making it possible to build USB hardware with almost any AVR® microcontroller, not requiring any additional chip.
While not necessarily Arduino, it may provide you the learning exprience you want, and let you use incorporate your UNO device.