Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Receiver bedienen met RS232 en Arduino

Pagina: 1
Acties:

  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Ik probeer mij receiver, een Marantz SR5004 te bedienen via de RS232 poort op de achterkant.

Dit wil ik doen door middel van een arduino en een RS232 shield. Dit shield heb ik aangesloten op een Arduino Nano. Echter wil de receiver niet zo makkelijk reageren als ik had gedacht.

Ik heb het met verschillende kabels geprobeerd en zelfs door de shield direct in de poort te drukken. Volgens de datasheet zou dit moeten kunnen. De RX en TX van de Arduino shield zitten dan op de TX en RX van de receiver.





De code is op dit moment nog enkel beperkt tot het verhogen van het volume, met 1 stap per seconde:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void setup() {
  Serial.begin(9600);
}

void loop() {
   //POWER OFF
  Serial.write("@");
  Serial.write("V");
  Serial.write("O");
  Serial.write("L");
  Serial.write(":");
  Serial.write("1");
  Serial.write("\r");
  delay(1000);
}


Het volgende heb ik ook al geprobeerd:

code:
1
2
3
4
5
6
7
8
9
10
void setup() {
  Serial.begin(9600);
}

void loop() {
   //POWER OFF
  Serial.write("@VOL:1\r");

  delay(1000);
}


Beide werken niet en de receiver geeft geen blijk van reageren.

Weet iemand misschien wat ik fout aan het doen ben?

Het shield wat ik gebruik: https://www.seeedstudio.c...verter-Module-p-1684.html

[Voor 3% gewijzigd door tweakG5 op 11-01-2017 20:51]


  • Kaalus
  • Registratie: januari 2010
  • Niet online
Mogelijk zit de line ending niet helemaal goed, ook al zou \r een CR moeten zijn.
Heb je de receiver al eens aan weten te sturen met een terminal direct vanaf een PC? Bijvoorbeeld met een USB <> RS232 converter en PuTTY (Windows) of MiniCom (Linux).

  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Kaalus schreef op woensdag 11 januari 2017 @ 20:53:
Mogelijk zit de line ending niet helemaal goed, ook al zou \r een CR moeten zijn.
Heb je de receiver al eens aan weten te sturen met een terminal direct vanaf een PC? Bijvoorbeeld met een USB <> RS232 converter en PuTTY (Windows) of MiniCom (Linux).
Volgens de datasheet zou de command moeten kloppen.



Ik zou graag met een usb-RS232 kabel spelen maar die heb ik op het moment niet tot mijn beschikking.

  • Clifdon
  • Registratie: juni 2006
  • Laatst online: 12:24
Misschien niet wat je zoekt. Maar ik had geen RS232 aansluiting op mn versterker en heb dus mijn versterker weten aan te sturen via IR m.b.v. een raspberryPi.
Nu zet hij mijn versterker aan wanneer er muziek gestreamt word. Maar in principe is alles mogelijk met via het stukje software 'Lirc'

Always look on the bright side of life.


  • Gmount
  • Registratie: maart 2012
  • Laatst online: 02-12 14:55

Gmount

Ecorunner lid

De tweede code lijkt me de juiste, omdat je anders iedere keer een stopbit stuurt.
Ik vraag me wel af of je niet serial.print() moet gebruiken, die de losse ASCII chars stuurt.

1900Km/L! || i7 6700K @ 4,6 GHz | NZXT Kraken X61 | MSI GTX 970 @ 1,48 GHz | 8 GB DDR4| Bitfenix Aegis yellow


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Clifdon schreef op woensdag 11 januari 2017 @ 20:59:
Misschien niet wat je zoekt. Maar ik had geen RS232 aansluiting op mn versterker en heb dus mijn versterker weten aan te sturen via IR m.b.v. een raspberryPi.
Nu zet hij mijn versterker aan wanneer er muziek gestreamt word. Maar in principe is alles mogelijk met via het stukje software 'Lirc'
Ja dat had ik ook eerst maar dan krijg je geen feedback, ik wil graag het volume absoluut kunnen regelen.
Gmount schreef op woensdag 11 januari 2017 @ 21:05:
De tweede code lijkt me de juiste, omdat je anders iedere keer een stopbit stuurt.
Ik vraag me wel af of je niet serial.print() moet gebruiken, die de losse ASCII chars stuurt.
Ga ik zo eens proberen. Hoe bedoel je losse ASCII chars? Zoals ik het heb in het eerste of tweede voorbeeld?

  • Kaalus
  • Registratie: januari 2010
  • Niet online
