MINICOM

friendly serial communication program

In de tijden voor de hoge snelheids internetverbindingen maakten we verbinding met het internet via een modem (MOdulator/DEModulator) en één van de programma's die we hiervoor konden gebruiken is minicom.

Hoewel een dial-up verbinding (waarbij de telefoonlijn bezet was gedurende de tijd dat je met een modem online was) tegenwoordig zeldzaam is (in België en Nederland dan toch), kan minicom tegenwoordig toch nog goed van pas komen.

Bepaalde high-end netwerk hardware (zoals switches) worden nog steeds geconfigureerd via een Seriële verbinding.

Helaas ben ik niet in het bezit van zo'n apparaat, en de meeste consumer PC's komen ook niet meer met een RS232 Seriële aansluiten (de zogenaamde D-SUB 9 bus).
Figuur 1. Voorbeeld van een Seriële kabel
Voorbeeld van een Seriële kabel
Gelukkig ben ik wel in het bezit van enkele Atmel (nu microchip) AVR's
Opmerking: Dit zijn 8-bit microcontrollers die we kunnen programmeren met AVRDude. De Mega reeks (welke ook gebruikt worden voor de Populaire Arduino Uno (ATMega 328P) en Arduino Mega (ATMega 2560)) van deze microcontrollers beschikken over 1 (ATMega 328P) of meerdere (ATMega 2560) USART (Universal Serial Asyncronous Receive Transmit) "poorten".
Ik gebruik in mijn voorbeeld een ATMega 2560 en deze ondersteunt 3 USART poorten, dus kan ik met de hulp van een USB-naar-Serial kabel toch de basics tonen. Hiervoor moet ik natuurlijk wel een programma schrijven om op de Mega2560 te programmeren.

Dus lang genoeg getreuzeld, laten we gaan beginnen:

Het eerste wat we moeten doen is minicom configureren, en op mijn systeem moet ik dit als root doen omdat het configuratiebestand wordt weggeschreven naar /etc/minicom/config.dfl.

start minicom met de -s parameter om in "setup" modus te starten:

sudo minicom -s
Figuur 2. minicom in setup
minicom in setup modus
In de volgende screenshots laat ik de verschillende configuratie menu's zien:
Figuur 3. Filenames and paths
Filenames and paths

Je kunt waarden aanpassen door op de letter voor de optie te klikken, er zal dan een ander configuratievenster openen.

Figuur 4. File transfer protocols
File transfer protocols
Aangezien ik geen bestanden kan up- of downloaden laat ik deze 2 menu's ongewijzigd.
Figuur 5. Serial port setup
Serial port setup
Serial port setup is het eerste menu waar ik veranderingen in moet aanbrengen.
  • Serial Device : /dev/ttyUSB0 (dit is mijn USB-naar-Seriële kabel)
  • Bps/Par/Bits : Snelheid in baud / Parity / Stopbits (in mijn gevel 19200 / 8 / N / 1)
    1. 19200 Snelheid in baud (als deze fout is geeft de verbindig onleesbare tekens)
    2. 8 bits (aantal data bits, standaard is meestal 8)
    3. N (no of geen Parity bits)
    4. 1 (1 Stop bit)
  • Hardware Flow Control (NO)
  • Software Flow control (YES)
    Figuur 6. E - Bps/Par/Bits settings
    E - Bps/Par/Bits settings
    je kunt deze waarden simpel aanpassen door op de corresponderende letter de drukken, zo staan de snelheden 9600, 38400 en 115200 als snelkoppelingen onder respectievelijk C, D en E. Heb je een andere snelheid nodig dan gebruik je A of B om hoger of lager te gaan.
    Figuur 7. Seriele Verbinging Instellingen
    Seriele Verbinging Instellingen

Hierboven een afbeelding met de instellingen die in mijn situatie van toepassing zijn. Om terug te keren naar het vorige menu klikken we gewoon op ENTER.

Figuur 8. Modem en dialing
Modem en dialing

Instellingen voor de modem en het inbellen, is in mijn geval niet van toepassing. Opties A en B zijn standaard leeg, maar als je op A klikt wordt de bovenstaande standaardwaarde automatisch ingegeven (zo ook voor B).

Figuur 9. Screen and keyboard
Screen and keyboard

Hier kun je enkele instellingen voor het scherm en toetsenbord ingeven. Zo kun je bijvoorbeeld "Local echo" inschakelen met de Q. Je zal dan alles wat je ingeeft in het terminal venster herhaalt zien worden. (1 wordt dus 11).

De opties Add Linefeed (P) en Add carriage return (T) kunnen handig zijn, er zal dan automatisch worden gesprongen naar het begin (carriage return) van een nieuwe regel (linefeed).

Figuur 10. Instellingen opslaan als niet root
Instellingen opslaan as niet root

Als je bovenstaande foutmelding krijgt betekend dit dat je geen schrijf rechten heb in de configuratie-directory van minicom, de snelste oplossing is om minicom uit te voeren met sudo en na het opslaan minicom af te sluiten en te herstarten als gewone gebruiker.

Ook kun je bij het opstarten de parameter -c on of -con meegeven, dit zal minicom opstarten in kleuren modus.
Figuur 10. Opstarten van minicom
Opstarten van minicom
Als je de instellingen correct hebt ingesteld en de modem of usb-naar-seriële kabel is aangesloten zal minicom aangeven dat de model geïnitialiseerd wordt.
Figuur 12. minicom
minicom is opgestart
Als minicom is opgestard zal je scherm er ongeveer zo uitzien. Let niet op de melding Offline onderaan in de statusbalk dit is normaal.
Figuur 13. Help menu
Help menu

Zoals de statusbalk aangeeft kunnen we met de toetsen Control+A en daarna Z het bovenstaande help-menu oproepen.

minicom afsluiten doen we met Control+A gevolgd door X (om de modem te "resetten") of Q
Figuur 14. Minicom afsluiten
Minicom afsluiten
Als je voor de optie X hebt gekozen zal minicom eerst de modem resetten en daarna afsluiten.
Figuur 15. Minicom afsluiten met resetting modem
Minicom afsluiten met resetting modem
Zoals ik al zei, kan ik niet veel laten zien van het gebruik van minicom met een switch of andere netwerk hardware. Maar ik kan wel de communicatie testen met mijn MCU:
Figuur 16. Communicatie tussen PC en ATMega2560 MCU via USART
Communicatie tussen PC en ATMega2560 MCU via USART
De MCU zegt "Hello World" en vraagt welke LED ik wil inschakelen. Na het ingeven van het getal 2 meldt de microcontroller dat LED is ingeschakeld en vraagt opnieuw welke LED ik wil inschakelen.
Figuur 17. Verbinding verbroken

Indien de verbinding tussen de PC en het seriële apparaat verbroken wordt zal minicom de volgende foutmelding tonen. Deze blijft in beeld to de verbinding opnieuw tot stand is gebracht.

Verbinding verbroken

Tot zover de basis van het gebruik van minicom voor seriële communicatie.

Meer informatie kun je altijd terugvinden in de manpages of de infopages