Controlling projector with serial port - serial-port

I've been trying to control Panasonic PT AE3000U through computer serial port for a last few days. Computer that I am using has serial port on its back, and I've confirmed that port functions at some level by connecting RXD and TXD with jump wire.
Technical information about projector (10Mb): http://www.projectorcentral.com/pdf/projector_manual_4506.pdf
Section that tells about serial communications starts from page 51.
According to manual and that what I've read from online, start-up command in hex should be 02 50 4f 4e 03, but I haven't been able to get it work with that.
Variations of that command I've tried to send with RealTerm and Termite:
02 50 4f 4e 03
02504f4e03
0x02 0x50 0x4f 0x4e 0x03
0x020x500x4f0x4e0x03
And other similar combinations and formats
I assume that command on third row should be the right one, because if I send that as numbers with Realterm, and connect RDX and TXD together similarly as I did before, I get this on screen (display settings are "display as ascii").
http://i.imgur.com/PjpRms7.png
But when I connect cable to the projector and repeat the process, nothing happens. Baudrate is set at 9600, which should be correct.

So, I guess it somehow solved itself. I decided to restart my computer and projector. "Just in case there would be something left from all of mine failed attempts"
And it started to work, I sent line 0x02 0x50 0x4f 0x4e 0x03 with Realterm as numbers only.
My settings were:
Baudrate 9600
Parity: None
Data bits: 8
Stop bits: 1

Related

LORA Sx1276 send same response in every condition

I am usign one of Dorji's pruduct. The products name is DRF1276DM. The image of the product can seen in following images
In the application note the producers state that the module can communicate over serial port with TTL level UART. In their application note which can be found at http://www.dorji.com/docs/data/DRF1278DM.pdf. They state that if we send a command like AF AF 00 00 AF 80 03 02 00 00 92 0D 0A the device will response as AF AF 00 00 AF 00 03 02 00 00 12 0D 0A I try to check this command in order to test the device but I receive same command in my all trial. The device send me that 2400 O 8 1 DRF128X V2.7. In the application note they state that the device will send only one time this command when power is one but In my case the response is always same regardless to command code.
For checking the condition I try to use every command on http://www.dorji.com/docs/data/DRF1278DM.pdf but I recieved same respond. My first question is this. Are there any one who deal with same problem with me or could you give me any solution for this case. I am suspicious that the device get reset in every time when I try to send command over serial port. Is there any way to reset the device to default either using software or hardware.
In the application note they state that the first respond which I quoted above, will give the information for communcating device In our case I expected to communicate with device on odd parity 8 bit data size 2400 baud rate but the device only gives irrelevant or nonlogical bytes in 2400 baud rate. Only logical answer I received from device is on the 9600 baud rate. My second question is this. Is there a bug on this device setting or did I miss someting because as far as I know we cannot communicate with devices over multiple baud rate option.
PS:
I try to use their configuration tool which can be found in http://www.dorji.com/products-detail.php?ProId=61, but I got same "time out"
Error from device, I used 2400 boud rate and even parity but the result cannot changed.
Pin EN must be connected to logical 0
Firstly, the Error Time Out error appears because of a damaged UART-to-USB converter or this happens when you are using multiple jumper wires for a single pin of the module. Try using the a single female-to-female jumper wire to connect every pin of your module with the corresponding pin of the UART-to-USB converter.
Your UART is probably working fine, i have the same issues.
My DRF1278/76 modules dont seem to respon to me changing the baudrate in configuration parameters, it looks like its fixed to 9600 bauds, wich is a boomer
I had this problem too, my issue was the EN pin needs to be pulled low. Even with the USB to UART adapter I bought with the modules, that line is allowed to site high by default. Use a jumper to pull it to ground.

How to program XBee S2 (standalone)

