czwartek, 30 czerwca 2016

Schemat modułu podstawowego IoT

IoT wersja 3.0

Po pierwszej płytce pozytywne doświadczenia zachęcają do wykonania kolejnej.
Tym razem będzie to bardziej uniwersalny moduł zawierający dodatkowo część nadawczo-odbiorczą na 433 MHz. Wraz ze sterownikiem pilota i ESP do komunikacji z BLYNK układ taki powinien pokryć większość funkcji jakie przewiduję dla domowej jednostki centralnej IoT. Niewielki dyskretny i ładny moduł zarządzający peryferiami i dające możliwość zdalnego nadzoru z telefonu/tableta.
Schemat blokowy takiego IoT  wygląda miej więcej tak:


 Schemat ideowy


i płytka




Czyli projekt BRAMA i POMPA w jednym układzie. Choć możliwości rozwoju tego układu są dużo dużo wieksze.
Płytka przystosowana jest wymiarowo do zainstalowana w obudowie czujki ruchu .
Za niewielkie pieniądze (25,- + transport) mam zgrabną obudowę z zewnętrzną anteną.
Do komunikacji 433MHz zastosuję układy firmy CY WIRELESS zakupione w firmie MICROS. Po testach wybrałem moduł nadawczy CYT1 i dwa moduły odbiorcze CY-15 i CY-07. Moduły 433MHz pracują na wspólną antenę od tej czujki ruchu właśnie.
Odbiornik RF to w zasadzie dwa odbiorniki CY-15 i CY-07 (dodałem dodatkowe dwa piny do zamontowania krótszej płytki CY-15). W zależności od potrzeb będę instalował tańszą lub droższą wersję. Nadajnik CYT1 może pracować z napięciem 5V lub 12V - w zależności od oczekiwanego zasięgu transmisji. Tylko szkoda że Chińczycy nie poszli w standard kolejności wyprowadzeń dla CYT1 i CYT8 - zamienili VCC i GND. A tak łatwo dałoby się zastąpić tańszą wersję transmitera nieco droższym lecz o większej mocy CTY8.
W odbiorniku CY-07 jest możliwość wysterowania pinu DER odpowiedzialnego za uśpienie odbiornika i zmniejszenie poboru mocy. Nie jest to potrzebne w tym układzie ale poprowadziłem osobną ścieżkę z portu DER do procesora by wyłączać odbiornik na moment transmisji kodów. Ot tak dla bezpieczeństwa bo przecież oba moduły pracują na tej samej antenie. Ale standardowo moduły CY-07 dostarczane są w wersji 1 tz. na obu pinach (DATA i DER) jest wyjście sygnału danych z odbiornika.  Nigdzie, nawet na stronie producenta, nie ma informacji co zrobić by uaktywnić  pin DER jak selekt. Ale na zapytanie i zdjęcie modułu CY-07 wysłane do Chin nadeszła błyskawiczna odpowiedź:
The item you sent is actually CY07-V1.1.

Please try this:  remove 0Ohm from R6 and add a 0 Ohm on R5.

And then the DER pin will work.
I problem rozwiązany.
W układzie są cztery transoptory do sterowania pilotem. Możliwość otwierania bramy, drzwi wejściowych czy uruchamiania innych, ważnych z punktu widzenia bezpieczeństwa elementów domu wydaje się cenna. Pozostawiłem też czujnik temperatury. Przyda się w układzie zdalnego sterowania piecem CO lub piecem elektrycznym.
Całość zasilana będzie napięciem 5V z zewnętrznego zasilacza sieciowego.
ESP-01 wymaga napięcia 3,3V dodam więc przetwornicę step-down. Jest lepsza od stabilizatora pod względem strat mocy i ewentualnego podgrzewania atmosfery w małej obudowie modułu.
Pilot i nadajnik 433MHz wymagają zasilania 12 V więc kolejna przetwornica step-up musi zmieścić się na płytce. Na szczęście Aliexpress oferuje miniaturowe przetwornice w cenie 0,6-0,8 $/szt.
Równolegle do przetwornicy 5/3,3 pozostawiłem stabilizator jako opcjonalne rozwiązanie zasilania ESP.
Pozostanę na razie przy ESP-01 bo są najtańsze i całkiem przyzwoicie się sprawują. Zastanowię się czy nie dodać kilku punktów lutowniczych by móc zainstalować  inny ESP (12 lub 07) gdyby był potrzebny lepszy zasięg WiFi.
Wstępnie ekran BLYNK pozwalający zarządzać zdalne całym systemem wygląda tak



Projektowanie schematów w EAGLE też może być łatwiejsze.
Propozycja tu>>>> by część połączeń nie ciągnąć liniami tylko łączyć "wirtualnie" i oznaczać etykietami wydaje się ciekawa. Chcąc połączyć wirtualnie dwa odcinki sieci trzeba je nazwać jednakowo za pomocą ikony/polecenia NAME. Ta sama nazwa gwarantuje to, że program widzi te odcinki sieci jako połączone. Etykieta zaś przybiera nazwę sieci, do której jest przywiązana. Całość wygląda ładniej i bardziej przejrzyście. 
 
