Linux Magazine 148

LinuxMagazineCover_148Chcemy podzielić się z Wami informacją o czerwcowym numerze Linux Magazine:

Artykuł na temat Raspberry Pi poświęcony jest możliwym zastosowaniom niedrogiego układu ESP8266.

Materiał wiodący zawiera przegląd edukacyjnych dystrybucji Linuksa omawia systemy Sugar, Uberstudent, Edubuntu, Debian Edu, openSUSE Edu Life i UCS@School, których twórcy odpowiadają na potrzeby nauczycieli. Na dołączonym DVD znajduje się Tails 2.3 zapewniający anonimowość i prywatność w internecie.

Wewnątrz wydania również: monitorowanie systemów przy użyciu Prometheusa, test pięciu narzędzi desktopowych do tworzenia kopii zapasowych: Déjŕ Dup, Back in Time, Sbackup, luckyBackup i Areca Backup, korzystanie z bazy danych SQLite, protokół serwera wyświetlania Wayland, który zastępuje starzejący się protokół graficzny X11, budowanie własnej wyszukiwarki przy użyciu robota webowego Apache Nutch i platformy wyszukiwania Solr, testy narzędzi Term-Highlight 1.8.1, BashBurn 3.1.0, Nikola 7.7.2, Steel 1.1 oraz Ukopp 5.8, analiza przyjaznego dla początkujących systemu do zarządzania konfiguracją oprogramowania Fossil SCM, tworzenie animowanych pokazów slajdów przy użyciu PhotoFilmStripa, wirtualne planetarium Stellarium rozszerzone o nowe obiekty i środowiska, przetwarzanie i organizowanie zdjęć i plików RAW z Corel AfterShot Pro, wyszukiwanie rozmyte w wierszu poleceń z Tre-agrepem oraz inne tematy.

Wydanie jest na Allegro (bezpłatna dostawa): http://allegro.pl/show_item.php?item=6248067234

e-wydanie „Linux Magazine” 5/2016 (poprzedni numer) na Allegro (bez płyty DVD): http://allegro.pl/show_item.php?item=6247977734

tinyBrd: deepSleep, czyli poniżej 1 µA

deepSleep-1TinyBrd od samego początku miał mieć zastosowania w energooszczędnych scenariuszach. Właśnie pojawiła się nowa wersja Nettigo tinyBrd Core, która w bibliotece Battery.h ma oprócz znanej już funkcji sleep, nową funkcję – deepSleep.

Jak nazwa sugeruje usypia ona tinyBrd w taki sposób, że pobór prądu jeszcze bardziej spada. deepSleep w odróżnieniu od „zwykłego” sleep wyłącza również układ watchdoga w procesorze ATtiny84. Konsekwencją tego jest to, że ze takiego trybu pracy może wybudzić tylko przerwanie (pinChangeInterrupt wprowadzone w poprzedniej wersji tinyBrd Core). Nie można podać czasu po jakim tinyBrd sam się wybudzi. Jest to pewna niedogodność, która pozwala tylko w niektórych przypadkach skorzystać z tego trybu. Więc po co się nim w ogóle przejmować? Otóż, odpowiedzią jest pobór prądu. O ile w trybie „zwykłego” sleep tinyBrd pobiera między 4 a 5 µA, to w razie użycia deepSleep pobór prądu spada poniżej 1µA !

Gdzie można użyć tego trybu? Otóż wszędzie tam, gdzie tinyBrd ma czekać przez długi czas na jakieś zdarzenie i wysłać o nim informację. By przetestować ten tryb pracy wymyśliłem sobie projekt czujnika zamknięcia bramy garażowej.

Chcę by Raspberry Pi dostawało informację o każdym otwarciu i zamknięciu drzwi garażowych. Potem pomyślimy o tym by te informacje wysyłać do np Domoticza by ten mógł zareagować gdy drzwi są otwarte zbyt długo. Po co taki alarm? Otóż często w garażu znajdują się różne przyłącza wodno-kanalizacyjne. O ile otwarcie drzwi garażu przez długi czas latem nie stanowi potencjalnego zagrożenia to zostawienie na noc otwartych (lub niedomkniętych) drzwi zimą może być nieprzyjemne  w skutkach. Zamarznięta instalacja to jest duży problem, bo zwykle po jej odmrożeniu trzeba się liczyć z kosztowaną naprawą.

Czytaj dalej

Linux Magazine wydanie 147

Chcemy podzielić się z Wami informacją o nowym numerze Linux Magazine:

