Arduino heeft de microcontroller populair en toegankelijk gemaakt. En menig ontwikkelbord komt dan ook met een Arduino port. Een zoektocht op internet geeft dan ook tal van resultaten hoe je met Arduino aan de slag moet. Als je echter wil uitbreken uit dat Arduino keurslijf zijn de zoekresultaten een pak minder.
Nu kunnen we wel meeliften op het werk dat gedaan is door Arduino. Met in eerste instantie de compiler.
Als je zoekt in de repositories van je favoriete Linux distro, vind je oudere compiler versies. Versies die bvb de nieuwere microcontroller versies niet kennen.
En dan zijn er verschillende opties:
In dit geval kiezen we voor 'leentje buur' spelen, want achter de schermen hebben veel Arduino bordjes een ATMEL microcontroller en moeten ze dus ook een bijpassende compiler en tooling gebruiken.
Welke versies er zijn kan je vinden op Arduino compilers (Linux). En downloaden kan via een url te bouwen met de gevonden compiler versie.
wget http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-pc-linux-gnu.tar.bz2
Dit geeft je een modernere voorgebouwde compiler.
Uiteindelijk moet de broncode omgezet worden naar de microcontroller instructies. Dit is de compilatie stap.
Een vereiste is wel dat je compiler gevonden wordt en meer bepaald ook als eerste gevonden wordt als je meerdere versies hebt.
Op een linux platform is dit mogelijk door je PATH environment variabele zo aan te passen dat het path naar deze compiler als eerste staat. Dit kan door je settings permanent aan te passen of, zoals ik het prefereer, ze enkel en alleen voor dit doel aan te passen.
Dit is simpel te bereiken door de PATH variabele voor de terminal waarin je de compilatie doet, aan te passen.
We 'sources' deze extra settings
export PATH=<path naar je AVR compiler>:$PATH
Als we dit in een bestand bijhouden is het op de commanline niet meer dan volgend commando uit te voeren
source <path + filename met bovenstaande export lijn>
En compileren wordt nog eenvoudiger als we gebruik maken van een Makefile.
Zo'n makefile beschrijft welke commando's uitgevoerd moeten worden en in welke volgorde.
Hieronder staat een simple voorbeeld:
# The MCU model, see https://www.nongnu.org/avr-libc/user-manual/using_tools.html for listMCU=attiny1604# Clock speed used (after divider), mostly for delay functionsCLK=20000000# Name of project output filePROJ=avrfox# List of source filesSOURCES=avr_fox.c# List of object files generated from source filesOBJ=$(SOURCES:.c=.o)all: $(PROJ).hex# Generated object files.c.o:avr-gcc -w -Os -DF_CPU=$(CLK) -mmcu=$(MCU) -c -o $@ $<# Generate executable$(PROJ).elf: $(OBJ)avr-gcc -w -mmcu=$(MCU) $(OBJ) -o $(PROJ).elf# Create Intel hex format for programming$(PROJ).hex: $(PROJ).elfavr-objcopy -O ihex -R .eeprom $(PROJ).elf $(PROJ).hexclean:rm -f *.hex *.elf *.o# Install flashes the codeinstall:avrdude -c serialupdi -p $(MCU) -P /dev/ttyUSB0 -U flash:w:$(PROJ).hex
# Give program size infosize:avr-size -C --mcu $(MCU) $(PROJ).elf
Uiteindelijk moet je programma op de microcontroller geraken. En dat wordt het 'flashen' genoemd. (In de Arduino programmeeromgeving ook wel 'upload' genoemd)
Doorheen de jaren zijn er verschillende methodes gebruikt op deze Atmel microcontrollers. Een van de laatste nieuwe is UDPI (Unified Debugging and Programming Interface). Dit is een 1-draads programmer en debugging interface wat de integratie op een bord wel heel eenvoudig maakt.
UPDI debugger en programmers zijn er in alle maten en prijsklassen.
De Adafruit UPDI HV Friend is een simpele en vrij goedkope programmer.
Atmel/Microchip heeft er uiteraard ook en die kunnen dan ook debuggen. Deze zijn echter wel wat prijziger.
We hadden al een ganse tijd 2 "DPS3005-USB" modules van Aliexpress liggen en daarvoor ook reeds 2 Mean Well voedingen voor gereserveerd.
Het was nog even wachten voor we een geschikte behuizing vonden waar we beide modules netjes konden monteren. Die hebben we gevonden in een behuizing (ook via Aliexpress) die eigenlijk voor RD6018 / RD6024 voedingen bedoeld is:
Hiervoor hebben we een 3D front en montagebeugels voor getekend en geprint:
Het bordje met de USB connector is vastgezet met 2 boutjes M3.
Na de test mongage is alles bekabeld:
De bestanden voor de ge-3d-printe onderdelen kan je downloaden op https://www.printables.com/model/1121769-front-panel-to-mount-dps3005-module-in-case-for-rd
Om de zichtbaarheid bij de CNC machines, 3D printer en soldeeroven te verbeteren hebben we ineens nieuwe led panelen opgehangen, meer licht voor minder energie:
Om het wasteboard van de RatRig CNC vast te zetten hebben we wat beugels nodig. De CNC kan ons alvast helpen om de gaten in de aluminium profielen voor te boren:
Nu kunnen de gaten gemakkelijk op de juiste maat nageboord worden met de kolomboormachine. Wanneer de beugels geplaatst zijn en het wastebord 'definitief' vast ligt, kunnen we de machine verder afregelen.
Vandaag hebben we in Massenhoven afscheid genomen van P2mate.
Alhoewel Peter, door de afstand tot Finland nog niet tot bij ons was geraakt, was hij wel zeer gekend in onze groep.
Voor zij die Peter niet kennen, Paul Walmsley heeft op het op de Linux Kernel mailing list prachtig uitgelegd: Mourning the loss of Peter De Schrijver
We zullen hem nog vaak herinneren wanneer we, zoals in zijn spirit, werken aan vrije open projecten of onze kennis delen met anderen.
Vaarwel.
In gedachten Peter De schrijver
LinkedIn, Mind software, in memoriam Peter De Schrijver
C9 en C14 vervangen en een extra C tussen massa en C14 via een wire-wrap draadje.
Uiteindelijk eens de SoftComfort PLC software voor de Logo PLC's aangeschaft. Volgens de uitleg moet dat ook werken onder Linux. Verrassend genoeg levert Siemens dat nog steeds op een DVD in deze tijd van internet installs en USB sticks. Gelukkig had ik nog een externe DVD-lezer.
De LOGO PLC's die ik heb, zijn van generatie 8 en hebben een netwerk interface voor communicatie en programmatie. Dat scheelt weer een interfacekabel. Het zijn 2de-hands exemplaren en bevatten al een programma en hebben ze ook 'een' IP address. Maar welk?!.
Het IP adres achterhalen is simpel. Even met Wireshark luisteren welke berichten er uitgestuurd worden en ter bevestiging een netwerkscan zodat we weten welk IP-adress we nodig hebben.
Bij installatie blijkt al snel dat het een Java gebasseerde software is. De installatie zelf is wat zoeken, omdat het Linux installatie script niet uitvoerbaar is (mist de exec bit door de mount opties van mijn Linux distributie voor CD/DVD's). Eenmaal de installatie afgerond, blijkt het connecteren naar de LOGO PLC´s zelf ook nog niet te werken. Een forum post weet ons te vertellen dat de SoftComfort software op een zeer specifiek plaats zoekt naar zijn netwerk informatie. Die forum thread levert ook een shell script om alle benodigde informatie te verzamelen en die folder met de nodige informatie te vullen. Zie hieronder!
Link: SoftComfort Network Information
#!/usr/bin/env bash# fix for Siemens LOGO!Soft Comfort## Unexpected Error## An unexpected error occured.# Your data may be inconsistent and subsequent errors may occur.# java.lang.UnsupportedOperationException: adapter type is not supported#NETWORK_DEVICES="$(lshw -c network -businfo 2>/dev/null | tail -n+3 | awk '{print $2}')"# $1 = cmdfunction executeCmd() {local locCmd="$1"echo "Executing: $locCmd"eval "$locCmd"}if [[ -n "$NETWORK_DEVICES" ]]; thenexecuteCmd "sudo mkdir -p /etc/sysconfig/network/"while IFS="" read -r device; doexecuteCmd "sudo touch /etc/sysconfig/network/ifcfg-$device"done <<< "$NETWORK_DEVICES"elseecho "Could not find NETWORK_DEVICE. Connect your ethernet network cable to the Siemens LOGO!"exit 1fi
Modificatie van de 80m ARDF ontvanger:
Eerst controleren of we de te vervangen condensators netjes kunnen verwijderen:
Verwijderen van C14:
Verwijderen van C9:
Nu nieuwe onderdelen bestellen en een volgende keer er weer op solderen...