OpenWRT – mai mult decât simplă conectivitate WiFi

Succesul revoluției IoT arată în mod clar că sistemele embedded au atins un prag funcțional în care conectivitatea de rețea este absolut necesară. Bineînțeles, această evoluție a fost posibilă datorită creșterii nivelului de integrare a circuitelor integrate ce a condus la creșterea puterii de calcul a microcontrolerelor și a apariției controlerelor de rețea extrem de accesibile. Conectivitatea de rețea fără fire (WiFi) este cea mai comodă și mai flexibilă modalitate de conectare directă la rețeaua Internet a unui sistem embedded. Acest lucru se poate observa și în efortul companiilor producătoare de circuite integrate de a aduce pe piață controlere specializate WiFi din ce în ce mai puternice și din ce în ce mai ieftine. Controlere precum ESP8266 (ce echipează plăcile de dezvoltare NodeMCU, Adafruit Feather HUZZAH, Sparkfun Blynk Board, Arduino Uno WiFi), HDG204 (Arduino WiFi shield), CC3000 (CC3000 WiFi Shield) sau ATWINC1500 (Adafruit Feather M0 Wifi, Genuino MKR1000) sunt doar câteva exemple de componente ce permit conectarea unui sistem Arduino la Internet prin intermediul unei rețele WiFi.

1

https://www.robofun.ro/wireless/wireless-wifi/arduino_wifi_shield

2

https://www.robofun.ro/feather-m0-wifi-atsamd21-atwinc1500

În ciuda complexității acestei noi generații de controlere WiFi sistemele embedded pe 8 biți precum plăcile de dezvoltare Arduino Uno sau Arduino Leonardo au de îndeplinit o sarcină dificilă prin conectarea la rețeaua Internet. Chiar dacă aceste controlere implementează în totalitate stiva de comunicație TCP/IP lăsând în sarcina microcontrolerului doar implementarea nivelului aplicație, limitările sistemului rezultat sunt destul de mari fiind date de memoria internă de dimensiuni modeste (atât memoria program cât și memoria de date), viteza de procesare mică a microcontrolerului, posibilitatea redusă de prelucrare a informației (cuvânt de date pe 8 biți). Cu alte cuvinte, chiar dacă echipăm un sistem embedded pe 8 biți cu un controler WiFi performant nu vom obține un sistem de calcul cu posibilitățile de prelucrare și comunicație echivalente cu un Raspberry Pi, de exemplu, sau cu un alt sistem bazat pe o arhitectură de tip microprocesor.

Totuși, există o posibilitate prin care putem transforma o platformă Arduino clasică într-un sistem IoT cu capabilități complete de prelucrare și comunicație. Soluția este oferită de controlere de comunicație ce rulează distribuția Linux OpenWRT precum Arduino Yun.3

https://www.robofun.ro/wireless/wireless-wifi/arduino_yun

Placa Arduino Yun dispune de un microprocesor Atheros AR9331 cu 16MB memorie flash internă, unde este stocat sistemul de operare, și 64MB memorie RAM plus un  microcontrolerul ATmega32U4 (prezent și pe Arduino Leonardo). Coexistența celor două circuite programabile simplifică implementarea aplicațiilor de rețea permițând scrierea părții de nivel aplicație pe microprocesorul Atheros. Astfel programatorul are la dispoziție microcontrolerul ATmega32U4 doar pentru sarcinile specifice unei plăci Arduino: control, achiziție de date, interfață utilizator etc. Comunicația între cele două circuite programabile se face serial și este ușurată de biblioteca software Bridge. Această combinație de două circuite programabile este mult mai simplu de utilizat și mai eficientă pentru dezvoltarea aplicațiilor embedded decât o placă de dezvoltare de tipul Raspberry Pi sau BeagleBone. Pentru exemplificare vă recomandăm parcurgerea proiectului Yun Spot din cadrul cărții ”10(zece) proiecte cu Arduino” ce descrie implementarea unui router cu facilități de tip punct de acces WiFi și interfață utilizator bazată pe un LCD alfanumeric HD4478:

https://books.google.ro/books?id=aMB8BgAAQBAJ

Distribuția Linux OpenWRT ce rulează pe microprocesorul Atheros este o distribuție gândită special pentru sisteme specializate de tip punct de acces WiFi necesitând foarte puține resurse de calcul (memorie, putere procesor, spațiu de stocare intern). Această distribuție este întâlnită pe multe sisteme de tip router aflate pe piață produse de firme precum: 3Com, Asus, D-Link, Hi-Link etc. – cine știe? poate chiar routerul dvs. rulează OpenWrt…

4

https://openwrt.org/

Succesul plăcii de dezvoltare Arduino Yun a condus la diversificarea acestei subfamilii Arduino apărând diferite variante bazate pe aceiași combinație microcontroler AVR și microprocesor ce rulează OpenWRT:

