EnglishSvenska

VNC på RaspberryPi

VNC gör att du kan fjärrstyra din linux-maskin från en annan dator. I den här bloggposten beskriver jag hur du får igång en vnc server och därefter kopplar upp mot den. Jag använder Raspbian distro.

Alternativ 1 (enklast att använda den inbyggda vnc servern)

  1. Aktivera ssh på RaspberryPi och koppla upp dig till maskinen. Alternativt öppnar du terminalen direkt på RaspberryPi och gör allt därifrån.
  2. Redigera configfilen med $ sudo nano /etc/lightdm/lightdm.conf
  3. Ta bort kommenteringen längst ner som handlar om vnc
  4. Starta om maskinen med $ sudo shutdown -r now

Alternativ 2 (om vnc server inte finns förinstallerad)

  1. Som steg 1 ovan.
  2. För att installera: $ sudo apt-get install tightvncserver
  3. För att starta: $ vncserver :1
  4. Ladda ner tightvnc client på den dator du vill styra från
  5. Anslut till RaspberryPi med rätt ip och port 5901. Exempelvis 192.168.1.130:5901. Använd ifconfig på raspberry pi för att få ip-nummret.
Taggad med:

Gör om Google Galaxy Nexus yakjuxw till en yakju

Varför skulle man vilja göra detta? Jo för att få den senaste Jelly Bean-uppdateringen. Anledningen till att vissa inte får denna uppdatering till sin telefon är för att vissa enheter använder Samsungs uppdateringsservrar vilka är slöa med nya uppdateringar. Förstår i ärlighetens namn inte varför det är så men det går i vilket fall som helst att lösa. Samsung-lurarna är märkta som yakjuxw (non yakju) medan Googles är märkta yakju. I denna guide kommer jag göra min telefon yakju, roota och installera senaste Android 4.1.

Allt på telefonen kommer att raderas. Gör backuper. Jag tar inget ansvar. Tänk på att vissa anpassningar som Samsung gjort för den svenska marknaden försvinner exempelvis svensk ordlista. Svenska finns dock kvar i menyer och på tangentbordet så jag stör mig inte nämnvärt.

Instruktioner för att få Jelly Bean 4.1 och roota

  1. Ladda ner Android System Info från Google play. Se att Product är yakjuxw och Device är maguro. Om inte så kommer kanske denna guide inte fungera.
  2. Ladda ner Nexus Root Toolkit.
  3. Ladda ner Galaxy Nexus Toolkit. Nästan samma namn och gör liknande saker. Läs igenom och se till att du har rätt drivrutiner.
  4. Sätt telefonen i utvecklingsläge i inställningarna.
  5. Gör backup från Nexus Root Toolkit. Jag tog backup på alla appar och deras inställningar.
  6. Kör igång Galaxy Nexus Toolkit. Ett kommandofönster ska öppnas.
  7. Välj din enhet. I mitt fall 5. Se bild 1.
  8. Bild 2. Välj alternativ 9 för att få Googles rom.
  9. Bild 3. Välj 1 och följ instruktionerna. Bild 4.
  10. Sätt telefonen i fastboot. Gå till startskärmen på Galaxy Nexus Toolkit. Bild 5. Välj 3 för att låsa upp bootloadern. Följ instrutionerna. När det är klart välj 4 för att roota telefonen. Bild 6. Följ instruktionerna.
  11. Jag valde att köra in en annan Recovery Mode genom att välja alternativ 6. Därefter wipade jag all user data bara för att få en helt fräsch telefon.
  12. När det är klart ska telefonen bootas igång. Logga in på ditt google-konto.
  13. Starta Nexus Root Toolkit och återställ appar.
  14. När det är klart går du in i Om telefonen under inställningar. Systemuppdateringar. Sök. Den ska fråga om du vill uppdatera till 4.1 och det vill du förmodligen. Ha wifi aktiverat och var inloggad. När uppdateringen är nedladdad trycker du på Starta om och installera.
  15. Om du installerat en annan Recovery Rom (steg 11) så kommer den eventuellt att ställa några frågor under uppdateringen till Jelly Bean. Acceptera allt.

För att sammanfatta:

  1. Galaxy Nexus Toolkit är ett kommandofönster som har fenomenala funktioner.
  2. Nexus Root Toolkit ska ha samma funktioner men jag fick det inte att fungera. Använde det bara för att göra backup av appar.
  3. Se till att ha korrekta drivrutiner för att kunna styra telefonen i fastboot.

Om allt går åt skogen och telefonen inte startar

  1. Sätt telefonen i fastboot och dra igång Galaxy Nexus Toolkit. Välj alternativ 9. Du ska då få en standard-rom från Google.
  2. Om du inte lyckas flasha välj alternativ 3 för att låsa upp bootloadern.
Skriv gärna kommentarer för att göra denna guide bättre.

Vad jag upplever som bättre med Jelly Bean

  • Mycket snabbare. Känns bättre. Svårt att sätta fingret på vad det är men jag tror att fps:en är högre.
  • Skrollning i webbläsaren är mjuk. Påminner om samma mjuka rullning som finns i ios.
  • Zoomning i webbläsaren är även den mjukare.
  • Animationer är mindre hackiga. Speciellt märks detta när man klickar på knappen längst till höger för att växla mellan appar.
  • Röststyrningen är nästan användbar till skillnad från tidigare. Man måste ändra till engelska för att aktivera kommandon. Testade att göra några google-sökningar och den träffar ganska bra.
  • Google Now! Kanske bra. Får se.
  • Snyggare rullgardin. Gränssnittet har finslipats.
Taggad med:

Västtrafik-monitor

