Hobbyelektronik med Raspberry Pi och Erlang



Relevanta dokument
GYMKEEPER ANDREAS SÖDERSTRÖM

Formula Blue. Digitala Projekt 8p. Jesper Ferm E02 Carl Hakenäs E04

3=delvis av samma åsikt. 4=helt av samma åsikt

Goda råd till de som ska utföra ett liknande projekt (från KMM 2016)

Enkel rak plastplog. Fäst med eltejp som ovan eller på annat sätt. Såga till plogen eller skär ut den med mattkniv

På sjön 2.0 Intern Guide för Android

Slutrapport för Pacman

Tekniskt system för Lean Startup

MOBBNINGSENKÄT. XXX-skolan

LEGO NXT Robotprogrammering

nivå 1 1. Du kan bli beroende av sociala medier. Det betyder att du hela tiden vill använda dem och att du inte kan sluta använda dem.

Föreläsning 3.1: Datastrukturer, en översikt

LEGO Mindstorm-robot

SmartgymS TRÄNA HEMMA PROGRAM SMARTA ÖVNINGAR FÖR ATT KOMMA I FORM - HEMMA! Effektiv Träning UTAN Dyra Gymkort!

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch

ANVÄNDARMANUAL HUR INSTALLERA JAG MOBILEPASS PÅ MIN TELEFON ELLER WINDOWS DATOR

Jag känner mig trygg på min skola

jenny svensson Svedjestråket12 lgh 517, Uddevalla

Vad roligt att ni har valt att bjuda varandra på den här timmen.

KUNGLIGA TEKNISKA HÖGSKOLAN. Linefollower. Med LEGO Mindstorms och NXC. Paul Coada Introduktion i datateknik II1310

KVALITETSINDIKATORER PÅ 1177.se

Datorsystem Laboration 2: Minnesmappade bussar

Slutrapport YUNSIT.se Portfolio/blogg

Skriv ut korten. Laminera dem gärna. Då håller de längre och kan användas om igen. Klipp ut dem och lägg de röda respektive de gröna i var sin ask.

Föräldraträffar Viktigt för våra barn och ungdomar

Smartair System. TS1000 Version 4.23

Utökning av mätområdet på ett mätinstrument med LED

Att använda pekare i. C-kod

5. Skill # 2 Inviting Prospects to Understand Your Product or Opportunity. Många posers och amatörer gör dessa fel i början när dom ska bjuda in

Designmönster - EMW. Kent Petersson epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL:

Bruksanvisning till LEDMasterBasic1

LMLR-710 (Nätansluten mottagare/dörrklocka) LMLT-711 (Tryckknappsenhet/sändare för dörrklocka)

Olika lärostilar... Länder... (Vi har tyvärr bara fått med tre länder då vi inte har haft så många som forskat varje gång)

Projektarbete 2: Interaktiv prototyp

2. Hur tycker du att stämningen i sjuan i stort har förändrats under året glädje, trygghet, gemenskap och kommunikation?

1965 till 1968 Sekventiell blinkers

Kursutvärdering. Samhällskunskap A

Kom igång med Telia Touchpoint Plus App. Din guide till installation och användning av de viktigaste funktionerna. TSP-TSP 4222_1-1512

Kursutvärdering Ämne: SO Lärare: Esa Seppälä/Cecilia Enoksson Läsåret Klass: SPR2

1 Skapa Tabell Skapa Relationer Redigera Relationer Redigera Fält i Tabell Lägga till Poster i Tabell...

Den magiska dörren. Av William Larsson Tell

SDC Violweb Kom-igång-guide. En instruktion för användare version 2.5 (mars 2016)

Utvärdering APL frågor till handledare VT2015

Matematik Åk 9 Provet omfattar stickprov av det centrala innehållet i Lgr b) c) d)

Övning 1: Vad är självkänsla?

Din anställningstrygghet - en av Försvarsförbundets viktigaste frågor

Eftersom det endast är en fristående strömslinga man påverkar då man trycker på knappen säger man att omkopplaren i bild 1 är en enpolig omkopplare.

Bruksanvisning i original. Vital 2 och Vital 3. Användarmanual

Evaluation Summary - CD5570 DoA, distans VT 2004 Dan Levin

Aditro HR Portalen - logga in och byta lösenord

Android (BYOD) -Installera mstart -Kom igång manual