Zit je niet naar de verkeerde serial port van je Arduino te schrijven? Dat het naar de UART die aan de PC hangt gaat i.p.v. naar je converter?
Eventueel toch TX en RX verkeerdom?

  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Kaalus schreef op woensdag 11 januari 2017 @ 21:23:
Zit je niet naar de verkeerde serial port van je Arduino te schrijven? Dat het naar de UART die aan de PC hangt gaat i.p.v. naar je converter?
Eventueel toch TX en RX verkeerdom?
De Nano heeft maar 1 paar TX/RX dus dat zou de goede moeten zijn.

Ik ga nog even met de tx rx van de connector spelen.

  • memphis
  • Registratie: oktober 2000
  • Laatst online: 12:56

memphis

48k was toen meer dan genoeg.

Juiste baudrate?

Er zijn mensen die mij een GOD vinden


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Ja dat moet kloppen, de datasheet zegt: 9600 8n1.

  • Gmount
  • Registratie: maart 2012
  • Laatst online: 02-12 14:55

Gmount

Ecorunner lid

Wanneer je serial.write("1") doet, wordt de waarde 1 verzonden. Als je serial.print("1") doet wordt de waarde 49 verzonden, wat overeenkomt met '1' in de ascii tabel.
en kijk inderdaad goed naar de poorten, hoe heb je de tx/rx van de arduino met de shield verbonden? Het beste kun je even naar de datasheet van de chip kijken en de lijntjes op je shield volgen.

1900Km/L! || i7 6700K @ 4,6 GHz | NZXT Kraken X61 | MSI GTX 970 @ 1,48 GHz | 8 GB DDR4| Bitfenix Aegis yellow


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Gmount schreef op woensdag 11 januari 2017 @ 21:39:
Wanneer je serial.write("1") doet, wordt de waarde 1 verzonden. Als je serial.print("1") doet wordt de waarde 49 verzonden, wat overeenkomt met '1' in de ascii tabel.
en kijk inderdaad goed naar de poorten, hoe heb je de tx/rx van de arduino met de shield verbonden? Het beste kun je even naar de datasheet van de chip kijken en de lijntjes op je shield volgen.
De tx van de shield is verbonden met de rx van de arduino en de rx van de shield met de tx van de arduino.

Ik zie in de meeste voorbeeld van RS232 en Arduino dat er gebruik wordt gemaakt van Serial.Write vandaar dat ik deze overgenomen heb.

Serial.Print geeft overigens hetzelfde resultaat.

[Voor 13% gewijzigd door tweakG5 op 11-01-2017 21:43]


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Als ik een \n toevoeg aan de code zoals:

code:
1
2
3
4
5
6
7
8
9
10
void setup() {
  Serial.begin(9600);
}

void loop() {
   //POWER OFF
  Serial.write("@VOL:1\r\n");

  delay(1000);
}


Dan blijft de power led van de Shield branden als ik stroom van de Arduino af heb gehaald.

  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Even snel aan de scope gehangen. het blijkt dat het signaal wel goed wordt doorgestuurd.


  • memphis
  • Registratie: oktober 2000
  • Laatst online: 12:56

memphis

48k was toen meer dan genoeg.

Heb je hen al eens aan een PC gekoppeld en dan met een RS232 monitor uitgelezen?

