LinkitOne and 8-Bit Level Shifter - arduino

I want to connect LinkitOne with an LCD display requiring 5-volts in I/O. I opted for an 8-bit level shifter (TXB0108) from Adafruit to do this.
To start with, I made LinkitOne's 7 digital pins (D5-D11) as OUTPUT and DigitalWrite HIGH to each one and had consistently got 3.2 Volts.
However, when I connected D5-D11 in the LOW-side of the level shifter and had the VCCA hooked at 3.3V and VCCB hooked at 5V, the low-side pins registered varying voltages below 3.2 volts (some are below 1v and 2v while only 2 pins are in 3.2 V.
I read in some sites that the 5V must be supplied from other source as the LinkitOne is not giving enough power for the level shifter. So, I did that... as well as with the 3.3 volts but still the problem persists.
Please kindly help.

I did a quick check if picking other I/O pins in LinkitOne will resolve the issue and it did. The pins that work with the 8-bit level shifter are pins D5,D6,D9,D10,D11,D12 and D13.
I went through the LinkitOne pinout diagram here, and the only unusual thing about pins D4,D7 and D8 is that they are labeled GPIO40, GPIO50 AND GPI048 respectively which is unusually above GPIO2X. I'm still new with this board and guess that these pins have some 'specific' functions as stated here.

Related

Arduino SPI GPS NanoHornet 1411 PM04

Good afternoon.
I am new to the SPI protocol and Arduino. Recently I came across a GPS sensor, this one: Nano Hornet 1411 PM04 (Datasheet: https://www.origingps.com/wp-content/uploads/2014/11/Nano-Hornet-ORG1411-Datasheet2.pdf).
I have read already many information a lot of about SPI (including some tutorials from Sparkfun for Arduino), but I still can't make this GPS work...
I would really appreciate if someone could help me understand how to write code for Arduino Uno that can make this sensor run.
For further information:
The pins of this sensor are displayed on page 21 of the link provided before for the datasheet (block 17: INTERFACE of the index).
The electronics schematics I have implemented is the one from the lower picture on page 25 (block 18: TYPICAL APPLICATION CIRCUIT of the index, FIGURE 11 – REFERENCE SCHEMATIC DIAGRAM - PM04 ORDERING OPTION).
Option chosen is SPI assembled (No R1, R2, R3, R4 placed).
Vcc is the 3.3 V pin source from the Arduino Uno board.
Clock, MISO, and MOSI pins are 13, 12 and 11 respectively on Arduino Uno
Slave select would be at digital pin 10.
ON_OFF signal is controlled by a transistor linked to digital pin 8, which allows the 3.3 V to make the pulse to start the device.
My bigger misunderstanding for this specific implementation is the fact that I don't know/understand how I can read from the GPS sensor or what I should send to the sensor to start transmitting the position. Besides that, I don't also understand how the data is output...
Thank you very much!
The Hornet uses the NMEA standard. You should start by reading the information on this page, this should set you on the right path.
https://playground.arduino.cc/Tutorials/GPS

Arduino analogRead function pin 0 not working

I would like to know if someone met the same problem on Arduino board. Know if there is a solution ?
My Arduino board has only 1 month. The pin 0 worked well before. I don't know if it's possible to "burn" a pin. (ex : use a too high voltage ? )
Output A0 connected to 5V Output A1 connected to V
On the screenshots you provided it shows the value on the pin, so technically speaking your analogRead has no problems. Check the link and connections. But regarding your question - yes, you can burn pin and even board with high voltage, so don't forget resistance when it's needed.
Also good practice to use arduino macro for analog pins like analogRead(A0); which is perfectly fine for arduino
Your screenshots show that the values read from A0 are changing (190 first, 300 second). That suggests that the problem lies in the electrical connection. Try to resolder the A0 connector pin, and possibly appropriate pin of the microcontroller. Check if the path leading from the connector to microcontroller pin is not cut somewhere.

Checking arduino code with multimeter

When we upload the code on arduino ,sometimes we do not get the desired results.
I saw a friend of mine doing the test on arduino using a multimeter to make sure that the code is right.
He said that we can make sure the code is right by checking the voltages on carious i/o pins on arduino. Like if the voltage on i/o pins is less than 5 V then the code is having some error,and also if we chckt the voltage on RX and Tx pins it should be 0.29 V.
I know question posted by me is not clear, but this is something which worked but i was not able to understand it properly.
So if anybody can deduce what this means and how it is done so, please proide an answer?
There are two main things to test with your multimeter: the voltage of the power to the Arduino (between 5v and Gnd), and the voltage of the IO pins (between them and Gnd).
Voltage of the power supply simply tells you if the Arduino is powered up correctly, if its power management circuits or power supply have failed, you'll be able to pick it up here.
Voltage of the outputs should be either 5v or 0v, relative to ground. By testing the voltage on a pin you can tell whether it is being written high (5v) or low (0v) by the Arduino, hence seeing what the code is doing to the pins.
I should make it clear that there is no right or wrong way to tell if the code in general is working based on the voltage of the pins.

Does Ardunino serial need a common ground

I have a device running off a different power supply, that I'm trying to talk to serially, it has TX and RX lines, GND and 2.7+ line, its quite grunty so It has its own PS.
I'm getting some odd results at the moment, so wondering if I need to use a common GND between the Arduino GND and the PS GND and the device GND.
Does serial require a common voltage reference point?
Its a mega 2560 R3
All signals require a reference voltage. Ground is what provides this reference for single-ended signals such as those used by a UART.
UART signals are composed of low-level and high-level signals.
The receptor, at the other end, to be able to understand your UART signal, must be aware of what is that low-level and high-level signals.
So you must put your UART GND to the GND of the receptor, and the high-level voltage must correspond to the TTL input level of your receptor.
For example, if the high-level of your UART is 2.7v, and your receptor input-level is 5v, you could encounter bad level detections sometime, because 2.7v could be detected as a low-level input.
For the low-level inputs, this is no problem because 0v is always 0v.
Sorry but... didn't you break your 2.7V device? Besides using a common ground, like Ignacio pointed out, when you have to interface something to something else you should ALWAYS check what are the correct voltage levels expected.
So did you check that the high voltage levels and low voltage levels are fulfilled? I think not. Because:
Arduino Uno (i just have the 328P datasheet on hand, so i'll use this) has an Atmega328P powered at 5V. The datasheet says that the Vih parameter (the minimum voltage sensed as a "high" value) is 0.6Vcc, which means 3V. So if you send him a 2.7V signal.... You are doing something wrong.
The 2.7V device has probably an absolute maximum voltage allowed on any pin of Vcc+0.3V. This means that the maximum voltage for each pin is 3V; if you go above this current starts flowing through the protection diode and... you blow your device. Now you are giving it 5V, so.... Puff...
If the above criteria are not fulfilled you have to put between the two circuits something. Which is
a resistor divider if you have to make the voltage lower (just two resistors) and a couple of transistors to make it higher
Opto-isolators (and you can keep the grounds separated)
Voltage translators (such as TXS0102)
other...

Arduino: Attach an interrupt to one of the higher pin numbers?

I have an Arduino Mega 2560. Is is possible to attach an interrupt on the higher pin numbers, for instance, D20 to D25? I tried PcInt, but it doesn't work with the higher pin numbers for some reason.
I have a custom board and it's using these pins, so my hands are tied in terms of what pins to use.
The pin mapping of the Mega2560 says that pins 20-25 aren't candidates for PCINTs (but 20 and 21 would have INTs). So the layout of the board makes it simply incompatible for this Arduino.

Resources