EXAMENSARBETE. Trådlös, beröringsfri temperatursensor med insamlingssystem. Förbättring/vidareutveckling av prototyp. Oskar Ederlöv 2013

MENING MED LIVET? FINNS DET NÅGON

Songkids Vi är Songkids Songkids Vi är Songkids. Songkids Vi är Songkids Songkids Vi är Songkids


L/C-meter 2007 Byggbeskrivning v

Användarmanual Mina sidor Timvärden

MONTERINGSANVISNING & BRUKSANVISNING för CARGARD Portstyrning RDC 30 / RDC 120

Checklista med Tips & råd för din webbplats

TW Jag tror du har missuppfattat ganska mycket.

Från förvaring till förvandling Från förvaring till förvandling

IdrottOnline-appen Du kan installera appen från Google Play store för Android och Appstore för iphone. Sök på IdrottOnline så bör den komma fram.

RFSU Guide: Polyrelationer POLY SÅ FUNKAR DET

eport tar hand om hela kursadministrationen

Manual Kulturpool Värmland 2.0

Testa din hörsel. - det är inte svårt

Enkät till föräldrar och elever i årskurs 3, 5, 8 och Olsboskolan, vt 2015

GOLFINSPIRATION Inledning. Släpp kontrollen

Vad är bra mat, egentligen? När forskningsrönen utvecklas till konkreta verktyg för hela familjen.

Ställ er i åldersordning, utan att prata med varandra. Nu skall eleverna ställa sig i åldersordning, äldst först, yngst sist.

För vikarier i Time Care Pool

LUXCONTROL modulardim

Kapitel 1 - Hej Hej jag heter Lisa och går på Hästskolan. Min bästa vän heter Wilma. Jag tycker att vår rektor är lite läskig. Hon heter Svea och hon

Installations och användarmanual för BFM24TD, BFM24TD-GPS bränsleflödesmätare för diesel

Instruktioner för dig som ska söka till Mattekollo 2016

bia HÄRDPLAST AB Datablad för lagerbehållare VCSPE 1100

Telia Touchpoint Plus. Användare

Protokoll fört vid extra-insatt styrelsemöte #1 som ägde rum

Delaktighet och inflytande Skolmiljö Kunskap och lärande Bemötande

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Bonusmaterial Hej Kompis!

Förlossningsberättelse

IPS Handledning

Montering av kretskort 10-40X

Feedback från Jaktprov med älghundar (nya regler) Sammanställt av Jukka Immonen

Resultat Estetiska programmet, estetik och media åk 2, våren 2014

E-post detektiver. sök volontärer för att uppdatera medlemsregistret med aktuella e-postadresser

Marios äventyr. Kapitel 1

DIGITALA PROJEKT Väderstation

Berättarstunden. Termin 4: Bibeltelefonen. - levande berättelser från Bibeln. Söndagsskolmaterial

Utvärdering av föräldrakurs hösten 2013

Föräldramöte Gläntan. November 2015

VIKTIG INFO GÄLLANDE OMKOPPLINGEN TILL DET ÖPPNA NÄTET

Trygghetsavtal. Scanlasers. för ökad driftsäkerhet. Vi finns där vi behövs: Huvudkontor Sverige. Scanlaser Östra. Scanlaser Mellan.

När du nu förberett medarbetarens utvecklingssamtal i Bisnode People är det dags att planera själva samtalet.

******** (En soffa. ELLEN med espressokopp, slår ett nummer på en sladdlös telefon.)

FÖRFATTAREN ALKA 2014

Byta lösenord på en Ingate Firewall 1180/1190/SIParator 18/19. Lisa Hallingström Paul Donald Bogdan Musat Adnan Khalid

SLALOMINGÅNGAR hur svårt kan det vara?

Transkript:

Hobbyelektronik med Raspberry Pi och Erlang 14-11-20 1

Agenda Det här är berättelsen om en resa, så därför blir presentationen som en reseberättelse. 1. Var ska man börja? 2. De första stegen mot något eget 3. Gör det ordentligt! 4. Andra saker jag gjort 5. Dags att hitta på något eget... 6. Demo Följ med på resan! 14-11-20 2

