I Sverige slänger vi i genomsnitt knappt åtta kilo kläder i soporna varje år. En hel del av dem skulle kunna återanvändas men än så längre saknas bra metoder, framför allt för återvinning i större skala. Men det pågår flera projekt för att ta fram sådana metoder. Ett av dem är projektet WargoTex Development som startade 2018 i Vargön utanför Vänersborg och ska pågå i två år.
– Mycket textil återanvänds inte därför att det saknas bra funktioner för sortering, säger Maria Ström, verksamhetsledare på Wargön Innovation som driver projektet.
Utvecklingsprojektet, som fått stöd av Energimyndigheten, samlar 25 samarbetspartner under ett tak. Bland dem högskolor, kommunala energibolag, välgörenhetsorganisationer, återvinningsföretag och klädkedjor.
– Vi vill förstå hur man kan sortera textilierna mer effektivt. Vi har fått lokaler med en processhall där vi ska testa olika saker. Vi har fem demoprojekt, bland dem ett som tittar på robotteknik och ett som håller på med industriell redesign, säger Maria Ström.
Behövs industriell kapacitet
Projektet kom enligt henne till därför att flera olika aktörer inom återvinning hade nya idéer om vad man kan göra med uttjänt textil, men de hade insett att det i Sverige saknas industriell kapacitet för textilsortering.
– Vi såg en lucka just i sorteringsfunktionen. Om ett stort företag ser att de skulle kunna göra en produkt med återvunnen textil, då kanske de vill ha 10 000 ton på ett år, men den volymen finns inte framme i dag, säger hon.
I sorteringen gäller det att skilja ut de textilier som kan återanvändas – till exempel klädesplagg – från de uttjänta som ska återbrukas, det vill säga förvandlas till ny textilråvara eller annan råvara.
Råvaran måste sorteras
– Får man in en stor hög med textilier kan där finnas allt från urtvättade barntröjor till Armanikostymer. Det pågår många projekt inom det här området, det finns till exempel minst två svenska projekt som arbetar med att separera bomull och polyester. Men allt kräver att det finns en sorterad råvara, säger Maria Ström.
Det finns många aktörer som arbetar med återvinning och återbruk av textilier på olika sätt. Därför är det så många olika samarbetspartner med i projektet i Vargön – alla kan bidra med sina erfarenheter och kunskaper.
– Vi behöver också utveckla textilinsamlingen. Andra länder, som Tyskland, Frankrike och våra nordiska grannländer samlar in mer än vi. Alldeles för mycket textil slängs fortfarande, säger Maria Ström.
”En utmaning för oss som medborgare”
Hon framhåller att vi i Sverige har en hög konsumtion av kläder.
– Mycket blir bara liggande, ibland utan att man ens tagit bort prislappen. Det här är en utmaning för oss som medborgare – att handla mer second hand, vara rädda om våra kläder, lämna ifrån oss det vi inte använder.
Design- och konstruktionsuppgift: (Kurser: Design 1, Konstruktion 1, Teknik 1, Uppfinnarresan)
Uppfinn en fungerande klädsorteringsmaskin.
Vad behöver maskinen kunna göra? Förklara och beskriv sorteringsprocessen steg för steg.
Skapa en funktionsbeskrivning som förklarar hur sorteringsanläggningen eller din maskin fungerar och vilka delar den består av.
Designa, skissa, rita och konstruera en modell eller prototyp.
Problemlösning kommer vi i kontakt med i många olika situationer och sammanhang, både i skolan, arbetslivet och i privatlivet. För att kunna lösa problem behöver man givetvis en hel del kunskaper kopplade till det specifika ämnesområdet. Men det finns även en del generella saker, strategier och metoder man kan använda sig av för att bli en bättre problemlösare.
Problemlösning kan delas in i följande områden: Problemlösningens faser, tänkbara strategier vid problemlösning och de kompetenser som är nödvändiga hos en problemlösare.
Elevernas arbete med ett problem kan delas upp i fyra successiva faser:
att förstå problemet
att göra upp en plan
att genomföra planen
att se tillbaka och kontrollera resultatet
En av de viktigaste faserna för lärande är den sista, att efter man tror sig kommit fram till en lösning se tillbaka, kontrollera resultatet och reflektera.
Några frågor man kan ställa sig är:
Stämmer lösningen verkligen med de förutsättningar som ges i problemet?
Finns det något annat, kanske enklare sätt att lösa problemet på?
Kan jag kontrollera mitt resultat genom att lösa problemet på ett annat sätt?
Har jag upptäckt några nya spännande samband som jag kan ha nytta av i andra sammanhang?
Strategier för en bra problemlösningsplan:
välja en eller flera laborationer att arbeta med
rita bilder
söka mönster
arbeta baklänges
göra en lista
skriva upp en ekvation
dramatisera situationen
göra en tabell eller ett diagram
gissa och pröva
lösa ett enklare problem först
använda laborativa material
Bygga och använda modeller
Bygga och använda prototyper
Använda simuleringsverktyg
Kolla hur du själv eller andra löst liknande problem tidigare
Uppdatering 2020-02-04: Enormt gensvar på Södras nyhet om lösning för återvinning av textilier! När Södra i slutet av oktober presenterade sin världsunika lösning för textil återvinning – OnceMore™ lät inte reaktionerna vänta på sig. Det blev ett omedelbart genomslag och timmarna efter nyheten släppts strömmande förfrågningar in från hela världen. – Vi trodde att det skulle vara en stor nyhet men blev nog ändå lite chockade över gensvaret. Det visar vilket enormt intresse det är i återvinningsfrågan, säger Helena Claesson, projektledare Södra. https://www.bioinnovation.se/nyheter/genombrott-for-sodra-med-textilatervinning-i-industriell-skala/ Skogindustrikoncernen Södra, som även är Sveriges största skogsägarförening, har tagit fram en ny metod för att återvinna fibrer från blandmaterial för att tillverka nya textilier.
Flera miljoner ton textilier slängs varje år. Mycket på grund av det inte har funnits någon effektiv teknik för återvinning av textilier i stor skala. En utmaning kring att lyckas med en sådan process ligger i alla materialblandningar som först behöver kunna separeras från varandra.
Men nu meddelar Södra att de har nått ett genombrott i att återvinna textilier som är gjorda av blandmaterial. Med hjälp av ny teknik kan bolaget i industriell skala separera polyester från bomull, viskos eller lyocell. De uppdelade fibrerna kan sedan användas för att tillverkning av nya kläder.
– Det speciella är att vi kan ta hand om blandmaterial och inte har några begränsningar i polyesterhalten. Vi jobbar redan i industriell skala och behöver inte bygga någon ny fabrik utan kan justera befintliga anläggningar, säger Helena Claesson i en kommentar till DI, som har lett projektet på Södra.
Produktionen kommer att starta på en låg nivå om 30 ton under innevarande år. Men målsättningen på sikt är att komma upp i 25 000 ton textilier för inblandning i massatillverkningen. Enligt Södra själva är detta ett världsunikt genombrott, vilket kan göra det möjligt att mer textilier återvinns i stället för att gå till förbränning i framtiden.
Bakgrund: I slutet av 2017 presenterades en världsunik återvinningsprocess för textilier – Blend Re:wind. För första gången finns nu en metod som lyckas ta till vara på både bomullen och polyestern från tyg med polyester/bomullsfiberblandning. Processen har tagits fram inom forskningsprogrammet Mistra Future Fashion av forskare vid Chalmers och RISE tillsammans med skogsindustriföretaget Södra.
Denna revolutionerande process är resultatet av sex års forskning och är avgörande för storskalig kommersialisering och framtida produktion av återvunnet tyg.
Att återvinna textil till textil i god kvalitet och känsla är en komplex uppgift. Kläder består av olika material och fiberblandningar, och för att kunna återvinna dem krävs utveckling av nya teknologier och innovationer. Idag uppskattas den globala återvinningen av textil tillbaka till textil vara nästintill obefintlig. Majoriteten av uttjänta kläder förbränns eller läggs på deponi. Textilavfall är därför en outnyttjad resurs för modeindustrin som är i stort behov av mer hållbara materialalternativ.
Blend Re:wind-processen har tagits fram inom forskningsprogrammet Mistra Future Fashion av forskare vid Chalmers och RISE tillsammans med skogsindustriföretaget Södra. Bomull- och polyesterfibrer separeras i en kemisk process och frigörs till tre rena produkter; bomull och polyesterns två byggstenar, en i fast och en i flytande form. Bomullen återvinns sen till nya viskosfilament av hög kvalitet och polyestern kan åter byggas upp till nya starka fibrer. Detta ger cirkulära produktströmmar och innebär att vi kommer närmare lösningen att sk ”close the loop” för textil.
Huvudfokus har varit på återvinning av bomull och att producera nya högkvalitativa viskosfilament från den återvunna bomullen. Bomull är en naturlig cellulosabaserad råvara, med hög miljöbelastning. Därför är det viktigt att så mycket som möjligt återanvända och återvinna denna unika fiber som naturen framställer. Projektet har letts av Dr Hanna de la Motte som förklarar:
– De olika fibrerna i tyget måste separeras innan de återvinns. Polyestern som är en syntetisk fiber är generellt enklare att hantera än de komplexa naturliga bomullsfibrerna, men tack vare nationell spetskunskap inom cellulosakemi har vi hittat en lösning som även tar till vara på bomullen. Därför är vår separationsprocess, med cirkulära lösningar för båda materialen, ett viktigt bidrag till de framtida globala systemen för textilåtervinning. Det behövs för att kunna möjliggöra cirkularitet för mode och textilier.
Ett gediget doktorandarbete av Dr Anna Palme ligger till grund för utvecklingen. Att förstå hur bomull påverkas av slitage har varit A och O i projektet och därför har hon gjort omfattande studier av slitna lakan från sjukhus innehållande bomull och polyester. Från den bomull som utvunnits ur de slitna lakanen har därefter fina viskosfilament kunnat framställas.
En stor fördel med Blend Re:wind-processen är att separationen tar hänsyn till befintliga industrier. Målet har hela tiden varit att integrera med befintlig skogs- och kemiindustri eller andra återvinningsinitiativ. Anna Palme förtydligar:
– Viskosen har samma kvalitet som filament gjorda av kommersiell dissolvingmassa från skogsindustrin och som används i viskosproduktion. Det innebär att materialet förhoppningsvis enkelt kan integreras i dessa processer. Den separerade polyestern kan polymeriseras till hög kvalitet och är lämpliga för integration i befintlig industri. Här finns redan etablerade samarbeten med industriaktörer och experiment utförs.
– Separationen använder kemikalier som redan idag nyttjas i både skogs- och viskosindustrin, vilket därför underlättar möjliga integreringar, detta för att minimera både miljömässiga och ekonomiska kostnader. Att gå från labb till uppskalning är dyrt och är därmed vår största utmaning just nu. Med möjlighet att integrera processen i befintlig industri hoppas vi kunna hantera denna utmaning bra.
Ett annat viktigt krav har varit att Blend Re:wind ska ha en bra miljöprestanda. Forskningsprogrammet Mistra Future Fashion handlar framförallt om att finna lösningar som ger en hållbar modeindustri. Separationsprocessen uppfyller dessa krav främst genom att vara vattenbaserad och består av vanliga, billiga bulkkemikalier och en katalysator.
Framtiden för textilåtervinning ser mer ljus ut än någonsin. Det genomförs forskning och global utveckling som aldrig förr. Hanna de la Motte berättar:
– Det tog sex år att komma till denna punkt då vi ser lovande resultat i vår process för framtida textilåtervinning. Men vi är inte ensamma, det finns många briljanta återvinningsinnovationer och framtiden behöver mer forskning inom området. Gällande Blend Re:wind är vår bedömning är att den har stor potential på den globala marknaden i framtiden.
Kontakta för mer information:
Dr Hanna de la Motte, temaledare Mistra Future Fashion och forskare vid RISE Research Institutes of Sweden, hanna.delamotte@ri.se
Mistra Future Fashion är ett forskningsprogram om hållbart mode, och undersöker hur dagens modeindustri och konsumtion kan bli hållbar. Vägledda av principerna för cirkulär ekonomi, arbetar programmet tvärvetenskapligt och involverar 50+ partners från hela ekosystemet för mode. Med ett unikt systemperspektiv kombineras nya metoder för design, produktion, användning och återvinning med relevanta aspekter som nya affärsmodeller, politik, konsumentbeteende, livscykelanalys, systemanalys, kemi, teknik mm. Forskningsstiftelsen MISTRA är initiativtagare och primär finansiär för åren 2011-2019. Läs mer på www.mistrafuturefashion.com
FAKTA om Blend Re:wind processens innehåll:
Högkvalitativa återvunna filament: Huvudfokus har varit på återvinning av bomull och att producera nya högkvalitativa viskosfilament från den återvunna bomullsströmmen, vilket är avgörande för vidare industriell bearbetning mot återvunnet tyg.
Framgångsrik fullständig återvinning av polycottonblandningar med rena produktflöden och med högt materialutbyte: Viskosfilament har framgångsrikt
erhållits från den bomull som utvunnits från slitna polycottonlakan. Filamenten har samma kvalitet som filament gjorda av kommersiell dissolvingmassa som används i kommersiell viskosproduktion. Den separerade resten från polyester, polyestermonomerer, kan polymeriseras till polyester av hög kvalitet. Dessa monomerer är lämpliga för integration med befintliga kemikalieprocesser – här är samarbete med industriaktörer redan etablerat och experiment utförs.
God genomförbarhet med befintliga industriprocesser: En stark fördel med Blend Re:wind processen är att separationen tar hänsyn till befintliga industrier, och målet är integration med befintlig skogs- och kemisk industri eller återvinningsinitiativ. Separationen använder kemikalier som redan används i den svenska skogsindustrin och i viskosindustrin för att underlätta möjliga integreringar.
Stark miljöprestanda: Det är en lämplig separationsprocess eftersom den är vattenbaserad och använder endast vanliga, billiga bulkkemikalier och en katalysator.
Om forskningen och Blend Re:wind processen:
Blend Re:wind initierades 2011 och har utvecklats inom det svenska Mistra Future Fashion av parterna Chalmers Tekniska Högskola, RISE Research Institutes of Sweden och Södra.
Arbetet har letts av Dr Hanna de la Motte, temaledare för tema 4, Återvinning, inom Mistra Future Fashion och forskare vid RISE. Hennes kompetens ligger inom cellulosakemi och kemisk återvinning av textil där hon är en internationellt erkänd expert. Andra nyckelpersoner involverade är Dr Anna Palme, forskare och ansvarig för den tekniska utvecklingen på Chalmers och Dr Harald Brelid vetenskaplig rådgivare från Södra.
Projektets budget är 6 miljoner kr och har finansierats inom Mistra Future Fashion med medel från forskningsstiftelsen MISTRA, kompetensplattformen Cirkulär Ekonomi på RISE, samt in-kind bidrag från involverade partners.
Projektet har bidragit med ny grundläggande kunskap inom kemisk textilåtervinning och med flertalet vetenskapliga publikationer:
Avhandlingar
Recycling of cotton textiles: Characterization, pretreatment, and purification
Resultaten har också belönats med flertalet utnämningar:
Renova miljöstipendium 2017
Delas ut årligen och syftar till att stimulera forskning inom miljö- och återvinningsområdet.
Till Anna Palme – Annas forskning handlar om att återvinna textilier av blandmaterialet polyester/bomull, ett material som bland annat används i lakan för sjukhus. Blandtextilier av polyester och bomull ska inte slängas utan återvinnas till nya textilier! Det är målet för Anna Palmes forskning.
Det händer mycket i Oceanhamnen i Helsingborg nu. Oceanhamnen är första etappen av stadsutvecklings-projektet H+ i Helsingborg som fram till år 2035 ska omvandla en miljon kvadratmeter gammalt hamn- och industriområde till de fyra stadsdelarna Oceanhamnen, Universitetsområdet, Husarområdet och Gåsebäck och ge plats för 10 000 nya invånare. Syftet är att skapa framtidens smarta hållbara stad och då behöver vi självklart involvera eleverna på Innovationsgymnasiet i Helsingborg!
Alla viktiga projekt behöver en flygande start! Först ut på bollen är teknikeleverna i årskurs 2 (TE18DP) som läser Design, Konstruktion, CAD och produktutveckling som, förutom att skapa 3D-ritningar med inredningsförslag till blivande bostadsrätter, kontor och hotell, även kommer bygga fysiska 3D-modeller av de nya bostäderna. Teknikeleverna i årskurs 1 (TE19) är också med i projektet och kommer jobba med fasadritningar och bygga skalenliga modeller av fastigheternas fasader inom kursen Teknik 1. TE18DP ska även designa och konstruera förslag på smarta, kompakta och mobila modulära studentbostäder av återbruksmaterial. Som en naturlig del i projektet väver vi in innovativa tekniska lösningar för smarta hem, intelligenta byggnader med lokal energiåtervinning och system för användarcentrerad feedback i syfte att minska varje individs energi- och vattenförbrukning och avfallsmängd. För de projekt och produktidéer som rör IoT (Internet Of Things) och digitala lösningar kommer våra elever (TE18IM) som läser Dator- och Nätverksteknik, Programmering, Webbutveckling och certifieringskursen Cisco IoT Fundamentals Connecting Things involveras. Genomgående för uppdragen är tillämpning av principer för hållbar design och användandet av moderna professionella digitala design- och konstruktionsverktyg som Blender, Sketchup, Fusion 360, Meshroom, Autodesk Revit, Unity, Unity Reflect samt 3D-skrivare och återbruksmaterial för att skapa skalenliga fysiska modeller. Under våren kommer natureleverna (NA19), som en del av projektet ”TIS-Tema Vatten”, titta närmare på den nya innovativa vattenreningsanläggningen Reco Lab (se mer info nedan) som är en modell för framtidens avloppssystem som håller på att byggas i Oceanhamnen.
Oceanhamnsområdet är just nu en inhägnad byggarbetsplats där förvandlingen till en levande stadsdel med de första 450 bostäder pågår för fullt så att de första invånarna kan flytta in redan nästa år. Här byggs också restauranger, handelsyta och Oceanhamnen Waterfront Business District, ett nytt affärsdistrikt med 32 000 kvadratmeter nya kontor. Området får endast besökas av behörig personal med ID06 passerkort, så vi har inte möjlighet att gå dit och göra fältstudier på nära håll med eleverna. Så för att få en inblick i hur arbetsprocesserna och bygget fortskrider får vi ta till andra kreativa metoder. I första hand söker vi samarbeten med de aktörer som är inblandade i olika delar av Oceanhamnen-projektet.
För att få lite perspektiv på projektet, fågelperspektiv alltså, så lyfte jag blicken och flög runt ett par varv och kollade in hur området ser ut idag, den 22 januari 2020. Här nedan är ett litet filmklipp med en helikoptervy över området som vi kommer ha under luppen de närmaste månaderna.
För att få en känsla för hur det är tänkt att se ut när Oceanhamnen är färdigbyggd så är en 3D-visualisering med realistisk rendering ett bra och kraftfullt verktyg. Här nedan får du en förhandstitt i 3D på den nya stadsdelen som håller på att växa fram med ett spektakulärt läge vid havet, ett stenkast från Helsingborgs centralstation. För att skapa en sådan film kan man t ex använda programvaran Blender 2.81 som vi börjat använda i kurserna Design, Konstruktion och Cad.
Digitalisering möjliggör nya innovativa arbetssätt Om man vill gå ett steg längre och erbjuda en interaktiv upplevelse så att besökaren själv kan navigera runt i 3D-miljön så kan man istället lägga in de 3D-objekt man skapat i t ex Fusion 360 eller Sketchup, i spelutvecklingsmiljön Unity, som vi använt i undervisningen i Programmering. I Unity kan man även skapa en interaktiv VR- eller AR-upplevelse. Med Unity Reflect kan man sedan koppla samman konstruktionsritningarna och projektplaneringsverktygen och följa hela byggprocessens alla olika steg i VR från en annan plats, eller med hjälp av AR-teknik se hur byggnaden steg för steg kommer att byggas upp precis där du står, trots att det ännu inte är klart. Det är som att i realtid kunna se in i framtiden, in genom väggar eller tillbaka till hur någonting såg ut innan.
Här kan du se var byggherrarna bygger
Det är totalt sex byggherrar som ska bygga bostäder i den nya stadsdelen. Vi vill gärna samarbeta med dem på olika sätt inom ramen för de kurser eleverna läser, men även för SYV (Studie- och Yrkes-Vägledning). Det kan t ex handla om studiebesök, intervjuer, designuppdrag eller praktikplatser. Kartan härunder visar var de ska bygga, och länkarna går till mer information om dem och deras projekt.
Oceanpiren är en del av Oceanhamnen, ett nytt spännande bostadsområde mitt i Helsingborg. På bästa läge, längst ut på piren, bygger vi 69 bostadsrätter om 1-4 RoK – Brf Oceanpiren. Här bor du på första parkett vid havet, i hjärtat av stadsdelen, i ljusa, välplanerade bostadsrätter som är byggda för en hållbar livsstil. Samtidigt om vi uppför Brf Oceanpiren bygger vi fyra radhus i townhouse-stil. Vi kallar dem Oceanvillorna. De har både hållbarhetstänket och den magnifika havsutsikten gemensamt med Brf Oceanpiren.
Design-, konstruktions- och CAD-uppgifter till TE18DP Här är en lista på exempel på arbeten och uppdrag som eleverna ska jobba med. Mer utförliga och detaljerande instruktioner ges under lektionerna, men de olika uppgifterna publiceras också på sidorna Designuppgifter för TE18DP och Konstruktions- och CAD-uppgifter för TE18DP.
Skapa en CAD-ritning på en av lägenheterna i Brf Oceanpiren. Utgå från planritningen.
Skapa ett komplett inredningsförslag till lägenheten.
Skapa konstruktionsritningar av väggsektioner, tak och golv i minst två olika material.
Skapa en materiallista och kostnadskalkyl för de ingående konstruktionselementen.
Gör hållfasthetsberäkningar och riskanalyser
Jämför materialalternativen med hänsyn till kostnad, hållfasthet, hållbarhet, miljöpåverkan, klimatavtryck och möjlighet till återvinning (livscykelanalys).
World Trade Center Helsingborg i Oceanhamnen ska bli mötesplatsen för entreprenörer, scale-ups, etablerade företag och affärs- och helgresenärer.
WTC Helsingborg blir en kontors- och hotellfastighet som kommer bli ett landmärke i Helsingborg. Med sina fjorton våningar precis vid hamninloppet ger den dig närkontakt med sundet, båtarna och kontinenten. Här kommer finnas gemensam service som reception och konferensavdelning. Gym, relax, dusch- och omklädningsrum. Restaurangen med uteservering vid vattnet och takterasser är ytterligare fördelar som berikar både arbets- och privatliv. I källaren planeras för cykelgarage med möjligheter till reparationer och en laddstation för elcyklar.
Fastighet är ritad av Juul Frost Arkitekter, men byggherren Midroc välkomnar kunderna tidigt in i processen för att kunna påverka lokalens utformning så att den passar verksamheten bäst. Att vara med och arbeta med förslag på lokalernas utformning kan vara ett bra elevprojekt! Juul Frost Arkitekter är förövrigt experter på design av campusområden och studentbostäder, och hur man kan integrera dem i städer.
Oceanhamnen får ett innovativt nytt avloppssystem– Reco Lab med Tre Rör Ut
Oceanhamnen kommer få en helt ny typ av klimatsmart avloppssystem med värmeåtervinning och lokalt producerad biogas. Varje fastighet ansluts till tre separata rör, ett för matavfall, ett för gråvatten och ett för svartvatten. Detta innovativa avloppssystem kräver att ingenjörerna tänker utanför boxen. I filmklippet ovan berättar VA-ingenjören Peter Winblad på Nordvästra Skånes vatten och avlopp, NSVA, om utmaningarna.
Reco Lab – en testbädd och showroom för framtidens källsorterande avloppssystem
Reco Lab kommer att bidra till att utveckla det världsunika systemet Tre Rör Ut för insamling och hantering av mat- och toalettavfall i fastigheterna på Oceanpiren i stadsdelen Oceanhamnen i centrala Helsingborg.
På uppdrag av NSVA har entreprenörföretaget NCC upphandlat det nederländska företaget Landustrie och det svenska företaget EkoBalans Fenix AB för att installera processteg i det unika Reco labs utvecklingsanläggning. Reco lab, som är en del av Öresundsverket i Helsingborg, ska behandla det källsorterade avloppet från Helsingborgs nya stadsdel, Oceanhamnen. Avloppshantering har en naturlig roll att spela i den cirkulära ekonomin då mycket av våra essentiella resurser, som vatten, näringsämnen och organiskt material passerar igenom stadens avlopp.
Det källsorterande avloppet innebär en reningsprocess med kraftigt ökad resursåtervinning. Miljövinsterna är flera:
ökad biogasproduktion
ökad näringsåtervinning
effektiv värmeåtervinning
mer energieffektiv läkemedelsrening
minskad klimatpåverkan
möjligheten för vattenåtervinning
Reco Lab planeras att vara färdigbyggt och driftsatt våren 2021 och inkluderar även ett showroom för utbildning samt en testbädd för teknikutveckling. Studiebesök hos NSVA för natureleverna (NA19) är planerat till maj 2020. Eleverna i NA18 borde också studera Reco Lab som en del av biologi- och kemikurserna, i synnerhet de som valt inriktningen mot natur och samhälle.
Bilder på bygget av Oceanhamnen
Bilder från fältstudie vid Oceanhamnen och Pixlapiren 2020-01-22 med drönaren DJI Spark:
Drönarvy | Helsingborg Oceanhamnen 2019-02-24 (Helsingborg då & nu)
Utse en Scrum Master för denna veckas Sprint och dagens Sprint Planning Meeting. Alla skriver i sin loggbok vem som är Scrum Master och vilka övriga som är med i projektgruppen och närvarande idag. Product Owners, Development Team och eventuella andra intressenter (t ex Customer, Sponsor).
Skriv en Product backlogg. Sammanställ en önskelista på alla aktiviteter. Korta beskrivningar av saker som ska uppdateras, läggas till eller förändras med hemsidan. Alla skriver något. Webbutvecklarna skriver också ner saker som behöver eller kan behöva förbättras med hemsidan.
Fokus och extra prioriterat idag är sidorna för Arbetsbeskrivning.
Gå igenom era individuella aktivitetslistor och skapa en gemensam Product Backlogg för projektgruppen.
Välj ut prioriterade uppgifter på olika personer och skriv upp vem som gör vad.
Jobba med de prioriterade uppgifterna.
Utvärdera vid lektionens slut. Vad gick bra? Hann ni fördela arbetsuppgifter till alla för veckan? Vad kunde ni gjort bättre gällande Sprint Planning-mötet?
Dagens fokus och uppgifter: Jobba vidare med Fashiontech-projekten. Skapa en fungerande prototyp av din Fashiontech-produkt.
Dokumentera information om dina ingående komponenter. Detaljerade beskrivningar av egenskaper, ritningar, datablad, material, tillverkare etc.
Hur ska komponenterna monteras in i plagget? Beskriv, skissa, rita och fotografera.
Hur ska komponenterna kopplas in? Skapa kopplingsschema.
Testa, fotografera och dokumentera din process.
Testmätningar: Vilka tester behöver du göra? Gör en lista på vad du behöver testa och skriv en planering för hur det ska gå till. Elförbrukning, värmeisoleringsförmåga, värme, kyla, ljud, ljusstyrka, sensorkänslighet etc.
Skapa symall eller mall för inbyggnad/montering av komponent.
3D-printa
Materialval. Dokumentera vilka material ditt plagg har, ta reda på materialegenskaper och dokumentera dem. Vilka andra alternativa material skulle man kunna använda istället? Fördelar och nackdelar med de olika materialen.
Sammanställ en arbetsbeskrivning som ska ligga på hemsidan.
Drönaren Ryze Tello powered by DJI är kul att flyga som den är. Men den erbjuder även en möjlighet att programmeras med Python för att utöka sina funktioner med t ex datorseende (Computer Vision).
I filmklippet ”Tello drone and computer vision: selfie air stick”, av geaxgx1, får du se flera intressanta exempel på hur man kan låta Tello följa och styras av vad den ser med sin kamera genom Pythonkod och OpenCV. Exempelkod på hur man gör ansiktsigenkänning, kroppspositionsdetektering m.m finns i länkarna nedan.
Tello drone and computer vision: selfie air stick (8:55)
I want to thank all the people who wrote and shared the great libraries/programs I used here : – https://github.com/hanyazou/TelloPy : DJI Tello drone controller python package, – https://github.com/CMU-Perceptual-Com… : Real-time multi-person keypoint detection library for body, face, hands, and foot estimation. This is an amazing library! – https://github.com/Ubotica/telloCV/ : Ubotica wrote a code for the Tello to follow a color ball. Instead of starting from scratch, I used his code. It makes me saved a lot of time for UI!
TELLO har fått en ny app som ger den helt nya funktioner!
Den här nya appen från VOLATELLO ger nytt liv åt den gamla lilla drönaren. Appen hittar du i Google Play butiken: https://play.google.com/store/apps/de… Se filmklippet nedan från Captain Drone för mer information om de nya funktionerna ”Return to home”, ”Object tracking”, ”Panorama” och hur appen fungerar.
Bygg fågelholkar i träslöjden, och använd dem i undervisningen i fler ämnen!
Fågelholkar i träslöjden
Förutom att det är en bra slöjduppgift så kan man göra något spännande och intressant biologi- och teknikprojekt av det också. Eleverna kan sätta upp fågelholkarna runt skolan och förse dem med olika sensorer och kamera för att övervaka, logga och undersöka om och när det flyttar in fåglar i dem, samt lite annan information som temperatur, luftfuktighet och lufttryck. Man kan t ex använda sig av Micro:bit eller Raspberry Pi med lämpliga sensorer till (t ex envirobit från Pimoroni eller Enviro till Raspberry Pi). Det data som loggas kan även användas i matematikundervisningen för att sammanställa till tabeller, olika typer av diagram och grafer och för att beräkna medelvärden m.m.
Här är en lista på fåglar som häckar i holkar och kan tänkas bygga bo i en observationsholk:
Vanligast: Talgoxe Behöver hål med minst 32 mm diameter. På vintern används holkarna som vindskydd när talgoxarna ska sova.
Nötväcka Behöver ca 30 mm diameter men använder helst holkar med 50 mm hål som den då murar igen till lagom storlek. Bottenytans kant bör vara 15 cm.
Göktyta Behöver 32 mm diameter. Ganska sällsynt. Vill ha mycket djup holk (40 cm mellan hål och botten).
Talltita Behöver 30 mm diameter. Bara i eller nära barrskog. Svår att få att häcka i holk. Den vill hacka ut bohålet själv. Fyll holken med sågspån upp till ingångshålet så kan fåglarna tömma den och sedan bygga sitt bo.
Svartmes Behöver 28 mm diameter. Bara i eller nära barrskog. Vill ha en holk nära marken, helst i knähöjd.
Tofsmes Behöver 28 mm diameter. Bara i eller nära barrskog.
Lappmes Behöver 30 mm diameter. Bara i eller nära barrskog med inslag av björk och endast i nordligaste Sverige.
Tornsvala (tornseglare) Behöver 45 mm diameter. Ganska svår att få att häcka i holk. Häckar i vanliga holkar mest i norra Sverige. Helst ska holken i så fall sättas upp liggande, men specialholkar kan också användas. Viktigast är att holkarna placeras högt så att fåglarna kan låta sig falla en bit för att få luft under vingarna vid utflygningen. Det får inte heller finnas trädgrenar eller andra hinder framför ingångshålen.
Trädkrypare Bara i eller nära skog. Behöver speciell holk av tjärpapp eller trä med smalt springformat ingångshål på sidan. Springan skall vara 25—30 mm bred och 50—100 mm lång.
The thrill of taking a corner, extremely low to the ground, with your gut telling you these g-forces are not normal… that’s why we spend countless hours building these silly Power Wheels vehicles. The giggles and grins are unavoidable! These cars are so much fun to drive — and even more fun to race!
In 2016, SparkFun had its eighth annual Autonomous Vehicle Competition. This year saw the introduction of a new rule: you needed to carry a human (or a 20lb dead weight in the form of a watermelon if you were too chicken). To do this, my wife, Alicia, and I modified a Batmobile Power Wheels and combined it with a Razor chassis. The result was an extremely zippy electric go-kart that left a perma-grin on everyone who drove it.
Our goal was to create a vehicle that could quickly and easily switch between human driver and driverless modes so that we could compete in both PRS and A+PRS categories. In the end, Alicia placed a very respectable third place in the driver category, and I did not finish (DNF) in the autonomous category, running into numerous hay bales.
This tutorial attempts to document a six-month build process for an Autonomous + Power Racing Series (A+PRS) vehicle. Every autonomous vehicle is unique, and the requirements of each will vary from build to build.
The AVC rules stipulate that you cannot spend more than $500 on your total budget and that you have to stay within certain size restrictions. We started trolling craigslist to see what was out there and immediately found a plethora of free or cheap “broken” Power Wheels. When a Batmobile for $25 popped up, we quickly snagged it.
Dusty with dog hair and dead spiders — it’s perfect!
The primary failure of all used Power Wheels is a dead battery. The Batmobile was no different; as soon as we put in a new 12V SLA (Sealed Lead Acid), it happily, albeit slowly, drove around. There is nothing magical about “Power Wheels” branded batteries; get the right voltage (usually 12V, sometimes 6V), and you can use almost any battery you’d like.
The original batmobile chassis blow molded plastic at its finest. The wheels are hollow, the motor is designed to move a child slowly (and reasonably safely), and the steering is littered with bits of metal but mostly loose and wobbly. While the stock chassis was capable of moving adults weighing in at around 200lbs, we knew it wouldn’t handle racing, so we decided to find a metal chassis to sit underneath.
Note the size of the motor and battery. Those are about to get much larger.
Razor is known for their kick scooters, but they’re in the electric go-kart market as well. We found a Razor Drifter Open Box for $165. The Drifter had the steering, brakes, wheels and chassis sorted out for us! Additionally, the Drifter came with a stock 24V battery, 250W motor and 250W motor controller.
Many PRS and AVC competitors are talented enough to weld their own chassis together. DIY welding is a great way to save money, but it may take weeks of fabrication. Because we planned to enter the autonomous field, we decided to find a ready-made chassis and spend our time building and debugging the autonomous bits.
Putting on a Hat
Once we had the Power Wheels and the Razor chassis, we had to combine the two.
We slid the razor chassis underneath the plastic batmobile shell. The razor chassis has strength where we needed it most: steering, chassis, brakes, drive train, everything. The plastic batmobile is just there as a shell. The four solid plastic+rubber razor wheels make contact with the ground. The four hollow batmobile wheels hover above the ground and are there only for cosmetic looks (for the lulz).
A Power Wheels meets a Drifter
At some point you have to get out the reciprocating saw and severely modify your beautiful Power Wheels. We laid the Batmobile over the Razor and proceeded to chop off all the bits that got in the way.
Bare metal chassis before shell is laid on top
Seats? Where we’re going, we don’t need seats!
Pleasingly, the Batmobile sits on top of the chassis under its own structural support. We didn’t need to add all-thread or other standoffs. Even though they don’t do anything, we reattached the original wheels just so it looked extra wacky.
Motor and Motor Control
Moar!
In 2016, A+PRS allowed 48V systems, so the first thing we did was remove the 24V motor and install a 1,000W 48V/21A motor. The PRS rules limit any system to 1,400W, so we could have gone larger had budget constraints not been kicking in fast. New mounting holes were drilled into the chassis, and a different gear had to be mounted to the end of the motor. But it all went well. The stock chassis even included a chain tensioner that proved invaluable!
The MY1020 48V motor we used is common on the PRS circuit and performed great. However, our original 1,000W motor controller (you should already be able to tell what’s coming) did not do so well. Our first tests of the 48V system in an open parking lot worked great until the motor controller overheated and failed. And when MOSFET-based motor controllers fail, they fail unsafe, meaning our vehicle decided to go to 100 percent throttle and stay there. This is why we have safety switches! Alicia and I were able to kill the vehicle before anyone got hurt.
This failure should have been prevented: a motor controller should be rated for at least 2 times what you calculate your maximum load will be. In our case, if we wanted to control a 1kW motor, we should have been using a motor controller rated to a constant 2kW load. Luckily, the A+PRS rules don’t require you to record how much money you spent (and burned up); you have to report only what is on the vehicle as it rolls on race day.
The new, larger 5kW motor controller
We quickly located a larger, 5kW motor controller (this one even had reverse!) and got it on order. This larger motor controller has been working swimmingly ever since. Find a motor controller with reverse. You’ll be tempted to drive your souped-up Power Wheels in weird places (like the SparkFun inventory aisles), and a reverse gear allows for hilarious 5-point turns.
Brakes
Go-kart drum brakes on eBay
The Razor chassis had the classic drum brake, perhaps the weakest link of the Razor. While the stock brake was probably the appropriate size for a 75lb child with stock 24V batteries, our brakes got really squishy once we added an additional 125lbs of meat bag, batteries and plastic bits. We rarely, if ever, used the brakes during races, but the PRS rules stipulate that your qualifying lap must end with the driver crossing the finish line and braking to a stop:
At the end of the hot lap, your car will have to come to a complete stop within 18ft of when its transponder crossed the start/finish line. Deliberately skidding, swerving or spinning out is not an acceptable method of braking for the brake test.
Alicia had to do an impressive combination of hard braking, swerving, skidding and sliding with such a dramatic flair that she wooed the judges into not noticing how dodgy our brakes were. We’ll have disc brakes installed before we roll in the 2017 race.
Batteries
Battery holder welded onto the front of the chassis
As part of the motor upgrade, we needed to increase the battery voltage to 48V. To save money, we reused the super common batteries that came with the 24V Razor chassis. Razor was smart; they looked at the SLA (Sealed Lead Acid) battery industry and picked the most common size. This just happened to be the same battery that goes into nearly every UPS on the planet. We purchased two additional UPS-size batteries (way cheaper than buying Razor-brand batteries) and wired them in series.
Four batteries combined in series
Taping the cells together and adding a bead of hot glue between the cells made the pack nicely rigid. A low-cost, polarized, high-current connector finished off the pack. We had an old strap lying around that made all the difference in the world; it’s a lot more comfortable carrying the pack one-handed by its handle than with two hands underneath.
Avoid fires and other bad things. Use polarized connectors for your batteries.
Wire
Soldering large-gauge wire
We originally spec’d out some really nice, super flexible silicone-sheathed 8AWG wire for power distribution. I don’t think we would do this again; 10AWG would have been fine, and probably even 12AWG. As 8-gauge is far less common, the wire and connectors are more expensive, and the larger gauge wire takes a lot more soldering heat — it’s just a pain to work with. If you need the current capacity, go for it, but for our extremely zippy, 48V 20A vehicle, 8-gauge wire was overkill.
If you decide to use super flexible, large gauge wire, spend some time on the internet reading about how to solder this type of wire.
The best technique I found:
Make sure you’ve got heat shrink in place
Turn your soldering iron up to 425C (way hotter than the 325C usually needed)
Push the ends of wire together
Wrap tightly with 30AWG wire wrap wire
Liberally apply flux
Heat and insert lots of solder until the joint turns silver
Here’s a good video demonstrating this technique:
Kill Switch
We documented how to build a wireless kill switch while making margaritas. It was a ton of fun, so we’ll skip the bits of the wireless kill switch system here.
Zroooommmm!
In addition to the wireless disconnect, we had a large, red mushroom kill switch that disconnected the battery with a pleasing and authoritative ”thunk.” Pulling up on the mushroom button reconnects the battery to the system.
Batman logo or Bitman logo?
As a pleasant bonus feature, the mushroom kill switch got rid of the nasty sparks. When connecting the battery to the motor controller, there was such an inrush of current into the capacitors and electronics that the connector would spark. Once we got the kill switch installed, we could connect/disconnect batteries without these sparks.
Connector between kill switch and power bus
The top of the Batmobile was easily removed, but because it had the kill switch installed we needed a way to disconnect it easily from the power bus. We found a great high-power connector in a dead server UPS. These are often called ”winch connectors”, because they are higher current. With this connector, we are able to quickly disconnect the kill switch and remove the top when we need to get at the inside of the vehicle.
Control Electronics
Power converters, motor kill relays, steering relays, locomotion controller and wireless communication
The control electronics are complex. We had a total of seven microcontrollers on this beast, plus three used in the distance sensors for a total of 216 bits of processing power. The system operated on an I2C bus with the brain sending commands to the locomotion controller and LCD and receiving data from the sensors.
The wiring underneath the Batmobile cover
For a previous 2010 AVC entry, I did everything on a single microcontroller. This made coding and debugging a challenge. On our 2016 entry, we focused each sub-system to do one thing very well.
The subsystems are broken down as follows:
Brain Controller: A SAMD21 Mini was used to communicate with and process all the data from the distance sensors, GPS and compass, and to send out commands to control throttle and steering. It monitored a start switch and relayed debug information to an LCD.
Locomotion Controller: An Arduino Pro Mini read the throttle, steering position, brake switch and autonomous rocket switch. It controlled motor speed and the linear actuator for steering.
Wireless Kill Switch: An Arduino Pro Mini lived in the wireless kill switch, a requirement for the autonomous part of our Batmobile. To learn more about the wireless controller, check out our tutorial on how to build a wireless kill switch.
A dedicated Arduino Pro Mini controlled the relays for the wireless kill switch system.
Debug LCD: We counted our LCD screen as a microcontroller since it has an Arduino in it.
Sensor Combinator: A SAMD21 Mini polled the serial GPS and I2C compass.
Laser Controller: A SAMD21 Mini controlled the three serial-based laser distance sensors, combined the relevant information and responded to requests from the Brain.
Three STM32s were the brains within the laser distance sensors.
Interested in learning more about distance sensing?
Learn all about the different technologies distance sensors use and which products would work best for you next project.TAKE ME THERE!
Control Electronics – Brain
The Brain is a SAMD21 Mini. It sends commands over the I2C bus to the locomotion controller and debug LCD.
4-pin JST connector at the top of the image: We used a 4-wire bus (5V, GND, SDA, SCL) for communication and had various taps throughout the bus to allow devices to be attached. This worked really well and allowed for devices to be moved around when needed.
4-pin JST connector to the left: This was four wires to the button. To tell the vehicle to begin navigating under autonomous control, we used a metal momentary push button that illuminates when everything is online and happy. The human presses the button twice, and the car commences racing.
Big gray handle: This was the original forward and reverse knob that we reused to control the direction switch on the motor controller (two pins when shorted together caused one direction, when open caused the other direction).
The massive and poorly written control code for the Brain can be found here.
EEPROM for Waypoints
The SAMD21 does not have internal EEPROM. Because we needed to store GPS waypoints and other configuration data to non-volatile memory, we used an external I2C EEPROM. Yes, you can use something called emulated EEPROM on the SAMD21, but, every time you reprogram the board, you will overwrite anything previously stored in emulated EEPROM. The external EEPROM made it much easier to store and recall waypoints and settings without having to mash together in the main control code.
Control Electronics – Locomotion
Locomotion Controller hooked up
Note the polarized connectors and prodigious labeling! You DO NOT want to be guessing what gets plugged into where at 11 p.m. before race day. The Locomotion Controller code is available here, and the PCB layout here.
Because we eventually wanted this beast to be autonomous, we needed to put a controller in the middle between the throttle and the motor controller. We used an Arduino Pro Mini that did a huge variety of sensing and control:
Read the throttle
Output analog voltage to the motor controller
Read the brake switch
Read the steering position
Controlled the linear steering actuator
Read the human/robot control switch
Received and responded to control commands over I2C
Don’t panic
The controller would monitor the rocket switch and brake switch. If a human ever pressed the brakes or turned off the rocket switch, the controller would go into safety shutdown and ignore any commands from the brain.
Steering was controlled using a 12V linear actuator over-voltaged to 24V for extra speed. Two relays controlled the forward/backward motion.
Steering position was obtained by cutting a hex wrench to about 1” and inserting that wrench into the bolt that rotates with the wheel. The wrench was then connected to a 10k trimpot using adhesive-lined heat shrink — this trick is known as the ”poor man’s coupler:” a 3-wire ribbon connected the trimpot back to the locomotion controller. It worked well, but we had to keep the analog signal wire away from the power bus; otherwise, bad noise got into the ADC readings.
Chassis with the Batmobile raised to see the steering actuator
For future vehicles, we’re going to change this setup. It worked well enough, but once the bolt connected the actuator to the steering, you couldn’t drive the car; only the computer could. So rather than driving the car to the start line, we had to carry this 75lb beast. So painful. In the future, we plan to find a back-drivable actuator or maybe drive-by-wire.
Control Electronics – Displays
Throttle and displays
We cut notches in a 1” tube of PVC and mounted two displays in the Batmobile. The center display is the power meter. Nearly every A+PRS and PRS competitor used these super low-cost power meters to show the battery voltage. We had some issues with it, but it worked well enough. In the end, we noticed the drop in vehicle speed (indicating battery drain) long before we noticed the display was indicating a lower pack voltage. But, it did help us make decisions about when to pit (never!) because the nominal 48V pack voltage was dropping down to 42V where we could begin to damage the SLA.
The display on the right is the 20×4 character debug LCD. It’s basically a souped-up version of our 20×4 SerLCD display (it’s a prototype product, coming soon to a theater near you!).
Control Electronics – Sensors
GPS+Compass connected to SAMD21
The Sensor Combinator is a SAMD21 Mini that monitors a GPS receiver and an I2C compass. We decided to use a SAMD21 because it can be configured to have multiple hardware serial and I2C ports. This is needed if you want to isolate I2C devices from the main bus. We wanted the Brain to ask for the heading and get the heading; the Sensor Combinator took care of the low-level I2C function of the compass and heading calculations. Similarly, the Combinator listened to the serial stream from the u-blox based GPS module and parsed out all the needed Latitude/Longitude/SIV information.
The code for the Sensor Combinator can be found here.
Control Electronics – Lasers
Laser tape measures seen on the front of the car, wrapped in foil
We hacked three laser tape measures in order to get distance to any objection front, left or right of the car. Laser tape measures are getting cheaper, and while the read rate (3Hz at the best of times) is not great for LIDAR, it’s fast enough for basic, low-cost autonomy.
Laser Controller at front of car
Unfortunately, the laser tape measures threw off enough RF to interfere with our GPS module, so we wrapped the lasers in foil. These sensors deserve their own tutorial, which will be written soon.
Laser Controller with labels
Again we chose the SAMD21 Mini to help us control and combine the serial information coming from the three sensors. The Laser Controller would send the pertinent control strings to the tape measures and monitor the responses, combining them into distances for left/right/center. The Brain would request these values from the Laser Controller over I2C.
Note the prodigious amounts of labels and polarized connectors (JSTs work great!). This system required lots of debugging but worked well because we were able to quickly disconnect and reconnect various aspects of the system.
The code for the Laser Controller can be found here.
Problems
As with any project, we had a large number of problems and hurdles to overcome along the way. Here are a few that really hurt.
** EMI and GPS **
The Laser tape measures caused significant interference with GPS reception. We eventually moved the GPS module to the rear of the car, which improved positional accuracy. However, the motor caused interference with the compass.
** DC Motor EMF **
DC motors produce a ton of electromagnetic noise. We originally had the 48V battery powering the entire car. However, when the motor would kick on, it would cause enough ripple to make the Brain glitch and reset. We tried powering the I2C bus separately, but, because the Locomotion Controller needed to be attached to the motor controller, a GND connection had to be shared. The noise eventually found its way over the I2C bus. In the future we will optically isolate the I2C bus.
** Lack of EEPROM **
Because the SAMD21 doesn’t have internal EEPROM, we were unable to store GPS waypoints on the board. We fixed this by using an I2C-based EEPROM.
** Switching Steering Between Driver/Driverless **
It was difficult to attach and detach the linear actuator from the rack and pinion steering. Once the actuator was attached to the steering, a driver could not actively steer (for example, to the starting line). This could be fixed with a different actuator that could be back-driven, or we could go full monty and detach the steering column from the steering and have it control a trimpot that, in turn, controls the linear actuator (drive by wire).
Tips / Best Practices
Tip 1) Start early — These vehicles take a large amount of time. Get together with friends and start hacking. It’s a great labor of love, and drifting in a 15mph go-kart will make you giggle.
Tip 2) Get reverse — Get a motor controller with reverse. It will make it so you can drive your car where you want it instead of carrying your car where you need it.
Tip 3) Use connectors! — I’ve written about using connectors a few times. Use polarized connectors and a label maker to make it clear what plugs in where.
Tip 4) Size your motor and motor controller correctly — We blew our motor controller because it was underrated. A friend of ours smoked his motor because he was pushing too much current. Pick your system voltage and current, and then double the ratings wherever you can.
Tip 5) Beware of interference — These vehicles can pull 30 amps or more when accelerating, which can cause large electromagnetic fields. Keep unshielded cables and sensitive sensors away from power wires.
Tip 6) Wireless control and sensor logging — After you pick up your 75lb vehicle and drag it to the start line for the fifth time, you’ll understand the need for remote control. Create a wireless system that allows you to take over control of the vehicle from afar so you can drive it where you need it. And transmit the sensor data so you can see what the vehicle is doing.
Detta är en artikel från SparkFun, December 17, 2012
Introduction
In my quest to design a radio tracking system for my next HAB, I found it very easy to create applications on my computer and interact with embedded hardware over a serial port using the Python programming language. My goal was to have my HAB transmit GPS data (as well as other sensor data) over RF, to a base station, and graphically display position and altitude on a map. My base station is a radio receiver connected to my laptop over a serial to USB connection. However, in this tutorial, instead of using radios, we will use a GPS tethered to your computer over USB, as a proof of concept.
Of course, with an internet connection, I could easily load my waypoints into many different online tools to view my position on a map, but I didn’t want to rely on internet coverage. I wanted the position of the balloon plotted on my own map, so that I could actively track, without the need for internet or paper maps. The program can also be used as a general purpose NMEA parser, that will plot positions on a map of your choice. Just enter your NMEA data into a text file and the program will do the rest.
Showing a trip from SparkFun to Boulder, CO.
This tutorial will start with a general introduction to Python and Python programming. Once you can run a simple Python script, we move to an example that shows you how to perform a serial loop back test, by creating a stripped down serial terminal program. The loopback test demonstrates how to send and receive serial data through Python, which is the first step to interacting with all kinds of embedded hardware over the serial port. We will finish with a real-world example that takes GPS data over the serial port and plots position overlaid on a scaled map of your choice. If you want to follow along with everything in this tutorial, there are a few pieces of hardware you will need.
For the loopback test, all you need is the FTDI Basic. For the GPS tracking example, you will need a GPS unit, as well as the FTDI.
What is Python?
If you are already familiar with installing and running Python, feel free to skip ahead. Python is an interpreted programming language, which is slightly different than something like Arduino or programming in C. The program you write isn’t compiled as a whole, into machine code, rather each line of the program is sequentially fed into something called a Python interpreter. Once you get the Python interpreter installed, you can write scripts using any text editor. Your program is run by simply calling your Python script and, line by line, your code is fed into the interpreter. If your code has a mistake, the interpreter will stop at that line and give you an error code, along with the line number of the error.
The holy grail for Python 2.7 reference can be found here:
At the time of this tutorial, Python 2.7 is the most widely used version of Python and has the most compatible libraries (aka modules). Python 3 is available, but I suggest sticking with 2.7, if you want the greatest compatibility.
After you install Python, you should be able to open a command prompt within any directory and type ’python’. You should see the interpreter fire up.
If you don’t see this, it is time to start some detective work. Copy your error code, enter it into your search engine along with the name ’python’ and your OS name, and then you should see a wealth of solutions to issues similar, if not exact, to yours. Very likely, if the command ’python’ is not found, you will need to edit your PATH variables. More information on this can be found here. FYI, be VERY careful editing PATH variables. If you don’t do it correctly, you can really mess up your computer, so follow the instructions exactly. You have been warned.
If you don’t want to edit PATH variables, you can always run Python.exe directly out of your Python installation folder.
Running a Python Script
Once you can invoke the Python interpreter, you can now run a simple test script. Now is a good time to choose a text editor, preferably one that knows you are writing Python code. In Windows, I suggest Programmers Notepad, and in Mac/Linux I use gedit. One of the main rules you need to follow when writing Python code is that code chunks are not enclosed by brackets {}, like they are in C programming. Instead, Python uses tabs to separate code blocks, specifically 4 space tabs. If you don’t use 4 space tabs or don’t use an editor that tabs correctly, you could get errant formatting, the interpreter will throw errors, and you will no doubt have a bad time.
For example, here is a simple script that will print ’test’ continuously.
# simple script
def test():
print "test"
while 1:
test()
Now save this code in a text editor with the extention your_script_name.py.
The first line is a comment (text that isn’t executed) and can be created by using a # .
The second line is a function definition named test().
The third line is spaced 4 times and is the function body, which just prints ”test” to the command window.
The third line is where the code starts in a while loop, running the test() function.
To run this script, copy and paste the code into a file and save it with the extention .py. Now open a command line in the directory of your script and type:
python your_script_name.py
The window should see the word ’test’ screaming by.
To stop the program, hit Ctrl+c or close the window.
Installing a Python Module
At some point in your development, you will want to use a library or module that someone else has written. There is a simple process of installing Python modules. The first one we want to install is pyserial.
Download the tar.gz file and un-compress it to an accessible location. Open a command prompt in the location of the pyserial directory and send the command (use sudo if using linux):
python setup.py install
You should see a bunch of action in the command window and hopefully no errors. All this process is doing is moving some files into your main Python installation location, so that when you call the module in your script, Python knows where to find it. You can actually delete the module folder and tar.gz file when you are done, since the relevant source code was just copied to a location in your main Python directory. More information on how this works can be found here:
FYI, many Python modules can be found in Windows .exe installation packages that allow you to forgo the above steps for a ’one-click’ installation. A good resource for Windows binary files for 32-bit and 64-bit OS can be found here:
This example requires using an FTDI Basic or any other serial COM port device.
Simply, connect the TX pin to the RX pin with a wire to form a loopback. Anything that gets sent out of the serial port transmit pin gets bounced back to the receive pin. This test proves your serial device works and that you can send and receive data.
Now, plug your FTDI Basic into your computer and find your COM port number. We can see a list of available ports by typing this:
python -m serial.tools.list_ports
If you are using linux:
dmesg | grep tty
Note your COM port number.
Now download the piece of code below and open it in a text editor (make sure everything is tabbed in 4 space intervals!!):
import serial
#####Global Variables######################################
#be sure to declare the variable as 'global var' in the fxn
ser = 0
#####FUNCTIONS#############################################
#initialize serial connection
def init_serial():
COMNUM = 9 #set you COM port # here
global ser #must be declared in each fxn used
ser = serial.Serial()
ser.baudrate = 9600
ser.port = COMNUM - 1 #starts at 0, so subtract 1
#ser.port = '/dev/ttyUSB0' #uncomment for linux
#you must specify a timeout (in seconds) so that the
# serial port doesn't hang
ser.timeout = 1
ser.open() #open the serial port
# print port open or closed
if ser.isOpen():
print 'Open: ' + ser.portstr
#####SETUP################################################
#this is a good spot to run your initializations
init_serial()
#####MAIN LOOP############################################
while 1:
#prints what is sent in on the serial port
temp = raw_input('Type what you want to send, hit enter:\n\r')
ser.write(temp) #write to the serial port
bytes = ser.readline() #reads in bytes followed by a newline
print 'You sent: ' + bytes #print to the console
break #jump out of loop
#hit ctr-c to close python window
First thing you need to do before running this code is to change the COM port number to the one that is attached to your FTDI. The COMNUM variable in the first few lines is where you enter your COM port number. If you are running linux, read the comments above for ser.port.
Now, if you want to send data over the serial port, use:
ser.write(your_data)
your_data can be one byte or multiple bytes.
If you want to receive data over the serial port, use:
your_data = ser.readline()
The readline() function will read in a series of bytes terminated with a new line character (i.e. typing something then hitting enter on your keyboard). This works great with GPS, because each GPS NMEA sentence is terminated with a newline. For more information on how to use pyserial, look here.
You might realize that there are three communication channels being used:
ser.write – writes or transmitts data out of the serial port
ser.read – reads or receives data from the serial port
print – prints to the console window
Just be aware that ’print’ does not mean print out to the serial port, it prints to the console window.
Notice, we don’t define the type of variables (i.e. int i = 0). This is because Python treats all variables like strings, which makes parsing text/data very easy. If you need to make calculations, you will need to type cast your variables as floats. An example of this is in the GPS tracking section below.
Now try to run the script by typing (remember you need to be working out of the directory of the pythonGPS.py file):
python pythonGPS.py
This script will open a port and display the port number, then wait for you to enter a string followed by the enter key. If the loopback was successful, you should see what you sent and the program should end with a Python prompt >>>.
To close the window after successfully running, hit Ctrl + c.
Congratulations! You have just made yourself a very simple serial terminal program that can transmit and receive data!
Read a GPS and plot position with Python
Now that we know how to run a python script and open a serial port, there are many things you can do to create computer applications that communicate with embedded hardware. In this example, I am going to show you a program that reads GPS data over a serial port, saves the data to a txt file; then the data is read from the txt file, parsed, and plotted on a map.
There are a few steps that need to be followed in order for this program to work.Install the modules in the order below.
Install modules
Use the same module installation process as above or find an executable package.
The above process worked for me on my W7 machine, but I had to do some extra steps to get it to work on Ubuntu. Same might be said about Macs. With Ubuntu, you will need to completely clean your system of numpy, then build the source for numpy and matplotlib separately, so that you don’t mess up all of the dependencies. Here is the process I used for Ubuntu.
Once you have all of these modules installed without errors, you can download my project from github and run the program with a pre-loaded map and GPS NMEA data to see how it works:
Or you can proceed and create your own map and GPS NMEA data.
Select a map
Any map image will work, all you need to know are the bottom left and top right coordinates of the image. The map I used was a screen shot from Google Earth. I set placemarks at each corner and noted the latitude and longitude of each corner. Be sure to use decimal degrees coordinates.
Then I cropped the image around the two points using gimp. The more accurate you crop the image the more accurate your tracking will be. Save the image as ’map.png’ and keep it to the side for now.
Hardware Setup
The hardware for this example includes a FTDI Basic and any NMEA capable GPS unit.
EM-406 GPS connected to a FTDI Basic
For the connections, all you need to do is power the GPS with the FTDI basic (3.3V or 5V and GND), then connect the TX pin of the GPS to the RX pin on the FTDI Basic.
It is probably best to allow the GPS to get a lock by leaving it powered for a few minutes before running the program. If the GPS doesn’t have a lock when you run the program, the maps will not be generated and you will see the raw NMEA data streaming in the console window. If you don’t have a GPS connected and you try to run the program, you will get out-of-bound errors from the parsing. You can verify your GPS is working correctly by opening a serial terminal program.
Save the python script into a folder and drop your map.png file along side maps.py. Here is what your program directory should look like if you have a GPS connected:
The nmea.txt file will automatically be created if you have your GPS connected. If you don’t have a GPS connected and you already have NMEA sentences to be displayed, create a file called ’nmea.txt’ and drop the data into the file.
Now open maps.py, we will need to edit some variables, so that your map image will scale correctly.
Edit these variables specific to the top right and bottom left corners of your map. Don’t forget to use decimal degree units!
#adjust these values based on your location and map, lat and long are in decimal degrees
TRX = -105.1621 #top right longitude
TRY = 40.0868 #top right latitude
BLX = -105.2898 #bottom left longitude
BLY = 40.0010 #bottom left latitude
Run the program by typing:
python gpsmap.py
The program starts by getting some information from the user.
You will select to either run the program with a GPS device connected or you can load your own GPS NMEA sentences into a file called nmea.txt. Since you have your GPS connected, you will select your COM port and be presented with two mapping options: a position map…
…or an altitude map.
Once you open the serial port to your GPS, the nmea.txt file will automatically be created and raw GPS NMEA data, specifically GPGGA sentences, will be logged in a private thread. When you make a map selection, the nmea.txt file is copied into a file called temp.txt, which is parsed for latitude and longitude (or altitude). The temp.txt file is created to parse the data so that we don’t corrupt or happen to change the main nmea.txt log file.
The maps are generated in their own windows with options to save, zoom, and hover your mouse over points to get fine grain x,y coordinates.
Also, the maps don’t refresh automatically, so as your GPS logs data, you will need to close the map window and run the map generation commands to get new data. If you close the entire Python program, the logging to nmea.txt halts.
This program isn’t finished by any means. I found myself constantly wanting to add features and fix bugs. I binged on Python for a weekend, simply because there are so many modules to work with: GUI tools, interfacing to the web, etc. It is seriously addicting. If you have any modifications or suggestions, please feel free to leave them in the comments below. Thanks for reading!