Velké problémy s malým filesystémem

Kompletní záznam celého letu by byla krásná funkce OGN krabiček. Problémem ovšem je, že SD karta, na kterou se záznam ukládá, se relativne rychle opotřebuje. Způsobuje to častý zápis do FAT tabulky, konkrétně pole poslední modifikace souboru, ale hlavně alokace sektorů a velikost souboru, které je pokaždé ve stejné buňce FATky. Času a datumu změny se lze snadno zbavit, ale ostatních častých zápisů už moc ne. Moc tomu ani nepomáhá velikost RAM (20kB) použitého mikrokotroléru a velikost sektorů (512B) FATky.

Proto jsem se rozhodl ji nahradit LittleFS. Schopnost filesystému přežít výpadek napájení, ale hlavně wear leveling (t.j. rozprostření ošoupávání buněk flešové paměti na celou kartu) napovídají tomu, že by karta mohla ve zdraví přežít značně větší množství zápisů a že toto je ta správná cesta. To vše jen do chvíle, kdy se 4000+ řádků LittleFS zkompilovalo do více než 8kB binárky, a to i po vynucení té nejsilnějsí optimalizace na velikost a nezahrnování nepoužitého kódu.

Toto, v kombinaci s blížícím se dalším problémem (konkrétně rozsáhlostí mého vlastního kódu + s bluetooth booloaderem taktéž o velikosti 8kB) způsobilo, že se podpora LittleFS prostě nevleze do 128kB flash paměti programu použitého mikrokontroléru F103CB.

A co ted s tím? Nabízí se dvě možnosti. První z nich je nahradit F103CB MCU jiným ze stejné řady, který má více FLASH, jako například F103CB. Ten má ovšem 64 nožiček a tudíž nesedne do footprintu na tištáku, kde se počítá jen se 48 nožičkovým pouzdrem. Proto je druhou otevřenou možností jej nahradit jiným – F030CB, který má stejný footprint (to je mimochodem moc pěkná vlastnost mikrokontrolérů od STM, že se snaží dodržovat stejný pinout i mezi různými řadami jejich MCU) a 256kB FLASH + 32kB RAM. Nemusel bych dělat nové tišťáky, ale budu muset upravit kód, aby podporoval architekturu F030ky (ARM Cortex M0 vs. M3, sběrnice a periférie jsou připojeny občas někde jinde a podobně). Ale zůstalo by tak stejně malé pouzdro s tím, že by se otevřely další možnosti vývoje! 🙂

Ovšem věci nemohou jít nikdy jen tak snadno. V několika posledních měsících jsem zaznamenal, že System Workbench for STM32 (sw4stm32) který používám není schopen stáhnout SPL firmware. Nepomáhá ani jejich ruční instalace z webu STM. Dotazoval jsem se proto na fóru openstm32.org (tady poprvé a tady podruhé), zda má někdo řešení tohoto problému, ale zatím neúspěšně.

(Edit) Tak nakonec se mi podařilo najít cestu jak to obejít 🙂

(Edit2) Zde je ke stažení záloha STM32 firmwarů které byly ješte dostupné na serverch odkazovaných v souboru stm32targets.xml.

CUBE3 jsou k dispozici!

Před pár týdny jsem nahoru do menu v tichosti přidal nabídku Choose & Buy, jen jsem však nějak pozapomněl ji zpropagovat i tu uprostřed. A před chvilkou jsem si i všimnul, že poslení příspěvek z dubna lehce naznačuje, že to tu umřelo. Tak to přitom ale vůůbec není! 🙂

Udělali jsme dvacet pět dalších krabiček (opravdu 25 navíc) a ty ted rozesíláme po celé zeměkouli! Protože jsem chtěl ruční výrobu poněkud urychlit, nechal jsem přibližně polovinu součástek na deskách osadit na mašině. Polovinu proto, že modely A a B mají něco společného a ten zbytek je rozdílný. A ač jsem zpočátku moc nevěřil, že to dopadne dobře, bylo to úplně zbytečné a příště nechám už osadit asi úplně všechno. Plánuji o tomto dobrodružství napsat delší povídání, něco jako příběh pokusu o malou sériovku bez jakýchkoliv přechozích zkušeností a znalostí.

Ale protože je půlka sezóny za námi a řádků v zápisníku je pomálu, pojďme raději nejdřív plachtit! 🙂

HROMADA krabiček

Dlouho jsme se neviděli, no ňi? Celý měsíc jsem totiž pracoval na změnách na tišťáku (jajaj), objednával součástky, třídil je, dohledával další, o kterých jsem ani neveděl, že mi chybí, pájel je, a nakonec tisknul krabičky a nálepky. A to všechno jen proto, aby bylo během závodů veselo i na zemi.

