Atmega8 i najnowsze Arduino IDE (1.6.6)

Kiedy zachciałem wgrywać programy z Arduino IDE na Atmegę8 pojawił się problem – większość opisów jak dodać obsługę tego AVRa dotyczyła starego IDE albo i tak nie działało z najświeższymi wersjami. Najpierw sam coś posklejałem, później znalazłem na githubie optiboot, niestety z Atmega8 nie działał „out-of-box” ponieważ ArduinoIDE chciało korzystać z extended_fuses, a i sam bootloader w wersji skompilowanej nie był w paczce. Z tym też sobie poradziłem, wynik jest do pobrania jako załącznik do poprzedniego postu po angielsku. W końcu jednak trafiłem na fajne repozytorium, które daje bardzo dobre wsparcie dla mniej popularnych Atmeg i dodatkowo wystarczy tylko w Preferencjach IDE podać lokalizację pliku json. Wszystko tutaj: https://github.com/sleemanj/optiboot

Opublikowano Arduino, Atmega, embedded | Skomentuj

ARDUINO 1.6.6 with Optiboot and Atmega8

Recent versions of Arduino support custom boards by adding URL of json with package and in this way you can put address https://github.com/Optiboot/optiboot/releases/download/v6.2/package_optiboot_optiboot-additional_index.json and get the optiboot bootloaders BUT if want to use Atmega8 (at moment of writing this post) you will receive error because of avrdude command line has declared extended_fuses which do not exist  in Atmega8. This is the first problem. Second problem is that you need to compile optiboot for Atmega8 for your own because it is not in the package.

I solved both problems and made a rar file which you need only to extract to Arduino’s sketch folder. hardware.rar

It is tested with Arduino 1.6.6
UPDATE: I found fork of optiboot repository with good support for Atmega8 and working fine with latest Arduino IDE. See this page: https://github.com/sleemanj/optiboot

Opublikowano Arduino, Atmega, embedded | Skomentuj

Atmega internal oscillator

Znów wyszło, że powinienem czytać noty katalogowe, oszczędziłoby to czasu. Buduję nakładkę na RaspberryPi, tzw. shielda, która to będzie sterownikiem dwóch serwomechanizmów i jednej lampy. Serwami można oczywiście sterować bezpośrednio z Maliny, ale z racji, iż nie jest to system czasu rzeczywistego, to przy bardzo dużym obciążeniu pozycja serwa była bardziej losowa niż zadana. Cały projekt kiedyś opiszę, a teraz wracając do sedna – komunikacja Atmegi8 którą wykorzystałem z RPi odbywać się miała przez UART i gdy testowałem to poza układem wszystko działało (a trzeba dodać, że postanowiłem korzystać z wewnętrznego oscylatora, bez zewnętrznych kwarców). Problem wyszedł na jaw po włożeniu Atmegi w układ gdzie zasilana była nie 5V, a 3.3V. Okazało się, że taktowanie na tyle się rozjechało, że transmisja 9600 nie była możliwa. Tu pojawiają się dwie opcje – kalibracja wewnętrznego oscylatora albo dołożenie kwarcu. Estetyczniej byłoby pobawić się w kalibrację bo na płytce nie przewidziałem miejsca żeby coś dołożyć koło nóżek XTAL, ale nigdy tego nie robiłem i wolałem by estetyka ucierpiała i 70gr które wydałem na kwarc. Podsumowując, jeśli chce się korzystać z wewnętrznego oscylatora należy pamiętać, że przykładowo Atmega8 jest kalibrowana dla 5V przy 25*C, przy taktowaniu 8MHz całkiem w porządku jest ustawić UART na 9600bps. Polecam stronę z tabelami ułatwiającymi dobór prędkości transmisji do taktowania: WormFood’s AVR Baud Rate Calculato

Opublikowano Arduino, Atmega, embedded | Skomentuj

Nowe progi i konserwacja podłogi – Punto 1

Progi i podłoga wymagały już interwencji blacharza. Jak później na przeglądach stwierdzono, podobno całkiem sensowanie praca została wykonana.
Po odbiorze samochodu zająłem się konserwacją podłogi i próbą, średnio udaną, zaszpachlowania miejsc spawania progów.