Wykonanie płytki musi poczekać do przyjazdu  modułów DC-DC z Chin.  Może wizyta prezydenta przyspieszy dostawę.

cdn.............

wtorek, 28 czerwca 2016

ESP8266, ESP-01 kolejna odsłona

Dziś kolejne zajęcia z cyklu - ESP8266 z bliska.

Nowe sztuki ESP-01 trochę zaskoczyły mnie swoim działaniem. Pomijam drobiazg pracy z prędkością 9600 choć przy uruchamianiu początkowe komunikaty wysyłane są z prędkością 115k. Również po autoresecie (watchdog) ESP drukuje informacje na największej prędkości. Ale skomunikować się z nim można tylko na 9600.
Wykorzystuję płytkę BRAMA do wpięcia się z przejściówką USB/RS do modułu ESP
I tu mały problem. Przejściówka USB/RS232TTL mająca możliwość pracy z napięciem 3,3V wpięta do płytki brama nie działa najlepiej. Odbierane komunikaty są często nieczytelne na monitorze USB - zamiast OK poprawnych potwierdzeń komend wyskakują kwadraciki. Nie ma znaczenia czy komunikacja odbywa się poprzez dzielnik napięcia R1 i R2 czy z jego pominięciem.



Przejściówkę podłączam do złącza, w którym osadzone było NANO (piny 16,17,19,12) 1x1 tzn TX przejściówki do TX NANO itd. zwierając jednocześnie R2 i rozwierając R1.Coś ewidentnie zakłóca transmisję do lub z modułu ESP ale ciężko wyrokować co. Dla pewności dodałem kondensator 220nF równolegle z zasilaniem 3,3V ale bez rezultatów. Bez znaczenia również było to czy zasilam płytkę z 5V przejściówki USB czy z wydajnego i dobrze stabilizowanego zasilacza zewnętrznego.

W miejsce drogiej (28 zł)  przejściówki z ukladem FT232RL wstawiłem najtańszego (7,80,-) chińskiego klona z układem CH340. Rezystory R1 i R2 wróciły na swoje miejsca i 4 kabelki połączyły przejściówkę z płytką. I wszystko śmiga aż miło. Sprawdzenie drugiego układu - podobnie - jest OK.

Układ ESP- 01 zgłasza się wersją Vendor:www.ai-thinker.com Version:0.9.2.4 / Jan  8 2013.
już leciwa ale na razie taka jest i taka będzie.

Testy konfiguracyjne robię z wykorzystaniem ulubionego programiku ESP8266 Config.exe
Ustawienie prędkości, portu, connect i po chwili otwiera się monitor a obok przycisku Version pojawia się informacja o odczytanej z modułu wersji oprogramowania. 
Wszystko daje ustawić się bez problemu. Najpierw wyświetlenie listy dostępnych sieci  ListAP potem połączenie z wybraną siecią (kliknąć na nazwę w tabelce i dopisać hasło). Działa a najważniejsze że te ustawienia zapisywane są w pamięci Flash ESP. Widać to naciskając GetAP - po ponownym podaniu napięcia na ESP wyskakuje informacja o połączeniu i nazwie sieci do której moduł był uprzednio zalogowany.
Ponadto działa włączanie i wyłączanie watchdoga. A w nowyszych (firmware) o dwa lata nie. Dziwny ten świat... 

-----------------------------------
WAŻNE
W programie POMPA i BRAMA używam sprzętowego portu RS do komunikacji z ESP. Do obsługi tego portu muszę zainstalować biblioteki: (patrz program)

#include <ESP8266_HardSer.h>
#include <BlynkSimpleShieldEsp8266_HardSer.h>  
  

  
Nie są one dostępne w najnowszej wersji bibliotek BLYNKa (0.3.7) ale trzeba je ręcznie doinstalować z wersji 0.3.4 . Szczegóły opisane są  w linku. Z dyskusji na forach wynika że biblioteki te mogą mieć feler - bywa że nie logują się do zadanej w programie sieci. Pierwszym widocznym efektem jest komunikat w monitorze IDE wysyłany przez biblioteki BLYNK po komendzie
 ATE0
"" Failed to disable Echo""

 Po czymś takim można być pewnym, że moduł nie połączył i nie połączy się z siecią bo najprawdopodobniej szwankuje komunikacja z modułem.
