Arduino : Morse Voltmeter



Vergelijkbare documenten
Werkbladen voor Arduino workshop 1

RCL Arduino Workshop 1

Tweede workshop Arduino

Oefening 1 - Seriële communicatie via USB

Arduino Workshop 1 Zuid-Limburg

Workshop Arduino voor beginners deel 2

Programmeren met Arduino-software

Meet the Arduino FAMILY

Wat is Arduino? Arduino = microprocessor (Atmel)

Arduino. Arduino UNO. Sam Decoster. CoderDojo Roeselare. Sam Decoster

Arduino Zuid-Limburg Workshop 2

MAKERKLAS WORKSHOP ARDUINO. Maandag 7 december 2015

EM2 Microcontroller Project. LED cube

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

Arduino[4KIDS] Maak je eigen muziekinstrument!

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

Arduino CURSUS. door Willy - 09-juni-2017

Naam + Klas: Laptop Nr: Cijfer:

Arduino. Workshop. 20 juni 2014 Peter Struwe Stichting De Jonge Onderzoekers Groningen

th_elt Hardware & Software

Arduino Workshop. door Geert Roumen (CC) BY-SA. lemio.nl/arduino/

Single Board computers. Ruud van der Meer (voor HCC d.d. 4 dec2017 Leiderdorp)

PIC Callgever Door PA1RUM

Javascript oefenblad 1

by Jody Culkin Bronnen die gratis gebruikt, verspreid of aangepast kunnen worden. meestal software of hardware.

Workshop Arduino - deel 2

Weerstation. Weerstation met Arduino C.G.N. van Veen. HiSPARC. 1 Weerstation. 2 Arduino. 2.1 Werking van Arduino

Workshop Arduino voor beginners. door TkkrLab Enschede

1. Sluit de LED aan zoals afgebeeld 2. Sluit de USB-kabel aan op de Arduino 3. Klik op de knop uploaden 4. De LED begint te knipperen

Boe-Bots - Arduino robots

by Jody Culkin Bronnen die gratis gebruikt, verspreid of aangepast kunnen worden. meesta software of hardware.

Bouw een deel van het JeeNode schema zoals beschreven op pagina 5 in de JeeNode handleiding in de handout, maar dan op het breadboard.

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

De Arduino-microcontroller in de motorvoertuigentechniek (4)

4x4x4 LED cube deel 2

MORSE aan een draadje

delay(1000); // Eén seconde pauze digitalwrite(pin, LOW); // zet 'pin' uit delay(1000); // Eén seconde pauze }

Microcontrollers. Bart Kardinaal E Verslag microcontrollers Rev 1.0 Status definitief.

Automatische spoel installatie voor legionella preventie. NTKC - Bennie ten Haken 27 Mrt

EmSE presentatie. Starten met de ATtiny2313: Een RGB powerled driver Kees Moerman, 13 juli 2010

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

De FOR lus: // terug naar waar je vandaan kwam Serial.begin(115200); // communicatie snelheid met de PC

modellering met Arduino project module

Arduino Programmeer handleiding

Logo quiz Project Inleiding op de Logo!

Hand-out Introductieworkshop LED programmeren

Het µclab voor Arduino UNO, NANO en Arduino UNO pincompatible

In deze mannual zal ik het voorbeeld van de Led cube gebruiken maar de principes zijn op alles toepasbaar.

CTCSS Encoder Super Flexibel Ontwerpen met een Arduino Nano

Microcontrollers. Robert Langenhuysen, PA0RYL

AVR-DOPER MINI ASSEMBLAGE HANDLEIDING + LAYOUT. Geschreven door: Tom Vocke

modellering met Arduino extra module

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Workshop Arduino Uno. Touw dag 6 juni 2015 Harold Pootjes en Simon Pauw

Inleiding. Leerdoelen

Arduino cursus. Eelco Dijkstra Steunpunt Informatica - Its Academy 24 september 2015

Zelfbouw frequentieteller

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

Inhoud Inhoud. Inleiding 1 Leerdoelen 1

1 Communicatie via de CAN-bus met Arduino-shield

Oefeningen Digitale Elektronica (I), deel 4

Ar-doe-wie-no. Voorwoord

arduino programmeerboek Davy Wolfs

KAEDU : Outputs en inputs

ES1 Project 1: Microcontrollers

