Ett bra sätt att få kommunikation mellan PI & Arduino?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Mr Andersson »

Mjukvarustack kanske? Eftersom atmega inte har hårdvaru-USB.
Men för någon som tycker att lite text-parsing är jobbigt känns det lite långsökt att han skulle skriva en egen USB-stack.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Rick81 »

Tror han menar USB till UART. Om det nu är så vilket USBkrets är det?
Jag skulle skicka en byte kommando(get/set, digitalt/analogt, riktning) en byte vilken port, en byte vilken bitmask, en byte vilket värde och sedan 1 byte checksumma. Borde gå tillräckligt snabbt.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av TomasL »

Det kräver en USB-Slav i Arduinon och en HOST i PIn.
Enklast är nog vanlig seriekommunikation vis UART och RS232
SPI funkar också bra.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Al_Bundy »

Jag testade med att försöka få Firmata att fungera. Här blev mitt resultat.

Kod: Markera allt

sep. 25, 2018 12:15:14 FM org.firmata4j.firmata.FirmataDevice handleEvent
VARNING: event error handler not implemented. will ignore event
sep. 25, 2018 12:15:14 FM org.firmata4j.firmata.FirmataDevice handleEvent
VARNING: event error handler not implemented. will ignore event
sep. 25, 2018 12:15:17 FM org.firmata4j.firmata.FirmataDevice onProtocolReceive
VARNING: Current version of firmata protocol on device (2.5) differs from version supported by frimata4j (2.3). Though these are compatible you may experience some issues.
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1787)
	at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1670)
	at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
	at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
	at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
	at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8865)
	at javafx.controls/javafx.scene.control.Button.fire(Button.java:200)
	at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:206)
	at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
	at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
	at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
	at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
	at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
	at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3876)
	at javafx.graphics/javafx.scene.Scene$MouseHandler.access$1300(Scene.java:3604)
	at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1874)
	at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2613)
	at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:397)
	at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:434)
	at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
	at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:433)
	at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)
	at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)
	at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
	at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
	at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
	at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:275)
	at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
	at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1784)
	... 47 more
Caused by: java.lang.InterruptedException: Connection timeout
	at org.firmata4j.firmata.FirmataDevice.ensureInitializationIsDone(FirmataDevice.java:153)
	at application.Controller.startConnection(Controller.java:47)
	... 58 more
Det som händer är att min Arduino's RT och RX lambor blickar när jag tycker på "Start" och sedan slutar dem blinka och jag får felmeddelandet på denna kodrad:

Kod: Markera allt

		device.ensureInitializationIsDone(); // wait for initialization is done
Jag har bifogat programmet med namn ArduinoFX.zip,
Den kräver Eclipse eller annan IDE som kan hantera projekt som är skapade med Maven. Enklaste är att ni endast installerar Eclipse och sedan Spring IDE tillägget på Menu -> Help -> Eclipse Market Place -> Sök på "Spring IDE" och installera.
Där efter kan ni importera projektet via Menu -> File -> Import -> Import maven projects.
Kör programmet igenom att högerklicka på "ArduinoFX -> Run As -> Java Application".

En sak till! Ni måste ha Java FX installerat. Detta kan ni göra på "Eclipse Market Place" också.

Som sagt: Jag får det inte att fungera med min dator.
Först följ denna manual: https://github.com/firmata/arduino
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Al_Bundy 25 september 2018, 00:28:44, redigerad totalt 1 gång.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Al_Bundy »

Mr Andersson skrev:Mjukvarustack kanske? Eftersom atmega inte har hårdvaru-USB.
Men för någon som tycker att lite text-parsing är jobbigt känns det lite långsökt att han skulle skriva en egen USB-stack.
TomasL skrev:Det kräver en USB-Slav i Arduinon och en HOST i PIn.
Enklast är nog vanlig seriekommunikation vis UART och RS232
SPI funkar också bra.
Rick81 skrev:Tror han menar USB till UART. Om det nu är så vilket USBkrets är det?
Jag skulle skicka en byte kommando(get/set, digitalt/analogt, riktning) en byte vilken port, en byte vilken bitmask, en byte vilket värde och sedan 1 byte checksumma. Borde gå tillräckligt snabbt.

Jag kanske får testa på ModBus med Arduino?
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av lillahuset »

Nej, jag orkar inte komma med invändningar. Menar du allvar?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av TomasL »

Al_Bundy skrev: Jag kanske får testa på ModBus med Arduino?
Du lyssnar aldrig, och läser aldrig vad som skrivs.
Användarvisningsbild
Icecap
Inlägg: 26108
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Icecap »

Mjag tror faktisk att Al läser inläggen - men jag är lika säker på att h*n inte förstår dom tyvärr.

Men visst, MODBUS är ju iaf. en aning bättre än det första förslag. Men svar på kommunikationen USB - USB lär jag inte få inser jag, ganska sannolikt för att det inte finns.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Jan Almqvist »

Modbus är ett mycket bra val. Beprövat, effektivt och enkelt. Då kan du även använda färdiga, billiga IO-moduler.

http://www.modbus.org/

Via UART är det Modbus RTU som gäller.

Att skicka textsträngar är en skitlösning!!
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Rick81 »

Al: kolla TomasL och mina förslag en gång till. De är de lättare än att få igång nåt speciallib från nätet. Du har väl använt USB UART i tidigare trådar med Arduino? Annanr finns det nog många sidor på nätet on uart, spi på raspberry pi.

Sen är det smidigare får två processorer att tolka binär data med en bestämds längd än strängar och även effektivare då skriva ut ett värde i sträng på en cpu (tror intr atmegan har det) som inte har division tar mångs klockcyckler.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Al_Bundy »

Men sitter det inte en UART redan på en Arduino?
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Rick81 »

Ja så använd den. Antingen till Rasberry pi uart eller USBuart.
Du använde väl en sån för programmera från PC.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Al_Bundy »

Det är ju den jag redan använder.

Men jag får inte Firmata att fungera.
Senast redigerad av Al_Bundy 25 september 2018, 09:42:13, redigerad totalt 1 gång.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Rick81 »

Ja, kolla mitt förslag på protokoll. Det är lätt implementera
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Al_Bundy »

Så vad är det för typ av protokoll du rekommenderar då mellan USB hålet från Arduino till USB hålet på Pi?

Edit: Hittade ditt förslag, men låter det inte som att skapa hjulet på nytt igen?
Skriv svar