W załączeniu przesyłam bibliotekę QAPRS na arduino której autorem jest Łukasz SQ5RWU, i prosty schemat implementacji
Generalnie uważam osobiście że to krok milowy jeśli chodzi o home made konstrukcje APRS, biblioteka ta pokonuje barierę niezrozumienia protokołu AX.25 i standardu Bell202.
Biblioteka ta w chwili obecnej potrafi wysyłać ramki aprs reaguje na carier detect i wystawia sobie sygnał do wysterowania PTT.
Nadrzędnym celem przy jej tworzeniu było dostarczenie prostej w użyciu metody na generowanie ramek gotowych do przesłania do radia.
Dość powiedzieć że każdy kto jest w stanie za pomocą arduino zapalić diodę, i wyświetlić napis na wyświetlaczu lcd będzie w stanie z tej biblioteki skorzystać.
ładne to jest... :-)
Dziękuję
Właśnie prasuję prototyp płytki pod zabawy z tą biblioteką. Może się komuś przyda, to kładę źródła. Można dopracować, przerobić albo poprostu wypalić i sprawdzić organoleptycznie jak działa.
W arduino wybieramy płytkę dla procesora ATMega 328 taktowanego 16MHz
[
attachment=7226] [
attachment=7228]
Prośba do Ryszarda!
Prosił bym jednak o normalnie rysowane schematy, te You-Tubowe są niezrozumiałe.
Także prosił bym o szczegółowe opisy, co, z czym i do czego służy. Na dzień dzisiejszy nie wiem o co tu chodzi.
Co do przedstawionej biblioteki, może to i milowy krok, ale wyobrażam sobie że aby z niej korzystać to muszę napisać własne oprogramowanie do jej wykorzystania, a nie w niej grzebać. Może źle to rozumiem.....więc proszę o szczegółowe wyjaśnienie. Nie wszystko mieści się w mojej głowie.
Rysio!
Ryśku ściągnij sobie proszę tę bibliotekę.
Następnie wrzucasz rozpakowany katalog do katalogu libraries w katalogu gdzie zainstalowane jest arduino.
Instrukcja używania biblioteki znajduje się także w tym archiwum biblioteki (plik Readme.txt)
Co do Schematu... podłaczasz drabinkę rezystorową na wyjścia D8,D9,D10,D11 (według oznaczeń arduino! czyli są to piny: 14,15,16,17)
Schemat drabinki:
[
attachment=7235]
Jeśli chodzi o używanie biblioteki, potwierdzam nie musisz nic w niej grzebać. Przykładowy program także znajduje się w archiwum.
Można tak... generuję co 5 sekund ramkę ze swoim znakiem i koordynatami.
Kod:
#include <Arduino.h>
#include "ArduinoQAPRS.h"
char * packet_buffer = " \n ";
char from_addr[] = "SQ9MDD"; //swój znak
char dest_addr[] = "APZQAP"; //adres przeznaczenia
char relays[] = "WIDE2 1"; //sciezka packet
int b = 0;
void setup(){
// inicjalizacja
// pin 3 to sensePin [wejscie] - 1 oznacza brak mozliwosci nadawania
// pin 2 to txPin [wyjscie] - wyan wysko w momencie rozpoczecia nadawania
QAPRS.init(2,3);
}
void loop() {
b++;
sprintf(packet_buffer,"!5215.68N/02057.48E;# %04u",b);
QAPRS.send(from_addr, '0', dest_addr, '0', "WIDE2 1", packet_buffer);
delay(5000);
}
Masz Ryśku gotową płytkę testową którą własnie wydrukowałem i testuję, schematu do niej nie robiłem... może ktoś ma na to czas to to zrobi.
Jeśli będzie jakiś problem to chętnie pomogę.
Dzięki za wyjaśnienia.
Jeszcze tylko pytanie naprowadzające....co zasila stabilizator +5V, nie wkradł się błąd?
Rysio!
Tam jest goldpin po lewej do podpiecia zasilania... ale błędów jest więcej jak montowałem płytkę to zauważyłem wiszącą jedną nogę kondensatora przy kwarcu. Można by dorobić jakąś regulację poziomu AFSK. No i detekcję SQL powinienem inaczej rozwiązać bo jakoś to od tyłu strony zrobione jest.
Płytke robiłem na szybkości wczoraj, rano poprawiłem nocne błędy wypaliłem i pomiędzy spotkaniem w Skierniewicach a wizytą u klienta zmontowałem i uruchomiłem.
Wracając do biblioteki można samemu napisać obslugę carier detect i PTT jeśli komuś nie jest wygodnie polegać na tym co dostarcza biblioteka. Wtedy zamiast definiowania pinów podczas inicjalizacji, należy tam wpisać 0.
Jest tak:
Może być tak:
Przy okazji pytanie do bawiących się Arduino dłużej, jesli wezmę gołego procka to muszę sam ustawić fusebity przed wypaleniem bootloadera?
Robi to arduino automatycznie?
A jesli ktos z was robi to ręcznie to czego najczęściej używacie?
Teraz ja Ci podpowiem.
Jeśli zdeklarujesz programowaną płytę jako tą która używasz, oczywiście w trybie Arduino ISP, to wtedy fusebity wgrają Ci się automatycznie takie same jak masz w płycie podstawowej. Arduino jest tylko programatorem z programem programującym. Widziana jednak Twoja płyta jako np. Arduino Deumilanowe jest płytą programującą. Wcale nie musi to być drugie Arduino, u mnie jest to płytka z podstawkami. Fusebuty są zdeklarowane w katalogu hardware/arduino/boards.txt.
Możesz też sporządzić sobie oddzielny plik, dotyczący swojego konkretnego procesora, u mnie jest to też Atmega 328 i nie trzeba wgrywać fuse bitów wcale, wtedy wykorzystujesz całą pamięć procesora. Ale te informacje muszą jednak być zawarte właśnie w pliku konfiguracyjnym. U mnie jest to tak:
Cytat:#################################################################
atmega328p16.name=ATmega328P @ 16 MHz in Stand Alone (w/ Arduino as ISP)
atmega328p16.upload.protocol=stk500
atmega328p16.upload.maximum_size=32768
atmega328.upload.speed=57600
atmega328p16.upload.using=arduino:arduinoisp
atmega328p16.bootloader.low_fuses=0xFF
atmega328p16.bootloader.high_fuses=0xDE
atmega328p16.bootloader.extended_fuses=0x05
####atmega328p16.bootloader.extended_fuses=0x07
atmega328p16.bootloader.path=atmega
atmega328p16.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328p16.bootloader.unlock_bits=0x3F
atmega328p16.bootloader.lock_bits=0x0F
atmega328p16.build.mcu=atmega328p
atmega328p16.build.f_cpu=16000000L
atmega328p16.build.core=arduino
atmega328p16.build.variant=standard
#################################################################
wtedy Twój kompilator "widzi" niejako drugą płytę, czyli programowany procesor.
Programujesz po ISP i nie jest Ci potrzebny bootloader do niczego więcej. Oprogramowanie możesz zmieniać wielokrotnie, ale kontakt z procesorem jedynie poprzez ISP.
We wcześniejszych swoich postach postulowałem o skuszenie się na oddzielny programator, tylko do Arduino i właśnie do takiego programowania, ale cóż...można programowac przecież po USB prościej, z ustawianiem fusebitów.
Wszystkie te mądrości wziąłem z netu, nie pamiętam jednak skąd, mam jednak ściągę zapisaną w PDF w oryginale. Podaj adres emailowy to podeślę bezpośrednio, nie wypada chyba jednak podawać tego publicznie. Chyba jasno wytłumaczyłem o co mi chodziło.
Rysio!
Przejęzyczyłem się tu:
Widziana jednak Twoja płyta jako np. Arduino Deumilanowe jest płytą programującą.
Ma być ....płytą programowaną.
To z pośpiecu "palcowania"....przepraszam.
Rysio!
Dziękuję za odpowiedź.
Mniejsze procesory (tiny2313) programuję normalnie poprzez ISP wgrywałem też w ten sposób bootloadera do ATMega328P jednakże wcześniej ustawiałem fusebity tak by to pasowało do płytki którą wybierałem w boards.
Książka o arduino w języku polskim Spraw, by rzeczy przemówiły. Programowanie urządzeń elektronicznych z wykorzystaniem Arduino cena od 55 do 80zł zakupiłem i czekam na nią. Jest dostępny do niej spis treści.