Keuzedeel Programmeren van microcontrollers (K0730, 240 uur)

Programmering Tiny45 voor de DCC locdecoder

B3C 70cm converter besturing. v PE5PVB bar.net bar.net

// hier wordt de functie: ZegHallo aangeroepen

A R D U I N O. addendum bij: Leren programmeren, meten en sturen met de Arduino. 3 e druk INHOUD

Locobuffer Handleiding

Arduino Opstartgids.

De Arduino-microcontroller in de motorvoertuigentechniek (7)

De Arduino-microcontroller in de motorvoertuigentechniek (6)

INTERACTIEVE TOUCHSCREEN MET RGB LEDS

Microcontrollers Labo

Peripheral Interface Controllers. BRAC clubavond PE2WDO

De Arduino-microcontroller in de motorvoertuigentechniek (2)

GEÏNTEGREERDE PROEF. VTI Sint-Laurentius. Pakketweegschaal. Industriële informatie & communicatietechnologie SCHOOLJAAR

De CB channel controller TMS1022NL/NLL en TMS1023NL/NLL. ( Dit is een maskrom-programmed version van de Texas Instruments TMS1000 family)

16F877A development board cursus deel 1

Keuzevak Slimme Technologie De slimme Regenmeter

Arduino. C.F.J. Pols.

Seriële bluetooth verbinding ATmega128

De Arduino-microcontroller in de motorvoertuigentechniek (8)

Meetinstrumenten. PEKLY 33, Rue Boussingault _ Paris. Werkboekje behorende bij de software. Naam : Klas: 3, 15, 30, 150, 450 1,5 2

voordat we verder gaan raad ik aan om in ieder geval te zorgen dat je het volgende hebt:

Oefeningen Interpretatie I Reeks 6 : Registermachines

Technology, Innovation & Society Delft

Arduino en APRS EZHE Workshop April 2017, PD1DDK

led 0 aan Opdracht: 1 Opdracht: 4

Deel 8: stappenmotoren en interrupts

GEÏNTEGREERDE PROEF. VTI Sint-Laurentius. Pakketweegschaal. Industriële informatie & communicatietechnologie SCHOOLJAAR

Inductiemeter via de parallelle poort

Handleiding software USB PIC DEV. BOARD

Weerstation. Weerstation met Arduino C.G.N. van Veen. HiSPARC. 1 Weerstation. 2 Arduino. 2.1 Werking van Arduino

INHOUD. dankbetuiging inleiding DE ARDUINO REVOLUTIE...16 OVER DIT BOEK...17 OPZET VAN DIT BOEK...18

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Transcriptie:

Arduino : Morse Voltmeter Ooit was ik begonnen met het leren programmeren van een PIC processor in assembler. Maar ja, dat ging niet zo vlot, er kwamen andere dringende zaken en de PIC vloog weer in de kast. Tijdens onze USA-reis in 2009 kwam ik te midden de Badlands (zie on4hti_16_2, p. 16) een amateur tegen (Greg, KB9BU) die mij probeerde warm te maken voor de ARDUINO. In school leerde ik dan de Arduino echt kennen doordat STARCom-lid Giovanni er zijn labproject rond bouwde. En ja, met véél vertraging ben ik dan uiteindelijk ook bezweken De Oostendse radioclub deed vorige zomer namelijk een groepsaankoop en dat was het begin van een lichte Arduino-verslaving hi. Wat is nu zo n Arduino? Je leest er alles over op http://arduino.cc/, maar hier een korte samenvatting : het is een klein ontwikkelbordje voor een 8-bits microprocessor (de ATMEL ATMEGA 328). Je kan een aantal analoge en digitale inputs inlezen, en via de code in de processor kan je een aantal analoge of digitale outputs aansturen. Het meest populaire bordje is de Arduino UNO (zie foto), kostprijs ongeveer 25. Eens je een project ontwikkeld hebt is het natuurlijk zonde om je UNO bordje definitief in een kast te verstoppen en moet je dan weer een ander bordje kopen? Nee, hiervoor bestaat gelukkig een (goedkope) oplossing, je kan voor 7,45 een inbouwkitje kopen, dit bevat µc chip + enkele belangrijke componenten. (zie http://iprototype.nl/products/kits/barebone-arduino-kit ). Je zal immers meestal niet alle in- of uitgangen gebruiken, dan maak je zelf een print met wat je nodig hebt, je programmeert de chip in de Arduino, en dan plaats je die in je eindproduct! Hoe programmeer je de Arduino? Hier schuilt de geniale uitvinding van de ontwerper(s) : je hoeft helemaal geen assembler meer te leren, en de ontwikkelomgeving is echt heel gebruiksvriendelijk gemaakt. Met een uitleg van een uurtje of zo, kan je al aan de slag en een eerste werkend programma laten draaien. De Integrated Development Environment (IDE) werd geschreven in de taal Processing, en is Multi-platform (dus niet enkel voor Windows). Je moet wel een beetje de basis van de taal C/C++ kennen of willen aanleren, en dan ben je vertrokken. Zie een voorbeeldje verderop. Zowel de hardware als de software zijn open source, dit wil zeggen dat je ook zelf je Arduino bordje kan/mag ontwerpen. Alle gegevens zijn vrij te downloaden van de website, inclusief schema en Eagle-files om zelf je print te maken. Een interessante variant van de Arduino is bvb. de JeeNode : http://jeelabs.com/products/jeenode, dit is een Arduino met een RFmodule op 868 MHz (heeft echter geen eigen USB-aansluiting). Met een JeeNode kan je vanalles draadloos doen dus toch een soort radio-amateurisme!

Wat ga je met de Arduino doen? Aha! Je kan met de arduino alles doen zegt men toch op het internet. De beste lokkertjes vind je op YouTube, en heel dikwijls wordt verwezen naar het aansturen van een LED-kubus; Bekijk bvb. deze eens, http://www.youtube.com/watch?v=gucx41pokzy, of een van de vele varianten waar je naar doorverwezen wordt. Maar is er ook iets voor radio-amateurs mee te doen? Tja, daar begint het natuurlijk iedere amateur heeft zo zijn eigen dromen, maar hoe begin je eraan? Er zijn natuurlijk enorm veel dingen reeds gemaakt, en daar kan je naar hartenlust uit kopiëren en combineren. En zo bedacht ik de Morse Voltmeter, door een combinatie van een programma voor morsecode dat ik kreeg via Ronny, ON4RK, en de code voor de uitlezing van een potentiometer + aansturing van een LCD display, gevonden op het internet. De hardware Een echte voltmeter heb ik niet gemaakt, eerder een didactisch prototype. De ingelezen spanning is variabel tussen 0 en 5 Volt, door een potmeter aan te sluiten tussen massa en Vcc, en de loper te verbinden aan ingang A0 (een analoge ingang). De morse uitgang is het simpelste, dit is een 8Ω luidsprekertje, dat via een serieweerstand van 100Ω verbonden wordt tussen pin 9 en massa. Dan nog een drukknopje aansluiten tussen pin 7 en massa, hiermee doe je Arduino seinen. Ik heb er wel nog een (optionele) LCD display op aangesloten, kwestie van de spanning ook zonder kennis van morse te kunnen aflezen. De aansluitingen van de LCD, en de uitleg over de gebruikte library heb ik gevonden op deze site : http://arduino.cc/en/tutorial/liquidcrystal Zo kwam ik tot volgende verbindingen voor een standard 14 pins LCD : Arduino LCD pin nr GND GND 1 +5 V Vcc 2 2 Enable 6 3 Data Bit 0 (DB0) 7 4 (DB1) 8 5 (DB2) 9 6 (DB3) 10 11 Read/Write (RW) 5 12 Register Select (RS) 4 Hier staat alles in nog veel meer detail, voor wie niet zo thuis is in elektronica : http://www.ladyada.net/learn/lcd/charlcd.html

Het schema voor de LCD aansluiting in 4-bit mode is uiteraard voor heel wat andere projecten bruikbaar : Zoals je op de volgende foto kan zien wordt de kit extern gevoed met een 12V adapter, er is dus geen PC nodig om de schakeling te gebruiken.

