|
Inledning.
Beskrivninga hur man installerar och använder Pi-Lite.
Pi-Lite finns i två versioner, en med röda lysdioder och en med vita lysdioder.
Pi-Lite är en stor LED-matris (14 x 9) som kan användas till att skrolla text och grafik. Det är ett spännande sätt att göra
någonting roligt med Raspberry Pi. Den är lätt att ansluta utan att behöva löda och det krävs inga speciella färdigheter.
Pi-Lite kombinerar den mycket populära Arduino med Raspberry Pi.
Genom att använda standardiserad seriel kommunikation (@9600bps) är det ganska enkelt att skicka text och grafik till de 126
LEDen.
Matrisen styrs av en ATMega328p processor vilket betyder att hantering av de 126 LED avlastas Raspberry Pi's processor
och GPIO till andra arbetsuppgifter.
När man anslutit Pi-Lite till Raspberry Pi och ansluter strömmen så kör Pi-Lite en test/demonstration genom att skanna i genom och visa
alla tecken som är möjliga.
För att programmera Pi-Lite används oftast Python men här kommer C att användas.
|
|
|
Installation.
Det första man måste göra är att uppdatera Raspberry Pi med de senaste:
sudo apt-get update
sudo apt-get upgrade
Börja med att installera följande:
git clone https://github.com/thomasmacpherson/pilite.git
cd pi-lite/python
sudo python setup.py install
sudo modprobe spi-bcm2708
cd pilite/c
sudo apt-get install automake libtool git
sudo ./autogen.sh && ./configure && make && sudo make install
sudo ldconfig
sudo apt-get install minicom
Om man inte redan gjort det, är det bra att installera Geany som är ett GUI som kan vara bra att använda vid utveckling.
sudo apt-get install geany.
Koppla bort login via serieporten vilket görs på följande sätt:
$sudo nano /etc/inittab
I slutet på filen finns raden:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Lägg till ett hash-tecken (#) först i raden.
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Boota om! ($sudo shutdown -r now)
|
|
|
Testning.
Så snart Pi-Lite får ström och startat upp kan du kommunicera med den via the serieporten.
När Pi-Lite är ansluten till Raspberry Pi, kommer serieporten vara /dev/ttyAMA0, men på någon annan dator eller
kontroller kan det vara en annan port. Du kan använda minicom eller något annan liknande terminalprogram för att
kontakta den:
minicom -b 9600 -o -D /dev/ttyAMA0
Sätt upp användaren pi i gruppen dialout:
sudo usermod -a -G dialout pi
Skapa en textfil, test.txt med någon text i till exempel "Pelle Persson. 2014-04-12.".
Starta minicom med kommando:
minicom -b 9600 -o -D /dev/ttyAMA0
När minicom startat skriver du Ctrl-A S
Välj ascii följt av Return/Enter.
Sök upp och välj filen test.txt. Tryck på Return/Enter och texten scrollas fram på Pi-Lite.
|
|
|
Terminalkommandon.
I minicom kan man skriva kommandon direkt till Pi-Lite. Kommandona inleds med tre stycken dollarteckwen $$$. OBS!
$-tecknen fås genom ctrl+4($)
SPEED(value)
$$$SPEED200[RETURN]
F(value)
example (pacman)
$$$F00000000000000000000011100001111111001111111011111111111110111111110111101100011001100011
0000000000000000000000000000000000000
B(column),(value)
examples
$$$B1,89[RETURN] - column 1 set to 89%
$$$B14,20[RETURN] - column 14 set to 20%
V(row),(value)
examples
$$$V1,89[RETURN] - bar 1 set to 89%
$$$V2,20[RETURN] - bar 2 set to 20%
P(column),(row),(action)
examples
$$$P4,4,ON[RETURN]
$$$P4,4,OFF[RETURN]
$$$P4,4,TOGGLE[RETURN]
ALL,(value)
examples
$$$ALL,ON
$$$ALL,OFF
SCROLL(value)
examples
$$$SCROLL-4[RETURN]
T(column),(row),(character)
examples
$$$T1,1,Z[RETURN] - display a Z at location 4,4
|
|
|
Pi-Lite och Arduino.
Det sitter en hel dator, SoC, på kortet för att hantera alla lysdioder. Datorn är en Arduino Uno.
Installera Arduino IDE:
sudo apt-get install arduino
Kontrollera inställningarna i Arduino före användning, programmering:
1. Tools > Board > Arduino Uno
2. Tools > Serial Port > /dev/ttyS0
3. Tools > Programmer > AVRISP mkII
Sketcher ska ligga i mappen /home/pi/sketchbook. Bland annat ska det finnas en mapp som heter libraries.
Ladda ner PiLite-master.zip. Packa upp filen och där finns
bland annat mappen LoLShield. Kopiera mappen till /home/pi/sketchbook/libraries. Nu kommer det att finnas följande
sökväg:
/home/pi/sketchbook/libraries/LoLShield/examples. I examples finns sketchen PI_LITE vilken är den sketch som är
installerad i Pi-Lite vid leverans. Detta kan bra att veta om något går fel. Lite tips finns
här om det uppstår något trubbel.
I övrigt hänvisas till andra beskrivningar om Arduino Uno.
|
|
Seriekommunikation.
Pi-Lite har en Arduino med förinstallerad mjukvara. Genom att ansluta el till Pi-Lite,
kan du antingen serieporten (GPIO pin 10, UART-RXD and GPIO pin 8, UART-TXD).
#include < sys/types.h>
#include < sys/stat.h>
#include < stdio.h>
#include < string.h>
#include < unistd.h>
#include < fcntl.h>
#include < errno.h>
#include < termios.h>
#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttyAMA0"
#define _POSIX_SOURCE 1 /* POSIX compliant source */
int main(int argc, char ** argv) {
int fd;
struct termios oldtio,newtio;
char buff[255];
// Open the Port. We want read/write, no "controlling tty" status, and open it no matter what state DCD is in
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1) {
perror("open_port: Unable to open /dev/ttyAMA0 - ");
return(-1);
}
bzero(&newtio, sizeof(newtio)); /* clear struct for new port settings */
/*
BAUDRATE: Set bps rate. You could also use cfsetispeed and cfsetospeed.
CRTSCTS : output hardware flow control (only used if the cable has
all necessary lines. See sect. 7 of Serial-HOWTO)
CS8 : 8n1 (8bit,no parity,1 stopbit)
CLOCAL : local connection, no modem contol
CREAD : enable receiving characters
*/
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
/*
IGNPAR : ignore bytes with parity errors
ICRNL : map CR to NL (otherwise a CR input on the other computer
will not terminate input)
otherwise make device raw (no other input processing)
*/
newtio.c_iflag = IGNPAR | ICRNL;
/*
Raw output.
*/
newtio.c_oflag = 0;
/*
ICANON : enable canonical input
disable all echo functionality, and don't send signals to calling program
*/
newtio.c_lflag = ICANON;
/*
initialize all control characters
default values can be found in /usr/include/termios.h, and are given
in the comments, but we don't need them here
*/
newtio.c_cc[VINTR] = 0; /* Ctrl-c */
newtio.c_cc[VQUIT] = 0; /* Ctrl-\ */
newtio.c_cc[VERASE] = 0; /* del */
newtio.c_cc[VKILL] = 0; /* @ */
newtio.c_cc[VEOF] = 4; /* Ctrl-d */
newtio.c_cc[VTIME] = 0; /* inter-character timer unused */
newtio.c_cc[VMIN] = 1; /* blocking read until 1 character arrives */
newtio.c_cc[VSWTC] = 0; /* '\0' */
newtio.c_cc[VSTART] = 0; /* Ctrl-q */
newtio.c_cc[VSTOP] = 0; /* Ctrl-s */
newtio.c_cc[VSUSP] = 0; /* Ctrl-z */
newtio.c_cc[VEOL] = 0; /* '\0' */
newtio.c_cc[VREPRINT] = 0; /* Ctrl-r */
newtio.c_cc[VDISCARD] = 0; /* Ctrl-u */
newtio.c_cc[VWERASE] = 0; /* Ctrl-w */
newtio.c_cc[VLNEXT] = 0; /* Ctrl-v */
newtio.c_cc[VEOL2] = 0; /* '\0' */
/*
now clean the modem line and activate the settings for the port
*/
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
// Turn off blocking for reads, use (fd, F_SETFL, FNDELAY) if you want that
fcntl(fd, F_SETFL, 0);
// Write to the port
int n = write(fd,"Hello Peripheral\n",20);
if (n < 0) {
perror("Write failed - ");
return -1;
}
// Don't forget to clean up
close(fd);
/* restore the old port settings */
tcsetattr(fd,TCSANOW,&oldtio);
return 0;
}
OBS! Mängden data som kan skickas (write) är begränsad så vida man inte gör avbrott i skrivandet. Cirka 25
bokstäver kan skickas åt gången.
|
|
|
Pi-Lite och C.
Kontrollera att wiringPi är installerat. Så här installeras paketet:
sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
|
|
FUNCTIONS.
Här är fuktioner i Pi-Lite.
|
|