Stap 5: Programma de microcontroller
Ik gebruikte de Arduino IDE. Steunt u alstublieft dit uitstekende project door middel van een kleine donatie als u dat nog niet hebt gedaan.
Haak de TX en RX voor uw USB naar seriële converter voor de seriële pinnen van de hardware van de Atmega (2 en 3 respectievelijk). Download de bijgevoegde schets. Open het in de Arduino IDE. Uw Raad en seriële poort configureren. De XXXXXXXXXXX in de code vervangen door het nummer van uw standaard-telefoon. Compileren van de schets (upload). Nu, dit gaat lastig zijn als u niet een RST op uw usb naar seriële hoeft. Plaats uw vinger gestage op de tact switch. Druk op upload op Arduino IDE. De milisecond u de "uploaden" status op uw Arduino IDE druk op de schakelaar van de tact te resetten de microcontroller en zet het in bootloader wijze. Als je in een keer niet lukt, probeer dan een paar keer. Fun, nietwaar?
De algehele werkingsprincipe van de firmware is het volgende:
- wakker worden door een interrupt (het postvak is geopend en de contact switch trekt de pin laag)
- Voer een reset
- Configureer de seriële poort en pinnen
- telefoonnummer van de geadresseerde te verkrijgen vanaf EEPROM
- meten van het niveau van de batterij
- vermogen van de GSM-module
- houden gevraagd om de naam van de vervoerder van het netwerk. Eenmaal verkregen, de module kan het verzenden van tekstberichten
- eventuele oude tekstberichten schrappen
- verzenden van het bericht van de tekst
- wachten op ontvangstbevestiging op de seriële poort of de timeout
- controleren of de configuratie switch in de configuratiemodus is
- zo ja - wachten gedurende 40 seconden wanneer de gebruiker een nieuw SMS-bericht met het woord sturen kunt "PROGRAM". Als een dergelijk bericht arriveert, slaat u het nieuwe nummer in EEPROM
- opnieuw aansluit de interrupt gaan slapen
Bij het ontwikkelen van deze schets gebruikte ik de uitstekende avt/slaap bibliotheek en code uit hier http://playground.arduino.cc/Learning/ArduinoSleep... Voor SW resetten van de microcontroller, gebruikte ik de briljante WatchDog-Timer oplossing gevonden hier http://arduino.stackexchange.com/questions/1477/re...
Het bestand bevat een heleboel coderegels commentaar dat u gewoon kunt uncomment. Als u liever ontvangen gemiste oproepen om te SMS (goedkoper kan worden), er is ook een commentaar functie daarvoor. De opmerkingen in de code zal u helpen weten wat wat doet.
Het is tijd om te testen van de installatie. Uncomment voor foutopsporing, alle lijnen Serial.print (onthoud naar de 14 en 15 verbinden met de USB to Serial converter).