Popis SW NEDCPU v.1.2

V nové aktualizaci jsem přidal jen pár příkazů.

Konečně jsem zprovoznil RTC modul a tak přibyl příkaz „time“ na zobrazení aktuálního času, data a dne v týdnu, a příkaz „set rtc“ pro nastavení RTC modulu.

Dále proběhla menší HW úprava na v.1.1, přidání RF modulu, a tak mám nový příkaz „set rf“ pro jeho nastavení a dále „rf com“ pro komunikaci přes RF rozhraní.

Vytvořil jsem instruktážní video s několika základními příkazy:

Kompletní přehled příkazů je na samostatném příspěvku.

NED-BASIC – popis příkazů

Poslední verze NED-Basicu, v.1.1 – 2.1.2022, podporuje celkem 35 příkazů. Všechny je možné použít buď v přímém režimu – zadaný příkaz se hned provede, nebo v režimu programování kdy musí být před příkazem uvedeno dvojciferné číslo řádku na který se příkaz uloží. Příkazy se zapisují malými písmeny. Znak „@“ je vyhrazený a slouží k označení konce programu při nahrávání z PC.

NED-Basic podporuje celočíselné proměnné s názvy a-z, typu int v rozsahu -2 147 483 648 až 2 147 483 647 (dle typu MCU).

Pro práci s SD kartou podporuje NED-Basic názvy souborů ve formátu 8.3 – celkem max. 12 znaků.

Psaní programů je možné provést na PC v poznámkovém bloku a poté nahrát příkazem sload do paměti programu, kde je možné například uložení na SD kartu, úprava, spuštění.

Při psaní programu v PC je nutné správné formátování. Písmo je potřeba nastavit na prostý text, kódování UTF-8 a zakončení řádku Windows. Na konec programu je poté nutné napsat znak @ – zavináč, díky kterému zavačeč pozná konec souboru.

Příkazy NED Basicu

help

zápis „help“ – zobrazí seznam podporovaných příkazů s krátkým popisem.

info

zápis „info“ – zobrazí základní informace o systému

I2C scan

zápis „i2c scan“ – vyhledá a vypíše adresy zařízení připojených na I2C sběrnici MCU

SD delete

zápis „sd del 8.3“ – smaže soubor na SD kartě se jménem ve formátu max. 8 znaků název . 3 znaky přípona.

SD list

zápis „sd ls“ – vypíše seznam souborů a složek na SD kartě a jejich velikost v B

SD info

zápis „sd info“ – vypíše informace o SD kartě. Kapacitu, formát, typ.

SD save

zápis „sd save 8.3“ – uloží program v programové paměti na SD kartu do souboru s názvem ve formátu 8.3.

SD load

zápis „sd load 8.3“ – načte z SD karty program s názvem ve formátu 8.3 do programové paměti.

OUT

zápis „out x y“ – zapíše byte v proměnné x na adresu v proměnné y.

IN

zápis „in x y“ – načte byte z adresy v proměnné x do proměnné y.

čekej

zápis „cek x“ – zastaví program na dobu x. x je číslo v intervalu 1 – 99999 (ms).

smaž obrazovku

zápis „clr“ – smaže obrazovku terminálu (funkci musí podporovat terminálový program)

zápis proměnné

zápis „x=y“ – zapíše celé číslo y do proměnné x.

výpis proměnné

zápis „x==“ – vypíše obsah proměnné x.

sčítání

zápis „x+y=z“ – sečte proměnné x a y a zapíše výsledek do proměnné z.

odčítání

zápis „x-y=z“ – odečte od proměnné x proměnnou y a zapíše výsledek do proměnné z.

násobení

zápis „x*y=z“ – vynásobí proměnnou x proměnnou y a zapíše výsledek do proměnné z.

dělení

zápis „x/y=z“ – vydělí proměnnou x proměnnou y a zapíše výsledek do proměnné z.

AND

zápis „x&y=z“ – logický AND proměnné x a proměnné y a zapíše výsledek do proměnné z.

OR

zápis „x|y=z“ – logický OR proměnné x a proměnné y a zapíše výsledek do proměnné z.

XOR

