tinyBrd zasilane z USB

TinyBrd 2.0 dzięki regulatorowi napięcia może być zasilane np 5V. Jest to napięcie jakie jest dostarczane w ramach standardu USB, co za tym idzie, każdy powerbank do zasilania komórki zapewnia nam duuużo energii dla tinyBrd. Jak podłączyć zasilanie z power banku?

Bierzemy wtyczkę USB oraz jakieś przewody typu F-M i lutujemy:

Lutowanie lini zasilającychLutowanie przewodów do wtyczki

Zwróć uwagę na polaryzację, czyli gdzie jest plus a gdzie masa. Na zdjęciu czerwony przewód to plus. Przyjrzyj się wtyczce, położona jest tak, że widoczne otwory na metalowym złączu są zaślepione plastikiem. A najlepiej – podłącz wtyczkę do powerbanku i zmierz miernikiem gdzie jest 5V a gdzie GND :)  Pozostaje podłączyć zasilanie do tinyBrd:

s20160712_124810Oczywiście – to tylko z tinyBrd 2.0, wersja 1.x nie ma regulatora i takie podłączenie uszkodzi modem NRF.

Teensy 3 vs Arduino – o ile szybsze?

Początkujący użytkownicy Arduino, jeżeli postawią sobie ambitne zadanie często docierają do ściany możliwości Arduino. Wydaje się za wolne, zbyt mało zasobów. Prawda jest taka, że często wystarczy napisać program w sposób bardziej efektywny i nagle Arduino może jeszcze całkiem sporo.

Jednak jak zawsze jest pokusa – zmieńmy Arduino na coś szybszego/większego. Nie pochwalam podejścia polegającego na „rzucaniu więcej MHz na problem”, ale czasem może warto? Każda sytuacja jest inna i  na etapie potwierdzenia wykonywalności projektu, czasem warto po prostu użyć czegoś szybszego.  Potem, jeśli będziemy realizować projekt docelowy to wtedy pisać jak należy? Wszystko zależy od priorytetów – jeśli czas jest najważniejszy to może warto?

teensy

OK, w tym kontekście pomówmy o czymś większym co może zastąpić Arduino. Paradoksalnie Teensy 3.2 jest mniejszy pod względami rozmiarów od Arduino, ale procesor ARM 72 MHz wygląda obiecująco :)Dla uściślenia – nie mam zamiaru porównywać wydajności procesora, bo to jest bez sensu, wiadomo, że przewaga jest po stronie ARM. Chcę zastanowić się o ile szybsze będzie Teensy użyte jak Arduino. A jak się używa Arduino? Jako maszynki do Blinka :) Blink jako taki nie ma sensu jako materiał porównawczy, ale jeśli postawimy sobie pytanie o ile szybciej Teensy jest w stanie zmieniać stan wyjścia niż Arduino, to będzie to już jakieś wartościowe porównanie.Kod jest bardzo prosty:

void loop() {
  while (1) {
    digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
    digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  };
}

Ładujemy kod na Arduino i Teensy, podłączamy oscyloskop no i jaki mamy rezultat?

DS1Z_QuickPrint6Jak widać Teensy (żółty) jest dużo szybszy niż Arduino (niebieski). Oscyloskop wyliczył, że sygnał wygenerowany przez Teensy ma częstotliwość 1.47 MHz a z Arduino 134 kHz. Wynika z tego, że Teensy jest 11 razy szybsze niż Arduino. Czemu aż tyle, skoro 72 MHz/16 MHz to tylko 4.5? Najwyraźniej digitalWrite jest o wiele efektywniej napisane w wersji dla ARM (albo po prostu mniej operacji wymaga) stąd nie dość że każda instrukcja (w kodzie maszynowym) na Teensy wykonuje się szybciej, to jeszcze mniej ich potrzeba niż na Arduino – dlatego mamy aż 11 krotną przewagę Teensy nad Arduino.

Ale to nie koniec. Teensy oferuje domyślnie opcję overclockingu, można wybrać prędkość pracy procesora przez opcję w menu Tools/CPU Speed. Zamiast 72 MHz optimized wystarczy wybrać 96 MHz optimized (overclock) i:

DS1Z_QuickPrint4

Tak, wiem trochę inne nastawy tego screenshota, ale już schowałem swój zestaw, a nie zauważyłem że ten ma inną podstawę czasową. Jednak jak widać w przy 96 MHz zegara oscyloskop wyliczył nam sygnał wygenerowany przez Teensy ma 2 MHz.

Jednak nie zawsze zmiana Arduino na Teensy przyniesie przyspieszenie. Zwróciłeś uwagę że w kodzie użyliśmy pętli while by zmieniać cały czas stan wyjścia. Jednak jeżeli użyjemy takiego kodu:

