Projekt na Raspberry Pi a Python

Projekt na Raspberry Pi a Python
« kdy: 06. 01. 2025, 17:50:19 »
Dělám projekt na přenos dat světlem z jednoho Raspberry Pi na druhé pomocí laseru. První kod v příloze "blik.py" převede uživatelem zadaný text na ASCII kod v bináru a laser podle hodnoty 1 nebo 0 bliká po určitou dobu. Nedokážu ale zprovoznit přijímací část (prichod.py). Používám fotorezistor a normální rezistor jako dělič napětí.
Poprosil bych jestli by někdo nebyl schopný mi přijímací část zprovoznit a nejlépe ještě najít způsob jak obě zařízení synchronizovat, aby se spustila naráz

Díky moc!


Re:Projekt na Raspberry Pi a Python
« Odpověď #1 kdy: 07. 01. 2025, 00:56:23 »
Nebylo by jednoduší na vysílání i příjem použít sériový port s rozumně nastavenou rychlostí?
Tím myslím modulovat ten laser signálem ze sériového portu a na druhé straně přivést signál z přijímací diody nebo fotoodporu opět na vstup sériového portu.
Snadno odladíte sw tím, že to nejdřív spojíte drátem a až budete mít jistotu, že to funguje tak, začít ladit s laserem.
Já to takhle používal s infra.

RDa

  • *****
  • 2 813
    • Zobrazit profil
    • E-mail
Re:Projekt na Raspberry Pi a Python
« Odpověď #2 kdy: 07. 01. 2025, 01:50:27 »
A na prijimaci vidis, zda chodi data? Tj mas HW ktery je spolehlivy?

Jedna z veci pri sw/hw vyvoji je schopnost veci ladit.. takze pokud nevidite data v SW, musite pripojit osciloskop a zjistit zda ty data vubec mate na dratu.. a podle toho zda jo nebo ne, se rozhodnete kam mirit sve usili.

Karmelos

  • *****
  • 1 081
    • Zobrazit profil
    • E-mail
Re:Projekt na Raspberry Pi a Python
« Odpověď #3 kdy: 07. 01. 2025, 09:18:48 »
A na prijimaci vidis, zda chodi data? Tj mas HW ktery je spolehlivy?

Jedna z veci pri sw/hw vyvoji je schopnost veci ladit.. takze pokud nevidite data v SW, musite pripojit osciloskop a zjistit zda ty data vubec mate na dratu.. a podle toho zda jo nebo ne, se rozhodnete kam mirit sve usili.

Na todle snad stačí jenom voltmetr, ne? Ale jasný, je potřeba vědět jestli ten lejzr vůbec tu jedničku vybudí než zhasne....
Gréta je nejlepší.

Ge Bu

Re:Projekt na Raspberry Pi a Python
« Odpověď #4 kdy: 07. 01. 2025, 09:20:36 »
Naprosto souhlasím s tímto názorem.
Není zádrhel právě ve fotorezistoru? Je to hodně pomalá součástka tj. změna hodnoty odporu trvá a třeba to nestíhá vůbec blikání registrovat.


A na prijimaci vidis, zda chodi data? Tj mas HW ktery je spolehlivy?

Jedna z veci pri sw/hw vyvoji je schopnost veci ladit.. takze pokud nevidite data v SW, musite pripojit osciloskop a zjistit zda ty data vubec mate na dratu.. a podle toho zda jo nebo ne, se rozhodnete kam mirit sve usili.


Ge Bu

Re:Projekt na Raspberry Pi a Python
« Odpověď #5 kdy: 07. 01. 2025, 09:21:36 »
A jestli fotorezistor dá elektrický impuls.
Voltmetr stačit nebude - neuvidíš, jestli to bliká. Bude ukazovat průměrnou hodnotu.

A na prijimaci vidis, zda chodi data? Tj mas HW ktery je spolehlivy?

Jedna z veci pri sw/hw vyvoji je schopnost veci ladit.. takze pokud nevidite data v SW, musite pripojit osciloskop a zjistit zda ty data vubec mate na dratu.. a podle toho zda jo nebo ne, se rozhodnete kam mirit sve usili.

Na todle snad stačí jenom voltmetr, ne? Ale jasný, je potřeba vědět jestli ten lejzr vůbec tu jedničku vybudí než zhasne....

Re:Projekt na Raspberry Pi a Python
« Odpověď #6 kdy: 07. 01. 2025, 10:19:39 »
Z vlastní zkušenosti dodávám, že fotorezistor není jen hodně pomalá součástka, ale je to fakt extrémně pomalá součástka, jejíž odezva bývá běžně v řádu nižších stovek milisekund a je pro jakýkoli digitální přenos velmi špatně použitelná.
Raději bych se zaměřil na fotodiody, které nabízejí odezvu o několik řádů rychlejší a pro datové přenosy se hodí podstatně více.