Er zijn mensen die mij een GOD vinden


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
memphis schreef op donderdag 12 januari 2017 @ 11:20:
Heb je hen al eens aan een PC gekoppeld en dan met een RS232 monitor uitgelezen?
Nee dat wil ik graag proberen maar heb in ieder geval de komende dagen geen beschikking tot een rs232 naar USB kabel.

  • Flake
  • Registratie: februari 2001
  • Laatst online: 12:12

Flake

Relax, we understand j00

Kan het je stopbit zijn? Volgens mij geeft \r op deze manier niet de stopbit die je wil hebben. Probeer eens in hexadecimaal te programmeren zonder "haakjes" (weet ik hoe die dingen heten)

Je kan proberen om de Tx en Rx kort te sluiten en wat testcode te schrijven om die RS232 bus te testen, maar gelet op je scope afbeelding verwacht ik daar geen issues mee. Het analoge signaal ziet er keurig uit.

Specialist in componenten en connectoren
Hardware kapot? Waarschijnlijk door ESD!


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Flake schreef op donderdag 12 januari 2017 @ 13:26:
Kan het je stopbit zijn? Volgens mij geeft \r op deze manier niet de stopbit die je wil hebben. Probeer eens in hexadecimaal te programmeren zonder "haakjes" (weet ik hoe die dingen heten)

Je kan proberen om de Tx en Rx kort te sluiten en wat testcode te schrijven om die RS232 bus te testen, maar gelet op je scope afbeelding verwacht ik daar geen issues mee. Het analoge signaal ziet er keurig uit.
De versterker veracht 8n1 communicatie dus 1 stopbit. Dat is de standaard van de Arduino Serial port als ik het goed heb. Heb het ook geprobeerd met:

code:
1
Serial.begin(9600, SERIAL_8N1);


Maar dat geeft eenzelfde resultaat.

En met hex bedoel je zo:

code:
1
Serial.write(0x40, 0x56, 0x4f, 0x4c, 0x3a, 0x31);

[Voor 6% gewijzigd door tweakG5 op 12-01-2017 14:42]


  • Flake
  • Registratie: februari 2001
  • Laatst online: 12:12

Flake

Relax, we understand j00

Excuus, ik zei stopbit, maar bedoelde je end message. Ik weet het niet zeker, maar ik vraag me af of "\r" ook echt leidt tot 0x0D, en dat je niet per ongeluk twee bytes verstuurt.

Wat verder opvalt bij nadere inspectie is je start message, "@" zou 0x40 moeten zijn, zou 0b1000000 moeten zijn. Dus 1 puls met een lange rust. Dat zie ik in je scope opname niet terug, maar kan zijn dat ik naar een andere byte zit te kijken, of dat die verloren is gegaan in je tijdschaal.

[Voor 0% gewijzigd door Flake op 12-01-2017 16:50. Reden: Hex CR fout]

Specialist in componenten en connectoren
Hardware kapot? Waarschijnlijk door ESD!


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Flake schreef op donderdag 12 januari 2017 @ 16:34:
Excuus, ik zei stopbit, maar bedoelde je end message. Ik weet het niet zeker, maar ik vraag me af of "\r" ook echt leidt tot 0x14, en dat je niet per ongeluk twee bytes verstuurt.

Wat verder opvalt bij nadere inspectie is je start message, "@" zou 0x40 moeten zijn, zou 0b1000000 moeten zijn. Dus 1 puls met een lange rust. Dat zie ik in je scope opname niet terug, maar kan zijn dat ik naar een andere byte zit te kijken, of dat die verloren is gegaan in je tijdschaal.
Dat zou natuurlijk ook kunnen. De sheet geeft aan 0D, dus kan dat ook hexadecimaal proberen te versturen.

Voor wat betreft de '@' zou ik het niet zo snel kunnen bedenken. Hij is niet van de schaal af want dat is alles wat er in 1 message kwam.

Trouwens is 0x40 0b01000000 als ik het goed heb.

[Voor 3% gewijzigd door tweakG5 op 12-01-2017 16:50]


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Even aan het proberen met een Arduino programmer. Blijkbaar is dat ook gewoon een mogelijkheid voor RS232 communicatie. Maar krijg het toch niet werkend.