Mam tak samo dla wszystkich nowych układów ESP  instalowanych w projektach.
Może przyczyną jest fakt pozostawania ESP w trybie pracy jako AP i nie można tego ustrojstwa zmusić do połączenia się z siecią jako klient. Szczegóły tutaj >>>>. Fabrycznie oprogramowane ESP domyślnie próbuje połączyć się z zapisaną w pamięci siecią a jeśli takowej nie ma lub nie jest dostępna to układ przechodzi w tryb pracy AP z adresem 192.168.4.1  Co prawda ESP winien być w stanie pracy AP+STA ale może coś nie działa prawidłowo. Lub  biblioteki BLYNKa nie zmieniają ustawień modułu z trybu AP na tryb STA (stacja). Czort wie. Trochę dużo tych niewiadomych.
Trzeba to zrobić ręcznie. Do tego znakomicie nadaje się nasz program ESP8266 Config.exe .
Jedno kliknięcie u układ ma zapisany na stałe tryb STA.
Dodatkowo, wpisanie do pamięci danych sieci logowania praktycznie uniezależnia nas od prawidłowej procedury  w programie Arduino - moduł łączy  się do zapamiętanej sieci natychmiast po podaniu napięcia bez czekania na prawidłowe komendy przesyłane z procesora. Nie ma przy tym żadnych przeszkód by w programie wywołać logowanie do innej sieci niż ta zapamiętana w pamięci ESP. Moduł będąc w trybie STA przyjmuje prawidłowo komendy BLYNka.

KONIEC UWAGI
-------------------------------
Trzeba będzie poszukać rzeczywistej przyczyny takiego zachowania się ESP w układzie z BLYNK. Na razie pozostanę przy obecnych bibliotekach dopóki działają i wstępnej konfiguracji modułów ESP8266 za pomocą w/w oprogramowania.

ERRATA

 Brak czasami logowania do sieci WiFi układu ESP spowodowane jest nie przyjęciem komendy AT ustawiającej ESP w stan STA. Wszystkie zakupione moduły poddaję zawsze "obróbce" programem ESP8266 Config.exe . i ręcznie ustawiam tryb pracy STA.

cdn.......

sobota, 25 czerwca 2016

Arduino i transmisja 433 MHz - cz 2

MicrosZamówienie doszło błyskawicznie i jest profesjonalnie zapakowane.  Wszystko w ochronnych piankach i oddzielnych torebkach antystatycznych oczywiście czytelnie opisanych. Jestem pod wrażeniem. Duży plus dla firmy MICROS.

Zestaw 10 szt. modułów nadajników i odbiorników  wyglądających całkiem profesjonalnie i to za jedyne 90 zł brutto + 8,75 koszt wysyłki.  Ech dzisiejsze czasy są piękne dla elektronika.


Do testów poszło UNO + moduł + dwie wersje anteny (drut 16,8 cm i antena teleskopowa z demontażu czujki PIR o długości do 24cm). Biblioteka  RemoteSwitch jest najłatwiejsza do przypisania kodów pilotów i gniazd ELRO planowanych do zastosowania w testach.

Nadajniki

CYT1  - 4,80,- netto
  • The range can be 500m when matching with CY11
  • Operation voltage: VCC= 2.6 to 12V;
  • Frequency: 315MHz/433.92MHz(custom frequency is available);
  • High output power: 15dBm;
  • Frequency tolerance: ±75 KHz;
  • Current: 12mA;
  • Operating temperature: -20℃~+70℃
  • Bit rate: <1.2kbps; 
Transmisja bez problemów na obu antenach. Zasięg do domku gospodarczego (ok 50m) stabilny i pewny. Bardzo dobre pokrycie całego domu. Zmiana długości anteny teleskopowej ma wpływ na pewność transmisji (w najgorszym przypadku załącza 4 na 5 prób). Układ pracował na 5V. przy 12 zasięgi powinny jeszcze wzrosnąć.

RFM85W - 3,50,- netto
  •   Long Distance Application
  • Data Rate:300Hz-10KHz
  • RF Output Power: 16dBm@5V - 12dBm@3.3V
  • Power Supply: 2.1V~5.5V
Opis praktycznie ten sam jak poprzednio. Z tą różnicą, że jest to układ 5V i więcej z niego się nie wydusi.

CYT8 - 9,55,- netto
  • Operating Voltage: 1.8V ~ 3.6V;
  • Output Power: up to 40mW@3.6V;
  • Circuit Shape: PLL;
  • Current: 25mA/3.6V(average, 1:1 duty cycle);
  • Operating temperature: -20℃~+70℃( It can custom to -40~85℃ upon
  • requests);
  • Frequency tolerance: ±50 KHz;
  • Bit rate: <3kbps 
Układ 3,3 V!! przeżył podłączenie do 5V :). Zasięgi i pewność działania znakomite. Na moje oko najlepszy z testowanych modułów nadawczych.

Wniosek 1

Do dalszych projektów będę używał CYT1 przy standardowym zasilaniu 5V. Gdy będzie trzeba podkręcić zasięg napięcie zasilania wzrośnie do 12 V.
Do Arduino zasilanego 3,3V pójdzie CYT8. Będę go też testował do komunikacji na dłuższych odległościach (kilkaset m) w raz z dobrym odbiornikiem 433MHz. Jedyny minus to zamienione wyprowadzenia Vcc i GND w stosunku do CYT1.

Odbiorniki

