Skocz do zawartości

Bartt

Użytkownicy
  • Zawartość

    10
  • Rejestracja

  • Ostatnio

Reputacja

3 Neutralna

O Bartt

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. @Treker @Gieneq A jeszcze takie pytanie związane z I2C. Jeśli podepnę pod Malinkę dwa czujniki (działające na I2C) i doprowadzę do sytuacji w której będą JEDNOCZEŚNIE funkcjonowały dwa oddzielne programy (po jednym pod jeden czujnik) to czy mogą pojawić się jakieś kłopoty (I2C to w końcu half-duplex i jeśli doszłoby do sytuacji w której jeden program wysyłałby coś do jednego czujnika, a drugi odczytywał coś z drugiego to wydaję mi się że doszłoby do konfliktu?) Mam rację?
  2. @Treker Dzięki, wiesz może jeszcze skąd wzięły się te trzecie wartości? Z tego co wiem powinny to być dane ale dlaczego akurat takie to nie mam pojęcia... bus.write_byte_data(0x5d, 0x20, 0b10000000) bus.write_byte_data(0x5d, 0x21, 0b1)
  3. Ale tam wszystko jest napisane z myślą o Arduino, a tu mówimy o malince(chodzi mi bardziej o kwestie softu), no chyba że jestem ślepy...
  4. Witam, posiadam czujnik Pololu LPS331AP i malinkę. 1. Od jakiegoś czasu próbuję połączyć go z RPI i odczytywać dane za pomocą kodu w Pythonie. I tu właśnie pojawia się problem, jest w stanie ktoś z wyjaśnić jak wygląda komunikacja przez I2C? Szukałem trochę w internecie i postanowiłem użyć biblioteki smbus2. Z tego co zrozumiałem trzeba użyć czegoś w tym stylu: from smbus2 import SMBus bus = SMBus(1) b = bus.read_byte_data(80, 0) print(b) bus.close() I tutaj pytanie do was czy ten kod wystarczy do samego odczytywania bieżących parametrów? Trzeba jeszcze coś dodać?
  5. Witam Czy ta ładowarka (TP4056) nada się do takich akumulatorków ( Dualsky 520mAh 25C 2S 7.4V) ?
  6. Zamierzam zabrać się w najbliższym czasie za silniki krokowe i mam problem z doborem zasilania Silnik - JK42HS34-0404 Sterownik - Pololu A4988 Silnik zamierzam zasilać z baterii, i tu właśnie pojawia się problem. Silnik potrzebuje 12 V i 0,4 A. Jeśli chodzi o natężenie to z tego co zrozumiałem sterownik posiada możliwość regulacji. Problemem jest natomiast napięcie. Nie znalazłem żadnych baterii z dokładnie takim. Czy silnik może pracować na trochę wyższym albo niższym napięciu? Jeśli tak to na jakim? Generalnie jestem trochę zielony w tej kwestii...
  7. @Treker zmieniłem obudowę na taką spełniającą wymogi
  8. Ostatnio wpadłem na pomysł zbudowania termometru "bazującego" na Raspberry Pi. Nie zamierzałem stworzyć takiego "typowego" termometru tylko coś więcej ! Założenia Postawiłem sobie kilka założeń: możliwość odczytu obecnej temperatury za pomącą pierścienia led możliwość pracy na baterii możliwość odczytu temperatury na innym urządzeniu Połączenie wszystkich elementów Pierwszym krokiem było złożenie wszystkiego w całość co szczerze mówiąc było najprostszym etapem. Podpiąłem termometr do malinki (jak to zrobić to chyba oczywiste więc nie będę szczegółowo tego tłumaczył) Jedyne co ważne to to żeby termometr był podpięty na wystarczająco długim przewodzie, jeśli chcemy żeby termometr znajdował się daleko od malinki (np. na dworze) Trochę trudniej było w przypadku ledów, ale po paru chwilach podłączyłem je do malinki w ten sposób: IN - GPIO18 (istnieje możliwość podpięcia tego elementu pod inny port GPIO, ważne jest żeby później wpisać w napisanym przez nasz skrypcie pod który podłączyliśmy) VCC - wyjście 5V malinki (producent nie zaleca zasilania pierścienia z malinki w przypadku większych ilości ledów jednak w przypadku dwunastu nie powinno nic się stać) GND - GND Pierścień posiada jeszcze trzy wyjścia ale nie będą mi potrzebne (służą do łączenia większej ilości takich pierścieni) Jako zasilanie wewnętrzne wykorzystałem starty power bank Nokii. Raspberry PI pobiera bardzo mało prądu więc nie potrzebujemy jakiejś dużej pojemności. Całość po złożeniu wyglądała miej więcej tak ⬆ Instalowanie Sterowników Największym wyzwaniem okazał się jednak Software. Sama instalacja wszelkich sterowników i bibliotek już na początku zajęła dość sporo czasu a później czekało mnie jeszcze napisanie programu i stworzenie witryny www co też było dosyć czasochłonne. Po aktualizacji oprogramowania najpierw zrobiłem: Pierwszym etapem było zainstalowanie sterowników do termometru komendą: sudo pip3 install w1thermsensor Następnie zainstalowałem Circut Pythona oraz biblioteki do ledów. pip3 install adafruit-blinka sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel Po sprawdzeniu czy wszystko działa prawidłowo zabrałem się za pisanie kodu Tworzenie Oprogramowania Pierwszym krokiem w tym kierunku było stworzenie programu który odpalał odpowiednie piksele jeśli temperatura była wyższa niż zakładana, w przeciwnym wypadku poszczególne ledy były wyłączane import board import neopixel import time from w1thermsensor import W1ThermSensor pixels = neopixel.NeoPixel(board.D18, 12) temp = W1ThermSensor() while times != 40: dtemp = temp.get_temperature() print(dtemp) time.sleep(4) times += 1 if dtemp >=18: pixels[2] = (0,0,10) else: pixels[2] = (0,0,0) if dtemp >= 19: pixels[3] = (2,2,8) else: pixels[3] = (0,0,0) if dtemp >= 20: pixels[4] = (4,4,6) else: pixels[4] = (0,0,0) if dtemp >= 21: pixels[5] = (6,6,4) else: pixels[5] = (0,0,0) if dtemp >= 22: pixels[6] = (8,8,2) else: pixels[6] = (0,0,0) if dtemp >= 23: pixels[7] = (10,10,0) else: pixels[7] = (0,0,0) if dtemp >= 24: pixels[8] = (10,8,0) else: pixels[8] = (0,0,0) if dtemp >= 25: pixels[9] = (10,6,0) else: pixels[9] = (0,0,0) if dtemp >= 26: pixels[10] = (10,4,0) else: pixels[10] = (0,0,0) if dtemp >= 27: pixels[11] = (10,2,0) else: pixels[11] = (0,0,0) if dtemp >= 28: pixels[0] = (10,0,0) else: pixels[0] = (0,0,0) time.sleep(5) print("end") pixels.fill((0, 0, 0)) Na początku zaimportowałem potrzebne moduły następnie zdefiniowałem liczbę pikseli oraz port GPIO Kolejnym krokiem była pętla while która wykonywała 40 pomiarów co 4 sekundy Na końcu "zgasiłem" wszystkie piksele, gdybym tego nie zrobił nadal pozostawały by włączone Następnie zabrałem się za postawienie serwera na mojej malince sudo apt install apache2 -y Oraz zainstalowałem potrzebne w tym wypadku PHP sudo apt install php -y Największym problemem było dla mnie pokazywanie temperatury w przeglądarce a zrobiłem to w bardzo prosty sposób: Dodałem do kodu w Pythonie fragment który zapisuje w pliku obecną temperaturę plik = open("dane.txt", "w") dtemp=str(dtemp) plik.write(dtemp) plik.close Ważne było aby zamienić typ zmiennej przechowującej dane o temperaturze na Str. Ten element kodu musi znajdować się na samym końcu pętli.Następnie stworzyłem stronę, gdzie na końcu dodałem polecenie odczytania tego pliku. W innym wypadku program wyrzuci błąd. Wybrałem "W" jako tryb otwierania pliku gdyż wraz z otwarciem kasuje on całą zawartość pliku co jest konieczne w tej sytuacji (dodatkowo jeśli plik nie istnieje skrypt utworzy go) Ostatnim już krokiem jest stworzenie witryny www. Ja postawiłem na pełną prostotę żeby nie obciążać za bardzo malinki, oprócz tego skraca to proces wczytywania strony na samym dole znajduje się fragment PHP który wczytuje zawartość pliku txt który zoistał wcześniej utworzony. Jeśli plik znajduje się w innym folderze trzeba podać dokładny adres tego pliku. Dodałem tam jeszcze funkcją automatycznego odświeżania strony co pięć sekund, dzięki czemu nie musi tego robić użytkownik. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Termometr</title> <style> #all {margin-left: auto; padding:0px; margin-right: auto;} #gora { margin:0px; text-align: center; color: black; padding: 10px; } </style> </head> <body bgcolor= "white"> <div id="all"> <div id="gora"> <h1>Termo Malinka</h1> </div> </div> <font size='24'> <?php echo "Temperatura: "; require_once('dane.txt'); echo " ℃"; header('refresh:5;'); ?> </font> </body> </html> Wszystko wstawiłem do folderu /var/www/html (zapisanie tam danych wymaga uprawnień roota)i uruchomiłem skrypt pythona. Ważne jest to żeby komputer na którym chcemy sprawdzić temperaturę był podłączony do tej samej sieci lokalnej co malinka. Istnieje też możliwość udostępnienia to każdemu użytkownikowi internetu ale nie widziałem takiej potrzeby. Wszystko włożyłem do obudowy z drewna Efekt możecie zobaczyć poniżej ⬇
×