Croduino Basic2 multiple questions: power input, serial communication, AREF, ultrasonic interference

Customer:

Croduino Basic2 is working well with pressure sensors and others. I have several follow-up questions:

  1. Can we solder an IIC adapter to a 20x4 display or only for 16x2?

  2. Vin - what voltage can be applied to this input? I noticed much more stable analog sensor readings when I connected 6V to it.

  3. We’ve decided on the connection method: three Arduino boards, the central one connected via USB to a computer and Processing, the other two connected to the central one. All three measure something. What’s the simplest way to connect those two remote boards to the central one? They’re 30m away, each on its own side. I ask because I see it’s simple to connect two boards together, but three is more complicated if I’m not mistaken?

  4. AREF - our analog pressure sensor outputs 0.2-0.7V. With this we get readings every 10cm. I read that using AREF it’s possible to set the maximum voltage to 1V instead of 5V so we’d get readings every 2cm. Am I right and what’s the simplest way to do this?

  5. Do you have a tutorial on how to install Croduino NOVA on a computer and connect it?

Original message (Croatian)

Basic2 rade u redu, i senzori za tlak, i još neki i tako, ali zanima me

sada par dalje stvari.

  1. IIC adapter možemo zalemiti na 20x4 ekran ili je samo za 16x2?

  2. Vin - koji napon može biti na tom ulazu? Vidio sam da puno stabilnije

očitava analogne senzore kad sam spojio 6v na njega.

  1. Odlučili smo kako bi spajali. Znači 3 arduina, središnji se spaja

usbom na kompjuter i processing, a ova dva na taj središnji. Sva 3 nešto

mjere. Kako najjednnostavnije spojiti ta 2 na taj središnji? Udaljena su

30 m od njega, svaki na svojoj strani. Pitam jer vidim da je jednostavno

spojiti 2 komada međusobno, ali 3 je već malo zeznutije ako se ne varam?

  1. Aref - naš analogni senzor za tlak daje 0,2-0,7V. I tada dobijamo

očitanje svakih 10cm. Čitao sam da je moguće pomoću tog Aref napraviti

da je max napon 1v umjesto 5v pa bi onda dobili očitanje svakih 2cm. Da

li sam u pravu i kako najjednostavnije to izvesti?

  1. Imate li neki tutorial kako Croduino NOVA instalirati na kompjuter i

spojiti?

Hvala

Boris

Originally submitted via the contact form on soldered.com on 5 April 2016. Migrated to the forum for community visibility.

Soldered Support:

You can use it with 20x4 displays as well.

According to the datasheet, 7V to 24V, but it will probably work stably at 6V as well. The output from the regulator provides stable 5V, but you should also have stable voltage from the USB on your computer, so there shouldn’t really be a difference in readings when powered via USB or through the regulator. If there is a difference, it suggests a voltage drop on the USB source, meaning unstable voltage on USB.

How did you see it’s simple to connect two boards together? I assume serially? If so, you can connect three boards serially using SoftwareSerial, which simulates serial communication via software.

Of course, AREF = Analog Reference, meaning the maximum voltage the device will measure. It must not exceed 5V. If you set 1V on that pin (using a voltage divider or zener diode, for example), you’ll have 1023 degrees of analog reading distributed within that 1V. So one analog reading value will represent 1/1023 = V, which will give you much more precise readings.

Tutorial available here: https://e-radionica.com/hr/blog/2016/01/31/kako-programirati-croduino-nova-iz-arduino-softwarea/

Original message (Croatian)

drago mi je da je sve stiglo na vrijeme.

Možete ga koristiti i s 20x4.
Prema datasheetu, od 7V do 24V, ali vjerojatno će raditi i na 6V stabilno. Izlaz iz tog regulatora daje stabilan napon na 5V, ali isto biste trebali imati i iz izvora USBa na Vašem računalu, tako da zapravo ne bi trebalo biti razlike u očitavanjima kada je napajanje s USBa ili preko regulatora. Ako ima razlike, to mi indicira na pad napona na izvoru preko USBa, tj. nestabilan izvor napona na USBu.
Na koji način ste vidjeli da je jednostavno spojiti 2 komada međusobno? Pretpostavljam serijski? Ako je tako, možete spojiti i tri komada na serijski način tako da ćete koristiti tzv. SoftwareSerial koji simulira serijsku komunikaciju preko softwarea.
Naravno, Aref = Analog reference, što znači maksimalni napon do kojega će uređaj mjeriti. Naravno, ne smije biti veći od 5V. Ako stavite 1V na taj pin(koristeći voltage divider ili zener diodu, recimo), imat ćete tih 1023 stupnja analognog očitanja raspoređenih unutar toga 1V. Dakle, jedna vrijednost analognog očitanja će predstavljati 1/1023 = V, što će Vam svakako omogućiti puno preciznija očitanja.
Naravno: https://e-radionica.com/hr/blog/2016/01/31/kako-programirati-croduino-nova-iz-arduino-softwarea/