Ik probeer de commando's zowel in ASCII als in HEX ter sturen met of onder CR of \r of 0D maar het resultaat blijft helaas hetzelfde.

  • Flake
  • Registratie: februari 2001
  • Laatst online: 12:12

Flake

Relax, we understand j00

Welkom in de wondere wereld van embedded. Nu zit je in een situatie waarin je net zo lang moet testen en graven totdat je de oorzaak hebt gevonden.

Ik denk dat het wijsheid is om middelen te verschaffen waarmee je RS232 kunt lezen. Analoog is er niks aan de hand, dus nu wordt het tijd om de inhoud te beoordelen. Dan kun je je conclusies trekken.

Specialist in componenten en connectoren
Hardware kapot? Waarschijnlijk door ESD!


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Flake schreef op donderdag 12 januari 2017 @ 18:42:
Welkom in de wondere wereld van embedded. Nu zit je in een situatie waarin je net zo lang moet testen en graven totdat je de oorzaak hebt gevonden.

Ik denk dat het wijsheid is om middelen te verschaffen waarmee je RS232 kunt lezen. Analoog is er niks aan de hand, dus nu wordt het tijd om de inhoud te beoordelen. Dan kun je je conclusies trekken.
Haha tja ik probeer het nu met een arduino serial programmer. Vreemde is dat ik dan niet kan lezen lijkt het wel, terwijl het wel zou moeten werken.

Ik maar gebruik van coolterm op osx bij het zenden van commando's gaat wel de tx branden. Maar als ik de arduino met de rs232 interface aanfluiting krijg ik geen rx signaal.

  • Flake
  • Registratie: februari 2001
  • Laatst online: 12:12

Flake

Relax, we understand j00

Heb jij een schema van die Arduino serial programmer? Ik denk dat die z'n outputs rechtstreeks van UART haalt, dus die zijn op TTL niveau. RS232 ligt normaal ergens rond de 15V (zie scope)

Specialist in componenten en connectoren
Hardware kapot? Waarschijnlijk door ESD!


  • tweakG5
  • Registratie: april 2010
  • Laatst online: 12:01
Flake schreef op donderdag 12 januari 2017 @ 19:12:
Heb jij een schema van die Arduino serial programmer? Ik denk dat die z'n outputs rechtstreeks van UART haalt, dus die zijn op TTL niveau. RS232 ligt normaal ergens rond de 15V (zie scope)
Dit is de gebruikte chip: http://www.ftdichip.com/S...aSheets/ICs/DS_FT232R.pdf

Nou het werkt, en nog wel met de RS232 en arduino. Ik kreeg het niet voor elkaar met de FT232R chip. Maar er moest wat worden veranderd in de code dit werkt dus:

code:
1
2
3
4
5
6
7
8
9
10
11
void setup() {
  Serial.begin(9600);
}

void loop() {
   //POWER OFF
  Serial.write("@");
  Serial.print("VOL:1");
  Serial.write("\r\n");
  delay(1000);
}

[Voor 30% gewijzigd door tweakG5 op 12-01-2017 21:12]


  • jbhc
  • Registratie: juli 2007
  • Laatst online: 07:08
Is de spanning van de RS232 van de arduino / programmer niet te laag?
Zoals Flake al zei hoort die iets van 15V (12V volgens mij) te zijn en sommige apparatuur is daar nogal gevoelig voor.

  • Flake
  • Registratie: februari 2001
  • Laatst online: 12:12

Flake

Relax, we understand j00

Ah, de FT232. Daar is je antwoord:

True 5V/3.3V/2.8V/1.8V CMOS drive output
and TTL input.


MAX232 erachter om er RS232 van te maken en dat werkt ook. Maar goed om te horen dat je er uit bent.

Specialist in componenten en connectoren
Hardware kapot? Waarschijnlijk door ESD!

Pagina: 1


Apple iPhone 12 Microsoft Xbox Series X LG CX Google Pixel 5 Black Friday 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True