Do tematu jeszcze powrócę.

Opublikowano Fiat Punto mk1 | Skomentuj

Autologin i auto start Xów

Chciałem zrobić coś na kształt „kiosku” więc potrzebny jest autostart Xów, w moim wypadku LXDE. Można zainstalować np. LightDM, ale chciałem uniknąć dodatkowych programów które wiszą w pamięci i nie instalować kolejnych zależności. Na stronie www.raspberrypi-spy.co.uk/2012/06/auto-login-auto-load-lxde znalazłem to co potrzeba. Stworzyłem użytkownika dedykowanego dla Xów, jego konto zostaje zalogowane automatycznie i wykonuje się plik .bashrc (powłoka dla tego usera to Bash), w którym to na końcu startuję Xy. Następnie co ma się uruchamiać to już skonfigurować trzeba z uwzględnieniem używanych okien.
Tak więc najpierw tworzymy użytkownika, w Bananian (podobnie w Raspbian i Debian) jest to: adduser xy, następnie edytujemy plik /etc/inittab. Trzeba znaleźć i zakomentować linię: 1:2345:respawn:/sbin/getty 115200 tty1 i wkleić następującą: 1:2345:respawn:/bin/login -f xy tty1 /dev/tty1 2>&1 gdzie „xy” to nazwa użytkownika. Na końcu pliku /etc/profile umieściłem linie: if [ $USER == "xy" ]; then
sleep 1 && startx &
fi
. Po sekundzie odpalają się domyślne Xy dla użytkownika „xy”. Opis zadziała na Raspberry Pi, Banana Pi i innych systemach Debianowych.

Opublikowano RaspberryPi i podobne, Skrypty, kody źródłowe | 1 komentarz

Wygaszanie ekranu na konsoli i Xach

Jeśli na RaspberryPi albo BananaPi pod Debianem potrzebujemy zrobić jakiś ekran informacyjny warto zadbać by się ekran nie wygaszał po okresie bezczynności. Zwłaszcza, że nie zawsze chcę się „obudzić”, tak jak ja miałem w Xach na BPi.
Na stronie trafiłem na wątek który ma rozwiązanie.
Zmodyfikowałem /etc/kbd/config ustawiając na zero dwie wartości:
BLANK_TIME=0 (Was 30)
POWERDOWN_TIME=0

Następnie tylko /etc/init.d/kbd restart
Dzięki temu konsola przestała gasnąć, żeby Xy się nie usypiały, w autostarcie LXDE dodałem następujące linie:
xset s off
xset -dpms
xset s noblank

Opublikowano RaspberryPi i podobne, Skrypty, kody źródłowe | Skomentuj

Arduino jako zabezpieczenie przed zbyt głębokim rozładowaniem akumulatora