Re:Projekt na Raspberry Pi a Python
« Odpověď #7 kdy: 08. 01. 2025, 00:14:14 »
Kód: [Vybrat]
for j in range(len(x)):
    y=f'{ord(x[j]):08b}';print(y)
    for i in range(8):
        if y[i]=="0":
            a.on();sleep(.03);a.off();sleep(.1)
        if y[i]=="1":
            a.on();sleep(.05);a.off();sleep(.1)

JJ pauzy v ms, jak píšou ostatní.

Jinak, chápu že si s tím jen hraješ a učíš se, ale prosím koukni na nějaké "python coding best practices", nebo kousek knížky.
Ten kód je dobrá prasečina :)

Re:Projekt na Raspberry Pi a Python
« Odpověď #8 kdy: 08. 01. 2025, 18:06:00 »
Z vlastní zkušenosti dodávám, že fotorezistor není jen hodně pomalá součástka, ale je to fakt extrémně pomalá součástka, jejíž odezva bývá běžně v řádu nižších stovek milisekund a je pro jakýkoli digitální přenos velmi špatně použitelná.
Raději bych se zaměřil na fotodiody, které nabízejí odezvu o několik řádů rychlejší a pro datové přenosy se hodí podstatně více.

Kdysi dávno jsem měl funkční Ronju: https://cs.wikipedia.org/wiki/Ronja.
Tam by mohl autor vlákna jít pro inspiraci, jaké součástky použít.

http://ronja.twibright.com/
http://ronja.twibright.com/schematics/
http://ronja.twibright.com/ds.php

Re:Projekt na Raspberry Pi a Python
« Odpověď #9 kdy: 08. 01. 2025, 18:17:23 »

Z vlastní zkušenosti dodávám, že fotorezistor není jen hodně pomalá součástka, ale je to fakt extrémně pomalá součástka, jejíž odezva bývá běžně v řádu nižších stovek milisekund a je pro jakýkoli digitální přenos velmi špatně použitelná.
Raději bych se zaměřil na fotodiody, které nabízejí odezvu o několik řádů rychlejší a pro datové přenosy se hodí podstatně více.

Kdysi dávno jsem měl funkční Ronju: https://cs.wikipedia.org/wiki/Ronja.
Tam by mohl autor vlákna jít pro inspiraci, jaké součástky použít.

Ono totiž na vzdálenost větší než malou bude potřeba ten signál z fotočlenu zesílit a neztratit se v šumu. Tam dělič stačit nebude.

http://ronja.twibright.com/
http://ronja.twibright.com/schematics/
http://ronja.twibright.com/ds.php

Re:Projekt na Raspberry Pi a Python
« Odpověď #10 kdy: 10. 01. 2025, 11:10:13 »
Já tedy nejsem žádný expert na elektrotechniku a ani na optoelektroniku.
Nicméne pár rad spíše do začátku ti dát můžu.
- rychlejší příjímací součástku
- v komunikaci se používá běžne modulací a jsou pro to dobré důvody (rozlišení signálů vlastní / cizí)
- i když neprobíhá komunikace je vhodné posílat nosnou pro detekci spojení, anebo neposílát nic, ale zase mít preambuly (viz. Ethernet, apod.)
- já bych se k přijímacímu prvku spíše choval analogově a s pomocí vyhodnocení kvality přenosu nastavoval rozhodovací úrovně (převod z analogu na digitál). To je důvod proč existuje preambule. Přenosová trasa v případě přenosu volným prostorem mění své vlastnosti (útlum, změna světelných podmínek, atd.) a proto je potřeba s tím počítat a přizpůsobovat nastavení přijímače (průměrování, rozhodovací úrovně).
- taky bych vzhledem k chybovosti a nestálosti přenosového kanálu zavedl detekci (CRC), případně i opravné kódy (např. jednoduché Hammingovo kódování).

Každopádně doporučuji postupovat po krocích a začít přenos optočlenem, pak v kontrolovaném prostředí (uzavřená drubička), tak si odladit kodování, opravy chyb a pak se vydal na další krok modulací a řízení přijímače. Osciloskop je fajn věc a jasně ukáže spoustu věcí viziálně.

V každém případě přeju hodně nadšení a odhodlání. Na internetu najdeš spoustu rad na tohle téma. Ostatně 90% věcí už přes námi někdo dělal.