Rys historyczny Systemy Wbudowane Raspberry Pi Raspberry Pi - systemy Raspberry Pi - zastosowania Uruchamianie i system NIE

Podobne dokumenty
Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Pracownia Technik Obliczeniowych

ZASTOSOWANIE PLATFORM CYFROWYCH ARDUINO I RASPBERRY PI W NAUCZANIU STEROWANIA OBIEKTEM PNEUMATYCZNYM

Uruchomienie Raspberry Pi

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Uruchomienie Raspberry Pi

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

Laboratorium Procesorów Sygnałowych

1.2. Architektura rdzenia ARM Cortex-M3...16

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

dokument DOK wersja 1.0

Szkolenia specjalistyczne

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Płytka uruchomieniowa XM64

Warstwy systemu Windows 2000

1.Wstęp. 2.Generowanie systemu w EDK

Programowanie mikrokontrolerów AVR

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Spis treści. Wykaz ważniejszych skrótów Wprowadzenie Rdzeń Cortex-M Rodzina mikrokontrolerów XMC

Embedded Solutions Automaticon Efektywne pomiary i sterowanie przy użyciu systemu wbudowanego MicroDAQ

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

Instalacja Systemu Linux na maszynie writualnej

2.1 Porównanie procesorów

Szczegółowy opis przedmiotu zamówienia. Część 1 - Laboratoryjny zestaw prototypowy

Uruchomienie Intel Galileo

KAmodRPi ADC DAC. Rev Źródło:

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Zrób to sam : generowanie ruchu, światła i dźwięku za pomocą Arduino i Raspberry Pi / Simon Monk. Gliwice, Spis treści

Płytka uruchomieniowa XM32

Programator procesorów rodziny AVR AVR-T910

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

10. Silniki Wprowadzenie Sterowanie pracą serwomotoru

Systemy Wbudowane. Raspberry Pi Sterowanie serwomechanizmem (wersja 2019) Serwomechanizm. Serwomechanizm z silnikiem krokowym

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

INSTRUKCJA UŻYTKOWNIKA. Mini rejestrator cyfrowy MD-80P

Projektowanie z użyciem procesora programowego Nios II

MODUŁ ZDALNEGO STEROWANIA GSM BRAM STER 5.0

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Wykład 3: Implementacja programów wbudowanych

Q E M U.

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

nr katalogowy/ okres gwarancji ilość nr katalogowy/ okres gwarancji ilość nr katalogowy/ okres gwarancji ilość nr katalogowy/ okres gwarancji ilość

Materiały dodatkowe. Raspberry Pi

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

Wstęp Architektura... 13

Ćwiczenie 4: Eksploatacja systemu kontroli dostępu jednego Przejścia REGIONALNE CENTRUM EDUKACJI ZAWODOWEJ W BIŁGORAJU

2. Architektura mikrokontrolerów PIC16F8x... 13

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

Sprawozdanie z zadania 2. Artur Angiel, śr. 12:15

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

KATEDRA SYSTEMÓW MULTIMEDIALNYCH SEMINARIUM MULTIMEDIALNE SYSTEMY MEDYCZNE

INSTRUKCJA I WSKAZÓWKI

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

ADuCino 360. Zestaw uruchomieniowy dla mikrokontrolerów ADuCM360/361

KCM-5111 H Megapixel IP D/N PoE Box Camera (DC 12V / PoE)

Odtwarzacz multimedialny

IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych

Systemy Wbudowane. Arduino dołączanie urządzeń Wersja Arduino więcej portów I/O. Układy serii 74. Układy serii 74xx a seria 40xx

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Pracownia specjalistyczna. Numer ćwiczenia: 5.

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

CZĘŚĆ I ZAMÓWIENIA DOSTAWA SPRZĘTU INFORMATYCZNEGO DO PROJEKTU DOMOWY ASYSTENT OSÓB STARSZYCH I CHORYCH

Przegląd rozwiązań z oferty firmy 4D Systems

BF30 OCDLINK/USBASP ARM-JTAG/AVR-ISP Programmer-debugger Instrukcja obsługi

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

INTEGRACJA CENTRALI ALARMOWEJ SATEL Z HOME CENTER 2 FIBARO

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

