Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'nano'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 5 wyników

  1. RoSOZaPoLas to drugi robot nanosumo, którego zrobiliśmy razem z Pojemnikiem. Aktualnie jest na przymusowej emeryturze ze względu na stan techniczny, ale miewał swoje wielkie chwile zawodach. Jak każda nasza konstrukcja i ta ma bardzo kreatywną nazwę. Tym razem jest to Robot Szukający Oponentów Za Pomocą Laserów. Główną różnicą względem poprzednika jest zmiana taktyki na pozostanie na ringu. Zamiast gry na czas, robot stara się wypchnąć przeciwnika. MECHANIKA Napęd: Po długim czasie szukania gotowych silniczków z przekładnią zdecydowaliśmy się wykonać je samemu z serwomechanizmów dziewięcio-gramowych. Do silnika przymocowaliśmy blaszkę i dwie ośki dające oparcie zębatkom. Trzecia, najmniejsza zębatka trzyma się wyłącznie na wale silnika. Dużo czasu zajęło nam precyzyjne zamocowanie osiek, aby przełożenia nie stawiały zbyt dużych oporów (początkowo silnik nawet nie był w stanie ruszyć). Miniaturowe felgi wytoczyliśmy ze stali, podobnie jak formy do odlania oponek. Silikonowe ogumienie dało nadspodziewanie dobrą przyczepność - robot był praktycznie niemożliwy do przepchnięcia, o ile nie był mocno uderzony z rozpędu lub podważony. Koło zamontowaliśmy na wcisk na najbardziej zewnętrznej zębatce i zabezpieczyliśmy przed wypadnięciem aluminiowym krążkiem przyklejonym do wału. Oba zestawy wyszły trochę krzywe, ale były sprawne i mieściły się regulaminowych wymiarach. Konstrukcja: Silniki połączyliśmy dwoma kawałkami laminatu, kolejne dwa fragmenty stały się pługiem do podważania przeciwników i podtrzymaniem prawego czujnika odległości. Lewy czujnik podparliśmy kawałkiem żeńskiego goldpina. Z uwagi na dużą ilość przewodów i zupełnie odsłonięte elementy, prawą stronę zabudowaliśmy laminatem oklejonym czarną taśmą izolacyjną. Jedyną płytkę przylutowaliśmy do diody prostowniczej aby mieć ułatwiony dostęp do wewnętrznych elementów (wystarczało odgiąć drucik zamiast odrywać klej). Z tyłu znaleźliśmy miejsce na odbiornik IR, na który przykleiliśmy akumulator. Gdy robot był już praktycznie skończony, we wszystkie wolne przestrzenie wkleiliśmy ołowiane kulki wędkarskie aby zwiększyć masę. Ostatecznie wynosiła ona około 20g. ELEKTRONIKA Czujniki: Na czujniki odległości wybraliśmy trzy układy VL53L1, wygrane wcześniej na Robocompie w 2018 roku. Pomimo niezbyt optymalnej konfiguracji, wykrywają przeciwnika z odległości 15 cm z częstotliwością 50Hz. Z przodu zamontowaliśmy dwa popularne KTIR-y do wykrywania krawędzi ringu. Ostatnim czujnikiem robota jest odbiornik IR służący do wygodnego startowania. Działa tak samo jak w poprzedniku, czyli reaguje na jakikolwiek sygnał. Zasilanie: Zastosowaliśmy akumulator Li-Pol 150mAh 1S 30C firmy JJRC produkowany z myślą o dronach. Po usunięciu wszystkich folii ochronnych i oryginalnych przewodów udało nam się go zmieścić razem z płytką zabezpieczającą. Jedno ładowanie wystarczało nawet na bardziej wyczerpujące zawody. Płytka: Z uwagi na małą ilość miejsca pozostawionego na płytkę, zmuszeni byliśmy do miniaturyzacji każdego elementu i wybierania go w najmniejszej lutowalnej ręcznie obudowie. Sercem robota byłą atmega328 (VGFN-28, 4x4mm) taktowana wewnętrznym generatorem RC. Programowana jest magistralą SPI poprzez każdorazowe przylutowanie 5 przewodów. Po kilkudziesięciu przylutowaniach, zaczęły odpadać pola lutownicze, więc musieliśmy lutować do ścieżek. Nie polecamy takiego rozwiązania, pomimo tego, że zajmuje mało miejsca. Aby móc komunikować się magistralą I2C z każdym czujnikiem odległości, zastosowaliśmy demultiplekser PCA9547 (HVQFN-24, 4x4mm), rozwiązując w ten sposób konflikt adresów. Do sterowania silnikami użyliśmy ponownie sterownika A3901 (DFN-10, 3x3mm). Wszystkie elementy pasywne i diody LED wybraliśmy w obudowach 0402. Wymiary płytki to zaledwie 12x10mm. Rozwiązywanie problemów oprogramowaniem Niestety nie wszystko wyszło tak idealnie jak to wygląda w opisie. Po pierwsze, aby robot jechał prosto, jeden silnik musiał otrzymywać tylko połowę mocy, aby zrekompensować opory powstające w przekładni drugiego silnika. Po drugie, z powodu błędów projektowych nie mogliśmy uruchomić demultipleksera magistrali I2C. Ostatecznie robot działał tylko z jednym, środkowym czujnikiem i jechał w stronę przeciwnika “wężykiem” - raz po zgubieniu go skręcał w lewo, a następnym razem w prawo. Metoda ta działała na tyle dobrze, że nie widzieliśmy potrzeby upychania kolejnej płytki w robocie, by korzystać ze wszystkich czujników. Kod został napisany w Arduino IDE, z powodu obecności gotowych bibliotek do czujników i braku czasu na pisanie po rejestrach. WNIOSKI Jak na pierwszego poważnego robota w tej kategorii jesteśmy bardzo zadowoleni z wyników na zawodach. Pierwsze miejsca na Bałtyckich Bitwach Robotów 2019 i Robocompie 2019 uważamy za duży sukces (na tych drugich nie straciliśmy nawet punktu). Niestety, na Sumo Challange 2019 w półfinale robot upadł z dużej wysokości i dosłownie rozpadł się na kawałki (ostatecznie był czwarty, sam upadek widać na ostatnim filmie). Próby reanimacji zakończyły się niepowodzeniem, więc projekt przeszedł na emeryturę. Aktualnie pracujemy nad kolejnym robotem w kategorii, który pozbawiony będzie wrodzonych błędów poprzednika i lepiej zniesie eksploatację. Filmy z zawodów:
  2. Dzień dobry mam problem z klonem arduboyem którego sam zbudowałem. Problem występuje podczas kompilacji programu i wyskakuje taki błąd. Gierkę pobierałem z tej strony https://github.com/TEAMarg/ID-46-Arduventure/releases/tag/v1.0 i przeniosłem folder ARDU_AB na pulpit z tymi plikami i podczas wgrywania wywala mi taki błąd. Mikro-kontroler to arduino nano wraz z oled 128x64. Z góry będę wdzięczny In file included from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\io.h:99:0, from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\pgmspace.h:90, from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:28, from C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.h:5, from C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:1: C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In function 'void TIMER4_OVF_vect()': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:4:24: error: 'OCR4A' was not declared in this scope ATMLIB_CONSTRUCT_ISR(OCR4A) ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:4:3: note: in expansion of macro 'ATMLIB_CONSTRUCT_ISR' ATMLIB_CONSTRUCT_ISR(OCR4A) ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In member function 'void ATMsynth::play(const byte*)': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:112:3: error: 'TIMSK4' was not declared in this scope TIMSK4 = 0b00000000;// ensure interrupt is disabled ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:127:3: error: 'TCCR4A' was not declared in this scope TCCR4A = 0b01000010; // Fast-PWM 8-bit ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:128:3: error: 'TCCR4B' was not declared in this scope TCCR4B = 0b00000001; // 62500Hz ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:129:3: error: 'OCR4C' was not declared in this scope OCR4C = 0xFF; // Resolution to 8-bit (TOP=0xFF) ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:130:3: error: 'OCR4A' was not declared in this scope OCR4A = 0x80; ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In member function 'void ATMsynth::stop()': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:152:3: error: 'TIMSK4' was not declared in this scope TIMSK4 = 0; // Disable interrupt ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In member function 'void ATMsynth::playPause()': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:159:3: error: 'TIMSK4' was not declared in this scope TIMSK4 = TIMSK4 ^ 0b00000100; // toggle disable/enable interrupt ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In function 'void ATM_playroutine()': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:424:9: error: 'TIMSK4' was not declared in this scope TIMSK4 = 0; // Disable interrupt ^ exit status 1 Błąd kompilacji dla płytki Arduino Nano.
  3. Dzień Dobry wszystkim, założyłem ten temat ponieważ nigdzie nie moge znaleść odpowiedzi na swoje pytanie a mianowicie, dlaczego nie otrzymuje adresu konwertera i2c ? Po załączonych zdjęciach widac ze magistrala i2c nie kończy transmisji , ktoś byłby to w stanie wytłumaczyc ?
  4. Witam, Mam następujący problem. Mianowicie chce wypalić bootloader w "arduino" nano przy pomocy arduino leonardo, lecz po uruchomieniu wypalania otrzymuje taki komunikat błędu i nie wiem co z tym zrobić sprawdzałem połączenia. Połączenia do "arduino" nano robiłem przy pomocy zdjęcia poniżej. Arduino:1.8.9 (Windows Store 1.8.21.0) (Windows 10), Płytka:"Arduino Nano, ATmega328P" avrdude: ser_open(): can't open device "\\.\COM6": Nie mo�na odnale�� okre�lonego pliku. Błąd przy wgrywaniu bootloadera.
  5. Wszystko działa dobrze, ale gdy temperatura spadnie poniżej 0 to pokazuje jakiś dziwny odczyt. Siedzę nad tym już drugi dzień i nie wiem o co chodzi. Używam arduino nano. Z góry dziękuję za pomoc #include <ModbusRtu.h> #include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #define SLAVE_ID 1 #define BUTTON_PIN 7 #define RS_PIN 5 #define DS_PIN 10 #define SUN_PIN A1 #define TEMP_REG 0 #define SUN_REG 1 uint16_t au16data[9] = { 9999, 9999, 2, 3, 2018, 11, 16, 8, 7}; Modbus slave(SLAVE_ID, 0, RS_PIN); OneWire oneWire(DS_PIN); DallasTemperature sensors(&oneWire); DeviceAddress ds18b20 = { 0x28, 0x90, 0x63, 0x45, 0x92, 0x06, 0x02, 0xE0 }; //1 //DeviceAddress ds18b20 = { 0x28, 0x68, 0xA6, 0x45, 0x92, 0x03, 0x02, 0x3C }; //2 //DeviceAddress ds18b20 = { 0x28, 0x12, 0xC6, 0x45, 0x92, 0x08, 0x02, 0x59 }; //3 LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); int temperature = 9999; unsigned long getTempTime = 0; unsigned long lastUpdate = 0; unsigned long buttonTime = 0; int buttonHoldTime = 0; byte sun = 0; bool lcdLight = true; void setup() { sensors.begin(); slave.begin( 9600 ); // baud-rate at 9600 lcd.begin(16,2); pinMode(BUTTON_PIN, INPUT); } void loop() { temperature = readTemp(); if(temperature != NULL || temperature < 200) au16data[TEMP_REG] = temperature; sun = readSun(); if(sun != NULL) au16data[SUN_REG] = sun; slave.poll(au16data, 16); if(millis()-lastUpdate >= 1500UL) { lcd.clear(); printTime(); lcd.setCursor(0, 1); printPage0(); lastUpdate = millis(); } if(digitalRead(BUTTON_PIN) == HIGH){ if(buttonTime == 0) buttonTime = millis(); buttonHoldTime += millis()-buttonTime; buttonTime = millis(); } else{ if(buttonHoldTime > 750){ if(lcdLight == true) lcdLight = false; else lcdLight = true; } else if(buttonHoldTime < 500 && buttonHoldTime > 50) ; buttonHoldTime = 0; buttonTime = 0; } if(lcdLight == true) lcd.backlight(); else lcd.noBacklight(); ////////////////////////////////////// } int readTemp(){ if(millis()-getTempTime >= 1000UL){ sensors.requestTemperatures(); getTempTime = millis(); return sensors.getTempC(ds18b20)*10; } else return temperature; } byte readSun(){ return map(analogRead(SUN_PIN), 0, 1023, 0, 100); } void printTime(){ if(au16data[7] < 10) lcd.print(0); lcd.print(au16data[7]); lcd.print(":"); if(au16data[8] < 10) lcd.print(0); lcd.print(au16data[8]); lcd.print(" "); lcd.print(au16data[6]); lcd.print("."); lcd.print(au16data[5]); lcd.print("."); lcd.print(au16data[4]); } void printPage0(){ lcd.print("T:"); lcd.print(au16data[TEMP_REG]/10); lcd.print("."); lcd.print(au16data[TEMP_REG]-au16data[TEMP_REG]/10*10); lcd.print("*C"); lcd.print(" "); lcd.print("SUN:"); lcd.print(au16data[SUN_REG]); lcd.print("%"); }
×
×
  • Utwórz nowe...