Postavit hromadu krabiček není jen tak, ale stejně tak důležité je i jejich důkladné vyzkoušení. Proto jsem s nimi jezdil kolem komína i okolních okresech jak vzteklý. A hlavně k večeru, kduž padla tma, tak to muselo vypadat jako když jedou hasiči, když celé auto blikalo všemi barvami, převážně modře.

Po úspěšném otestování všech krabiček bylo načase jim postavit nový domov.

No není to paráda? Ibišku, dobrá práce, fakt že jo! 🙂

První dvě trojky jdou do světa!

Přišl ten velký den, kdy se první dvě krabičky třetí generace vydaly do světa 🙂 Vybaveny jsou tříosým akcelerometrem pro monitoring zatěžování letadla a nově i záznamníkem letů, který počítá a ukládá časy startů, přistání a doby letů do souboru na SD kartě. První z krabiček začne svůj slavný život v Piperu 28, druhá bude poletovat všude okolo v pro oko našince podivně vypadajícím Morane-Saulnierovi MS.880.

Navzdory podivně vypadajícímu mikroUSB konektoru je možné tyto trackery napájet přímo z palubní sítě 12V (prakticky od 4 do 15V). Samozřejmě jsou vybaveny tak jako všechny předchozí modrým zubem, přes který se do navigace dostanou informace o okolním provozu, aktualizace firmwaru a navíc je přistupný i logbook pro stažení do androidího telefonu pomocí specializované aplikace (hned jak ji napíšu 😉 ).

A protože času není nazbyt, tak ještě navíc provádím experimenty s rozličnými krabičkami pro různé varianty – shora dolů: tenkou (napájení přes mikroUSB, vysoká 17mm), standardní (RJ45, 20mm) a tlustou pro baterií napájenou variantu (24mm).

Zpátky ve hře

Znáte takovéto když se řekne „Já mám kamaráda, co má kamaráda..“?

Tak já vám řeknu, že mám kamaráda, co má kamaráda, který umí pájet jak největšíborecnazeměguli! Bez nadsázky. Za použití mikroskopu a infraohřevu dokázal osadit dvacetičtyř(ne)nožičkový integráč o rozměrech 3×3 mm bez toho, aby se mu nespojily a zároveň dobře připájely všechny jeho (ne)nožičky. Popravdě řečeno, ještě jsem nikdy neviděl takto čistou a skvělou práci. Paráda!!

Je to tak okulahodící, no podívejte:

V tuto chvíli to znamená, že jsme ověřili správné zapojení a návrh destičky a tudíž můžeme začít se skutečně brutálně masivní výrobou. Někteří sice brblají, že nevidí v akcelerometru zádný užitek (tak ho tam nedostanou a bude :P), ale pro mnoho z vás, ne tak zaslepených, to bude užitečná funkcionalita.. teda aspoň doufám. No řekněte, že ano!

Takže se těšte, protože je kurňa na co! 🙂

Pájecí peklo

Osazování úosmičky šlo přesně tak, jak jsem očekával. Po 10 hodinách pokusů ji tam správně usadit jsem zničil tři integráče a neexistovalo nic, co by mě bavilo míň , než pájení.

Pouzdro QFN24 je velké, nebo spíš malé jak sfiňa – měří jen 3x3mm s pájecími ploškami o rozměru 0.2mm. Už jsem přišel na to, kolik pájecí pasty je potřeba, aby se plošky nespojovaly, plošťenka tam sedí rovně a zdá se, že je i vše správně připájeno, jen ta potvora ne a ne fungovat. Zapojení / schéma se zdá být naprosto v pořádku (prakticky čistě podle datasheetu) a měřákem jsem zkontroloval, že odpovídající kontakty kontaktí jak mají. Jen je velmi pravěpodobné, že jsem ji při pájení vcelku dost přežhavil, což MEMSové senzory údajně nemají moc rády..

Zbytek destičky funguje podle očekávání, především nový spínaný zdroj mě dělá obzvláštní radost. Za povšimnutí taktéž stojí superkondenzátor (C10), který nově zálohuje napájení GPS přijímače.

Na desce jsou celkově tři různé varianty trackeru. V závislosti na osazení na ní vznikne model „A“ napájený z 12V pres mikroUSB kontektor, model „B“ s vnitřní baterií, nabíjený přes ten samý uUSB a konečne model „A“ s konektorem RJ45, který ovšem potřebuje vyrobit druhý tišták s výřezem v místě P7 (proto je tam tolik místa),

Takže ted je třeba sehnat způsob nebo někoho, kdo bude schopen osadit akcelerometr a můžeme se pustit do hromadné velkovýroby! 🙂

OGN CUBE 3 Prototyp 1 PCB