OPIS PRZEDMIOTU ZAMÓWIENIA

Parametryzacja przetworników analogowocyfrowych

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

Odtwarzacz multimedialny

Szybki przewodnik instalacji

Instrukcja NAWIGACJA MEDIATEC 7 CALI

ARCHITEKTURA SYSTEMÓW WBUDOWANYCH - LABORATORIUM. Ćwiczenie 4. Temat: Serwer stron WWW jako interfejs komunikacyjny z Systemem Wbudowanym.

Spis treści. Wstęp... 10

Architektura systemów informatycznych WPROWADZENIE DO SYSTEMU LINUX

Electronic Infosystems

BF20 JTAG dla ARM ów z interfejsem USB Instrukcja obsługi

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

Dekoder Vu+ SOLO 4K Super Cena!!!

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Szybki przewodnik instalacji

MODUŁ UNIWERSALNY UNIV 3

Kontroler LED programowalny czasowo 12V 20A 5 kanałów

Systemy Wbudowane. Arduino, AVR. Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler. Mikrokontroler Platforma Arduino. Arduino IDE: Arduino C:

GATE OPENER. Instrukcja Obsługi i Konserwacji. Sterownika GSM-21. Instrukcja obsługi sterownika GSM-21

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

Dokumentacja Techniczna. Czytnik RFID UW-M4GM

Systemy Wbudowane. Raspberry Pi komunikacja szeregowa (wersja 2019) Higiena pracy z Qt. Komunikacja szeregowa. Qt Creator i uruchamianie.

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

Wymagane parametry techniczne laptopa

Dekoder Vu+ SOLO 4K Super Cena!!!

Transkrypt:

Rys historyczny PC/104 Mikro-pecet do zastosowań wbudowanych, Single module PC, UMPC Systemy Wbudowane Raspberry Pi (wersja 2019) mgr inż. Marek Wilkus http://home.agh.edu.pl/~mwilkus Wydział Inżynierii Metali i Informatyki Przemysłowej AGH Kraków 1 2 Raspberry Pi Raspberry Pi - systemy Praktycznie pełny komputer z procesorem ARM na jednej płytce, Model 3B: Procesor BCM2837, GNU/Linux: Debian Arch OpenELEC Fedora 1.2GHz, 4 rdzenie, 1GB RAM współdzielony z GPU, 4 porty USB, ethernet, HDMI, Composite, sound out, Dysk: Karta microsd, GPIO: 26 pinów (w tym SPI) I2C na dodatkowych pinach 2 pin-y do rozbudowy EEPROMu 3.3V, GND Android PI RISC OS FreeBSD FreeRTOS +Emulacja 3 4 Raspberry Pi - zastosowania Uruchamianie i system Sterowanie, sieci, "Internet of things", Mikroserwery i bramy sieciowe, firewalle (pihole) Miniaturowe komputery, Interfejsy (RTOS!), Przetwarzanie obrazu (szybki interfejs kamer cyfrowych) Ale NIE: Instalacje "High-assurance" (bezwartościowe open source, mnóstwo nieznanego i nieaudytowanego kodu), Instalacje wysokiej trwałości (nieprzystosowany do trudnych warunków) 5 Mikrokod ładuje boot code do L2 i uruchamia CPU CPU wykonuje boot code uruchamiając kontroler pamięci, ładuje do RAMu loader, Loader ładuje start.elf Start.elf uruchamia obsługę nośników danych, ładuje kernel z SD oraz umieszcza EEPROMy urządzeń w pamięci, Kernel uruchamia sterowniki korzystając z informacji w EEPROMach urządzeń, Startuje system operacyjny. Instalacja na czystej karcie SD: wget http://downloads.raspberrypi.org/raspbian_latest unzip 2017-09-07-raspbian-stretch.zip sudo fdisk l # zapamiętujemy nazwę karty sd sudo dd if=2017-09-07-raspbian-stretch.img of=/dev/sdx 6