Customer:

  1. The USB on the computer is clearly poor quality, values jump by 1-2 bits. When I connected to a 220V USB charger for a mobile phone, it jumped by 5-6 bits. Through the regulator it was perfect.

  2. Serial would be good, and certainly the simplest, but what’s the maximum cable length? Online it says cable capacitance is the limiting factor. What type of cable has the lowest capacitance? I can work with single-core wires and physically separate them 3m apart, which should reduce capacitance. I need 30m, maybe the speed (bps) can be reduced to increase range? I only need to send 2-3 digits, can be every 5 seconds or even less frequently. Do you have a link with a tutorial?

3.b Is it possible with the 433MHz system to put one receiver on the master and 2 transmitters each on their own slave? Or put 2 receivers on the master and one transmitter on each slave?

3.c Same questions as 3.b but for NRF24L01+ 2.4GHz

3.d Combination of 3.b and 3.c - one receiver of each type on the master, and on each slave one transmitter of each type. Is it feasible?

3.e The best would be LAN or WiFi, to connect as many devices as needed, but I think the setup would be more complicated then.

3.f 1Wire - two slaves send data to master. Is this feasible without additional hardware?

3.g MAX485 - I don’t know how I missed ordering this from you. Can two receivers be connected to one Arduino with it?

  1. I saw this below, so now I don’t know which group Croduino falls into, the first INTERNAL with 1.1V?

https://www.arduino.cc/en/Reference/AnalogReference

Syntax

analogReference(type)

Configures the reference voltage used for analog input (i.e. the value used as the top of the input range). The options are:

DEFAULT: the default analog reference of 5 volts (on 5V Arduino boards) or 3.3 volts (on 3.3V Arduino boards)

INTERNAL: an built-in reference, equal to 1.1 volts on the ATmega168 or ATmega328 and 2.56 volts on the ATmega8 (not available on the Arduino Mega)

INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)

INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)

EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference.

  1. When I connected the ultrasonic distance meter everything worked as expected. But when I added an LCD via IIC and combined the two code snippets, the ultrasonic started acting up. When I would touch the cable going to its Trig pin with my finger then the readings would work. But it’s not a poor connection issue because as soon as I reverted to just the ultrasonic code it would work immediately.

What’s the problem?

Original message (Croatian)
  1. Usba na računalu je očito loš, skaću vrijednosti 1-2bita. A kada sam

spojio na 220v usb punjač za mobitel skakalo je 5-6 bitova. Preko

regulatora je bilo super.

  1. Serijski bi bilo dobro, i zasigurno najjednostavnije, ali koja je

maksimalna dužina kabla? Na netu piše da je kapacitivnost kabela

ograničavajući faktor. Koja vrsta kabela ima najmanju kapacitivnost?

Mogu raditi sa jednožilnim kablovima pa ih fizički udaljiti 3m, to bi

trebalo smanjiti kapacitivnost. Treba mi 30m, možda se može smanjiti

brzina (bps) pa tako povećati domet? Treba samo slati 2-3 brojke, može i

svakih 5 sekundi ili i rjeđe. Imate neki link sa tutorialom?

3.b Ovaj 433MHz sustav, da li je moguće staviti jedan prijemnik na

glavni a 2 predajnika svaki na svoj slave? Ili staviti 2 prijemnika na

glavni a na slave po jedan predajnik?

3.c Ista pitanja kao i na 3.b samo za NRF24L01+ 2.4GHz

3.d Kombinacija 3.b i 3.c - na masteru po jedan prijemnik od obje vrste,

a na svakom slaveu po 1 predajnik, svaki svoje vrste. izvedivo?

3.e Najbolje bi bilo LAN ili WIFI, pa tako spajati koliko god uređaja,

ali mislim da je malo kompliciraniji setup onda.

3.f 1wire - dva slavea šalju podatke na master. To je izvedivo bez

dodatnog hardwera?