Ostatnio zaistniała u mnie potrzeba zbudowania urządzenia które zapobiegnie zbyt głębokiemu rozładowaniu akumulatora. Założenia są dość proste – cykliczny monitoring napięcia i odcięcie odbiorników w momencie, gdy napięcie spadnie poniżej zadanego progu. Ponadto sygnalizacja dźwiękowa o zbyt niskim napięciu i bardzo ważne: optymalizacja zużycia prądu przez samo urządzenie. Na allegro można znaleźć wiele takich urządzeń, począwszy od bardzo prymitywnych jak przekaźnik z rezystorem, po „pudełeczka” z niewiadomą zawartością. Szkoda, że mało który produkt ma podane zużycie prądu. Z racji, że na elektronice nie znam się na tyle by zbudować takie urządzenie z wykorzystaniem podstawowych elementów jak np. tranzystory itp., postanowiłem oprzeć swoje rozwiązanie na Arduino Pro Mini, a dokładniej na klonie z eBaya. Budowę własnego zabezpieczenia zacząłem od wyszukania informacji jak zmierzyć napięcie przy użyciu Arduino – wyjście jest bardzo proste, wystarczy dzielnik napięć z rezystorów i podpięcie tego pod pin ADC – skorzystałem z przykładu na stronie https://www.udemy.com/blog/arduino-voltmeter/. Wybrałem największe rezystancje jakie miałem w zapasie żeby maksymalnie zmniejszyć prąd. Następnym krokiem było wyszukanie przekaźnika o maksymalnie małym poborze prądu przez cewkę – przekaźnik który dostałem po podłączeniu przez rezystor pobiera około 30mA (bez rezystora przeszło 60mA) (pobór prądu z poszczególnych elementów sumarycznie okazał się mniejszy, pewnie jest na to jakieś wyjaśnienie…). Ostatni krok to optymalizacja samego Arduino – poszczególne elementy można usypiać, ale jest z tym trochę zabawy, skorzystałem z bardzo prostej w użyciu biblioteki którą używa się prawie jak zwykłego „delay()” z tą różnicą, że w trakcie czekania duża część układu śpi. Mój układ w trakcie spania, z wyłączonym przekaźnikiem, zużywał 5.7mA. Muszę dodać, iż w celu oszczędności również dioda Power z Arduino została usunięta. Wspomniana biblioteka jest dostępna tutaj https://code.google.com/p/narcoleptic/. Problemy jakie napotkałem: zużycie prądu przez przekaźnik i błąd pomiaru napięcia*. Pomysły mam takie by przekaźnik zastąpić tranzystorem MOSFET, ale chcę najpierw dokładniej poznać maksymalne obciążenia jakiemu będzie poddawany akumulator. Błąd pomiaru napięcia wynika z wahań napięcia zasilania Arduino, zastosowany stabilizator (12V -> 5V) ma duży zapas mocy, jednak włączenie przekaźnika i wyłączenie można zauważyć w wartościach mierzonego napięcia. Pomysł jest taki by zrobić osobne źródło które będzie napięciem referencyjnym – myślałem o zwykłym stabilizatorze na 3.3V, bez żadnych innych obciążeń, który będzie na kolejnym pinie dawał wzorcowe napięcie. Na tę chwilę próbuję skorzystać z referencyjnego 1.1V ze sposobu opisanego tutaj: http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/ Przechodząc do rzeczy, całość działa następująco: po uruchomieniu sygnał dźwiękowy – wiadomo, że działa; następnie pomiar napięcia i jeśli powyżej 10.70V to odpalamy przekaźnik i śpimy przez następne 5 minut, po 5 minutach kolejna kontrola; gdy napięcie będzie zbyt niskie „pikamy” kilka razy, odłączamy odbiorniki i śpimy przez 5 minut; następnie znów pikamy albo uruchamiamy przekaźnik jeśli sytuacja się poprawiła. Kod źródłowy i fotki (w finalnej wersji jest inny rezystor przed przekaźnikiem i Arduino nie ma jednej diody):
Aktualizacja: *) problem z pomiarem wyglądał tak, że po włączeniu przekaźnika wartość mierzonego napięcia by zaniżona. Po wielu próbach diagnozy odkryłem, że winowajcą był źle dobrany bezpiecznik. Początkowe zabezpiecznie 100mA okazało się za małe, stąd spadek napięcia. Większy bezpiecznik i zastosowanie wewnętrznego napięcia referencyjnego 1.1V daje świetne rezultaty – pomiar z Arduino zgadza się prawie idealnie z pomiarem z multimetru.

Fotografie ukończonego układu:
Zabezpieczenie akumulatora góra

Zabezpieczenie akumulatora dół

 

AKTUALIZACJA: popełniłem tu błąd karygodny, a mianowicie przekaźnik zasilam z pinu mikrokontrolera – NIE WOLNO TAK! Jeszcze wszystko działa i ma się dobrze, może ten rezystor mnie uratował, ale należy to poprawić i tak nie robić!

Opublikowano Arduino, Atmega, embedded | 2 komentarze

Raspberry Pi i obsługa webcamów

Raspberry Pi całkiem dobrze sobie radzi z kamerkami na USB – czy to Debian czy Arch. Niedawno próbowałem uruchomić kamerę w identyczny sposób jak kilka tygodni wcześniej i niestety to co działało, działać przestało. Zmienił się sposób obsługi USB czy coś takiego 😉 Tak czy inaczej, małą sztuczką dzięki której kamery działają bez zająknięcia jest wyedytowanie pliku na partycji /boot na karcie SD i dodanie jednej linijki. Restart maliny i wszystko gra.

 

Opublikowano RaspberryPi i podobne | Skomentuj

Antistorm.eu i automatyczne wyłączanie serwera

Skrypt wyłączający serwer po zgłoszeniu burzy w regionie przez antistorm.eu

 

 

Opublikowano Skrypty, kody źródłowe | Skomentuj

Monitoring temperatur – skrypty

Dla nowego projektu wystarczą trzy skrypty – 1. który stworzy bazę sqlite (tak na prawdę bez bazy SQL się obędzie), 2. drugi skrypt tworzy bazę RRDToola i skrypt numer 4. który wrzucamy do crona i ściąga on temperaturę z dwóch czujników, następnie odczyty wrzuca do bazy SQL i bazy RRD, a następnie rysuje wykresy.

Baza SQL nie jest wymagana, ale przydać się może – łatwiej potem cokolwiek zrobić z tymi danymi.

1. Stwórz bazę sqlite

 

1a. Skonwertuj stara baze do nowej (skrypt trzeba zaadoptować, mnie posłużył on do skopiowania danych z inaczej zaplanowanej tabeli sql)

 

2. Stwórz bazę RRD

 

3. Wypełnij bazę RRD wpisami z bazy SQL – jeśli mamy bazę sql z danymi, a bazę rrd pustą, to ten skrypt pomoże ją wypełnić

 

4. Aktualizuj temperaturę

 

5. Zrób wykresy

 

 

6. digitemp.conf

 

Opublikowano Skrypty, kody źródłowe | Skomentuj

Skrypt robiący kopie plików konfiguracyjnych dbackup

 

Opublikowano Skrypty, kody źródłowe | Skomentuj

JDownloader+MediaTomb+TV

Parę screenów z połączenia serwera na FreeBSD z uruchomionymi: JDownloader + MediaTomb, a to połączone ethernetem z TV Samsung.

JDownloader na Javie Suna, DiabloJRE w tym wydaniu nie sprawdzało się, pobrania często przechodziły w stan deactivate z błędnym komunikatem, że jest problem z zapisem na dysku. MediaTomb z łatką dzięki której może zaserwować napisy, bo telewizory Samsunga wymagają paru dodatków których nie ma w standardzie DLNA.

JD-Dodawanie linków

Dodawanie linków przez www znacznie upraszcza sprawę.

JD-Kontrola linków

JD-Pobieranie

W trakcie pobierania

JD-Telefon

JD-Telefon2

Można zarządzać i dodawać linki także za pomocą telefonu komórkowego.

Odtwarzarka w TV – wideo, muzyka i obrazki 😉

Pobrane filmy JD od razu rozpakowuje i umieszcza w tym katalogu dostępnym na TV

🙂

Opublikowano Inne sprzęty | Skomentuj

Mądrzejszy wyłącznik czasowy

Dla zaoszczędzenia paru złotych wyłączam serwer, acesspointa, modem i switcha na noc za pomocą wyłącznika czasowego. Zaprogramowany by w każdy dzień wyłączał prąd o danej godzinie i rano go włączał z powrotem, na serwerze cron odpowiednio wcześniej robił shutdown. W momencie, gdy trzeba było serwer zostawić włączony na noc wiązało się to z wycieczką do serwera i przestawianie wyłącznika, stąd ta mała modyfikacja: dodatkowy przekaźnik sterowany napięciem 12V z serwera – gdy ten jest włączony, napięcie idzie na cewkę przekaźnika który łączy fazę z pominięciem elektroniki wyłącznika czasowego. Dlatego wszystko zgaśnie dopiero, gdy serwer się wyłączy, a tym łatwo zarządzać przez ssh.

Otwart wyłącznik z dodatkowym przekaźnikiemDołożony przekaźnik jest tylko 10A, ale do tego zastosowania jest i tak z wielkim zapasem.

Wyłącznik czasowy po modyfikacjiAKTUALIZACJA: to było dawno, teraz jestem mądrzejszy i wiem, że między piny cewki przekaźnika trzeba dać diodę (oczywiście zaporowo). Zapobiegnie ona bardzo dużym impulsom napięcia które się potrafi indukować. Co prawda przez kilka lat użytkowania nic się nie uszkodziło, ale lepiej nie ryzykować.