Konfiguracja: Raspbian Możliwości pracy Po pierwszym uruchomieniu "świeżego" systemu Rpi: sudo raspi-config Bezpośrednie podłączenie USB (klawiatura, wskaźnik), HDMI/Composite Połączenie przez SSH Połączenie przez VNC X forwarding Praca zdalna, rozwiązania linuksowe I wiele innych 7 8 Struktura katalogów /boot # pliki rozruchowe systemu, jądro, initrd /bin # pliki wykonywalne dostępne dla wszystkich użytkowników Struktura katalogów c.d. /sys # wirtualny system plików umożliwiający konfigurację urządzeń /sys/class/gpio /sbin # pliki wykonywalne do zarządzania systemem /root /etc # pliki konfiguracyjne /tmp /home # katalogi domowe użytkowników systemu /run # dane od uruchomienia systemu, np. zalogowani użytkownicy /usr # doinstalowane aplikacje użytkowników, dokumentacja, /home/pi # w tym katalogu (i podrzędnych) tworzymy projekty # katalog domowy super użytkownika (root a) # tymczasowe podręczne pliki (często giną po restarcie systemu) /lib # biblioteki systemowe dla /bin i /sbin /lib64 # wersje dla 64 bitowego systemu /opt # opcjonalne oprogramowanie # biblioteki, pliki nagłówkowe /dev # pliki reprezentujące urządzenia /srv # dane udostępniane przez system /media # automatycznie montowane nośniki np. cd, pendrive y /lost+found # odzyskane pliki /mnt # miejsce montowania pomocniczych systemów plików /var/log dzienniki systemowe /var/lock "blokady" dla uruchomionych aplikacji" można je usunąć z prawami roota (np. gdy dojdzie do nieprawidłowego zamknięcia systemu). 9 10 Rpi widok z góry GPIO - podstawy Rpi działa z napięciem 3.3V, GPIO NIE SĄ 5V-TOLERANT. TYLKO 3.3V! Stan wysoki: ok. 3.3V, niski ok. 0V. Maksymalny prąd: ok. 15mA, CAŁKOWITY PRĄD ze wszystkich GPIO: 50mA Możliwe użycie układów 74HC, ale: Zasilane są z 5V, więc TYLKO Rpi układ, a nie układ Rpi. Sterowanie pinów TTL 5V z 3.3V nie jest zgodne ze standardem (w większości przypadków działa). 11 12

GPIO: Podstawy GPIO: Do pinu GPIO można się odnieść na kilka sposobów: Przez numer na schemacie Raspberry Pi (jak w opisie pinów) Przez numer pinu chipsetu Broadcom, Biblioteka WiringPi własny tryb adresowania Przez numer pinu na złączu PWM występuje na dwóch pinach:gpio13 (33 w złączu) i GPIO18 (12). 13 14 GPIO: Podstawy GPIO - Programowanie Nie ma ADC. Jest I2C, SPI, UART, EEPROM szeregowy. Włączanie/wyłączanie interfejsów: przez raspi-config: Najprostsza metoda, choć powolna i ograniczona: sysfs: /sys/... Umożliwia kontrolę z poziomu powłoki systemu (programy w Bashu czy Perlu). Ustawienia przez zapisywanie wartości do plików. Pliki, których potrzebujemy są w /sys/class/gpio/gpioxx/ A jeżeli ich nie ma, należy je dla każdego GPIO założyć poleceniem (z roota) np. dla GPIO13: echo 13 >>/sys/class/gpio/export 15 16 15 GPIO Programowanie sysfs Ustalenie wejście/wyjście: echo "in" > /sys/class/gpio/gpio15/direction echo "out" > /sys/class/gpio/gpio15/direction Wartość wyjścia (1/0 czyli wysoki/niski): echo "1" > /sys/class/gpio/gpio15/value Biblioteka PiGPIO Dodatkowa biblioteka umożliwiająca szybsze programowanie GPIO z poziomu C/C++. Dodany program narzędziowy pigs umożliwiający ustawianie pinów. Inicjalizacja programu pigs: konieczne uruchomienie programu pigpiod: (sudo pigpiod). Użycie: echo "0" > /sys/class/gpio/gpio15/value pigs + Metoda wspierana przez większość Linuksów dostępna z kernela. + Nie trzeba dodawać bibliotek - Do wielu płytek nie obsługuje szczególnych właściwości pinów - Brak możliwości załączenia rezystorów podciągających (Arduinowe INPUT_PULLUP) 17 Np. r read w write m mode mg get mode pud pull u/d Nr pinu Opcj. żądany stan (0/1) lub tryb (r/w) pigs m 23 w pin 23 jako WYJŚCIE (do zapisu write) pigs w 23 1 - zapis do pinu 23 stanu 1. 18