1. Var ska man börja? Alla har vi varit nybörjare Det finns gör-det-själv-projekt på: Adafruit ModMyPi SparkFun... IKEA-byggsats Enkelt och häftigt att bygga eget Användbart och lätt att modifiera koden Hello, World! Hej, Cybercom! 14-11-20 3

2. De första stegen mot något eget Byt ut någon komponent 14-11-20 4

2. De första stegen mot något eget Kombinera Datablad 14-11-20 5

2. De första stegen mot något eget Ett slutmål 14-11-20 6

2. De första stegen mot något eget Så vad hände? Avståndssensorn var omöjlig att kalibrera, eftersom felmarginalen var större än det uppmätta värdet antagligen för ljuskänslig Tidigare tanke: GPS för att mäta hastighet funkar över UART men låg uppdateringsfrekvens inte tillräckligt noga, få satelliter 14-11-20 7

2. De första stegen mot något eget Dags att skriva Erlang-kod Google: I2C Linux http://elinux.org/interfacing_with_i2c_devices https://www.kernel.org/doc/documentation/i2c/dev-interface SMBus? Kanon, det tar vi. Linuxkärnan NIF Erlang-kod Min C-kod öppna address 0x.. läs register 0x.. skriv 0x.. i register 0x.. [...] kod kod kod Datablad 14-11-20 8

3. Gör det ordentligt! Lager starta läs avstånd [...] Applikation/avståndsmätare Avståndssensor ADS1015-drivare I2C-drivare (NIF) Linuxkärnan/RPi-hårdvara Datablad A/D-omvandlarkort ADS1015 14-11-20 9

3. Gör det ordentligt! Testdrivet Enhetstester the Erlang way : EUnit Mockgyver Proper Applikation OK ADS1015-drivare I2C-drivare (NIF) 14-11-20 10

Mockgyver ett exempel setup() -> [...] %% Mock I2C interface methods?when(i2c_interface:open_i2c_bus(_address) -> {ok,?handle}),?when(i2c_interface:close_i2c_bus(_address) -> ok), [...] {ok, Pid} = ads1015_driver:start_link(), Pid. [...] init_should_open_i2c_bus_test(_) ->?WAS_CALLED(i2c_interface:open_i2c_bus(?I2C_ADDRESS)). terminate_should_close_i2c_bus_test(pid) -> ads1015_driver:stop(), wait_for_exit(pid),?was_called(i2c_interface:close_i2c_bus(?handle)). 14-11-20 11

Proper ett exempel prop_set_status_bit_always_sets_status_bit() ->?FORALL(BitPattern, word_value(), begin NewBitPattern = ads1015_driver_lib:set_status_bit(bitpattern), is_integer(newbitpattern) and ((NewBitPattern band?status_bit) > 0) end). [...] prop_decodes_encoded_data_rate() ->?FORALL(DataRate, data_rate_value(), DataRate == ads1015_driver_lib:decode_data_rate( ads1015_driver_lib:encode_data_rate(datarate))). data_rate_value() -> oneof([128, 250, 490, 920, 1600, 2400, 3300]). [...] 14-11-20 12

3. Gör det ordentligt! Önskemål: Systemtester med Common Test The Erlang way : Simulatorer: Enkelt att skriva i funktionella språk Meddelanden: Lätt att skicka i Erlang Applikation ADS1015-drivare I2C-drivare (NIF) Avståndssensorsimulator ADS1015-simulator Testfall (Common Test) I2C-bus-stubbe 14-11-20 13

4. Andra saker jag gjort 14-11-20 14

4. Andra saker jag gjort Bytt ut A/D-omvandlaren mot en enklare variant 1 kanal istället för 4 Ingen komparator Snabbare svarstider Pratar rå I2C Behöver ingen logik eller drivare Programmerat en LED-matris Åtkomst via rader och kolumner Kräver en svepning Svepning ger annan intensitet Lätt att göra animeringar 14-11-20 15

4. Andra saker jag gjort 14-11-20 16

4. Andra saker jag gjort Blåtand Google: Erlang bluetooth inga träffar Skriv en NIF mot Bluez Skicka Erlang-termer som binärer Använd RFCOMM som protokoll ( serieport ) Köp ett kort med rätt profil och räckvidd Kortet kräver aktivering (scan mode) Socketen fungerar som en TCP-socket Kräver pakethantering utan överliggande protokoll eftersom Erlang inte ser när den tar emot flera termer Målsättning: Skriv ett ramverk som inets (bnets) Hantera tjänster 14-11-20 17