Jag har nu öppnat källkoden för mitt projekt med RaspberryPi och Västtrafik-monitor. Dessutom har jag lagt till en väderfunktion.




Och så en länk till själva applikationen. En idé kan vara att bokmärka denna i telefonen för att få tabelltider för en viss hållplats.

Instruktioner för hur du gör samma sak

  1. Skaffa en RaspberryPi (liten dator för $35). Just nu det kanske svåraste steget. Förbeställ och hoppas på att det inte tar för lång tid alternativt leta efter en annan dator.
  2. Du behöver även en monitor, hdmi-kabel, micro usb-kabel (för strömförsörjning), ett SD-kort (välj klass 4 eller högre; jag använder denna), nätverkskabel, tangentbort och mus.
  3. Ladda ner Raspbian och följ instruktionerna.
  4. När du kopierat in operativsystemet i SD-kortet och fått igång datorn testar du att Midori-webbläsaren fungerar som den ska.
  5. Sätt monitorn på en plats som är synlig. Försök att gömma RaspberryPi-datorn snyggt. Koppla in alla kablar.
  6. Navigera till Västtrafik-widget i Midori. Skriv in hållplatserna och eventuell väderbild.
  7. Det kan också vara en smart idé att justera ner ljusstyrkan på monitorn ganska mycket för att inte störas av att den lyser upp ett rum.

Om du vill använda källkoden

Det lättaste är att använda det som jag redan lagt upp på webbplatsen men om du själv vill göra modifikationer så är det fritt fram.

  1. Hämta koden från Github som en zip.
  2. Flytta den till en egen mapp på din webbserver. Se till att webbservern är rätt konfigurerad och att du får igång allt.
  3. Skaffa en egen api-nyckel. Skicka ett mail till webmaster snabel-a vasttrafik.se.
  4. Byt ut $authKey i app/Controller/NextTripsController.

Allt är skrivet i ramverket CakePHP. Läs på om detta här. Ramverket följer MVC som designmönster. Du hittar all logik i Controller-mappen och det som presenteras (själva html-koden) i View-mappen.

Bättre filtrering gör all skillnad på självbalanserande robot

Jag programmerade ett enkelt filter med glidande medelvärde. Detta lågpassfiltrerar bort snabba förändringar vilket gjorde roboten lugnare och med färre översvängningar.




Som man ser i videon klarar den nu av större stötar än tidigare.

Den självbalanserande roboten fungerar ganska bra




I videon kan man se att roboten håller sig på någorlunda samma ställe på golvet och klarar av att ta emot lättare stötar. För att uppnå detta kaskadkopplade jag två PID-regulatorer och la till lågpassfilter på både hjulens rotationshastighet och robotens lutning.

Mikroprocessorer

Eftersom en Arduino inte har väldigt mycket processorkraft valde jag att använda totalt 3 mikroprocessorer:

  1. En standalone Arduino Uno tar pulser från varvtalsmätaren på varje hjul och omvandlar detta till en hastighet. Hastigheten skickas till huvuddatorn.
  2. En till standalone Arduino Uno för att visa och justera parametrar. Driver också displayen. Parametrarna skickas till huvuddatorn.
  3. Arduino Leonardo är huvuddatorn. Den tar emot information från konsolen och motorhastighetsmätaren via I2C.

Reglerteknik

Två kaskadkopplade PID-regulatorer. Den första har hastighet som setpoint (alltid 0 i det här fallet) och lutning som output. Om roboten rullar framåt kommer regulatorn att få ett positivt är-värde och skicka ut en negativt utsignal. Detta innebär att roboten kommer att vilja luta bakåt för att bromsa upp hastigheten.

PID-regulatorn nummer 2 tar hand om robotens vinkel relativt golvet. Börvärdet är utsignal från den tidigare PID-regulatorn. Normalt kommer börvärdet att variera från -3 till 3. Noll motsvarar att roboten ska stå helt rakt upp. Utsignalen kopplas till motorstyrningen och varierar från -100 till 100. -100 motsvarar full spänning till motorerna i bakåtriktning.

För att få renare insignaler används FIR-filter på både vinkel och hjulens hastighet. Lågpassfilter gör att snabba förändringar (exempelvis sensorbrus) inte släpps igenom.

Till vinkeln relativt golvet används en IMU med accelerometer och gyro. Ett komplementärfilter kombinerar signalerna från dessa och ger en utsignal som går att använda.

Källkod

Jag hade som mål att all kod till detta projekt ska vara öppen och finnas att hämta på github. I readme finns länkar till bibliotek jag använt.

Förbättringar som skulle kunna göras

  • Bättre parametrar till FIR-filter. Mycket skulle nog kunna göras på hjulhastigheten för att inte få en lika hackig gång.
  • On-the-fly-programmering över luften med Xbee. Detta gör att man kan skicka helt ny kod till roboten utan usb-kabel. Gör programmeringen smidigare.
  • Radiostyrning vore kul.

Foton

Komponenter

Lägger också upp cad och ritningar.

Taggad med: , ,

Framsteg med roboten

Min självbalanserande robot visar nu tydliga tendenser till att faktiskt kunna stå. Se själv:




Problemet ser ut att vara att den inte bromsas upp helt när den väl börjat luta. Jag ska testa att återkoppla hjulens hastighet för att på så sätt få en svag översvängning vilket borde bromsa upp roboten.

Taggad med: ,

Tidigt test av självbalanserande robot


Jag kommer behöva justera PID för att få den självbalanserande. Det är för stora översvängningar och den beter sig väldigt oroligt. Uppdaterar när jag får bättre stabilitet.

Taggad med: , ,