CY15-433 - 4,- netto

  •  Low cost ASK radio super-heterodyne receiver
  • High frequency stability (no adjust components) & coherence
  • Very low RF re-radiation at the antenna
  • Operation temperature: -20℃ ~70℃ ( It can custom to -40~85℃ upon requests)
  • Supply voltage: 3.0~5.5v  
  • Receiver Sensitivity 107 dB
  • Imax 4 mA
  • Data Rate 2,4 Kbps
 Bardzo dobry odbiór z drugiego końca domu. Ale .... na bibliotece RC-Switch. Biblioteka RemoteSwitch odbiera co 5-10 ramkę. Bez problemu współpracuje z obiema antenami choć na drucie jest nieco lepiej.

RFM83C-433S1 4,29,- netto

  •  Low cost, low power consumption, Cost-effective
  • Transmission Data Rate: 0.3-2.5KHz
  • The operating voltage: RFM83C :3.6V-5.5V
  • RFM83CL:2.1V-3.6V
  • The operating current: 3mA@RFM83C 315MHz
  • Sleep current: ≤0.9uA
  • Sensibility:-108dBm 
  • Data Rate 2,5 Kbps  
Bardzo podobny do CY15 choć odbierał nieco gorzej na antenie teleskopowej.

CY07 - 9,05,- netto
 
  • High sensitivity -110dBm@433.92 1kbps BER10E-2;
  •  Supply voltage: VCC= 3.6to 5.5 V;
  • IF band: 230KHz;
  • Low power consumption: 4.8mA@315M, 6mA@433.92M. 
  •  Data Rate 9,6 Kbps  
Jak dla mnie super. Próbował odbierać sygnały z nadajnika umieszczonego w drugim końcu domu bez antenki (za antenę robiło wyprowadzenie).  Z antenami nie zgubił żadnej ramki.


  CY09 - 14,- netto
  • Receiver sensitivity to--114dBm;
  • Frequency: 315M/433.92MHz (custom frequency is available);
  • Voltage input range::4.5V-5.5V;
  • Low power consumption,5.0 V/12mA;
  • Good selectivity and inhibition of stray radiation, easy to get CE/Fcc
  • Temperature Range:-40-85℃ 
  •  Receiving Bandwidth 200kHz
  •  Data Rate 4,8 Kbps 
Powinien być lepszy od CY07 ale u mnie porównywalnie ze wskazaniem na 07. Trzeba będzie jeszcze sprawdzić na długich dystansach. Niewątpliwie CY09 jest w pierwszej dwójce testowanych modułów odbiorczych.

CY49 - 7,30,- netto

  • Supply voltage: 3.6~5.5v
  • Receiving sensitivity to -110dBm
  • Low power consumption, 5.0V @ 433.92MHz, 6.1mA;5.0V @315MHz,4.8mA;continuously data rate transmission to 1.2k (Manchester code)
  • Good selectivity and stray radiation inhibition ability, image rejection can reach 20dB;
  • Good capable of suppressing the vibration radiation. Multiple receiving modules can work at the same time (that is single transmitter and multiply receivers). There is no interference with each other it does not affect the receiving distance when multiple receivers work together.
  • Operating temperature: -30℃~+80℃. It can work normally under hostile environment.
  • Receiver Bandwidth 200 KHz
  • Data Rate   2,4 Kbsp
Dla mnie zdecydowanie najsłabszy odbiornik. Dużo zgubionych ramek z anteną z drutu. Z teleskopową jeszcze gorzej. Zdecydowanie na nie - ale będę go dalej testował bo opis mówi coś innego.

Wniosek 2

Do projektów standardowych o zasięgu 10-20 m będę stosował CY15 jako odbiornik niskobudżetowy. Przy odległościach 30-50m lub w bardziej odpowiedzialnych projektach CY07 lub CY09.Szczególnie, że pinologia i wymiary obu są identyczne. Można pokusić się nawet by zaprojektować druk i pod CY15 i CY07/09 by płytka była bardziej uniwersalna.

Wniosek  3

5 kompletów FS100A idzie w odstawkę - mam do oddania :)


cdn...........





środa, 22 czerwca 2016

Płytka drukowana odcinek 2


Nadejszło lato a z nim zamówione pierwsze płytki drukowane do projektu "brama"
Porządny szklany laminat, metalizowane otwory,  pocynowane ścieżki i powiercone otwory.
Pełen profesjonalizm. I za przystępną cenę - 16zł +VAT z transportem za sztukę. Jak dla mnie super.
Zareklamuję firmę MERKAR bo warto.



Szybko więc montuję układ ale w pierwszej płytce NANO i ESP lądują w złączówkach ot tak dla bezpieczeństwa gdyby się okazało, że sknociłem coś w druku. Jeszcze tylko sprawdzenie wszystkich napięć i program "brama" ładuje się do procesora. Dioda miga ale ESP głuchy. Wstawiam ESP z układu automatyki obiegu ccw - działa.

Wniosek pierwszy - wlutowanie w płytkę konektorów zamiast bezpośredniego wlutowania ESP już uchroniło mnie przed stosowaniem odsysacza i plecionki do wyjęcia modułu ESP.
Wniosek drugi - sprawdzić każdy element przed wlutowaniem by nie narobić sobie kłopotu np wylutowująć 30 nóżek modułu NANO.
Wniosek trzeci - warto mieć komplet sprawdzonego i działającego urządzenia, którego elementy można szybko podmienić do uruchamianego modułu - znakomicie skraca to  czas znalezienia  usterki.

