Arduino Nano Under construction

ATmega328

De processor op de Nano is wat zwaarder dan de ATtiny die ik meestal gebruikte:

  • 32Kbyte Flash prgrammageheugen
  • 1Kbyte EEPROM datageheugen
  • 2Kbyte RAM geheugen
  • 8 analoge ingangen
  • 6 PWM uitgangen
  • Seriële poort, I2C, SPI, etc
  • 20 MHz (16 voor de Nano)
  • Voeding 1.8 - 5V

Deze pagina is (in aanmaak) voor de Arduino Nano, een klein bordje met de Atmel ATmega328. Heeft wat meer mogelijkheden en gebruiksgemak dan de ATtiny die ik veel heb gebruikt, en omdat het een kant-en-klare module is zit ik niet met een chip die lastig te solderen is... Nano op mijn handBovendien, heeft een USB-aansluiting waarmee er geen aparte programmer nodig is, zoals bij mijn ATtiny. Bedankt, Arduino!

Kleiner dan de gebruikelijke Arduino's als de Uno, en je kan geen 'shields' gebruiken, maar dat had ik voor mijn doel niet nodig. Iets minder low power dan de low-power ATtiny oplossing door de voeding LED en zo, maar nog steeds minder dan 10 mA.

Je kan de Nano in C/C++ programmeren, of met behulp van de Arduino IDE zogeheten 'sketches' maken. Heb in eerste instantie even voor de laatste stap gekozen. Ik werk met Ubuntu/Linux en heb de Linux 64-bit IDE van de Arduino site gehaald. Daarna installeren en als test de eerste sketch draaien, zie de 'Arduino getting started' gids voor Linux. Kies voor het bord uiteraard de 'Arduino Nano' (met de 'ATmega328' processor). Voor de poort moest ik in mijn geval kiezen voor /dev/ttyUSB0. Ik had mezelf al toegevoegd aan de groep dialout (zie hoofdstuk 9 in de getting started gids), dus bij het doorlopen van de stappen en het uploaden van de Blink sketch (een van de meegeleverde voorbeelden) werkte het in een keer goed: de LED knippert!

Waarom een ouderwetse 8-bitter, en niet een simpele ARM M0 32-bit als de LPC8xx of een 32-bit Arduino? Ik wil snel iets kunnen maken, en dan zijn de grote gebruikersgroep, de eenvoudig gehouden IDE en de beschikbare voorbeelden/libraries van de 8-bit AT-processoren een voordeel, al is de processor zelf dan niet meer het modernste... Onderstaand LCD/sensor-voorbeeld had ik in een uurtje in elkaar, zonder van te voren de ontwikkelomgeving te kennen.

De eerste software (februari 2016)

Nano met 16x2 LCD displayEen van de projecten doe ik nog eens wil doen is een thermostaat om 'Sous-Vide' te kunnen koken. Een ATtiny is voldoende, maar op de Nano kan ik sneller een prototype maken (kan ik er altijd later weer een ATtiny in zetten). Wat wil ik aansluiten: een LCD display, een temperatuursensor, en een 220V optisch-gekoppeld Solid State Relais. En dan een software PID-regelaar voor een mooie constante temperatuur. Daarnaast is de regeling van mijn keramiek-oven aan een update toe, zie verderop.

Eerst het aansluiten van een 16x2 LCD'tje, wat ik uit eerdere experimenten nog had liggen. Ook hier is er een kant-en-klaar software voorbeeld in de Arduino ontwikkelongeving dat ook nog eens compatibel is met mijn display: 'Hello World' (kijk bij File -> Examples -> LiquidDisplay -> HelloWorld). Alleen, hoe sluit je de pinnen aan? Daarbij heeft onderstaand Nano Pinout-diagram geholpen. De pinnummers zoals in de sketches worden gebruikt zijn daar de paarse nummers helemaal links (en staan ook op de print). Ook op LiquidCrystal Library staat uitleg. Van het display had ik documentatie, en dan is het een kwestie van 9 draadjes stuk voor stuk zorgvuldig aansluiten.

Volgende stap: de I²C temperatuursensor... Ik heb al eerder op de Raspberry de LM75BD temperatuursensor van NXP gebruikt, beviel prima. Op Tutorial: Arduino and the I2C bus staat heel wat over hoe op de Arduino met de Wire library I2C-devices uit te lezen. De daar gebruikte CN75 is compatible met de LM75BD, alleen slechts met 0.5 graden resolutie. 4 draadjes (5V, GND, clock en data). Op de foto links (aan de dikke rode 'draad') zit de LM75BD.

Nano Pinout

Let op, de 5V en de 3V3 (3.3 Volt) zijn uitgangen; voeden via de VIN of via USB!


Arduino Nano Pinout

Keramiek-oven controller met de Arduino nanoVolgende projecten

Keramiek-oven

Zoals al gemeld, mijn regelaar voor mijn keramiek-oven mag wel eens een update gebruiken. Op dit moment nog een schakeling met discrete logica, en een vrij simpele interface. Wat ik in gedachten heb is meer als in mijn plaatje hiernaast, met een 4-cijferig display voor temperatuur (tot 1250 graden), tijd, programma-stap en zo voort. Op die manier hoef ik de oven niet meer zelf in de gaten te houden, maar neemt de Nano het stappenplan over.

Display (€3 bij dx.com) is niet echt I2C-compatible... Dus toch maar op twee andere pinnen aansluiten. Gelukkig heeft avishorp al een goede Arduino library voor de TM1637 geschreven: werkt in een keer, en in de zip download zit ook de English datasheet (niet alleen de Chinese versie)! Dankzij het 'character designer' spreadsheet van JosePino kan ik ook tekst makkelijk weergeven, niet alleen getallen.

En verder

Links naar algemene info

Nuttige Libraries etc