3.g MAX485 - neznam kako mi je ovo promaknulo da nisam naručio od vas.

Da li se sa njim može spojiti 2 prijemnika na 1 arduino?

  1. Vidio sam ovo dole, pa sad neznam u koju skupinu spada Croduino, ovu

prvu INTERNAL koja ima 1.1v?

https://www.arduino.cc/en/Reference/AnalogReference

Syntax

analogReference(type)

Configures the reference voltage used for analog input (i.e. the value

used as the top of the input range). The options are:

DEFAULT: the default analog reference of 5 volts (on 5V Arduino

boards) or 3.3 volts (on 3.3V Arduino boards)

INTERNAL: an built-in reference, equal to 1.1 volts on the

ATmega168 or ATmega328 and 2.56 volts on the ATmega8 (not available on

the Arduino Mega)

INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)

INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)

EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is

used as the reference.

  1. Kada sam spajao ultrazvučni mjerač udaljenosti sve je radilo kako

treba. Ali kada sam dodao još LCD preko IIC i spojio ta dva koda,

Ultrazvuk je počeo štekati. Kada bih prstima dotaknuo kabel koji ide na

njegov Trig pin onda bi proradila očitanja. Ali nije stvar u lošem

kontaktu jer čim bi vratio kod samo za ultrazvuk odmah bi proradio.

U čemu je stvar?

Customer:

Please reply to at least some of these questions.

Original message (Croatian)

Molim Vas odgovor na barem neko od pitanja.

Hvala

Soldered Support:

I’d recommend using a power supply that doesn’t introduce noise into the communication. I’m not sure what the problem was with USB, since it should provide the most stable voltage.

For RS485 communication, there’s plenty of information here: http://arduino-info.wikispaces.com/RS485-Modules

This corresponds to our modules: Soldered: Open-Source Electronics, Boards, Sensors & Modules – Soldered Electronics

Regular serial communication using SoftwareSerial (TTL logic) to send bits over 30m wouldn’t work well.

RS485 can reach over a kilometer (we have modules for this). RS232 can go up to about 20 meters.

So SoftwareSerial + RS485 module = what you need. That’s my recommendation. Create two SoftwareSerial objects and you can connect two such modules.

433MHz can work too. We’ve done it with one transmitter and two receivers - the transmitter sends info then waits a second, one receiver picks it up and waits two seconds, meanwhile the transmitter sends the same info which the other receiver now picks up (and waits 2 seconds, but that was fine for us). You can do something similar with two transmitters and one receiver, you just need to synchronize the two transmitters somehow (some kind of clock signal). If both transmit at the same time, the info will jam and the receiver won’t be able to read anything useful, plus depending on how you write the program, it could cause issues. You need to devise a system to avoid transmitting from two places at the same time.

With NRF - it’s bidirectional communication on 2.4GHz and sends info through pipes that keep communication constantly open between two points. You can communicate with multiple devices, check the tutorial below.

A colleague is writing a tutorial for this module in Croatian, but here’s the excellent English version just in case: https://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo

You should be able to achieve 30m on both (just add wire antennas on 433MHz - there are tutorials online).

Using LAN, i.e. Ethernet communication shouldn’t be difficult since there are libraries that unpack Ethernet information packets, but why bother when the solutions above are cheaper and you don’t need 60m of UTP cable.

WiFi is similar, but a bit more complex software-wise (you can create a mesh network for example).

1Wire has that range, but you’ll need to implement that communication in both programs on both Arduinos that communicate (I’ve never done it, so I’m not well informed about it currently - but there’s probably a library).

AREF on Croduino is DEFAULT, but you can also use INTERNAL aref options, and EXTERNAL (of course, connect the desired voltage to the aref pin).