A więc problem z nowym ESP - szkoda bo kosztował tylko 10 zł,-. Odkopuję przejściówkę USB-RS232 na napięcie 3,3V wyrzucam z układu NANO (proszę konektorki znowu się przydały) a w konektory TX i RX wciskam kabelki od płytki stykowej.  Całość zasilania idzie z USB 5V a stabilizator i oporniki na płytce dostarczają prawidłowych napięć do ESP. Monitor z Arduino IDE prędkość 115k, AT i ... nic. Sprawdzam inny ESP ze starej dostawy - działa. Ale czerwony ledzik świeci a niebieski błysnął radośnie po podaniu napięcia na ESP więc układ chyba żyje. Zmieniam prędkość na 9600.
AT.....OK. Nooo. Mam dwa wyjścia (dwie alternatywy) Wgrać nowy soft do ESP na 115K lub zmienić w programie prędkość komunikacji. Wybieram oczywiście bramkę nr 2 choć trzeba jakoś oznaczyć te moduły by w przyszłości nie pogubić się przy uruchamianiu.
Mógłbym jeszcze próbować ustawić prędkość na 115k i zapisać ją do flash ESP ale opinie w Internecie są podzielone co do skuteczności takiej zmiany domyślnej prędkości modułu. Niestety wersja SDK w moim module nie przyjmuje komendy AT+UART_DEF  (default UART configuration) a do zmiany w firmware nie jestem jeszcze gotowy.

Złożona i działająca płytka z dołączonym tymczasowo pilotem do sterowania bramą.


 Jeszcze tylko skonfigurować BLYNK'a.
Spróbuję dodać przyciski symulujące pilota do poprzedniego  projektu pompy. Muszę więc wpisać ten sam  kod BLYNK w obu projektach. Jeden ekran (projekt) BLYNK sterujący dwoma niezależnymi modułami Arduino. Ciekawe jak to zadziała.

Efekt - bardzo ładny.
Dodałem tylko drugiego v LED do sygnalizacji komunikacji z modułem bramy. Teraz mrugają do mnie oba gdy wszystko działa jak należy.





Lubię tego BLYNKa i Arduino.
A swoją drogą jakość zdjęć, prezentowanych na stronach bloggera jest fatalna mimo bardzo dobrej rozdzielczości wklejanych plików. Coś z tym trzeba zrobić...



cdn.....


 

piątek, 17 czerwca 2016

Arduino i transmisja 433 MHz - cz 1

Testy modułów

Komunikacja w "górę" tj. Internetowa na razie działa bez zarzutu. Zarówno w wersji przewodowej na W5100 jak i bez kabla na ESP-01. Duża w tym zasługa BLYNK'a przejmującego skutecznie zarządzaniem jednym i drugim modułem sieciowym.
Czas wrócić do do transmisji w "dół" do czujników i elementów wykonawczych na paśmie 433 MHz.
Niestety dobry bo tani moduł FS100A - nie jest dobry choć tani

Osiągi i stabilność pracy - tj powtarzalność zasięgu - mocno zależy praktycznie od wszystkiego. Ponadto same moduły znacznie różnią się między sobą jeśli chodzi o parametry pracy. Mam 5 kompletów i praktycznie każdy zachowuje się inaczej zamontowany do tego samego układu.
Nie mogę też podłączyć ładnych antenek na pasmo 433MHz pozyskanych ekstra z demontowanych  czujek PIR. O ile na przylutowanym do wyjścia antenowego kawałku drutu o długości ok 17 cm moduły komunikują się z czujnikami i gniazdami w obrębie domu to dołączenie antenki z czujki skraca ten zasięg do 1-2 m. Odpada więc możliwość ładnego upakowania całego układu ESP-Aduino-RF433 w obudowie czujki PIR.

Postanowiłem więc poeksperymentować z innymi nadajnikami i odbiornikami dostępnymi na rynku. Warunkiem jest oczywiście cena.Najlepiej by komplet zmieścił się poniżej 10 zł.  Do testów kupię też droższe moduły z przedziału do 20 zł.
Z opisu fachowców tu>>>> wynika, że nadajnik ma mieć rezonator SAW a odbiornik przemianę częstotliwości (znaczy się superheterodyna).

Tutaj >>> pokazane są wyniki testów trzech zestawów- niestety zadowalające efekty autor uzyskał przy cenach 100-120 zł za komplet n/o. Jak dla mnie to stanowczo za dużo.

Ze sklepu firmy MICROS >>> wybrałem kilka modułów, które zamierzam przećwiczyć
Przy okazji - znalazłem fajną wyszukiwarkę części i modułów elektronicznych tu>>>
 

Najtańszy komplet n/o uda się zestawić za mniej niż 10 a najdroższy poniżej 30 zł. To są wielkości akceptowalne.