Arduino Yun Mini – o placă de format mai mic dar fără mufele RJ45 (pentru conexiunea Ethernet) și USB Host (ambele prezente pe Arduino Yun) și fără cititorul de card SD. Este produsă exclusiv de arduino.org și din acest motiv biblioteca Bridge a fost rebotezată Ciao.

5

https://www.robofun.ro/arduino/arduino-yun-mini

Arduino Industrial 101 – un format fizic total atipic pentru familia Arduino, nu expunse decât 7 pini ai microcontrolerului ATmega32U4 (4 analogici și 3 digitali), în plus deține conector pentru afișaj dogOLED. Fără conectori Ethernet, USB Host și cititor card SD. Singurul avantaj este prețul mai mic. Produsă exclusiv de arduino.org.

6

https://www.robofun.ro/arduino/arduino-industrial-101

Arduino Tian – un Arduino Yun pe steroizi… Microprocesor Atheros AR9342 (560MHz, compatibil WiFi 2.4GHz și 5GHz), memorie flash 16MB + 4GB eMMC, memorie RAM 64MB, conexiune Ethernet 10/100/1000 Mbit/s. Microcontroler ARM Cortex M0+ SAM21G18 pe 32 de biți, memorie flash 256KB, memorie RAM 32KB. Conectivitate Bluetooth 4.0 / BLE. Produsă exclusiv de arduino.org .

7

https://www.robofun.ro/arduino/arduino-tian

și nu în ultimul rând: LinkIt Smart 7688 și LinkIt Smart 7688 Duo – două plăci de dezvoltare produse de compania MediaTek (sunt echipate cu microprocesoare MediaTek MT7688 580MHz, 32MB Flash, 128MB RAM) în parteneriat cu Seeed Studio. Doar varianta Duo dispune de microcontroler ATmega32U4 și, în ciuda diferenței de microprocesor, este compatibilă software 100% cu placa Arduino Yun și cu biblioteca Bridge (inclusă în distribuția OpenWRT instalată în memoria flash a plăcii). Au avantajul major al prețului …

8

https://www.robofun.ro/arduino/linkit-smart-7688-duo

 

Pentru a vă convinge de avantajele sistemului de operare OpenWRT în realizarea unor proiecte IoT vă recomandăm următoarele proiecte și articole:

9

 

Plant Monitoring System using AWS IoT

https://www.hackster.io/carmelito/plant-monitoring-system-using-aws-iot-6cb054

Make Batman dance at the rythm of a gas sensor

https://blog.arduino.cc/2015/07/23/make-batman-dance/

Simple and Smart Air Purifier System

https://create.arduino.cc/projecthub/aaronkow/simple-and-smart-air-purifier-system-8604ab

Arduino Yún: the best hacks you will ever see

http://www.open-electronics.org/arduino-yun-the-best-hacks-you-will-ever-see/

Embedded Linux Board Comparison – Raspberry Pi, Beaglebone Black, Arduino Yun, and Intel Galileo–which one is right for you?

https://learn.adafruit.com/embedded-linux-board-comparison

Zoned Climate Control with MediaTek’s LinkIt™ Smart 7688

https://www.hackster.io/BuddyC/zoned-climate-control-with-mediatek-s-linkit-smart-7688-f7eb3c

DIY a Wi-Fi Speaker with LinkIt Smart 7688

http://www.seeed.cc/project_detail.html?id=1076

Linkit SMART/ONE sensor monitoring

https://www.hackster.io/smerkousdavid/linkit-smart-one-sensor-monitoring-7e2741

Cum testăm scheme electronice bazate pe platforma Arduino fără să riscăm să ardem componente?

Una dintre principalele neplăceri a primilor pași în descoperirea ”tainelor” montajelor electronice este riscul de distrugere a componentelor cu care lucrăm. Fire de conectare legate greșit sau inversate, alimentare greșit conectată, scurtcircuit între Vcc și GND, curenți prea mari sau insuficienți, interpretarea greșită a poziției pinilor unui circuit integrat – toate aceste greșeli sunt extrem de probabile pentru un începător dar nu numai. Singurele modalități de a evita aceste accidente sunt răbdarea, atenția și practica îndelungată. Până acum… când există posibilitatea de simulare a montajelor realizate cu platforma Arduino.

Mediilor de simulare electronică sunt orientate puternic către fabricația cablajelor electronice și către simularea părții electronice dar există și platforme de proiectare electronică ce permit simularea electronică combinată cu partea software, esențială în lucrul cu circuitele programabile de tip microcontroler. O astfel de platformă este Proteus Design Suite.

1

http://www.labcenter.com