zápis „x^y=z“ – logický XOR proměnné x a proměnné y a zapíše výsledek do proměnné z.

NOT

zápis „x~z“ – logická negace proměnné x, zapíše výsledek do proměnné z.

bitový posun vpravo

zápis „x>>z a“ – bitový posun vpravo proměnné x o počet bitů a, výsledek v proměnné z.

bitový posun vlevo

zápis „x<<z a“ – bitový posun vlevo proměnné x o počet bitů a, výsledek v proměnné z.

zápis do programové paměti

zápis „xx příkaz“ – zápis příkazu do programové paměti na řádek xx.

výpis řádku programové paměti

zápis „xx==“ – vypíše z programové paměti řádek xx.

výpis programové paměti

zápis „list“ – vypíše všechny příkazy z programové paměti.

RUN

zápis „run“ – spustí program zapsaný v programové paměti

návrat do BASICU

zápis „ret“ – návrat z prováděného programu zpět do BASICU.

poznámka v programu

zápis „//poznámka“ – vše za // se ignoruje, slouží pouze jako poznámka pro programátora.

smazání paměti programu

zápis „del“ – smaže programovou paměť.

výpis textu

zápis „print text“ – vypíše text na obrazovku

nepodmíněný skok

zápis „jmp xx“ – skočí na řádek číslo xx.

podmíněný skok

zápis „if a b c dd“ – a=proměnná, b=znak porovnání (< > =), c=proměnná, dd=číslo řádku na který se skočí při splnění podmínky.

načtení programu ze sériové linky

zápis „sload“ – uloží program poslaný po sériové lince do paměti programu. Příklad ZDE

zobrazení aktuálního času a data

zápis „time“ – vypíše aktuální čas, datum a den v týdnu

nastavení RTC

zápis „set rtc“ – nastavení RTC modulu, příkaz má vlastní podmenu

nastavení RF modulu

zápis „set rf“ – nastavení RF modulu, příkaz má vlastní podmenu

komunikace přes RF

zápis „rf com“ – komunikace přes RF rozhraní

Jednotka pro zobrazování dat z Thingspeaku

Pro zobrazování teplotních dat z webu Thingspeak jsem si postavil jednoduchou zobrazovací jednotku s LED displejem a wifi.

Jednotka je postavená na desce Arduino, která řídí zobrazování, a modulu ESP-01 pro komunikaci s internetem přes wifi.
Funkce je jednoduchá. Modul ESP-01 se připojí přes wifi na servery Thingspeak a načte data. Data odešle přes sériovou linku do čekajícího arduina. Arduino je po přijetí zpracuje k zobrazení a odešle je do LED displeje.

Četnost aktualizací je nastavená na 5 minut a lze jí upravit v programu pro ESP-01.
Vlastní zapojení je provedené na kousku univerzální DPS v plastové krabičce a k napájení slouží externí adaptér na 5V.
LED displej je s řadičem TM1637 a upravený pro zobrazení desetinné tečky vyvrtáním díry ze spodu displeje v místě tečky a zalepením LED diody. V programu pro ESP je potřeba zadat údaje pro připojení k wifi síti a číslo Thingspeak kanálu.

NEDSAT – koncept

Jak už název napovídá NEDSAT bude testovací „satelit“. „Satelit“ je v uvozovkách úmyslně, prakticky jde o jakousi maketu satelitu která bude pouze na Zemi. Základ vychází z myšlenky cubesatu, miniaturního satelitu. Rozměrově proto půjde o krychli o hraně 10cm na jejímž povrchu budou z 5 stran solární panely a čidla. Na spodní straně musí NEDSAT stát a proto na ní budou gumové nožky a ve středu silný magnet na uchycení ke kovovému povrchu. Spodní strana bude také jako jediná odklápěcí a tím zajistí přístup k vnitřnímu HW.

Úkolem NEDSATu bude sbírat data na dané pozici, ukládat je do paměti a v případě žádosti je odeslat po RF spojení.

Budou se sbírat následující hodnoty: venkovní teplota, vnitřní teplota a vlhkost, tlak vzduchu, stav akumulátoru, osvětlení panelů, aktuální čas a datum. Dál uvidíme, možná magnetické pole připadně radiace, to se pozná v průběhu. K ukládání dat nejspíš poslouží SD karta. Jako řídící MCU plánuji nejspíš Arduino UNO, resp. jen jeho MCU ATmega, pro minimalizování odběru.

RF spojení se základnovou stanicí NEDCPU bude probíhat v pásmu 433MHz, pomocí modulů HC-12 s čipem SI4463. Tyto moduly je možné konfigurovat na velmi nízkou spotřebu a nebo na velký dosah (až stovky metrů) nebo různé kombinace. Primárně bude poslouchat v módu minimální spotřeby a pokud zachytí žádost o komunikaci přepne se do standartního módu a po ukončení přenosu přejde opět do úsporného módu.

Cíle NEDSATU

Účelem NEDSATU je především seznámení se a otestování konstrukce se solárním napájením, stavba a naprogramování konstrukce s ohledem na minimální spotřebu, možnost vzdálené komunikace a konfigurace s otestováním maximální komunikační vzdálenosti, a hlavně udržet vše v chodu bez servisního zásahu po co nejdelší dobu. Prostě v principu vesmírný satelit či meziplanetární sonda.

Popis SW NEDCPU

Řídící SW je napsaný v Arduino IDE, díky čemuž by měl po pár úpravách fungovat i na jiných podporovaných deskách.

Ovládání probíhá přez sériovou linku z PC pomocí emulátoru sériového terminálu (používám GTKTerm).

UI bylo od začátku myšleno ve stylu prvních počítačů, takže probíhá pomocí zadávání příkazů. Zadané příkazy potvrzujeme entrem. Řídící příkazy jsou inspirované jazykem BASIC.

První verze NED-BASICu podporuje základní matematické příkazy s celými čísly (sčítání, odčítání, násobení a dělení), nepodmíněné skoky, výstup a vstup na port, ukládání a načítání programu na/z SD karty/u, ukládání celého čísla do proměnné a – z. Všechny podporované příkazy je možné zobrazit příkazem help. Zápis probíhá malými písmeny. Název souboru na SD kartě se zadává ve formátu 8.3 – 8 znaků název . 3 znaky přípona.

Pokračování textu Popis SW NEDCPU

Popis HW – NEDCPU

Řídící jednotka NEDCPU je zabudovaná do plastové krabičky o rozměru 15x5x13 cm. Na čelní panel jsou vyvedené LED diody přístupné na portu 22hex = 34dec, dále LPT konektor, tlačítko pro reset MCU a přepínač pro programování MCU. Na zadní straně je mikroUSB konektor pro připojení PC a slot pro mikroSD kartu.

Vnitřní HW

Jako řídící MCU je použitý ARM kontrolér STM32F103C8, který obsahuje 20kB RAM a 128kB FLASH. Na něj je připojen přes SPI slot pro SD kartu; rozšiřující 8bitové moduly PCF8574 pro ovládání LED a LPT, a modul RTC na I2C sběrnici a převodník USB <> UART pro komunikaci s PC.

NEDCPU – Úvod

NEDCPU je počítačová jednotka inspirovaná prvními počítači ovládanými pomocí příkazů po sériovém terminálu, postavená na současných technologiích.

Hardware

Základní jednotka je postavená na základě ARM MCU STM32F103C8, který komunikuje s PC pomocí USB převodníku který současně zajišťuje napájení. Přímo na MCU je připojený slot pro mikro SD kartu pro ukládání a načítání dat. Dále přez převodník úrovní (3,3V z MCU na 5V) na I2C sběrnici modul RTC a tři moduly 8-bitových bran PCF8574. Jedna brána slouží k ovládání 8 LED diod na čelním panelu a zbylé dvě jsou připojené k rozšiřujícímu konektoru LPT.

Na blokovém schématu je vše zřejmé

Čelní panel tedy obsahuje 8 LED diod, rozšiřující LPT konektor, tlačítko pro RESET a přepínač pro programování (MCU ho vyžaduje)

Software

Software je psaný v Arduino IDE. Není to určitě nejlepší řešení ale je pro mě nejvhodnější.

Ve verzi 0.1 mám funkční základní rozhraní které umí podle zadaného příkazu provést podprogram.