PiGPIO program w Bash u PiGPIO program w C++ #include <pigpio.h> #include <iostream> #!/bin/bash pigs m 23 w int main() { if( gpioinitialise() < 0 ) { std::cout << "PiGPIO initialisation failed!" << std::endl; return 1; else { gpiosetmode( 23, PI_OUTPUT ); for( int i = 0; i < 10; ++i ) { gpiowrite( 23, 1 ); time_sleep( 1 ); gpiowrite( 23, 0 ); time_sleep( 1 ); gpioterminate(); return 0; # ustawianie trybu wyjscia while true; do pigs w 23 1 # ustawianie stanu wysokiego dla diody sleep 1 # uspienie programu na 1 sekunde pigs w 23 0 # ustawianie stanu niskiego dla diody sleep 1 # uspienie programu na 1 sekunde 19 Budowanie : g++ -lpigpio -lpthread -lrt -o test test.cpp PiGPIO "PWM" programowy Pomoc z RPi #include <pigpio.h> #include <iostream> https://www.raspberrypi.org/documentation/ Dokumentacja Rpi od producenta int main() { if( gpioinitialise() < 0 ) { std::cout << "PiGPIO initialisation failed!" << std::endl; return 1; else { gpiosetmode( 23, PI_OUTPUT ); for( int i = 0; i < 1000; ++i ) { gpiowrite( 23, 1 ); time_sleep( 0.001 ); gpiowrite( 23, 0 ); time_sleep( 0.001 ); gpioterminate(); return 0; Budowanie : g++ -lpigpio -lpthread -lrt -o test test.cpp 20 http://abyz.me.uk/rpi/pigpio/ Dokumentacja PiGPIO http://abyz.me.uk/rpi/pigpio/pigs.html - dla PIGS http://abyz.me.uk/rpi/pigpio/cif.html - dla C http://wiringpi.com/ Biblioteka WiringPi 21 22 Laboratorium niezbędne elementy W czym programować? Konsola: GNU Nano / Vim / Emacs, GCC X y: Qt Creator rozbudowane IDE, pomocne struktury w bibliotece Qt Geany + GCC prosty edytor programistyczny z niezbędnymi dodatkami (budowanie, menedżer plików itp..) Raspberry Pi z kartą 8GB Klawiatura, mysz, przewód HDMI Zasilacz: 5V min. 2-2.5A, wtyk Micro USB Płytka prototypowa Konwerter GPIO na "DIP" do płytki Przewody, LEDy, urządzenia... 23 24

Laboratorium Powtórka z bash-a... Niezbędne polecenia: #!/bin/bash pigs m 13 w UŻYTKOWNICY: while true; do pi / pi root / root a=`expr a + 1` b=0 while [ b -lt a ]; do pigs w 13 1 pigs w 13 0 b=`expr b + 1` ZAMYKANIE: sudo shutdown -h now Skróty Ctrl-Alt-Fx przełączanie na kolejne konsole (gdy zawiesimy sobie X y). sleep 2 25...i przycisk (na linii 21) #!/bin/bash pigs m 13 w pigs m 21 r pigs pud 21 u # LED do pinu 13 26 Jeszcze raz, tylko w C++ # LED do pinu 13 # Przycisk do pinu 21 # Przycisk pull-up while true; do a=`expr a + 1` b=0 while [ b -lt a ]; do pigs w 13 1 pigs w 13 0 b=`expr b + 1` if [ `pigs r 21` -eq 0 ]; then a=0 b=0 fi sleep 2 27 i wejście 28 PWM O ile prawdziwy PWM nie jest dostępny na wszystkich pinach, mamy wystarczającą moc na użycie innych peryferiów do generowania PWM. Dzięki temu praktycznie na każdym pinie możemy uzyskać całkiem wystarczający i pewny sygnał PWM. Użycie via pigs: pigs p PIN WARTOSC PIN pin, WARTOSC współczynnik wypełnienia w postaci 0..255 29 30

PWM C/C++: 31