Přesně v půlce ledna jsem dostal zprávu, že si mohu vyzvednout hotové tišťáčky. Neváhal jsem ani chvilku a během oběda jsem zběhnul na druhou stranu Brna. A stálo to za to 🙂

Pohled shora
Pohled zespodu

Popravdě, z U8 mám poněkud strach a jsem o očekávání silného pájecího zážitku..

OGN CUBE 3 – prototyp 1

Během vánočního „volna“ jsem se konečně přestal věnovat práci a našel nějaký ten čas na relativně malou, ale dlouho odkládanou změnu návrhu a vylepšení trackeru. Tou změnou se především rozumí náhrada lineárního regulátoru v napájecím zdroji, která znamenala neskutečné plýtvání energií z baterie (a obšťastnila mě dvěmi přílety na letiště bez rádia a navigace). Zdroj je nahrazen DC-DC měničem s pracovním kmitočtem lehce přes 1MHz, se kterým se doufám vyhneme rušení rádia, či jiným neočekávaným vedlejším efektům.

Druhým vylepšením, či spíše novou featurou je slíbený akcelerometr a gyroskop. V tuto chvíli je možné desku osadit dvěmi variantami – MPU-6500 nebo MPU-9250. Borci a borky z Invensensu odvedli dobrou práci především v tom, že patice obou součástek je (až na jednu nožičku) naprosto totožná. A ta jedna nožička může být snadno připojena překlenutím JP3 na spodní straně desky, podle toho, který z nich bude osazen.

Třetí a takovou malou třešničkou na dortu je podržení nejaktuálnější pozice v GPS miniaturním superkondenzátorem, který by měl udržet zálohované napájení navigačního modulu při výpadku napájení po dobu přibližně 12 hodin.

Routování destičky byla celkem divočina, protože do návrhu opět přibyla spousta součástek a jejich spojení zatím co plocha pro jejich umístění nebyla zase až tak moc nafukovací. Takže jsem si štedrý den a den před ním a po něm pěkně užil. Myslím, že víc dalších součástek či změn se tam už nevleze..

Navíc je tu jedna věc, která mě poněkud znervózňuje. Zamýšlené MPUčka jsou jak na Arrowu, tak i Farnellu označené jako nevhodné pro nové návrhy, takže jen doufám že tu s námi ještě nějakou dobu vydrží. Během toho se taky ukáže, zda bude akcelerometr nějakým způsobem užitečný či vůbec ne.

Prototyp byl odeslán do výroby 27. prosince a tak přepokládám, že někdy v půlce ledna bych jej mohl začít osazovat. Přitom zjistím, kolich dalších chyb jsem na desce udělal a věcí zapomněl. A nebo, že se mi to konečně jednou podařilo napoprvé 🙂

A až bude toto hotovo, začnu hledat někoho, kdo ty destičky vyrobí a osadí mašinou, protože jak jsem říkal loni – už nikdy nebudu tolik desek pájet ručně!! 🙂

Data logger je plně funkční

Po sezóně poflakování se na přeletech a kolem letiště jsem se konečně usadil k počítači a věnoval mnohé deštivé odpolene a ještě více neprospaných nocí jedné slibované věci – záznamu letu na SD kartu.

Důvodem, proč to celé trvalo tak dlouho, je mé nekonečné prozkoumávání slepých uliček, narážení do zdí a především počáteční myšlenka, že kód by měl být čistý, založený pouze na STL, každý kus snadno pochopitelný, bez obskurních a nedokumentovaných knihoven, prostě udelám to celé od začátku. Největším problémem bylo jak ohnout Chanovu knihovnu FatFS tak, aby šla napasovat na vlastní implementaci SPI. To, co je očividně pro všechny ostatní hračkou, mě zabralo neskutečně mnoho úsilí a hledání, až jsem konečně narazil na tuto stránku, jejíž stará verze uchovává poklad ve formě těchto dvou přípěvků, které mě zachránily od toho to nakonec potupně vzdát.

Poté, co jsem se stal mistrem v hackování FatFS, přišla na řadu další, tentokrát už značne jednodušší otázka – v jakém formátu zaznamenaná data ukládat? IGC se zpočátku zdála jako jasná volba (a mnozí k tomu nadšeně s kafem v ruce přikyvovali), ale OGN krabička pořebuje uložit i jiné záznamy, které nejsou tímto formátem podporovány. A k tomu všemu je (podle mého názoru) jeho formát příliš ukecaný, navíc okem prostého smrtelníka nečitelný.  A ani OGN CUBE x+n nejspíš nikdy nebude certifikovný datalogger s podpisem, tak proč si komplikovat život, že?