I currently have XBee S2 and I want to program the GPIO pins to switch ON/OFF LED. I saw a lot of tutorial by using external MCU(like Arduino) but in my case I want to use the XBee without any external MCU attached. It seems that XCTU software only allow the GPIO pins to be set HIGH, LOW, input, etc without any logic that can change their conditions.
So is there any IDE or software that allow XBee GPIO pins to be program?
Digi sells a "Programmable XBee" that includes a separate 8-bit processor you can compile C code to, but that probably isn't what you had in mind.
If you create a network with two XBee modules (A and B), you can have a computer wired to XBee A send a "Remote AT Request" (in API mode) to XBee B to change the I/O pin wirelessly. If you read through the documentation, you'll find everything you need to know about API mode and the Remote AT Request frame type.
Is that the sort of control you were looking for? If not, can you describe your use case in more detail?
Have you found your solution?
Using XCTU has settings for the DIO pins which include HIGH and LOW. What that means is when the XBee comes out of reset, that will be the default setting. So if set HIGH, coming out of reset, the DIO pin will default HIGH. That is my understanding anyway and that seems to be correct.
I am going through the exercise to have a non-programmable XBee sans micro controller to switch some circuits on and off remotely. The setup is as follows:
1) a control XBee which will be attached to a micro
2) a router XBee without a micro (standalone)
Fairly mundane. What I noticed in my setup was that the standalone XBee's associate pin would toggle for a bit then stop for a bit and repeat. This didn't seem right. When I sent a command from the controller XBee it was hit or miss as to whether the command was carried out by the standalone unit. A bit puzzling.
To check out what was going on with the standalone XBee, I hooked up a computer and fired up XCTU. The problem went away. To cut to the chase, I discovered that when I hooked the computer's serial TX to the XBee's RX pin solved the issue!
My XBees are setup with a level shifting IC so the outside world is 5 volt and the XBee is at 3.3v. My best guess is a floating RX pin which is connected to a level shifter is the culprit. Now holding the RX high at 3.3v seems to overcome the problem.
Then it is just a matter up using the API to set the DIO pin HIGH or LOW
In my case I am toggling DIO_1. Here is the API call from the controller XBee:
7E 00 10 17 01 00 7D 33 A2 00 41 50 EA D5 FF FE 02 44 31 05 69
The hex 44 31 is D1 in ASCII the 05 sets the pin HIGH
And for low:
7E 00 10 17 01 00 7D 33 A2 00 41 50 EA D5 FF FE 02 44 31 04 6A
Again the 44 31 but now set to 04 - LOW
And the standalone XBee responds properly to the command. No micro attached!
The floating RX pin may or may not be your issue, but the API string should work using your config params. And don't forget the PAN ID must be the same.
Hope this helps.

get challenge with arduino nfc MFRC522 module from an epassport

I am working with my Ardunio and the contactless reader/writer MFRC522 from NXP. I am using my ePassport (EU standard) and I want to start the Basic Access Control (BAC) procedure by sending the Get Challenge APDU command to its RFID chip.
Here in stackoverflow I found the APDU 00 84 00 00 08. To implement it on my Ardunio project I use the library of miguelbalboa (accessed here). Within this library there is a method to send data to an RFID chip and store its response. But first I get the ATQA which is the ATR equivalent to a contact card (which is in my case 00 08) and then a SAK (which is in my case 20). The library notes that it detected PICC compliant with ISO/IEC 14443-4 in my ePassport and finally I get its randomized UID. Next step I try to get the challenge with
// create MFRC522 instance „mfrc522“
// Init SPI bus
// Init MFRC522 device
// Select RFID chip (PICC_Select method)
byte sendData[] = {0x00, 0x84, 0x00, 0x00, 0x08};
byte backLen = 10; // I know that the answer (= the challenge) is 8 bytes long + 2 bytes for SW1 + SW2
byte sendLen = sizeof(sendData);
byte backData[backLen];
MFRC522::StatusCode status = mfrc522.PCD_TransceiveData(sendData, sizeof(sendData), backData, &backLen);
// Print „status“
No matter what I do/change/extend, the StatusCode returned is always
Timeout in communication
and I can’t find out: What am I doing wrong? I am now doubting that it is a programming error but maybe rather a hardware issue? Maybe the FIFO buffer on the MFRC522 does not accept this command although I didn’t find any restrictions in its technical specs but then I am thinking: all I do is sending and receiving bytes according to the ISO/IEC 7816-4 standard with an ISO/IEC 14443-4 contactless RFID chip…
EDIT: I tried the APDU command with my NFC device in my smartphone and an APDU Debug app from Google Play Store and there it works fine! So the chip or the APDU command itself can’t be the problem.
Have you tried sending a T=1 block?
The Block format PCB|CID|INF|EDC. This is described in http://read.pudn.com/downloads64/ebook/225463/M305_DESFireISO14443.pdf
I had success sending the GetVersion to DESFire but it timeout trying to fetch the next frame (0xAF)

yikes invalid device signature

i am using arduino isp to program a ATtiny2313 avr microcontroller.
Here is the probelm,
when i was programming the avr chip using the default fuse values, everything worked just fine.
But then, i changed the fuse bytes as i wanted to use an external 16 MHz crystal.
When i changed the lfuse value from 0x64 to 0xff (as per the calculation of the fuse bits), the microcontroller stopped responding.
Now everytime i try to program the microcontroller using arduino uno isp, i get an error message :
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A
and then the fuse bytes shown after verification, very strangely are all set to 0x00 :
avrdude: safemode: Fuses OK (H:00, E:00, L:00)
i dont understand what the hell is happening and i have spent hours trying to figure out the probelm.
should the 16Mhz crystal be connected to the microcontroller while programming ?
PLEASE HELP !
Yes. When you change the configuration bits to use the external oscillator, the internal oscillator is no longer utilised - including during programming. The chip is just stuck in reset until it is provided with an external clock signal. When the ISP attempts to read out a value it is just seeing the data line stuck in the reset state - which is where all the 0x00 values are coming from.
Hook up the crystal or a signal generator to the CLOCKIN pin and you should be able to talk to the chip again.
Had the same issue. If you do not have an external oscillator, you can use
Arduino ISP
On PIN9 you get an osciallator signal you can put on the target on PIN XTAL1.
Saved me two 328p.

use serialforwarder data in another program

how can i build the serialforwarder or use it to forward the received data to another program to make some process?
how to parse the data and use it as input data to another program such as Matlab or c# or java application.
which protocol used to parse the recieved data ?
last question: it is just for motes which is base station mote ? can i build one for any mote ?
You have to read thoroughly the serial stack...its not very easy but its do able.
You can directly read from serial port. You don't need serial forwarder in this case. There are few things to take care of.
For example if you want to read a serial message that is being send to serial port of your PC (usb sensorboards just work like serial, since they are using usb to serial converters lik FTDI chip).
in C# (same for Java, etc...) you can read byte streams that are coming in the serial port. You can parse this byte streams to extract a standard serial message of tinyos.
This is somehow explained in TEP #113 although it has some problems, but you should be able to find those problems and make your program work.
As it stated in TEP 113, a standard serial packet is something like:
7e 40 09 00 be ef 05 7d 5d 06 01 02 03 04 05 7e
That means, a packet starts with hex 7E ( I believe its 126 or 127) and ends also with 7E. The last 2 bytes are CRC of the packet. So you can in your c# program start reading from serial port when you encounter 7E and stop reading when you reach the next 7E in the stream. Everything in between will be your packet.
You have to be careful of escaping that is if a 7E is part of your packet content, to be not be confused with start and end dilimeters, it will be escaped to something else...that's also is explained in that TEP 113.
I believe there were some C++ code fro calculating the CRC that you can easily convert it to C# or Java code.
Also check the source code of Serial.h which contains some details about how a serial packet is being formed in TinyOS.

Resources