void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
}

Przebieg obu sygnałów (z Arduino i Teensy) będzie wyglądać tak:

DS1Z_QuickPrint1

Coś dziwnego dzieje się w kodzie Teensy. Co? Odpowiedź kryje się w tym kodzie (funkcja main dla Teensy3). W części wywołującej loop po tej funkcji wywołuje się jeszcze funkcja yield. W Arduino jej nie ma, dlatego po zakończeniu loop, wraca natychmiast do jej wykonywania. W Teensy3 yield zajmuje chwilę – sprawdza czy są dostępne dane portach szeregowych. Ponieważ Teensy ma ich więcej niż Arduino UNO, chwilę to trwa.

W takim użyciu okazuje się, że Teensy jest ok 2-3 razy szybszy od Arduino. Jeśli nie zależy Ci na SerialEvent to po prostu nie wychodź z loop na Teensy :).

LinuxMagazine nr 150

LM150Dotarła do nas informacja o 150 wydaniu LinuxMagazine:

W sierpniowym, 150 wydaniu miesięcznika „Linux Magazine” – z odświeżoną grafiką – znajdziemy projekty samodzielnej budowy żaglówki Arduino sterowanej przy użyciu taniego pilota oraz łazika złożonego littleBits, Raspberry Pi i Lego.

Materiał wiodący dotyczy scentralizowanego zarządzania plikami dziennika systemowego: opisuje, jak skonfigurować monitorowanie sieci bazujące na serwerze logów Graylog. Na dołączonym DVD po raz pierwszy znajduje się Manjaro, w wersji 16.06.

Wewnątrz wydania również: trwałe Iptables, czyli automatyczne przywracanie reguł zapory sieciowej, skuteczne zarządzanie protokołami w nowoczesnych sieciach – sprawdzamy, jak zachować wiarygodne monitorowanie i analizę w sieci, nawet przy wirtualizacji, wirtualizacja sieci i struktura OpenDaylighta, szyfrowanie w oparciu o wiarygodne zaprzeczenie przy użyciu VeraCrypta, analizatory statyczne kodu JavaScriptu, PHP, Pythona i powłoki Linuksa, krótkie testy narzędzi Tiny Applications 20130215, CertMgr 0.2.49, Difftree 0.5.8, Scriptform 1.0, Duply 1.11.1 oraz Xplico 1.1.1, Bogofilter czy SpamAssassin: działanie i wybór filtra antyspamowego, zarządzanie wieloma systemami równocześnie z SaltStackiem, wady i zalety narzędzi do lokalnego szyfrowania danych przechowywanych w chmurze, synchronizacja plików z Osyncem i Freeholdem, które zużywają mało zasobów, są łatwe do wdrożenia i proste w użyciu, AnyDesk kontra TeamViewer, szybka edycja filmów i dodawanie efektów w małych projektach przy użyciu Lightworksa, korzystanie z sieci bez ujawniania tożsamości, czyli system operacyjny Whonix, konfiguracja zbioru aplikacji do pracy biurowej z systemem wideokonferencji, funkcją poczty i sklepem internetowym Google Apps for Work do użytku w firmie.

Wydanie jest na allegro (bezpłatna dostawa). Poprzednie e-wydanie „Linux Magazine” 7/2016 na allegro (bez płyty DVD).  Archiwalne numery Linux Magazine dostępne są w pakietach po 2 nr na allegro:

NodeMCU i Blink

Dzisiaj pokażę Wam jak przy pomocy NodeMCU zrobić rzecz, który zrobił przynajmniej raz każdy użytkownik Arduino. Mowa tu o przykładzie Blink, czyli mruganie diodą. Jest to dla każdego wstęp do bardziej zaawansowanych programów. NodeMCU jest płytką wyposażoną w procesor ESP8266 oraz układy wspomagające. Dzięki temu wystarczy kabel USB, komputer i można już wgrywać programy do NodeMCU. Z „gołym” ESP jest więcej zachodu – potrzebujesz zasilania, konwertera USB/Serial i przy każdej aktualizacji programu trzeba pamiętać o podpinaniu odpowiednich GPIO do zasilania czy GND… NodeMCU to ESP8266 gotowe od razu do pracy.

Zrobimy to na dwa sposoby: wykorzystując Arduino IDE i firmware NodeMCU, czyli takie, które umożliwa porgramowanie płytki w Lua.

Jak przystosować Arduino IDE do współpracy z ESP8266, czyli również NodeMCU opisywaliśmy we wpisie: ESP8266, IoT – praktyczny przykład cz. 4 – Arduino IDE, dlatego ten punkt możemy pominąć.