Z toho důvodu jsme se rozhodli ukládat data v jednoduchém CSV souboru s hlavičkou, která jasně popisuje co je co. Uživatel tak nemusí nic pracně dohledávat a dekódovat, přičemž CSV lze snadno otevřít v libovolném textovém editoru či tabulkovém procesoru. A navíc výsledná velikost souboru i s relativně dlouhým letem není nijak závratná.

Příklad záznamu s několika vybranými řádky je zde:

$OGNR;HHMMSS;gpsFix;pressure[Pa];lat;lon;gpsAlt[m];gpsSpeed[m/s];gpsTrackCourse[deg];ax;ay;az*CRC
$OGNR;112332;3;92884;49.860138;17.613463;727;56.4;327.2;0.222;-0.886;1.370*2a
$OGNR;112341;3;92917;49.864000;17.609517;726;57.7;326.6;0.598;-0.640;1.093*28
$OGNR;113317;3;91468;49.898227;17.543775;852;46.2;246.3;0.592;-1.177;1.069*25
$OGNR;114233;3;93324;49.815882;17.234948;686;52.5;78.9;-0.697;-1.389;1.520*3f

Každý letový záznam začíná názornou hlavičkou, která vysvětluje hodnoty ve všech sloupcích. Začátek a konec letu je řízen určitými pevně danými podmínkami (rychlost proti zemi a doba neaktivity na zemi). Záznamy jsou roztřízeny do souborů podle data, kde více letů ten samý den je uloženo v jednom souboru. Soubor je pak pojmenován podle aktuálního dne, konkrétně například 20181022.ogn (tzn. ve formátu YYYYMMDD.ogn).

Jelikož to vypadá, že je zaznamenávání letu plně funkční, tak jej můžeme konečně vypustit do světa. Ti, kteří mají již krabičku vybavenou slotem pro mikro SD kartu, dostanou nový firmware v nejbližších dnech. Postupujte prosím podle popisu aktualizace firmwaru popsanou v letáčku, který jste dostali s krabičkou. Budete k ní potřebovat firmwareLoader, kterým nahrajete aktualizační soubor přes bluetooth do trackeru. Není se čeho bát, máte neomezený počet pokusů, není na tom co zkazit 🙂

Zimě není ovšem zdaleka konec a práce je stále dost. V plánu je ještě spousta věcí na udělání a dodělaní, konkrétně

  • androidí aplikace, přes kterou půjde snadno stahovat a flashovat různé firmwary a aktualizace,
  • stahování letových záznamů do té samé aplikace, abychom nemuseli furt manipulovat s tou protivně malou SD kartou,
  • vymyslet a vyrobit nový tišťák, na kterém bude akcelerometr (tady čeká ještě hodně experimentování a rozhodování, který to vlastně bude),
  • a konečně, až přijde ten pravý čas, přidat podporu vy-víte-jakého protokolu.

Mňo, úplně jsu zvědavý kdy budu dělat SerialRouter a upravovat ten VFR Manuál. Protože i na těch je práce jak na letišti..

Příběh prvních dvaceti kouzelných krabiček

V půlce května dorazila z Apamy konečně šablona tolik očekávaných tištáčků. Ty se postupně přesouvaly z jedné krabice do druhé, pak třetí a tak pořád dokola, dokud se z toho nezamotaly. A toto je dokumentace jejich cesty.

Rozlámání desky bylo radostí a potěšením.

Následovala podrobná vizuální kotrola každého kusu jak z vrchu, tak i zespodu.

První osazený napajecí zdroj & MCU, oživování a zároveň i první zkouška nabíjení a napájení z baterie druhé revize PCB.

Osazování MCU. Jeden je v pohodě, pět ještě jde, ale mějte trpělivost s 20 kusy.

Osazování konektorů.

V tuto chvíli jsou včechny SMD součástky na desce a půjdeme na moduly.

Tlaková čidla znamenají zapájet jen 20 x 6 = 120 nožiček. Pohoda 🙂

Modré zuby seřazeny a připraveny jít jako další.. tentokát ovšem zespodu.

GPS moduly a rádia.

A první plně osazený OGN tracker je tu! Volejte všichni sláva! 🙂

Pomalu se to tu začíná plnit..

.. až jich je úplná hromada!

Každá z dvaceti antén byla zabalena ve svém malém igelitovém sáčečku.. ekologie rulezz!

No nevypadají roztomile? 🙂

A každému trackeru patří i malá ale výkonná baterie (nic pro bubnující králíky; ti žerou ovšem značně víc). Týpek v obchodě se na mě díval divně, když jsem jich chtěl 22. Nebo 23? Já už z toho všeho ani nevím..

A jak to všechno dopadlo? To se dozvíte příště, milé děti. Jedno je však jisté: