MCU boards - test og udvikling

MCU boards - test og udvikling

MCU boards

Tanken med denne blog er at samle nyttige links og andet til Micro Board.
Vi er i klubben startet op med et Arduino projekt og bloggen vil derfor være stedet hvor der kan deles "guldkorn" og der kan spørges, når / hvis I "kører fast" med Jeres eksperimenter
Gruppen lige nu er Istvan ( OZ1EYZ), Michael ( OZ5WU ), Niels ( OZ1JLT ), Jesper ( OZ9AFK ), Villads ( OZ3CM ) og Ole ( OZ8NZ ). Og alle er velkomne til at deltage og komme med gode idéer, så kom ud af "busken og deltag her til glæde for alle med interesse for disse små boards.

IO port definitioner til vores projekt

Arduino UNOPosted by OZ8NZ Ole Thu, March 06, 2014 16:31:03

I forbindelse med vores planlægning af vores Arduino projekt med display og styring af en CQP4000 syntese er det besluttet at vi bruger følgende definitioner til IO porte.
Dette for at vi har det samme grundlag til programmering, når vi når dertil

Arduino CQP4000 Display Beskrivelse
D0 ----> -------------------------------> Rx seriel
D1 ----> -------------------------------> TX seriel
D2 ----> A0 ---> D7 A0 CQP 4000 / D7 på display
D3 ----> A1 ---> D6 A1 CQP 4000 / D6 på display
D4 ----> A2 ---> D5 A2 CQP 4000 / D5 på display
D5 ----> D0 ---> D4 D0 CQP 4000 / D4 på display
D6 ----> D1 D1 CQP 4000
D7 ----> D2 D2 CQP 4000
D8 ----> D3 D3 CQP 4000
D9 ----> St strobe til CQP4000
D10 -> -----------------------------> GPS seriel ind
D11 -> ---> E Display Enable
D12 -> ---> Rs Display Read / Write
D13 -> -----------------------------> LED på Arduino Board

A0
A1
A2
A3
A4 ---------------------------------------> SCL --> I2C
A5 ---------------------------------------> SDL --> I2C





  • Comments(0)//mcu.oz8nst.dk/#post9

Program struktur i Arduino C program

Arduino UNOPosted by OZ8NZ Ole Mon, February 17, 2014 14:01:41

Jeg har gjort mig lidt tanker om hvordan det er nemmest at komme i gang med at kode program til en Arduino i C, som der jo programmeres i og har derfor lavet dette lille program som viser strukturen og de elementer der indgår, for at få kompileren til at oversætte programmet til kode som kan køres på et Arduino board.

Der er mange fordele ved at strukturere et program. Der giver bl.a. den fordel at koden bliver mere overskuelig, hvis der senere skal rettes, for at bruge den til andre formål. Det er ment at lave små funktioner som kan afprøves og som kaldes hvis funktionen skal bruges mange gange i programmet, hvor vi er sikre på at den virker hver gang.

Når koden brydes op i funktioner og andre små programdele er det også med til at optimere koden som lægges i Arduinoen, da der så kun er kode en gang, som kan bruges mange gange og derfor sparer plads i MCU'en

Dette er en måde at gøre det på, og der er sikkert andre, som har andre forslag til hvordan det kan gøres.

Grunden til at jeg synes dette er en god måde at gøre det på er at koden til de enkelte funktioner er defineret øverst i programmet og findes inden vi kommer ned på det sted i programmet, hvor de anvendes ( måske et levn fra mine pascal dage ) , og det er absolut ikke nødvendigt at gøre sådan, da alle funktioner og små program stumper og kan lægges nederst, hvis man synes bedre om den struktur.

Programmet som jeg har brugt til at vise strukturen er her under, så jeg håber med dette at have givet lidt inspiration til dem som aldrig har programmeret til en Arduino, og som ingen erfaring har med at programmere i C

Har i spørgsmål eller kommentarer til dette så skriv endeligt en kommentar.

Spørgsmål vil jeg så forsøge at svare på, og lægge ind her på siden, så snart der er fundet et svar på spørgsmålet

OZ8NZ, Ole

___________________ Program start _________________________

/*
Beskrivelse af stuktur i et Arduino program - OZ8NZ den 17 feb. 2014
Dette program viser de forskellige elemeneter som anvendes i et
program, og som er en god måde at strukture på, for at skabe oversigt
over de forskellige blokke i program
De små stumper kode som er indsat i void setup() og void loop(), vil få dioden på
port 13 til at blinke med 1 sec interval
*/