Opublikowano Inne sprzęty | Skomentuj

Patch do MediaTomb – SamsungTV & srt subtitles

Patch do programu MediaTomb który umożliwia odtwarzanie napisów w formacie srt na telewizorach Samsung z użyciem standardu DLNA.

Pobrany z http://sourceforge.net a stworzony przez marcin1j.

Zamieszczam jakby tam „zezarło”

patch-samsung_video_subtitles

Opublikowano Inne sprzęty, Skrypty, kody źródłowe | Skomentuj

FreeBSD i portupgrade

Świetna sprawa do aktualizacji wszystkich zainstalowanych portów. Sprawdzi co trzeba zaktualizować, sprawdzi zależności. Zrobi prawie wszystko i więcej z dobrymi przełącznikami o których nigdy nie pamiętam, dlatego tu zapiszę:

portsnap fetch update
portversion -l "<"
portupgrade -cavRr

Słowo objaśnienia:
portsnap – ściągnie i zaktualizuje drzewo portów
portversion – opcjonalne – pokaże co zostanie zaktualizowane
portupgrade – dokona aktualizacji, teraz przełączniki: c-wyświetli wszystkie opcje konfiguracyjne na początku, dzięki temu aktualizację można zostawić bez nadzoru, nie utknie w połowie (mała literka c sprawi, że menu konfiguracyjne pojawi się tylko dla portów jeszcze nie konfigurowanych lub takich gdzie są nowe opcje, duża literka C uruchomi dla wszystkich), a-aktualizuje wszystkie porty, v-gadatliwe informowanie o czynnościach, rR-zainstaluje zależności potrzebne do kompilacji portu i zależności potrzebne do działania portu

Opublikowano Skrypty, kody źródłowe | Skomentuj

Dreambox-Linbox 500s + chłodzenie

Grzał się IBMowski PowerPC i grzał się scalak w głowicy, stąd doklejone radiatorki z pastą Zalman ZM-STG1, mocowanie na SuperGlue :>
Po dłuższym oglądaniu zaczynał czasem wskakiwać BER, a przy słuchaniu mp3 potrafiło zacząć ścinać, więc może pomoże 😛

Opublikowano Inne sprzęty | Skomentuj

DirCzeker 2.0

Opublikowano Skrypty, kody źródłowe | Skomentuj

„Skarbeniek113” :P

Pochwalę się machiną moją, nową, cudną, miodną :>

  • AMD Phenom II x6 1090T @ 3.2GHz Black Edition
  • płytka Asus Crosshair IV Formula
  • 960GB RAID 0 (2xSamsung 322HJ + Samsung 322GJ)
  • 2x2GB Patriot G-series 1600MHz Gamer AMD Black Edition z CL7 (z listy QVL Asusa dla tego modelu płyty)
  • nagrywarka Asus DRW-24B1LT (bo ta płyta nie ma już gniazd IDE i musiałem zmienić na nagrywarkę SATA)

pozostałe elementy bez zmian 😉

Względem poprzedniej płyty (Asus M4N72-E) na nowej w 3Dmarku Vantage, procek ma trochę więcej punktów.

Chyba największy gadżet w tej płytce (zaraz po OC Station – szkoda, że w zestawie nie ma) to możliwość podglądu parametrów płyty i jej przetaktowywanie na zdalnym komputerze dzięki funkcji ROG Connect – podłączasz specjalnym USB w specjalne gniazdko i niezależnie od systemu operacyjnego to działa. Podczas włączania komputera po kolei wyświetla w jakiej fazie jest BIOS, np inicjalizacja cpu, sprawdzenie cpu, ładowanie vga bios, wykrycie dysku itp.

Cóż, co jak co, ale pudełko tu jest najlepsze! Po otwarciu są dwie tacki, na jednej sama płyta, a na drugiej w przegródkach wszystkie kable i inne cuda. Nawet roczna licencja na Kasperskiego…

W gablocie właśnie M4N72-E

Opublikowano Inne sprzęty | 5 komentarzy