Kommunikation µC <-> PC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Glycol
Inlägg: 158
Blev medlem: 11 mars 2007, 21:53:33
Ort: Viken

Kommunikation µC <-> PC

Inlägg av Glycol »

Jag håller på att bygga en robot. Pc-baserad. Det är ett ER-1 Kit från evolution robotics. Kom över den på en skola i närheten. De startade aldrig robotkursen så jag köpte massa saker billigt av dem :D . Tröttnade rätt snabbt på det GUI som följer med. Tydligen programmeras den enklast i Python. Men GUI:et har även en API funktion som externa program kan använda. SKulle därför vilja konstruera något med en µC som kan läsa sensorer (IR och Ultrljud). Och sen skicka seriella/usb data. Tänker jag rätt nu eller är det bästa att köra allt på PC:en? Jag har ingen erfarenhet alls av programmering.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Självklart kan du byta ut PC'n till en µC men du förlorar ju en hel del på det.

Först den LÄNK du glömde.

Jag är lite osäker på vad du egentligen vill uppnå, enl. beskrivningen finns "allt" med i mjukvaran på PC'n, att ersätta allt eller delar därav med en (eller fler) µC kommer antingen att sänka funktionaliteten eller bara flytta den lite.

Jag skulle tro att det är MINST lika besvärligt för dig ("Jag har ingen erfarenhet alls av programmering") att välja µC lösningen som att du sätter dig in i den mjukvara som finns med.
Glycol
Inlägg: 158
Blev medlem: 11 mars 2007, 21:53:33
Ort: Viken

Inlägg av Glycol »

Ber om ursäkt för det där med länken.
Det man kan göra med det medföljande programmet är att göra olika beteende. Tex visa en ölburk och så kör den till kylen osv. Det är ganska trist i längden. Det jag försöker göra är en robot som även går att styra över nätet. Jag behöver då vissa sensorer för att undvika objekt och dylikt. Dessa funktioner finns ej i medföljande program. Jag skall även styra RC servo till arm och huvud. Anledningen att jag använder en PC är för talsyntes, ljud och bild överföring. Typ push to talk. Tänkte att det blir lättare än med en µC som tar över vissa funktioner och tar emot kommando via rs-232 eller liknade. Fast det blir kanske lättare att leta efter någon form av interfacekort till PC:en och ansluta allt dit. Och jag är inte intresserad av Velleman kort då jag redan provat det en gång.
På styrenheten för motorerna finns det 16 i/o men dessa går bara att nå via API inte från själva programmet. Plus att de sägs vara lite lynniga av sig.
Glycol
Inlägg: 158
Blev medlem: 11 mars 2007, 21:53:33
Ort: Viken

Inlägg av Glycol »

Jag köpte en stor låda, eller man kanske skall säga pall med saker. Mätinstrument, labbagg osv. Massor av Motorer och komponenter. Hittade precis dessa.

4 st http://www.pololu.com/catalog/product/775

2 st http://www.pololu.com/catalog/product/207

Så nu kanske man får ta en paus från den stora och bygga något annat kul.
Problemet är att jag har tittat runt efter guider för idioter som mig, inom både PIC och AVR. Hittar massor av exempel tex så här gör du för att blinka en LED. Men jag kan inte lära mig att göra egna program om jag inte vet varför man skriver på ett visst sätt. Kan ni rekommendera någon bra start. Har kollat runt på forumet, men det är så många trådar och jag vet inte riktigt vad jag skall leta efter :shock:
Mindmapper
Inlägg: 7122
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Inlägg av Mindmapper »

Om jag tolkar det hela rätt har du två vägar att gå som jag ser det.

- Skicka alla signaler via serielänk mellan MCU och PC och låta PC'n ta alla beslut. Dette gör att styrningen av roboten blir slö eftersom alla signaler måste fram och tillbaka.

- Låt MCU'n vara autonom och undvika alla hinder osv. PC'n blir bara en GUI.

Förmodligen är det det senare du vill.

Edit: Med grejorna du köpt är det absolut den senare vägen du ska gå. Nu vet du vilken controller du ska ha i varje fall.

Edit2. Jag brukar rekomendera någon av dessa böcker.
http://www.smileymicros.com/
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Hittar massor av exempel tex så här gör du för att blinka en LED.

Japp, det är ofta ett bra sätt att få en inblick i hur man gör.
Problemet kan vara att många exempel är dåliga, men det ger sig...

> om jag inte vet varför man skriver på ett visst sätt.

Jag vet inte vad du menar med "varför".
För att det ska fungera som det ska, kanske ?
Du får ju även ta koden och stämma av mot datablad hela tiden,
så förstår du varför de har gjort som de har gjort.
Glycol
Inlägg: 158
Blev medlem: 11 mars 2007, 21:53:33
Ort: Viken

Inlägg av Glycol »

Mindmapper Tanken var att låta MCU´n vara autonom och bara ingripa vid tex hinder. Typ kör du med webbkontroll har du ett par sekunders lagg, och för att undvika att krocka tar MCU´n över styrningen. Genom att skicka lämpligt kommando till PC´n. Det var så jag tänkte. Men jag kommer nog snicka ihop en enkel lite robot först med MCU´n tills jag får kläm på det hela.

Sodjan Alla exempel jag hittar verkar förutsätta att du har lite kunskap om C eller något annat för att förstå syntaxen. Så man lär sig det som är annorlunda med MCU´n bara. Jag har inte ens grunden. Det med register osv och annat från databladet är klart.

Men en sån här sträng tex for(i=0; i < 10000; i++);
Så väntar man i 10k klockcykler. Men hur vet man att man skall skriva det precis så.....Hänger du med på vad jag menar nu.
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