Jeżeli mamy już uruchomione Arduino IDE ze wsparciem dla ESP8266, to musimy pamiętać o kilku rzeczach. Przede wszystkim należy wybrać odpowiednią płytkę, w naszym przypadku jest to NodeMCU 1.0 (ESP-12E Module), następnie tak jak w przypadku Arduino trzeba wybrać odpowiedni port, więc jeżeli mamy podpięte jednocześnie np. Arduino UNO i NodeMCU, to nie zapomnijmy o jego zmianie. Resztę ustawień możemy zostawić w spokoju, powinny one wyglądać mniej więcej tak:1

Kolejną sprawą jest fakt, że dioda umieszczona na NodeMCU nie jest podpięta do pinu 13 jak a Arduino UNO, tylko do pinu 16. Dalej jest już prosto, jeżeli mamy otwarty przykład Blink, to zamieniamy wszystkie wystąpienia pinu 13 na 16 i klikamy „Upload”. Odczekujemy chwilę, ponieważ kompilacja i wgrywanie programu trwa trochę dłużej, niż w przypadku Arduino (można to zmienić ustawieniem „Upload Speed”, wybieramy wtedy prędkość programowania, jednak przy zbyt wysokich prędkościach mogą pojawić się błędy). Voilà, dioda miga.

Teraz pora na NodeMCU i Lua. Czytaj dalej

Wyświetlacz 2.8″ na kontrolerze ILI9341 – podłączenie do Raspberry Pi

24Od jakiegoś czasu popularne stały się wyświetlacze z kontrolerem ILI9341. Dlatego, że są tanie i łatwo podłączyć je do Arduino, Raspberry Pi czy innych płytek. Dzisiaj pokażemy jak podłączyć wyświetlacz do Raspberry Pi na 2 sposoby – wyświetlając statyczne grafiki, oraz pulpit systemu.

Czego będziemy potrzebowali? Oczywiście wyświetlacza, przydadzą nam się również przewody F-F do połączenia z Raspberry Pi.

Podłączenie wyświetlacza:

  • 3.3V Raspberry Pi – Vcc wyświetlacza
  • GND Raspberry Pi – GND wyświetlacza
  • CE0 (GPIO8) Raspberry Pi – CS wyświetlacza
  • GPIO23 Raspberry Pi – RESET wyświetlacza
  • GPIO18 Raspberry Pi – D/C wyświetlacza
  • MOSI (GPIO10) Raspberry Pi – SDI (MOSI) wyświetlacza
  • SCLK (GPIO11) Raspberry Pi – SCK wyświetlacza
  • 3.3V Raspberry Pi – LED wyświetlacza

Teraz musimy upewnić się, że mamy włączone SPI, w tym celu wpisujemy:

pi@raspberrypi:~ $ sudo raspi-config

Strzałką w dół przechodzimy do linijki „Advanced Options” i wciskamy Enter, następnie przechodzimy do sekcji „SPI” i ponownie wciskamy Enter. Na pytanie odpowiadamy oczywiście „Yes”, dla pewności restartujemy Raspberry.

Po restarcie po wpisaniu:

pi@raspberrypi:~ $ ls /dev/spi*

Powinny pokazać nam się dwa urządzenia:

pi@raspberrypi:~ $ ls /dev/spi*
/dev/spidev0.0  /dev/spidev0.1

Teraz możemy przejść do instalacji oprogramowania:

sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip python-imaging python-numpy git
sudo pip install RPi.GPIO
cd ~
git clone https://github.com/adafruit/Adafruit_Python_ILI9341.git
cd Adafruit_Python_ILI9341
sudo python setup.py instal

OK, zainstalowaliśmy bibliotekę i przykłady, przechodzimy do katalogu z przykładami i uruchamiamy jeden z nich:

pi@raspberrypi:~ $ cd ~/Adafruit_Python_ILI9341/examples
pi@raspberrypi:~ $ sudo python image.py

Jeżeli zrobiliśmy wszystko dobrze, to na wyświetlaczu powinniśmy zobaczyć obraz:

KONICA MINOLTA DIGITAL CAMERA

To była trudniejsza część. Teraz wyświetlimy pulpit posługując się moduł fbtft, który jest sterownikiem do małych modułów LCD.

Uruchamiamy Raspberry i wpisujemy:

pi@raspberrypi:~ $ sudo modprobe fbtft_device custom name=fb_ili9341 gpios=reset:23,dc:18 speed=16000000 rotate=90 bgr=1
pi@raspberrypi:~ $ FRAMEBUFFER=/dev/fb1 startx

Jeżeli chcesz, żeby po każdym restarcie odpowiedni moduł był ładowany automatycznie, to do pliku /etc/modules dopisz:

fbtft_device custom name=fb_ili9341 gpios=reset:23,dc:18 speed=16000000 rotate=90 bgr=1

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