It’s really strange that it works when you touch the wire and it’s not a connection issue. Trig only sends a signal to the sensor to measure distance (and distance info is returned via Echo, how it works is explained here: https://e-radionica.com/hr/blog/2015/08/19/kkm-ultrazvucni-modul-hc-sr04/#Princip%20rada%20modula)

It’s possible that the IIC library for the LCD uses some Timers or delays that interfere with Trig, which can’t send the signal in time to start measuring / read the measurement using the pulseIn function.

Sometimes two libraries turn out to be incompatible because they weren’t designed to work with each other and so they cause problems. I don’t have concrete advice on this. You won’t find another library (that doesn’t use pulseIn) for the HC-SR04, but for IIC you will - but you’ll have trouble and might end up with it not working anyway. If possible, connect the LCD without the IIC adapter.

Original message (Croatian)

isprike, prošli mail sam zametnuo. Slijede odgovori na sva pitanja:

Svakako preporučam koristiti onda izvor napajanja koji ne stvara smetnje u komunikaciji. Ne znam u čemu bio bio problem s USB-a, jer bi upravo on trebao imati najstabilniji napon :slight_smile:
Ovdje je dosta informacija o RS485 komunikaciji: http://arduino-info.wikispaces.com/RS485-Modules

To bi odgovaralo našim modulima: Soldered: Open-Source Electronics, Boards, Sensors & Modules – Soldered Electronics

Obična serijska komunikacija, dakle da kreirate SoftwareSerial port(a to je onda TTL logika) kojime biste slali jedinice i nule na udaljenost od 30m - mislim da ne bi baš radilo :slight_smile:

RS485 može i više od kilometar(za njih imamo module, ne znam jeste uzeli). RS232 može do 20ak metara.

Dakle, SoftwareSerial + RS485 modul = ono što trebate. To je moja preporuka. Napravite dva SoftwareSerial objekta i možete spojiti ovakva dva modula.

433MHz se isto može odraditi. Mi smo radili da imamo jedan odašiljač, a dva prijemnika, pa je odašiljač slao info pa čekao sekundu, jedan od prijemnika bi pokupio info i zašteko se na dvije sekunde, a međuvremenu bi odašiljač poslao opet isti info kojega bi sada primio drugi prijemnik(i opet se zašteko na 2sec, ali nama je to bilo OK). Slično možete i u Vašoj situaciji s dva odašiljača i jednim prijemnikom, samo trebate nekako uskladiti ta dva odašiljača(neka vrsta signala takta - clocka). Ako oba budu slala u isto vrijeme, info će se jammat te prijemnik neće ništa korisno moći pročitati + ovisno kako napišete program, mogao bi Vas zbuggati cijeli proces. Treba samo osmisliti neki sistem da bi se izbjeglo slanje s dva mjesta u isto vrijeme.
Sa NRFom - on je dvosmjerne komunikacije na 2.4GHz te šalje info kroz tzv. pipe-ove koji konstantno drže komunikaciju otvorenu između dvije točke. Možete komunicirati međusobno s više od jednog, pogledajte dolje na tutorijalu.

Mislim da kolega upravo piše tutorijal za ovaj modul na hrvatskom, ali evo za svaki slučaj (odlična) verzija na eng: https://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
30m biste trebali bez problema ostvarit na oba(samo na 433MHz dodajte antene u obliku žice - imaju tutorijali po netu).
Preko LAN porta, tj. Ethernet komunikacije ne bi trebalo biti teško jer imaju libraryji koji otpakiravaju Ethernet pakete informacija, ali što ćete se gnjaviti da su Vam rješnja iznad ipak jeftinija - i ne trebate 60m UTP kabela :slight_smile:

WiFi slična stvar, ali još malo softwareski složenije(možete napraviti mesh network npr.)
1wire ima taj domet, ali morat ćete implementirati takvu komunikaciju u oba softwarea na oba Arduina koja komuniciraju(to nisam nikada radio.. tako da trenutno nisam baš informiran o istome - ali vjerojatno postoji library).

Aref je na Croduinu DEFAULT, ali možete koristiti i INTERNAL aref-e, kao i EXTERNAL(naravno, spojite željeni napon na aref pin).
Stvarno mi je neobično da proradi kada dotaknete žicu, a nije stvar do konekcije.. Trig samo šalje signal senzoru da izmjeri udaljenost(a info o udaljenosti se vraća putem Echo, princip rada ovdje: https://e-radionica.com/hr/blog/2015/08/19/kkm-ultrazvucni-modul-hc-sr04/#Princip%20rada%20modula )

Moguće je da IIC library za LCD ima neke Timere ili delayove koji onda smetaju Trig-u koji ne može pravovremeno slati signal za početak očitanja / očitavati očitanje u pulseIn funkcijom..

Nekada se zna dogoditi da su dva librarya nekompatibilna jer nisu zamišljena da rade s nekima drugima te im tako prouzrokuju probleme. Nemam konkretan savjet u vezi ovoga. Drugi library(koji ne koristi pulseIn) za HC-SR04 nećete pronaći, za IIC hoćete - ali ćete se namučiti i opet možda na kraju neće raditi. Ako možete, spojite LCD bez IIC adaptera.