"Men hur vet man att man skall skriva det precis så"

Det är just det man lär sig när man lär sig programmera.
Att det sedan ser ut på ett visst sätt beror bara på att man bestämt sig för att det ska vara så. Sedan finns det förstås en hel del logik bakom. :)

För att ta detta som exempel:

for(i=0; i < 10000; i++);
{
nånting..
}



Översatt till svenska:

for ( ) kan översättas med: Så länge som det som står innanför parantesen är sant.

Om du har läst gymnasiematte så borde du känna igen det som står innanför parantesen:
i=0 innebär att variabeln "är värdet" noll.
i < 10000 betyder "innehållet i varabeln i är mindre än 10000".
i++ kunde lika gärna ha stått i = i + 1. Dvs "öka innehållet i variabeln i med 1".

Semikolon, dvs ; betyder ungefär "slut på instruktionen".

Kort sagt:
i = 0.
Kolla om i är mindre än 10000.
Öka isåfall i med 1 och utför det som står innanför { och }.
Kolla om i är mindre än 10000.
Öka isåfall med 1 och utför det som står innanför { och }.
osv...


Det är inte ofta jag programmerar i C, så jag är inte helt säker på att { och } finns med där, men i många andra programmeringspråk är det iallafall så. :)


Så hur lär man sig då hur syntaxen (reglerna för hur man ska skriva) för t.ex C ser ut?
Det finns flera sätt. Man kan gå en kurs. Ladda ner *små* kodexempel och studera rad för rad tills man förstår. Söka på internet (surprise). Eller läsa manualen till t.ex datorprogrammet MikroC där alla funktioner finns listade.

Vill man lära sig assembler så är det bara att studera databladet för den aktuella PIC-kretsen man valt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Alla exempel jag hittar verkar förutsätta att du har lite kunskap om C...

Ja, om det är kodexempel skrivna just i just C så är det väl fullständigt självklart.
Dessa exempel är ju inte till för att lära ut just *C*...

Men, som sagt, det är inget större problem, om ett par år så kommer
det mesta att vara enklare.
Glycol
Inlägg: 158
Blev medlem: 11 mars 2007, 21:53:33
Ort: Viken

Inlägg av Glycol »

Ok jag fattar. jag kollade bara på C eftersom det verkade lättare än assembler. Har även sneglat lite åt Bascom hållet. Men förstått att det är lite fel väg att gå. Och när det gäller gymnasiematte är det inte mycket jag kommer ihåg tyvärr, det var nog vad jag var sämst på tyvärr.
Men jag skall kämpa på.

:lol:
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

När man väl "kan" µC är ett högnivåspråk effektivare till mycket... men där är du inte för tillfället eller hur?

Ditt problem är att du inte ens är på "blinka LED"-nivån och sedan vill ha en datortung robot att greja.

Steget mellan vad du vill och det du kan är i nuläget på tok för stort, inte så stort att du inte kan överbrygga det men det ligger en del jobb bakom.

Om du sedan använder C, Pascal, Assembler eller annat att programmera i när du väl vet hur du ska göra med µC'n har mindre betydelse men när du ska lära dig från grunden är assembler en bra väg att gå, just för att man kommer att förstå exakt hur kompilern utför funktioner.

Jag har tack vara det vetande klarat av att få ganska komplicerade funktioner till att "flyta på" väldigt snabbt. Man ser ofta att "okunniga" (vana att programmera PC) undrar över varför t.ex. att det tar så mycket minne och datorkraft att använda flyttal, det är ju "bara" ett litet flyttal...

Att det kräver mycket program att räkna med flyttal har de inte "sett" och finns det ingen FPU (sällan i µC) tar stora programdelar lång tid att utföra, har man sittit och knackat assembler lär man sig snabbt att undvika flyttal t.ex.
Glycol
Inlägg: 158
Blev medlem: 11 mars 2007, 21:53:33
Ort: Viken

Inlägg av Glycol »

Jag ville egentligen programmera för PC i början. Men eftersom jag köpte upp allt överblivet så blev jag intresserad av att lära mig en MCU från början. Då typ med att blinka en LED osv. Då jag kan ha användning för det senare. Finns så mycket coola saker att göra. Särskilt när jag kan hårdvaru biten. Göra kretskort osv. Skulle bli en ny nivå att bygga "smarta saker".
Börjar jag knacka asm så är det inte så stor skillnad i inlärningströskel på AVR och PIC, eller har jag fel. Nu har jag en del kort med Atmega168 på. Men jag köper gärna PIC om det är lättare att komma igång med.
Kanske bli klurigare med de korten jag har eftersom i/o pinnarna är anslutna till H-bryggor och dioder redan. Men det är väl bara att titta i databladet till kortet och jämföra det med Atmega bladet ?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Börjar jag knacka asm så är det inte så stor skillnad i inlärningströskel på AVR och PIC, eller har jag fel.

Nej, du har inte fel.
Mindmapper
Inlägg: 7122
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Inlägg av Mindmapper »

Det är värdens enklaste sak att ansluta motorerna till H-bryggorna (2 trådar/motor). Förutsatt att H-bryggorna klarar strömmen som motorerna drar förstås. Sedan PWM-styr du utgångarna som H-bryggorna är anslutna till. Det är så man brukar göra normalt i smårobotar. Titta i schema över kortet och pin layout över ATmega168 och lär dig i databladet hur de olika pinnarna på MCU'n är kan användas. Titta sedan på hur roboten är kopplad och se hur det passar bäst att ansluta den till kortet.

Att konfigurera om i programmen så att grejorna använder de I/O som kortet använder är enklaste sak i världen. Det kommer du snart att se.
Skriv svar