/*
I dette afsnit indsættes definitioner til biblioteker som skal anvendes
i programmet, et eksempel som er sakset fra RCT1307 programmet
*/
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 // This is the I2C address
#define I2C_WRITE Wire.write
#define I2C_READ Wire.read

/*
Næste afsnit er definition af globale variable - en global variabel er data
som kan læses og skrives fra alle dele af programmet
disse er sakset fra RTC1307 programmet
*/
// Global Variables
int command = 0; // This is the command char, in ascii form, sent from the serial port
int i;
long previousMillis = 0; // will store last time Temp was updated
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
byte test;
byte zero;
char *Day[] = {"","Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
char *Mon[] = {"","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};

int led = 13; // definerer led på port 13

/* I dette afsnit indsættes funktioner som kan bruges fra alle moduler i programmet
Disse funktioner er sakset fra RTC1307 programmet */
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}

// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}

/* I dette afsnit indsættes procedurer ( delprogrmmer som kaldes fra programmet
eks på dette er fra sakset fra RTC1307 programmet */

void setDateDs1307() {
/* her indsættes de funktioner som programmet skal udføre,
bmærk at der startes med { og sluttes med } */
}

void blink(){ // blink på port 13 med 1 sec interval
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}

/* I dette afsnit indsættes setup som er et program der køres en gang ved start eller
reset, dette bruges til at initialisere f.eks baudrate til comport ,
void setup skal altid være i et program*/
void setup(){
// programkode indsættes her
pinMode(led, OUTPUT); // sætter port 13 til output
}

/* I dette afsnit indsættes void loop, void loop er den del af programmet
som udføres indtil reset eller power off af Arduino*/
void loop(){
blink(); // kalder blink programmmet til port 13
}



  • Comments(0)//mcu.oz8nst.dk/#post8

RTC modulet

Arduino UNOPosted by OZ8NZ Ole Sun, February 16, 2014 17:01:08

Ja så fik jeg også lige testet at RTC modulet virker.

Jeg har fundet info om dette modul her : http://combustory.com/wiki/index.php/RTC1307_-_Real_Time_Clock#Reading_Data

og det software jeg har brugt er det som er på denne side.

Der findes også diagrammet til at wire RTC op mod Arduino smiley , så god fornøjelse med at afprøve dette modul.


Bemærk at terminalprogrammet default er sat til 9600 baud, og da der her bruges 57600 baud, skal det lige sættes op, for at få det til at læse og skrive noget fornuftigt her smiley

Når klokken skal sættes er det et lidt underligt format; men det virker

formatet er Tssmmhhdayddmmyy, som er følgende

T er for transmit
ss er sekunder
mm er minutter
hh er timer
day er ugedagen starter med 1 som søndag
dd er dato
mm er måned
yy er år

et eksempel:T0059161160214 , dette giver 16:59:00 Sun 16 feb. 2014

R læser fra RTC modulet
Q er memory funktioner
Q1 initialiserer memory - sætter alt til 0
Q2 er dump af memory
Her er hvad jeg kunne læse i RTC molulet, hvad det lige er som findes i de enkelte registrere har jeg pt. ikke sat mig ind i; men jeg tror nogle er til at bruge frit ??

: RTC 1307 Dump Begin
0: 18 : 12
1: 84 : 54
2: 23 : 17
3: 1 : 1
4: 22 : 16
5: 2 : 2
6: 20 : 14
7: 3 : 3
8: 255 : FF
9: 255 : FF
10: 255 : FF
11: 255 : FF
12: 255 : FF
13: 255 : FF
14: 255 : FF
15: 255 : FF
16: 255 : FF
17: 255 : FF
18: 255 : FF
19: 255 : FF
20: 255 : FF
21: 255 : FF
22: 255 : FF
23: 255 : FF
24: 255 : FF
25: 255 : FF
26: 255 : FF
27: 255 : FF
28: 255 : FF
29: 255 : FF
30: 255 : FF
31: 255 : FF
32: 130 : 82
33: 255 : FF
34: 255 : FF
35: 255 : FF
36: 255 : FF
37: 255 : FF
38: 255 : FF
39: 255 : FF
40: 255 : FF
41: 255 : FF
42: 255 : FF
43: 255 : FF
44: 255 : FF
45: 255 : FF
46: 255 : FF
47: 255 : FF
48: 255 : FF
49: 255 : FF
50: 255 : FF
51: 255 : FF
52: 255 : FF
53: 255 : FF
54: 255 : FF
55: 255 : FF
56: 255 : FF
57: 255 : FF
58: 255 : FF
59: 255 : FF
60: 255 : FF
61: 255 : FF
62: 255 : FF
63: 255 : FF
RTC1307 Dump end



Jeg har lagt koden her, så er der i hvert fald hvad der skal bruges, den er meget simpel og kan kun læse fra og skrive til RTC samt et par initialiseringer, som der måske kan være behov for.

OZ8NZ, Ole







  • Comments(0)//mcu.oz8nst.dk/#post7

Mit Demoboard

Arduino UNOPosted by OZ8NZ Ole Sun, February 16, 2014 14:18:58

Ja så har jeg fået lavet mig en lille kasse, hvor delene er til at lege med til vores Arduino projekt.

Jeg har også lige leget lidt med at få den til at tælle blink og give et output til et relæ, hver gang vi er nået til 100.

Koden er her hvis nogen har lyst til at bruge det til noget

Og her er et billede af min lille kasse



  • Comments(0)//mcu.oz8nst.dk/#post6

Lille blinkprogram til dioden på port 13

Arduino UNOPosted by OZ8NZ Ole Sat, February 15, 2014 12:27:33

Her er et lille eksempel til blink på port 13, hvor det er muligt at indsætte blink intervallet fra terminalen

Det skal bemærkes at hver gang terminalen åbnes er det som at trykke på reset, da programmet startes op på ny hver gang, men det virker godt til debug og hvad der ellers kan leges med fra terminalen

Og her er kildekoden til at kopiere så det kan køres :



  • Comments(0)//mcu.oz8nst.dk/#post5

Demo Board er startet

Arduino UNOPosted by OZ8NZ Ole Thu, February 13, 2014 17:27:30

Dette er mit første lille forsøg på at se om det virker efter alt er installeret og sat op, og det ser ud til at alt er som det skal være.
Jeg har fundet en ting som undrer lidt og det er at der oprettes en USB til comport hver gang et nyt board anvendes. Det fandt jeg ud af da jeg nu har været i gang med at teste 2 stk. Auduino UNO boards og et Mega board. Det har så givet mig 3 forskellige porte at arbejde på, måske fornuftigt hvis der skal udvikles på flere boards ? men virker lidt underligt hvis det kun er fordi der sættes et andet board til PC'en.

Boardet er sat til at læse fra en fugt og temperatur sensor, og dette er lagt her kun for at finde ud af om de forskellige funktioner i bloggen er brugbare.
Ole, OZ8NZ



  • Comments(0)//mcu.oz8nst.dk/#post4

Nyttige links for begynderen

Arduino LinksPosted by OZ8NZ Ole Thu, February 13, 2014 16:47:47

Denne link er til Arduinos hjemmeside, hvor programmet til udvikling og en masse andre gode sager findes http://www.arduino.cc/

Getting stated with Arduino er en lille beskrivelse af hardware og hvordan man kommer i gang med at bruge disse boards http://it-ebooks.info/book/1338/

Her er den store "kogebog" som er værd at studere, da der er mange gode eksempler på hvordan et Arduino board kan bruges, jeg er sikker på at når denne bog er læst og forstået smiley så er man blevet rigtig god til at fortsætte udviklingen af mange andre sjove ting med disse boards http://it-ebooks.info/book/1982/

Og så er der lige en youtube video som også fortæller noget om hvordan der startes, den er måske også værd et tage et kig på, og fra denne youtube kanal er der også mange andre spændende ting http://www.youtube.com/watch?v=kLd_JyvKV4Y

Her er en C-programming reference guide til Arduino, som måske kan være god at se lidt i og bruge til programeringen - http://it-ebooks.info/book/1581/

Det var alt fra mig for denne gang, så jeg håber det kan gøre lidt nytte

OZ8NZ, Ole






  • Comments(0)//mcu.oz8nst.dk/#post3

Indhold

Arduino UNOPosted by Ole Thu, February 13, 2014 14:18:13

I denne gruppe er det tanken at der samles information til Arduino UNO boards,



  • Comments(0)//mcu.oz8nst.dk/#post2