A więc do sklepu   ....... po ciąg dalszy






niedziela, 12 czerwca 2016

Projekty z Arduino na płytce drukowanej (PCB)

Druk - odrobina profesjonalizmu

Wykonanie układu na płytce stykowej zajmuje 10 min. Już po chwili pajęczyna oplatająca Arduino i moduły i elementy dodatkowe gotowa jest do testowania oprogramowania. To naprawdę duże ułatwienie w stosunku do klasycznie lutowanego pająka. I możliwość dowolnych zmian bez użycia jakichkolwiek narzędzi. Gorąco polecam stosowane płytek stykowych we wczesnej fazie tworzenia projektu.
Za chwilę jednak nadchodzi potrzeba wykonania jakiejś tam wersji finalnej. Najłatwiej zastąpić pajęczynę płytki stykowej pajęczyną na uniwersalnej płytce drukowanej. Warto od razu kupić te wykonane na dobrym laminacie w  wersji dwustronnej z metalizacją otworów - znakomicie ułatwiają montaż. I wyglądają "poważnie". Choć sama technologia łączenia elementów krosówką i srebrzanką jest baaaardzo żmudna i pracochłonna, w jej efekcie otrzymujemy coś co już możemy na stałe użytkować jako wersja ostateczna. A po umieszczeniu w obudowie może nawet udawać pełen profesjonalizm wykonania. Ale nie ma co się oszukiwać. Po zajrzeniu na spodnią stronę płytki widać, że ten sposób montażu jest dobry dla 20 - 30 punktów lutowniczych. Powyżej, plątanina kabelków jest nie do ogarnięcia. I całkowicie zniechęca gdy trzeba wykonać jedną lub więcej kopii tego samego układu.

W tym przypadku warto sięgnąć po dzisiejsze możliwości technologii wykonania profesjonalnych płytek drukowanych. Z lenistwa odrzuciłem pomysł samodzielnego ich wykonywania na laminacie pokrytym fotoczułą emulsją. Zapytam kilku wykonawców o koszt wykonania pojedynczych egzemplarzy płytek układu sterowania bramą. Mam nadzieje, że będą atrakcyjne. - na wykonanie pojedynczej płytki o wymiarach 5x7 cm w wersji dwustronnej z wierceniem i metalizacją otworów nie chciałbym  więcej wydać niż 20-40zł.  Przy kilku szt. cena jednostkowa powinna szybko maleć.

Jest tylko jeden problem w jakimś programie taką płytkę zaprojektować. Teoretycznie można ją narysować nawet w Paint'cie, wiele firm przyjmuje dokumentacje w formacie np. pdf. Ale lepszym pomysłem jest zastosowanie jakiegoś programu do tworzenia płytek. Najlepiej darmowego.
Wstępnie wytypowałem do testów dwa - profesjonalny standard EAGLE oferujący możliwość darmowej pracy na płytkach o rozmiarze nie większych niż 10x8 cm i w pełni darmowy DesignSpark.

DesignSpark  -  słaby i jak dla mnie za trudny do opanowania w godzinę - odpadł

EAGLE - Tu czuć klasę i pomimo złożoności bardzo intuicyjny. Ściągnąłem wersję 7.6 i przy instalacji wybrałem wersję darmową z ograniczeniami. Najpierw poszukałem bibliotek z Arduino NANO - są oczywiście dostępne bez problemu. Polecam DIY Modules zawiera Arduino + różne moduły w tym ESP-01!

Rysowanie schematu poszło bez użycia helpa - tylko pierwsze wyszukiwanie elementów po bibliotekach jest czasochłonne. Ale edycja schematu po prostu bajka.

Z projektowaniem płytki poszło trudniej - tu już trochę trzeba sobie pomóc zewnętrznym wsparciem. Korzystałem z baaaaardzo krótkiego kursu projektowania w EAGLE - 9 lekcji i taki efekt

Dwa dni nauki i pracy i płytka gotowa
Teraz czekamy na oferty jej wykonania


cdn.......



środa, 8 czerwca 2016

Sterowanie bramą wjazdową i garażową z Arduino - errata 1

Gotowy układ sterowania bramami zainstalowany u odbiorcy końcowego działa pięknie ..... tylko się wiesza! Po 24 do 48 h gaśnie żółty led a cały sterownik jest głuchy jak pień. Pomaga ostry reset tzn. wyjęcie wtyczki zasilania. I znowu pięknie mruga przez kilkanaście godzin do kolejnego zwisu. Co jest do cholery. Układ przez miesiąc na stole nie wysypał ani razu a tu na wejściu taki obciach. Jak w akademickim dowcipie. Wiem, że teoretycznie wszystko jest OK a nie działa - w praktyce na stole działa wzorcowo i nie wiem dlaczego - połączenie teorii z praktyką w układzie dla odbiorcy dało wynik oczywisty - nie działa i nie wiem dlaczego!

