Komunikace přes RS485 modul raspberry - arduino

BigSandy
Příspěvky: 17
Registrován: 12 pro 2017, 10:33

Komunikace přes RS485 modul raspberry - arduino

Příspěvek od BigSandy »

Zdar Vás tu a prosim o radu.
Par arduin jsem propojil a funguje.
Na řadě je raspberry a nějak mi to nesedí.
https://forum.mysensors.org/topic/6881/ ... spberry-pi
https://raspberrypi.stackexchange.com/q ... spberry-pi
https://www.linkedin.com/pulse/rs485-co ... ony-arouje

Je to cele napajené přes raspi 5V.
Arduina jedou na 5V.
Piny raspi jsou však na 3,3V.
Tedy na piny 8,9 což je TX a RX jde 5 V.

Tady je třeba natvrdo propojeno TX a RX arduino a raspi.
https://embedtutorial.wordpress.com/201 ... d-rpi-gui/

Jak je to tedy s tým TX a RX u rasp?
Naposledy upravil(a) BigSandy dne 13 pro 2017, 09:23, celkem upraveno 1 x.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1519
Registrován: 16 úno 2013, 14:26

Re: Komunikace přes RS485 modul raspberry - arduino

Příspěvek od Dex »

RPi používá 3,3 V úrovně. Pokud se tam dostalo 5 V, tak těžko říct, jak to dopadlo, ale je to špatně.

Důležité piny jsou 8, 9 a 10 viz. https://pinout.xyz/#

Úrovně je potřeba převést, například pomocí něčeho takového https://www.aliexpress.com/item/FREE-SH ... 79293.html

Pochopitelně je potřeba propojit i země.

Mno a nevím, jak to máš celé pospojované, ale používat RPi jako zdroj 5 V není moc vhodné. Lepší je např. nějaký DC měnič.
"all your robots are belong to us"
robodoupe.cz
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Komunikace přes RS485 modul raspberry - arduino

Příspěvek od gilhad »

(Ono RPi samo o sobe ma obcas problemy se slabsimi zdroji, ze nepredvidatelne pada, nebo dela jine podivnosti, coz se obcas odviji nejen od zateze, ale i od zahrati, zpusobu odvodu tepla, tepla okoli a jinych obskurnosti. Pouzivat ho v te situaci jak ZDROJ pro deco dalsiho v podstate znamena koledovat si o nepredvidatelne chovani. Naopak citam o napajeni RPi prez GPIO header, kam se privede nejake (dobre stabilizovane) napeti z vnejsiho vykonneho zdroje a ten, co je v RPi se tim obejde. Nejsem si ale jist, zda to nevyzaduje i nekde neco odletovat, aby se ty dva zdroje netloukly. S dost silnym klasickym zdrojem je samotne RPi stabilni, ale vic moc se od toho cekat neda)
BigSandy
Příspěvky: 17
Registrován: 12 pro 2017, 10:33

Re: Komunikace přes RS485 modul raspberry - arduino

Příspěvek od BigSandy »

Dex píše: 12 pro 2017, 22:11 RPi používá 3,3 V úrovně. Pokud se tam dostalo 5 V, tak těžko říct, jak to dopadlo, ale je to špatně.
Ještě jsem to nezapojoval, hned mi to bylo trochu divne.
Nejsem eletrikař ale na druhou stranu,je to vše připojene přes odpory takže ????.
http://yourduino.com/sunshop//index.php ... tail&p=323
Dex píše: 12 pro 2017, 22:11 Pochopitelně je potřeba propojit i země.
Není.
V každé místnosti arduino napájené trafem a propojené dvojlinkou a chodí to.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1519
Registrován: 16 úno 2013, 14:26

Re: Komunikace přes RS485 modul raspberry - arduino

Příspěvek od Dex »

Odpory jsou fajn součástky, takže cože???? :lol:

Já za sebe doporučuju to, co už jsem psal. Jestli to spěchá, tak to mají i v ČR https://arduino-shop.cz/arduino/999-pre ... 08318.html

Jen si nech země nepropojené, jak je libo, ale já mám svědomí čisté ;)
"all your robots are belong to us"
robodoupe.cz
BigSandy
Příspěvky: 17
Registrován: 12 pro 2017, 10:33

Re: Komunikace přes RS485 modul raspberry - arduino

Příspěvek od BigSandy »

Tak připojené přimo na ty piny a raspi žije a už jede 24 hodín :mrgreen:
Hold odpory jsou odpory. :D
Problémy však s pravy.
Kdyby se tu našel nějaký tučnak co umí, potěšíl by.
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Komunikace přes RS485 modul raspberry - arduino

Příspěvek od gilhad »

Jake problemy s pravy konkretne? Pokud to spoustis pod uzivatelem, je ve spravnych skupinach? (/etc/group) Maji zarizeni, na ktere pristupujes prava pro ty skupiny? I pro zapis? (ls -al /dev) Zkus se o tech problemech rozepsat trochu vic, treba se odpoved najde :)
BigSandy
Příspěvky: 17
Registrován: 12 pro 2017, 10:33

Re: Komunikace přes RS485 modul raspberry - arduino

Příspěvek od BigSandy »

Potřebují to rozchodit přes PhpSerial.
https://github.com/rubberneck/php-serial

PHP jede pod www-data
www-data mají stejna prava jako pi
sudo visudo
www-data ALL=(ALL:ALL) NOPASSWD: ALL

/dev/ttyAMA0 patři do skupiny tty
https://s18.postimg.org/bnrdm9u7d/root.png
sudo usermod -a -G tty pi

Zkoušel jsem funkčnost přes python a lazarus jako pi
Funguje to, když oboje spouštím přes sudo
Jinak not open device /dev/ttyAMA0

Takže pokud mi to nepojede bez suda, tak nepoje aní to PHP.

Podle toho obrázku výše bych řek, že i když pi patří do skupiny tty, prava pro přistup ma jen root
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Komunikace přes RS485 modul raspberry - arduino

Příspěvek od gilhad »

Podle obrazku jen root muze cist a psat, kdokoli ze skupiny tty muze psat, ALE NEMUZE cist - coz muze byt docela problem.

sudo se musi explicitne volat, pokud to "jen" spustis prez webove stranky, tak se nevola a jsi proste www-data (pravdepodobne ze skupiny www-data), ktery nema zadna prava k ttyAMA0.

Zkus zeditovat /etc/group a do skupiny tty pridat na konec radku k uzivatelum www-data (pokud uz tam neco je, tak uzivatele oddelujes carkou, pokud tam nikdo neni, cili radek konci dvojteckou, tak tam napis jen to www-data (jakozto uzivatele))

jako root zmen prava /dev/ttyAMA0 na zapis pro tty (chmod 660 /dev/ttyAMA0)

pak by to mozna mohlo jit
BigSandy
Příspěvky: 17
Registrován: 12 pro 2017, 10:33

Re: Komunikace přes RS485 modul raspberry - arduino

Příspěvek od BigSandy »

Tak jsem to upravil a nastavil na 660
tty:x:5:pi,www-data,pi

Pi už muže spouštět ten python skript.
Teda pi už má přístup k /dev/ttyAMA0 :mrgreen:
gilhad - děkují :mrgreen:
Přes PHP to však nefunguje
Ted se shaní někdo kdo umí PHP ;)

Kód: Vybrat vše

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

include php_serial.class.php;

$serial = new PhpSerial;
$serial->deviceSet("/dev/ttyAMA0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
$serial->sendMessage("hups");
$serial->deviceClose();
?>
Odpovědět