Blåtandsserver ett exempel go() -> {{local, LocalMac}, {remote, _RemoteMac}} = get_mac_addresses(), {ok, Socket} = bluetooth_interface:create_rfcomm_socket(), ok = bluetooth_interface:bind_bt_socket(socket,?port, LocalMac), ok = bluetooth_interface:bt_socket_listen(socket), Pid = spawn_link(?module, socket_acceptor, [self(), Socket]), receive {Pid, done} -> ok after 60000 -> error(timeout) end, bluetooth_interface:close_bt_socket(socket). socket_acceptor(caller, Socket) -> {ok, Socket2, RemoteAddress} = bluetooth_interface:bt_socket_accept(socket), receive_loop(socket2), Caller! {self(), done}, ok. 14-11-20 18

Blåtandsklient ett exempel go() -> [...] {ok, Socket} = bluetooth_interface:create_rfcomm_socket(), Pid = spawn(?module, socket_connector, [self(), Socket, RemoteMac]), receive {Pid, done} -> ok end, bluetooth_interface:close_bt_socket(socket). socket_connector(caller, Socket, RemoteMac) -> ok = bluetooth_interface:bt_socket_connect(socket,?port, RemoteMac), Data = erlang:term_to_binary({self(), greetings}), ok = bluetooth_interface:bt_socket_send(socket, Data), [...] Data2 = term_to_binary("bye!"), ok = bluetooth_interface:bt_socket_send(socket, Data2), timer:sleep(10000), Caller! {self(), done}, ok. 14-11-20 19

5. Dags att hitta på något eget... Tillbaka till framtiden Hittad på Adafruit: Nja... Jag vill ha bokstäver och funktionalitet! 14-11-20 20

5. Dags att hitta på något eget... Hur svårt kan det va? Det visade sig: Faktiskt inte så svårt alls... 7-segments och 16-segments-displayer Samma teckenstorlek I tre olika färger Farnell har det jag behöver En kraftfull drivkrets - MAX695X Mikro-USB kontaktdon, stiftlistor, flatkabel prylar Motstånd och kondensatorer Lego 14-11-20 21

5. Dags att hitta på något eget... Drivkretsen: Displayavkodare MAX6955AAX I2C-varianten, 2 pinnar plus jord SSOP (0,8 mm mellan benen) Driver 7-, 14- eller 16-segmentsdisplayer 128 segment per krets, dvs en krets per rad 19 output-pinnar ASCII-teckentabell för 14- och 16-segmentsdisplayer Även avkodning för 7-segmentsdisplayer Man behöver bara ett register per tecken Tecknen uppdelade i slots (4x7, 2x16 eller 2x7+1x16) 14-11-20 22

5. Dags att hitta på något eget... Kretskort förstås Lära sig CAD:a i Eagle Läs databladet noga Datablad 3 kretskort per rad, MAX-kretsen på ett av dem Även strömförsörjning (mikro-usb) 1 slot med 2 gemensamma katoder 14-11-20 23

5. Dags att hitta på något eget... Outputpinnar blir anslutna horisontellt med flatkablar I2C-bussen (SDA och SCL) går vertikalt Monteringshål anpassade till Lego Inte så svårt i sig, men jobbigt att route:a Väldigt många anslutningspunkter Vinkeln ändras när man flyttar ledare i Eagle Det blir väldigt trångt runt MAX-kretsen, många vior 14-11-20 24

5. Dags att hitta på något eget... Varmluftslödning med mikroskop Okej, så jag fick lite hjälp 14-11-20 25

5. Dags att hitta på något eget... Från prototyp till färdig produkt 14-11-20 26

5. Dags att hitta på något eget... Mjukvaran Ihopslängd Tre stycken oberoende gen_servrar och ett lib: destination_time current_time countdown_clock Delar av lib:et borde bli drivare destination_time notifierar countdown_clock Den ska kunna fortsätta räkna åt andra hållet Man ska kunna mata in sluttid matrix keypad kräver I/O-expander 14-11-20 27

5. Dags att hitta på något eget... På gång: LED-array (tvåfärgad: röd och grön) Drivs av SPI-versionen av MAX-kretsen Är en sköld Har programmerbara tryckknappar 14-11-20 28

6. Demo 14-11-20 29

14-11-20 30