1 (edytowany przez mjab 2019-10-04 15:11:44)

Temat: Rasbperry Pi 3 B i GPIO

Witam,

mam Raspberry Pi 3 B i chcę niektóre GPIO dopisać do diód LED (by migały np. podczas pracy wifi), a niektóre dopisać do przycisków tak by zwarcie danego GPIO z +3,3v było czytane jako jakiś przycisk.

Tu jest rozpiska GPIO: https://www.raspberrypi-spy.co.uk/wp-co … 24x341.png
i powiedzmy że do GPIO 17, 27, 22 chcę mieć przyciski BTN_1, BTN_2, BTN_3, a do GPIO 26 chcę podłączyć LED która będzie mrygała podczas połączenia WiFi.

Jak to mogę zrobić?


PS. System: OpenWrt 18.06.4, r7808-ef686b7292

2

Odp: Rasbperry Pi 3 B i GPIO

Dla wifi: http://eko.one.pl/?p=openwrt-leds#aktyw … sieciowego lub inne triggery, w zależności od tego co sterownik dostarcza.

A obsługi "przycisków" nie ma - sam to musisz sobie oprogramować (w sensie odczytać stan gpio i jak jest takie czy inne to ustawić odpowiednio led, a całość w pętli). To też jest opisane: http://eko.one.pl/?p=openwrt-leds#wczeniediody

Generalizując - 0 wyłączy led, inna wartość - włączy ją.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Rasbperry Pi 3 B i GPIO

Ok, ale LED mogę jakoś dopisać z GPIO? Bo jak inaczej mam użyć np. Heartbeat mając diodę LED na GPIO 26?

Ręcznie mogę to odczytać i przełączyć i działa, ale jak to dopisać do kernela?

4

Odp: Rasbperry Pi 3 B i GPIO

Raspberry nie widzi obecnie LEDów. Muszę jakoś OpenWrt wyjaśnić że je ma i pod jakim GPIO.

5

Odp: Rasbperry Pi 3 B i GPIO

Musisz zmienić definicję i przekompilować cały system. Zobacz sobie jak to jest robione w łatach, np. https://github.com/openwrt/openwrt/blob … igge.patch itp.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: Rasbperry Pi 3 B i GPIO

Przyciski mogę sam jakoś oprogramować, to nic trudnego (chyba). Ale LED już nie napisze od zera. Obecnie pod poleceniem ls /sys/class/leds/ mam led0 i led1 ale to są diody na płycie, ja chce użyć np GPIO 26, 27 itd ...

7

Odp: Rasbperry Pi 3 B i GPIO

Ok, poczytałem to, ale dalej nie wiem od czego zacząć tongue Widzę tylko że będzie z tego niezła jazda.

8

Odp: Rasbperry Pi 3 B i GPIO

gdzie ja mam wpisać te GPIO w tym kodzie i jak to kompilować tongue

9

Odp: Rasbperry Pi 3 B i GPIO

Albo sobie piszesz/poprawiasz kernel żeby eksportował to albo olewasz ledy, eksportujesz zwykłe gpio przez zmianę gpio masz sterowanie ledami do  nich podłączonymi. Oczywiście nie możesz wtedy ich użyć do triggerów z kernela, ale może samodzielnie nimi sterować.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: Rasbperry Pi 3 B i GPIO

mjab napisał/a:

gdzie ja mam wpisać te GPIO w tym kodzie i jak to kompilować tongue

Będę okrutny - poradnik o kompilacji jest na eko.one.pl. A jestem daleki od tego żeby ci tłumaczyć w jednym poście jak się pisze w C, sorry to musisz sobie doczytać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11

Odp: Rasbperry Pi 3 B i GPIO

Ok, przyciski już mam, o to kod:

#!/bin/sh

STAN_GPIO () {
plik="/tmp/stan_gpio_$1.txt"
echo $1 > /sys/class/gpio/export
s=$(gpioctl dirin $1)
s=""
WARTOSC=$(gpioctl get $1)
echo $1 > /sys/class/gpio/unexport
if [ "$WARTOSC" != "${WARTOSC/LOW/}" ]; then
  p=2
  if [ -e $plik ]; then
   p=$(cat $plik)
  fi
  if [ "$p" -ne "0" ] ; then
   echo "0" > $plik
   echo "0"
  else
   echo ""
  fi
fi
if [ "$WARTOSC" != "${WARTOSC/HIG/}" ]; then
  p=2
  if [ -e $plik ]; then
   p=$(cat $plik)
  fi
  if [ "$p" -ne "1" ] ; then
   echo "1" > $plik
   echo "1"
  else
   echo ""
  fi
fi
}



i=1
while [ "$i" != 0 ]; do
# GPIO 17 - Przycisk
STAN=$(STAN_GPIO 17)
if [ "$STAN" == "0" ] ; then
  echo "BTN_1 - Rozwarty"
fi
if [ "$STAN" == "1" ] ; then
  echo "BTN_1 - Zwarty"
fi
STAN=""
# ---

# GPIO 27 - Czujnik swiatla
STAN=$(STAN_GPIO 27)
if [ "$STAN" == "0" ] ; then
  echo "BTN_2 - Rozwarty"
fi
if [ "$STAN" == "1" ] ; then
  echo "BTN_2 - Zwarty"
fi
STAN=""
# ---
done


Do zadziałania trzeba zainstalować:
  opkg update
  opkg install gpioctl-sysfs


Teraz co z tymi LEDami? sad

12

Odp: Rasbperry Pi 3 B i GPIO

Jest tylko jeden problem tego skryptu, bardzo obciąża mi system. Jeśli są jakieś alternatywy też jestem otwarty.

13

Odp: Rasbperry Pi 3 B i GPIO

Sleep jakiś sobie dodaj. I nie rób niepotrzebnie export/unexport za każdym razem, zrób to tylko jeden raz export na starcie systemu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

14

Odp: Rasbperry Pi 3 B i GPIO

Jak zrobić sleep na np. 250 milisekund? 1 sekunda to za wiele, za późno reaguje na przyciski.

15

Odp: Rasbperry Pi 3 B i GPIO

Zainstaluj coresutils-sleep  to będziesz mógł podawać części sekund.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

16 (edytowany przez mjab 2019-10-04 21:13:54)

Odp: Rasbperry Pi 3 B i GPIO

Ok, a jak się używa takiego coresutils-sleep w skrypcie, powiecmy jak zrobić sleep na 250 ms?

17

Odp: Rasbperry Pi 3 B i GPIO

Serio, masz bana na google?

sleep 0.25

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

18

Odp: Rasbperry Pi 3 B i GPIO

Mam bana na google smile używam duckduckgo.com

19 (edytowany przez mjab 2019-10-08 16:26:41)

Odp: Rasbperry Pi 3 B i GPIO

# opkg install coreutils-sleep
Installing coreutils-sleep (8.23-4) to root...
Downloading http://downloads.openwrt.org/releases/1 … ex-a53.ipk
Failed to establish connection
Collected errors:
* opkg_download: Failed to download http://downloads.openwrt.org/releases/1 … x-a53.ipk, wget returned 4.
* opkg_download: Check your network settings and connectivity.

* opkg_install_pkg: Failed to download coreutils-sleep. Perhaps you need to run 'opkg update'?
* opkg_install_cmd: Cannot install package coreutils-sleep.

20

Odp: Rasbperry Pi 3 B i GPIO

Ok, za trzecim razem udało się zainstalować ten pakiet.

21

Odp: Rasbperry Pi 3 B i GPIO

Miałeś problem z połączeniem z internetem.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.