Efficiënt ATtiny85 programmeren met Arduino Uno: Goedkope Multi-Sensor Oplossing
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| Microchip Technology ATtiny85 | 1 |
| Elektrolytische decoupling condensator - 10uF/25V | 1 |
| Jumper Draden M/M | 1 |
Over dit project
Ik werk aan een project waarvoor meerdere sensorgegevens op verschillende locaties uitgelezen moeten worden. Deze vereisen slechts een paar PWM-pinnen, dus het gebruik van meerdere Arduino Uno's zou duur en onnodig zijn. Ik besloot de ATtiny85-microcontroller te gebruiken in plaats van Arduino Uno-ontwikkelborden. De ATtiny85 is een goedkope en krachtige alternatief wanneer je niet te veel PWM-pinnen nodig hebt. Aangezien de ATtiny85 slechts een microcontroller is, hebben we een Arduino Uno nodig om hem te programmeren. In dit project leg ik uit hoe dat zit. Hieronder staat de pinconfiguratie van de ATtiny85 en de datasheet is te vinden hier.

Arduino Uno configureren als ISP (In-System Programming)
Om de ATtiny85 te programmeren, moeten we de Arduino Uno eerst in ISP-modus zetten. Sluit je Arduino Uno aan op de PC. Open de Arduino IDE en open het ArduinoISP-voorbeeldbestand (Bestand -> Voorbeelden -> ArduinoISP) en upload het.
ATtiny85-ondersteuning toevoegen aan Arduino IDE
Standaard ondersteunt de Arduino IDE de ATtiny85 niet, dus we moeten ATtiny-boards toevoegen aan de Arduino IDE. Open Bestand -> Voorkeuren en vul bij "Additional Boards Manager URLs" deze URL in: https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json.

Na dit open je Tools -> Board -> Board Manager.

Scroll in de Board Manager naar beneden naar "attiny by Davis A. Mellis". Klik erop en installeer het.

Na installatie zie je een nieuwe entry in het Board-menu.

ATtiny85 verbinden met Arduino Uno
Nu alles klaar is, beginnen we met programmeren van de ATtiny85. Verbind de Arduino Uno met de ATtiny85 op een breadboard als volgt:
- Arduino 5V – ATtiny85 Vcc
- Arduino GND – ATtiny85 GND
- Arduino Pin 13 – ATtiny85 Pin 2
- Arduino Pin 12 – ATtiny85 Pin 1
- Arduino Pin 11 – ATtiny85 Pin 0
- Arduino Pin 10 – ATtiny85 Reset


Plaats een 10uF condensator tussen RESET en GND op de Arduino. Dit voorkomt dat de Arduino automatisch reset wanneer we het programma naar de ATtiny85 uploaden. Als je een elektrolytische condensator gebruikt, zorg dan dat de anode in de GND van de Uno gaat.
Programma uploaden naar ATtiny85
Ga terug naar de Arduino IDE. Selecteer ATtiny onder Tools -> Board. Selecteer vervolgens ATtiny85 onder Tools -> Processor. En selecteer 8 MHz (internal) onder Tools -> Clock.


Zorg dat "Arduino as ISP" geselecteerd is onder Tools -> Programmer.

Standaard draait de ATtiny85 op 1MHz. Om hem op 8MHz te laten draaien, selecteer Tools -> Burn Bootloader.


Je ontvangt het bovenstaande bericht als het branden van de bootloader succesvol was.
Open nu het Blink-voorbeeld uit de Arduino-voorbeelden en wijzig het pinnummer van 13 naar 0 en upload.


Je ziet het bovenstaande bericht als alles succesvol was. Nu hebben we het blink-programma naar de ATtiny85 geüpload en kunnen we het testen.
ATtiny85 Blink testen
Nu is het tijd om te testen. Verwijder alle verbindingen van de Arduino en neem een voedingsbron. Hier gebruik ik een knoopcel om de ATtiny85 te voeden.

Daar is het: het blink-programma draait op een ATtiny85 met slechts een batterijcel als voeding. Je kunt veel projecten realiseren met lage kosten, laag verbruik en kleine afmetingen. Alleen je verbeelding (en het aantal PWM-pinnen) is de limiet.
Ombouwen tot een Shield
Ik heb het bovenstaande circuit omgebouwd tot een shield compatibel met Arduino Uno.





(Opmerking: Als softwareontwikkeler is dit mijn eerste elektronica-project. Geef gerust suggesties om me te helpen meer te doen.)
Code
Blink Programma
/* Blink
Aan een LED voor één seconde, dan uit voor één seconde, herhaald.
De meeste Arduinos hebben een on-board LED die je kunt besturen.
Op de Uno en Leonardo is deze verbonden met digitale pin 13.
Als je niet zeker weet welke pin de on-board LED is verbonden op je Arduino-model,
check de documentatie op https://arduino.cc
Deze voorbeeldcode is in het publieke domein.
gewijzigd 8 mei 2014 door Scott Fitzgerald
*/
// De setup-functie draait één keer wanneer je reset drukt of het bord voedt
void setup() {
// initialiseer digitale pin 13 als output.
pinMode(0, OUTPUT);
}
// De loop-functie draait oneindig herhaald
void loop() {
digitalWrite(0, HIGH); // zet de LED aan (HIGH is het spanningsniveau)
delay(1000); // wacht een seconde
digitalWrite(0, LOW); // zet de LED uit door de spanning laag te maken
delay(1000); // wacht een seconde
}
Schema's
Productieproces
- Bouw een Arduino Real-Time Clock voor Islamitische Gebedstijden
- Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
- Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
- Bouw een eenvoudige rekenmachine met Arduino UNO – Makkelijk project
- Afbeeldingen Weergeven op een 1,17-inch TFT LCD met Arduino UNO
- Een draagbaar Persistence-of-Vision-display bouwen met Arduino UNO en ATtiny85
- Een 8×8 LED-matrix beheersen met Arduino Uno: Stap-voor-stap handleiding
- Bouw een 4x4x4 LED-kubus met Arduino Uno & 1Sheeld – Interactief LED-project
- Accurate zonnestralingsmeting met Arduino UNO en Ethernet Shield
- 25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test
- Python Extensieprogrammering met C: Snelle, Native Modules Bouwen