De software Een programma voor de Arduino wordt een sketch genoemd. Hieronder de volledige listing voor de morse voltmeter, in blokjes gesplitst voor de uitleg. Over al waar in de code // staat is dit commentaar, deze wordt niet gecompileerd. Je kan de sketch hier downloaden : http://users.khbo.be/on4hti/morse_voltmeter.pde Een sketch bestaat in zijn eenvoudigste vorm uit drie stukken : voorbereidende declaraties, een setup() routine, en de loop(), dit is het gedeelte dat continu blijft draaien. Wordt die loop() te onoverzichtelijk, dan is het natuurlijk best om bepaalde stukken code in aparte functies (methodes) onder te brengen, zoals hieronder ook gebeurd is. Deel 1 : declaraties #include <LiquidCrystal.h> // importeer de LCD library // initialiseer de library met de juiste pin-nummers voor de LCD LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // geef namen aan de gebruikte pinnen, dit maakt de code leebaarder int ledpin = 13; // de interne LED van het arduino bordje int spkpin = 9; // speaker 8Ω + serieweerstand 100Ω van pin 9 naar naar massa int knobpin = 0; // analoog in A0 int switchpin = 7; // digital input pin voor drukknop // variabelen voor de Morse routines : #define VOLUME 100 // een array van "strings" maken, dit lijkt wat ingewikkeld maar het werkt! char* letters[] = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "...", "..", // A-I ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", // J-R "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." // S-Z ; // nog een array van strings voor de cijfers char* numbers[] = {"-----", ".----", "..---", "...--", "...-", "...", "-...", "--...", "---..", "----."; int dotdelay = 100; // regelt de seinsnelheid // variabelen voor de spanningsmeting : int knobvalue ; // de inleeswaarde van de knop (geheel getal van 0-1023) int volts ; // de omgerekende spanning als geheel getal 0 50 = 0-5 Volt double voltsdouble; // de spanning met 2 cijfers na de komma 0,00 5,00 Volt

Deel 2 : de setup routine (moet in iedere sketch staan, desnoods leeg) void setup() { // zet het aantal rijen en kolommen voor de LCD : lcd.begin(16, 2); // Zet een berichtje op de LCD (helaas max. 16 tekens op een rij in dit geval) lcd.print("on7dq MORSE VOLTMETER"); // bij uitvoering staat die METER niét op het LCD, zie foto // de werking van de verschilende pins instellen pinmode(ledpin, OUTPUT); pinmode(spkpin, OUTPUT); pinmode(switchpin, INPUT); // om zonder weerstanden te kunnen werken, schrijf een HIGH naar een input! digitalwrite(switchpin,high); // dit hangt een interne pull-up weerstand aan de pin // controle bij debuggen, de spanning wordt ook naar de PC gestuurd Serial.begin(9600); Deel 3 : de oneindige lus of loop() void loop() { //lees de spanning op pin A0 (analog in), waarde 0-1023 knobvalue = analogread(knobpin); // herbereken naar een andere bovengrens, hier bvb. 5 Volt volts = map(knobvalue, 0, 1023, 0, 50); // zend de waarde uit in morse, tenminste ALS op de drukknop geduwd is if (digitalread (switchpin) == LOW){ flashsequence(numbers[volts/10]); // cijfer voor de punt flashsequence(".-.-.-"); // punt flashsequence(numbers[volts%10]); // cijfer na de punt // bereken de waarde in double formaat voltsdouble = volts/10.0; // zet waarde ook op het LCD display lcd.setcursor(1, 1); lcd.print(voltsdouble); // zend waarde ook naar seriele poort Serial.println(voltsDouble); // een beetje wachten en dan wordt opnieuw gemeten delay(100);

Dan volgen de Morseroutines : deze heb ik gekregen van ON4K, maar zijn ook niet zo moeilijk te begrijpen. // deze functie roep je op met als argument een string tekens om te seinen void flashsequence(char* sequence){ int i = 0; while (sequence[i]!= NULL) { flashdotordash(sequence[i]); i++; delay(dotdelay * 3); // gap between letters void flashdotordash(char dotordash) { digitalwrite(ledpin, HIGH); // zet de ingebouwde LED aan = visual morse analogwrite(spkpin, VOLUME); // zet de toon aan if (dotordash == '.') { // als het een punt is delay(dotdelay); // wacht 1 tel else { // anders is het een streep delay(dotdelay * 3); // wacht dan 3 tellen digitalwrite(ledpin, LOW); // zet de LED weer uit analogwrite(spkpin, 0); // zet de toon weer uit delay(dotdelay); // wacht 1 tel tussen punten en strepen Zo, dat is alles veel succes bij het experimenteren met Arduino, en benieuwd wat jullie er eventueel allemaal mee doen, bezorg mij een artikeltje en het komt in het volgende boekje!