LinuxMagazineCover_147Majowe wydanie miesięcznika „Linux Magazine” poświęcone jest  projektom z Raspberry Pi W artykułach wiodących znajdują się instrukcje wykorzystania malinki w roli:

  • serwera Minecrafta,
  • serwera chmur osobistych z platformą Cozy,
  • otwarto źródłowego centrum multimedialnego z popularnym Kodi,
  • a nawet miernika poziomu dźwięku.

Wewnątrz wydania również: Arch Linux: podstawy, szybka instalacja przy użyciu Architect Linuksa lub Arch Anywhere, fascynujące dystrybucje pochodne, a także agent pocztowy OpenSMTPD, automatyczne kopie zapasowe, zestaw narzędzi ELK Stack: Elasticsearch, Logstashi Kibana, analiza rejestrów przepływu ruchu sieciowego, wyższa wydajność dzięki zrównoleglaniu, maszyny wirtualne na pulpicie z Qubes OS, Crystal– język programowania w stylu Ruby’ego, krótkie testy narzędzi Yuck 0.2.1, Uftpd 1.9.1, Guncat 1.01.01, Kiwix 0.9, Miller 2.2.1, Debian Package Search 2.7.5, możliwości cyfrowej stacji roboczej Bitwig Studio 1.3.5 oraz inne tematy. Wszystko w wydaniu 147 Linux Magazine. Do nabycia na Allegro na papierze (wersja drukowana ma dołożoną płytę z Ubuntu 16.04 Xenial Xerus).

Numer z poprzedniego miesiąca (kwiecień) dostępny jest w formie elektronicznej (bez płyty DVD): http://allegro.pl/show_item.php?item=6167019912

ESP8266 robi zdjęcia – ArduCam na ESP8266

ESP8266 z ArduCam

ESP8266 z ArduCam

ArduCam Mini jest dość niszowym produktem. Mała kamerka która możesz podłączyć do Arduino lub ESP8266. Dlaczego to jest możliwe? Otóż ArduCam to nie tylko układ optyczny i przetwornik. To również dedykowany układ CPLD, który zajmuje się obróbką obrazu. Dzięki temu nawet Arduino może przez SPI i I2C odebrać dane z kamery. Przetworzyć to już pewnie nie da rady, ale na kartę SD to może zapisać. ESP8266 ma nieco większe możliwości.

Gdy wpadł nam w ręce testowy układ ArduCam Mini 2 MP postanowiłem  przetestować kamerę – podłączając ją do ESP8266 i udostępniając obraz przez WWW. Dla jasności – ESP ma nieco większe możliwości niż Arduino, ale nadal za wolne i za mało pamięci by robić jakiś zaawansowany streaming. Dlatego tylko kilka zdjęć na sekundę (jeżeli będzie rozdzielczość mała).

Cały proces nie jest skomplikowany – jak już się dojdzie do finału. Ja, niestety wpadłem w dwie pułapki, które mnie kosztowały stracony czas, ale w końcu po to piszę, byście Wy mogli uniknąć takiego losu.

Czytaj dalej

Biblioteka Timers v.16.4.0 – Program sterowany czasem

Użyto zdjęcia na licencji CC: https://www.flickr.com/photos/michael_mayer/6969282632

Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. Badum-tsss.

Właściwie tutaj mógłbym skończyć swoje filozofowanie i wrócić do pisania kolejnej mrugającej diody. Jednak do dzwonka jeszcze daleko i nie chcę zostawić cię szanowny czytelniku z niczym.

Bo wkurza mnie, że na Arduino tak trudno napisać coś bardziej skomplikowanego. Wielu już próbowało. Wielu się nawet udało. Jednak ich kod wyglądał po tej operacji jak koń po westernie.

Jedną z większych bolączek jest funkcja „delay(czas)”. Użyjesz takiej, to ci zablokuje cały program. Więc program może robić tylko jedną rzecz. Jak chcesz zrobić inną w tym samym czasie – dokup drugie Arduino! Prawie jak tablety.

Moim remedium na te problemy jest…

Biblioteka Timers

Czytaj dalej

Co spowodowało reset Arduino?

Arduino UNO

Arduino UNO

Reset Arduino może być spowodowany przez różne źródła. Może to być sygnał reset,  zabezpieczenie przed zbyt niskim napięciem czy może działanie watchdoga. W zaawansowanych scenariuszach, gdy coś resetuje Arduino może to być ważna informacja. Na szczęście w procesorach Atmela jest rejestr przechowujący takie informacje.  Nazywa się on MCUSR.

Jak odczytać przyczynę resetu z MCUSR?

Czytaj dalej

tinyBrd – przerwania

Nettigo tinyBrd

Nettigo tinyBrd

tinyBrd to fajne narzędzie. Niecałe 5 µA w trybie uśpienia… to długie tygodnie pracy na zwykłej baterii CR2032. Nasz testowy tinyBrd w tej chwili działa już 9 tygodni, wysyłają co 30 sekund temperaturę z DS18B20. A co jeżeli nie potrzebujesz wysyłać danych regularnie?

Mając taki uniwersalny, programowalny i zdalny czujnik jak tinyBrd można mieć pomysły na reakcję gdy tylko coś się zdarzy. Mowa o nieregularnych zdarzeniach, w przeciwieństwie do cyklicznej pracy jak np wysyłania pomiaru co 30 sekund. Pomyślmy, np wysłanie informacji o jakiś nieregularnych zdarzeniach, odczytanych np z czujnika zbliżeniowego (kontaktronu).

Dotychczas wymagało to regularnego wybudzania i sprawdzania czy nastąpiło dane zdarzenie. Gorzej, jeżeli zdarzenie może trwać krótko i jest duża szansa, że nasz tinyBrd będzie spał gdy nastąpi zdarzenie.

Dziś został upubliczniony nowe NettigoTinyBrdCore, który zawiera nowy komponent – PinChangeInterrupt. By uaktualnić zainstalowane Nettigo tinyBrd Core – postępuj zgodnie z instrukcją instalacji bieżącej wersji.

Jak skorzystać z przerwań na tinyBrd?

Czytaj dalej

ESP8266, IoT – praktyczny przykład cz. 4 – Arduino IDE

ESP na płytce stykowej

ESP na płytce stykowej

ESP8266 dotąd programowaliśmy z użyciem ESPtool i w języku LUA. Tym razem  zaprogramujemy ESP bezpośrednio z Arduino IDE.

Jakie są różnice? nodeMcu był to firmware wgrany na flash ESP8266. Programy w języku LUA były wgrywane na wydzielony system plików, sam firmware pozostawał bez zmian. Różnica jest taka, że Arduino IDE będzie przygotowywać za każdym razem nowy firmware który będziemy wgrywać na ESP. Na nasze szczęście, Arduino IDE potrafi zrobić to same, więc narzędzie esptool nie będzie nam potrzebne. No, precyzyjnie mówiąc – nie musimy mieć specjalnie zainstalowanego esptool Arduino IDE za nas to zrobi.

Arduino IDE i ESP8266 w jednym stały domu

Pierwszy krok – przystosować Arduino IDE do pracy z ESP. Czytaj dalej

ESP8266 – jak sprawdzić rozmiar pamięci flash?

Jak sprawdzić ile Twój moduł ESP8266 ma pamięci Flash?

ESP8266 nie posiada zintegrowanej pamięci flash, pamięć jest podłączona na zewnętrznym układzie. Dlatego różne moduły mogą mieć różne ilości dostępnej pamięci. I teraz jedyną bezinwazujną metodą jest jednak skorzystanie z programu esptool o którym mowa była w pierwszej części przewodnika IoT dla ESP8266.

Dotyczy to oczywiście modułów jak ESP8266-07 czy -12, które mają sam ESP i układ flash osłonięte ochronną blaszką. ESP8266-01 ma na wierzchu układy, więc można oznaczenie scalaka po prostu odczytać.

Zakładamy, że układ jest tak samo podłączony jak w tamtej części przewodnika i masz już esptool w systemie. Ma on opcję do odczytu ID producenta. Przechodzimy do katalogu z esptool i:

 ./esptool.py --port /dev/ttyACM0 --baud 115200 flash_id

Port, to jest port szeregowy utworzony przez podłączone UNO, taką formę ma na Linuksie, na Windows to będzie któryś COMx. Przed wydaniem komendy trzeba ustawić ESP w tryb wgrywania firmware. Czyli, jeżeli korzystasz z adaptera, GPIO0 trzeba zewrzeć do masy i zrestartować moduł. Wynik działania:

Connecting...
Manufacturer: e0
Device: 4014

Liczby te to są kody (zapisane szesnastkowo) oznaczające kod producenta oraz nadany przez niego ID układu. I tutaj kończy się prosta część. Bo ustalić co to dokładnie za układ nie jest łatwo… ID producenta jest nadawane przez konsorcjum JEDEC- wielka organizacja zrzeszająca producentów elektroniki – grupy zadaniowe, komitety, normy, blah… straszna biurokracja. No i jak to często w design by committee bywa :) ID producenta jest tylko 8-mio bitowe.  W tej chwili lista producentów jest pogrupowana w 9 banków, czyli jedno ID ma 9 różnych firm… Nice. W przyszłości będzie ich pewnie jeszcze więcej.

Pozostaje googlać, ale… powyższy wynik to rezultat z nowego ESP8266-07 w sprzedaży u nas. Google znajduje na forum ESP8266 informację, że to układ Winbonda, ale… nie jest to prawda. Winbond ma ID 0xEF a nie 0xE0. Id 0xE0 wg JEDEC przypisane jest do: LG Semi (Goldstar), Truevision, Domosys, Sandburst, Credence Systems Corp., Opulan Technologies, Memory Exchange Corp., Berg Microelectronics Inc, Eoplex Inc. Fajnie…

No to zamiast główkować co tam w środku może być, użyliśmy większego młotka :) a dokładniej – opalarki.

ESP8266-07 ze zdjętym ekranem

ESP8266-07 ze zdjętym ekranem

Na zdjęciu nie widać, bo napisy ledwo widoczne – Berg Microelectronics. BergMicro to firma z HongKongu. Nie udało się znaleźć nawet ich strony WWW, a co dopiero jakiegoś datasheeta… Jakaś strona twierdzi, że zna znaczenie kodu produktu BM, ale.. nasz chip ma oznaczenie 25Q80ASSIG. Nie ma takiego miasta Londyn, jest Lądek Zdrój… Na ile można temu wierzyć (dekodując część 25Q80A), to powinien być układ flash o pojemności 8×1024 k bitów, czyli 1MB. I tego się trzymamy :)

Druga z liczb podanych przez esptool to jest ID układu nadawane przez producenta. By je móc rozszyfrować to potrzebny jest datasheet układu. Ten ID może tylko służyć nam do poszukiwania info przez Google, ale jak pokazuje powyższy przykład z ID producenta, to należy taką informację traktować jako mało wiarygodną.

Czyli – 100% metody nie ma. Zawsze może się przydać praca wykonana przez autorów projektu flashrom gdzie jeden z plików flashchips.h zawiera całkiem spory zestaw kodów producentów i co równie ważne – ID chipów z ich nazwami. Może to Wam pomoże zorientować się jaki flash jest w środku, bo mając datasheet można zwykle więcej powiedzieć.

Arduino IDE i ESP8266

Arduino IDE w wersji dla ESP8266 posiada pewne funkcje, które wydawać się mogą przydatne w celu ustalenia rozmiaru pamięci flash. Jednak wiedzcie, że ESP.getFlashChipSize() zwraca wartość zapisaną w firmware a nie prawdziwą. Czyli jeśli wybierzecie target Generic ESP8266 Board i wybierzecie rozmiar pamięci flash 512K – taką wartość zwróci ESP.getFlashChipSize(). Jeśli 4M – zwróci 4M… Nie za bardzo się nam przyda…

To co istotne – w większości projektów, nawet 512k flashu to jest całkiem sporo :)

EDIT/UZUPEŁNIENIE

Jak ktoś słusznie zauważył – można wgrać na ESP nodeMCU i skorzystać z polecenia node.info(). Poda ono również ile jest dostępnej pamięci flash. Jak ono to robi? Próbuje odczytać zawartość pamięci flash z coraz ‚odleglejszych‚ regionów. Gdy to się nie udaje w którymś momencie, to nodeMCU uznaje że tyle pamięci jest dostępne. Można sprawdzić samemu w kodzie funkcji flash_detect_size_byte

Od razu GPS logger zbudowano, czyli Arduino i GPS

W poprzedniej części napisaliśmy jak podłączyć kartę microSD do Arduino i coś na niej zapisywać. Jak każdy mógł zauważyć w plątaninie kabli krył się też odbiornik GPS. Ten post miał powstać wcześniej, ale wyglądało na to, że mamy jakiś problem z dostawą z Chin, o czym kilka słów na firmowym blogu. Na szczęście wszystko się wyjaśniło, więc moduły GPS są dostępne i jeżeli planujesz podłączyć z Arduino zrobić odbiornik GPS to wiesz gdzie szukać :)

Moduł GPS VK2828U7G5FL podłączony do Arduino

Teraz o tym jak podłączymy moduł VK2828U7G5LF do  Arduino. Posłuży nam ten schemat:

Jak podłączyć GPS do Arduino

Podłączenie GPS VK2828U7G5LF do Arduino

Czytaj dalej