Din păcate această platformă este un produs comercial cu un cost destul de mare și care nu este destinată începătorilor. O platformă online apărută recent face disponibilă în mod gratuit partea de proiectare, simulare și testare hardware și software a montajelor electronice bazate pe placa de dezvoltare Arduino, este vorba despre platforma Autodesk 123D Circuits (circuits.io).

2

https://circuits.io

Această platformă este parte a unei familii mai mari de produse online dezvoltată în ultima perioadă de compania Autodesk (companie binecunoscută pentru produse de proiectare CAD precum AutoCAD sau 3D Studio Max). Această familie include: 123D Catch – software de scanare 3D, 123D Design – software de modelare 3D, 123D Make – software de conversie a modelelor 3D în puzzle-uri 3D, 123+ Sculpt+ – software  de modelare 3D pentru iPad. Datorită apartenenței la această familie 123D Circuits depășește funcționalitatea de proiectare electronică a circuitelor electronice permițând proiectarea circuitelor imprimate (PCB) și chiar și a carcaselor pentru proiectele electronice.

Pentru a accesa platforma 123D este necesară înregistrarea gratuită a unui cont utilizator. După conectarea la platformă, realizarea unei scheme presupune accesarea secțiunii Electonics Labs de unde puteți crea un proiect nou (New Electronics Lab) sau vizualiza proiectele realizate de alți utilizatori (Gallery) – toate proiectele de pe platformă sunt partajate între utilizatori.

3

Pentru realizarea montajelor există o listă destul de mare de componente electronice: rezistențe, condesoatoare, led-uri, butoane, senzori analogici și digitali, circuite digitale logice, afișaje, relee, motoare, plăci de dezvoltare (Arduino Uno, Arduino Micro, ESP8266), instrumente de măsură (voltmetru, ampermetru, osciloscop) și multe altele. Din păcate nu există, la acest moment, posibilitatea de adăugarea de noi componente. Lista completă de componente poate fi explorată în secțiunea Components:

https://circuits.io/lab/components

Pentru a începe să realizați propriile montaje și simulări vă recomandăm următoarele materiale:

Zero to Breadboard Simulation

http://www.instructables.com/id/Zero-to-Breadboard-Simulation/

Web Browser Arduino Simulation

http://www.instructables.com/id/Web-Browser-Arduino-Simulation/

iar pentru a trece la partea de implementare practică a montajelor:

Custom Electronics Enclosure

http://www.instructables.com/id/Custom-Electronics-Enclosure/

 

Spre deosebire de mediul de dezvoltare Arduino IDE partea de simulare software a platformei 123D Circuits oferă posibilitatea de depanare a programului (DEBUGGER) prin introducerea de puncte de suspendare a execuției (breakpoints):

4

O altă funcție extrem de importantă a simulării este verificarea din punct de vedere electric a schemei realizate. Captura de mai jos ilustrează avertizarea de depășire a curentului maxim debitat pentru un registru de deplasare 74HC595 – avertizare ce se traduce în viața reală prin distrugerea fizică a circuitului digital. Această facilitate oferită de simulator face posibilă evaluarea și înțelegerea modului de funcționare electrică a circuitului testat.

5

Datorită caracterului colaborativ al platformei 123D Circuits (proiectele realizate sunt partajate între utilizatori, se poate copia și lucra pe un proiect deja existent, se poate lucra în echipă pe un proiect) o sursă foarte importantă de învățare este studierea proiectelor realizate de ceilalți utilizatori ai platformei. Vă recomandăm următoarele proiecte:

Analog Gas Sensor

6

https://circuits.io/circuits/2631979-analog-gas-sensor

ce utilizează senzorul de gaz metan MQ-4.

7

https://www.robofun.ro/senzori/biometric/senzor_metan_mq-4

HelloKeypad

8

https://circuits.io/circuits/2255844-hellokeypad-ino

ce prezintă modul de funcționare a unei tastaturi matriceale.

https://www.robofun.ro/electronice/butoane/membrane-3×4-matrix-keypad-extras-3×4

NeoPixel Clock – San Francisco9https://circuits.io/circuits/2102703-neopixel-clock-san-francisco

ce utilizează un modul ESP8266 și două afișaje Neopixel Ring.

https://www.robofun.ro/wireless/wireless-wifi/wifi-module-esp8266

https://www.robofun.ro/electronice/led/neopixel-ring-16-x-ws2812-5050-rgb-led

https://www.robofun.ro/electronice/led/neopixel-ring-24-x-ws2812-5050-rgb-led

Christmas Tree

10

https://circuits.io/circuits/1392613-christmas-tree

ESP8266 Temperature Weather Station

11

https://circuits.io/circuits/2100207-esp8266-temperature-weather-station

Johnson Decade Counter Example

12

https://circuits.io/circuits/1091346-johnson-decade-counter-example