Na pierwszy ognień poszedł ESP-01 jako najbardziej podejrzany za zawieszanie komunikacji (zgaszony LED!). Jeśli się wiesza to pewnie i zatrzymuje cały program w pierwszej pętli

  while (Blynk.connect() == false) {}   // Wait until Blynk is connected

 Dorabiam więc na szybko reset ESP podpinając jego RST do portu A3 (przy resecie wachdogiem procesora, ESP się nie resetuje) i dodaję na starcie procedurę resetu układu sieciowego.

const int resetesp = A3;
void setup()
{

 pinMode(resetesp, OUTPUT);
 digitalWrite(resetesp, LOW); //reset esp
 delay(2000);
 digitalWrite(resetesp, HIGH);

 delay(2000); //odczekanie na stany przejściowe w ESP
.......... 

To oczywiście nie gwarantuje mi jeszcze niczego. Jeśli zawieszanie jest w trakcie nawiązywania komunikacji w pętli setup() to dobrze byłoby zrobić reset wszystkiego jeśli nie nastąpi połączenie z BLYNK powiedzmy przez minutę lub dwie. Watchdog używany dalej w programie odpada bo maksymalny czas możliwy do ustawienia to 8 sek. Pozostaje pętla programowa

int xx = 0;
int xxold = 0;

const int dzielnik = 1000; //do ustalenia czasu czekania na połączenie BLYNK
 xx = millis() / dzielnik;
 xxold = xx;
  while ((xx - xxold) < 100) { 
    xx = millis() / dzielnik;
    if (Blynk.connect() == true) { //jeśli jest połączenie to wyjdz z pętli
    xx = (xx + 200);
     }
    }
    if (Blynk.connected() == false) {  //jeśli nie ma połączenia to resetuj

    Watchdog.enable(2000);
 }  //koniec - jeśli nie ma połączenia to reset

Jeśli ESP nie nawiąże połączenia w setup() przez 100 sek to program zostanie zresetowany, jeśli straci połączenie w trakcie pracy - zresetuje go watchdog w pętli głównej loop(). Sprawdzimy jak to działa.
..................
NIE DZIAŁA

Jest jeszcze gorzej - program działa do momentu resetu i a chwilę później przestaje dawać jakiekolwiek oznaki życia. To NANO jest w tym momencie głuche jak pień. NIE podnosi się nawet po RESETcie przyciskiem na płytce. Dopiero odłączenie zasilania........  Zaraz zaraz to może nie ESP ale NANO jest winne całego bigosu z wieszaniem. Może biblioteka  #include <Adafruit_SleepyDog.h> szwankuje? Ale przecież pięknie działa na stole w projekcie pompa.

5 min w internecie wyjaśnia wszystko. Winne jest i NANO i biblioteka watchdoga a dokładnie sam fakt odblokowania programowego funkcji watchdog. Problem został opisany na przykładzie Arduino PRO Mini ale jak się okazuje dotyka on także NANO.  Natomiast z UNO działa prawidłowo.
W skrócie problem jest w tym, że reset watchdogiem nie dezaktywuje funkcji watchdog - jest ona wciąż aktywna i co gorsza po resecie ustawiona z krótkim czasem resetu. Bootloader winien zaraz na początku zatrzymać funkcję watchdog ale tego nie robi w wersjach  na MINI i NANO. Należy wgrać poprawiony bootloader by ten błąd usunąć.
Nic z tego - nie będę na razie grzebał w systemie NANO szczególnie, że jest już wlutowane w płytkę - spróbujemy inaczej zresetować procesor.

Sposób 1
Najłatwiej podłączyć jakiś port NANO do pinu RST i ustawić go na "0" w momencie resetu.
Trzeba tylko jak najwcześniej w programie zadeklarować port jako wyjście i ustawić na 1. Ale UWAGA kolejność tych dwu kroków musi być dokładnie taka - odwrotnie NIE DZIAŁA
void setup()
{
digitalWrite(resetnano, HIGH); //no reset nano

pinMode(resetnano, OUTPUT);

Potem już w programie możemy wywoływać reset procesora wpisem 0 na port resetnano.
Wgrałem program i połączyłem port 3 z RST. Działa i resetuje bez problemu tylko trzeba rozwierać to połączenie na moment wgrywania programu bo zawiesza się komunikacja z IDE :(.  A więc ten sposób odpada.

Sposób nr 2
Wymusić skok programu do adresu 0000 czyli rozpocząć program od początku. Jest tylko jeden niuans - taki "reset" nie czyści rejestrów i komórek więc jeśli jakieś zmienne nie są wprost zadeklarowane  z określonymi wartościami na początku programu to mogą dziać się różne rzeczy. Ale nie bardzo mam inne wyjście - więcej sposobów resetu już nie znam.
Deklaruję więc przed sekcją setup() funkcję skoku do adresu 0000

void(* resetFunc) (void) = 0;//declare reset function at address 0

a wywołanie tej funkcji  resetFunc(); //call reset  powinno udawać reset.

DZIAŁA !!!

Oczywiście to proteza by sprawdzić czy układ ruszy i czy pozbędę się tych cholernych wieszań. Docelowo bezwzględnie trzeba będzie wymienić bootloader jeśli chcę używać NANO jako podstawowego modułu do budowy układów sterowania.


I to na razie tyle z pola walki.

cdn...... co akurat w tym przypadku wcale mnie nie cieszy

piątek, 3 czerwca 2016

Projekt nr 2 - sterowanie bramą wjazdową i garażową z Arduino - cz 2

Produkcja

Pomysł na zasilanie całości sterownika poprzez USB chybiony. Delikatne gniazdo miniUSB wyłamie się szybciej niż zdążę pomyśleć. Zamiana - zasilanie z zasilacza 5V bezpośrednio na płytkę NANO i równolegle na osobną przetwornicę DC/DC step-up by na wyjściu 12V zasilić pilota (nie uwzględnione na schemacie. Koszt części rośnie do około 100 zł.
Dodam też ekstrasa - pomiar temperatury czujnikiem 18B20 (5 zł z dostawą) - ładnie pasuje do otworu po antenie czujnika.

Ostateczny schemat



Mnogość jumperów jest pozorna. Większość symuluje przyłączenia zewnętrzne do płytki. Nic innego nie znalazłem na szybko w bibliotece EAGLA  JP1-JP4 zasilanie 5V,  JP5,6,7 wyjścia transoptorów do sterowania pilotem, JP8,9,10,11 dodatkowe wyjścia portów NANO tak na przyszłość. JP2 zworka używana podczas wgrywania programu, JP3 dodatkowa zworka w przypadku użycia zewnętrznego zasilacza 5/3,3 V do zasilania ESP, R1 R2 dzielnik napięcia dla uzyskania 3,3V na wejściu do ESP. Przypadkiem czujnik temperatury "połączył" mi się do portu A5. Pięknie - będzie go można podmienić w razie potrzeby analogowym czujnikiem LM35. 

Płytka zrobiona na uniwersalnym druku z metalizacją otworów łączonych krosówką i srebrzanką.



Całość upakowana w zgrabną obudowę czujki PIR.



Program jeszcze prostszy -  przerobiłem sprawdzony i przetestowany czasowo projekt od pompy dodając  pomiar temperatury. Powinien działać.
//UWAGA - kod ma postać pierwotną z początków nauki programowania - do stosowania proponuję wersje kodu umieszczone w późniejszych potach// 




Ot i cały projekt BRAMA. Ale ile w nim know-how !!! 
Jak mówił Edison do klienta - " moją pracę wyceniam na dolara - ale to, że wiem jak to zrobić - na 999$". A teraz nawet wiedza jest za free. Tylko ...... trzeba wiedzieć jak jej użyć. Choć naprawdę to są klocki LEGO dla dużych chłopaków. No prawie....

cdn..........


Projekt nr 2 - sterowanie bramą wjazdową i garażową z Arduino - cz 1

Arduino - po co?

Wymyślanie, na siłę, tematów do rozwiązania przez Arduino z mojego doświadczenia zawsze kończy się źle (a tak bardzo chciałoby się coś zrobić!). Usprawnianie działającej rzeczy mnoży kłopoty i wkurza otoczenie. Co innego gdy trzeba rozwiązać istniejący problem z zakresu sterowania lub monitoringu. Najlepiej zgłaszany przez sceptyka naszych fascynacji mikrokontrolerami. Tu możemy pokazać całą wyższość podejścia DIY (do it yourself).

I właśnie taki projekt trafił na moje biurko - wysterować bramą wjazdową i garażową z telefonu. 
Po co? to już nie mój biznes. Ma działać, być niezawodne i ładne.
No to do roboty.

Sterowanie bramami wykorzystuje piloty ze zmiennym kodem. Do mnie trafił Wiśniowski


Krótka kwerenda po zasobach - nie da się tego ogarnąć żadną biblioteką Arduino. Pozostaje użyć oryginalnego pilota i za pomocą Arduino "naciskać" odpowiedni klawisz.

Ale cała historia handlu mówi jedno - kupujemy oczami (a niektórzy oczyma). A więc projekt należy zacząć o znalezienia ładnej obudowy. To absolutna podstawa ewentualnego sukcesu.

Pracując nad projektem pompy zwróciłem uwagę na czujki ruchu. A w zasadzie na ich obudowy. Są zgrabne, niewielkie, ładne i po wyjęciu oryginalnej płytki oferują całkiem znaczącą przestrzeń. No może nie dla UNO ale dla NANO w zupełności. A jeszcze w pakiecie dostajemy śliczną antenkę 433 MHz. I wszystko za 25 - 30 zł! Taniocha. Więc obudowę już mam.

 Schemat



 Arduino NANO, ESP-01, pilot. Symulacja naciśnięcia przycisku pilota - transoptorem, zasilanie wszystkiego z 5v kablem miniUSB, zasilanie pilota (12V) z przetwornicy 5/12V, led kontrolny  i to wszystko. Łącznie z obudową to około 80-90 PLN.


Zestaw części




Teraz to tylko poskładać i wcisnąć w obudowę.
cdn ......