Inhoudsopgave:
- Stap 1: Programmeren van de ATTINY 85
- Stap 2: Het programma uploaden naar de ATTINY85
- Stap 3: Uw programma uitvoeren
- Stap 4: Conclusie
Video: SMS-tekst Temp Alerts van een ATTINY85 en A1 GSM: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Deze instructable laat je zien hoe je de temperatuur van een eenvoudige temperatuursensor kunt vastleggen en deze per sms naar je mobiele telefoon kunt sturen. Om het eenvoudiger te maken, stuur ik de temperatuur met een vast interval, maar ik laat ook zien hoe dit alleen bij uitzondering / waarschuwingen kan. De hardware is erg goedkoop, minder dan 10 dollar, hoewel er rekening wordt gehouden met de terugkerende sms-kosten.
Het zware werk wordt gedaan door de eenvoudige maar krachtige ATTINY 85 die de temperatuurgegevens vastlegt en vervolgens een sms activeert die via een AI-Thinker A6 GSM-module wordt verzonden.
Kortom, je schrijft de ATTINY85-code in de Arduino IDE-omgeving en brandt deze op de ATTINY85 met behulp van een USBASP seriële/USB-converter. Ik heb het opzetten van de AI-Thinker A6 GSM-module en Arduino IDE behandeld in twee eerdere tutorials. Wat hier anders is, is de interface van de ATTINY en A6 GSM-module met behulp van seriële communicatie.
www.instructables.com/id/How-to-Send-an-SM…https://www.instructables.com/id/15-Dollar-Attiny8…
Na het programmeren leest de ATTINY de temperatuurgegevens van een thermometersensor - Dallas 18B20 - en stuurt de gegevens en commando's vervolgens via een seriële verbinding naar de A6 GSM-module die deze vervolgens als een sms-bericht naar uw mobiele / smartphone verzendt.
Dit is wat je nodig hebt:
1. USBASP serieel/USB-converter.
2. ATTINY 85.
3. AI-Thinker A6 GSM-module versie 6 (met een sim die sms-tegoed heeft).
4. 3.3v breadboard-voeding voor de ATTINY85.
5. 3.3.v USB-voeding voor de AI-Thinker A6 GSM-module.
6. Dallas 18B20 temperatuursensor..
7. 4.7k-weerstand voor de 18B20-sensor.
8. Breadboard en kabels.
9. Arduino IDE (hiervoor heb ik versie 1.8.5 gebruikt).
10. Windows X laptop (ik gebruikte versie 10) met een vrije usb-poort.
Stap 1: Programmeren van de ATTINY 85
Hier is de Arduino IDE-code (u moet het telefoonnummer wijzigen waarnaar u de sms wilt verzenden.)
#include #include #include
// *** // *** Definieer de RX- en TX-pinnen. Kies twee //*** pinnen die ongebruikt zijn. Probeer D0 (pin 5) // *** en D2 (pin 7) te vermijden als je van plan bent I2C te gebruiken. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3
// *** // *** Definieer de op software gebaseerde seriële poort. De // ***-naam Serial gebruiken, zodat code kan worden gebruikt op andere // ***-platforms die op hardware gebaseerde seriële ondersteuning bieden. Op // ***-chips die de hardware-serie ondersteunen, geef gewoon // *** commentaar op deze regel. // ***
SoftwareSerial mySerial = SoftwareSerial (RX, TX);
// *** // *** Pinout ATtiny25/45/85: // *** PDIP/SOIC/TSSOP // *** ================== ================================================== ========================= // *** // *** (PCINT5/RESET/ADC0/dW) PB5 [1]* [8] VCC // *** (PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3 [2] [7] PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2) // *** (PCINT4/ XTAL2/CLKO/OC1B/ADC2) PB4 [3] [6] PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1) // *** GND [4] [5] PB0 (MOSI/DI/SDA/AIN0 /OC0A/OC1A/AREF/PCINT0) // *** // ATTINY 85 frequentie ingesteld op interne 8 MHz
// *** // *** Pin waarop de OneWire data // *** draad is aangesloten. // *** #define ONE_WIRE_BUS 1
// *** // *** Stel een oneWire-instantie in om te communiceren met alle OneWire // ***-apparaten (niet alleen Maxim/Dallas-temperatuur-IC's). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);
// *** // *** Geef onze oneWire-referentie naar Dallas Temperature door. // *** DallasTemperature _sensors = DallasTemperature (&_oneWire);
void setup () { // *** // *** Initialiseer de seriële poort // *** mySerial.begin (115200); vertraging (60.000);
// *** Start de bibliotheek op. _sensoren.begin(); }
lege lus() {
// *** // *** Haal de huidige temperatuur op en geef deze weer. // *** _sensors.requestTemperatures(); vertraging (2000); dubbele tempC = _sensors.getTempCByIndex(0); dubbele tempF = _sensors.getTempFByIndex(0); // controleer op fouten - soms aan het begin, temp weergegeven als 85C
if (tempC 14 && tempC 18 && tempC = 23 && error_temperature){SMS_temp(tempC, "Te warm");} }
void SMS_temp (dubbele mytemp, String myalert) { mySerial.println ("AT+CMGF=1"); // ingesteld op vertraging in sms-modus (1000); mySerial.println("AT+CMGF=1"); // ingesteld op vertraging in sms-modus (1000); //mySerial.println("AT+CMGS=\"+UW NUMMER\""); // stel het telefoonnummer in (verpakt tussen dubbele aanhalingstekens) vertraging (1000); mijnSerial.print(mijntemp, 1); mijnSerial.print(myalert); vertraging (1000); mySerial.write(0x1A); // verzendt ctrl+z einde van berichtvertraging (1000); mySerial.write(0x0D); // Vervoersretour in Hex-vertraging (1000); mySerial.write(0x0A); vertraging (1000000); // 17 minuten - aanpassen aan uw eigen toepassing }
Open de Arduino IDE-omgeving - ik heb beschreven hoe u dit in detail kunt vinden in mijn vorige instructable waarnaar ik eerder verwees.
Je hebt de volgende bibliotheken nodig:
SoftwareSerial.h
OneWire.h
DallasTemperature.h
Configureer vervolgens de RX- en TX-pinnen op de ATTINY85 die u moet verbinden met de A1 Thinker. De ATTINY 85 heeft 8 pinnen, vier aan elke kant en is uitgelijnd met behulp van de stip op het oppervlak als referentie. Pin 1 of RESET-pin staat naast de stip.
(in dit geval heb ik Pin2 en 3 gekozen - Deze bevinden zich aan dezelfde kant als de RESET-pin die zich naast de stip op het oppervlak van de ATTINY 85 bevindt. Pin 2 is de volgende pin naast de RESET-pin terwijl Pin 3 tussen Pin zit 2 en GROND)
Vervolgens moet u de temperatuursensor configureren -
#define ONE_WIRE_BUS 1
OneWire _oneWire = OneWire(ONE_WIRE_BUS);
DallasTemperature _sensors = DallasTemperature(&_oneWire);
Stel vervolgens de seriële softwarepoort in
mijnSerial.begin(115200);
vertraging (60.000);
en roep vervolgens de sensoren aan met _sensors.begin();
Vervolgens is er de lus, die rondkijkt op een vooraf bepaald tijdstip, de temperatuur registreert en afhankelijk van de waarde een bericht/waarschuwing verstuurt. Het gebruikt een functie SMS_temp waar je ook de timing van de lus instelt
void loop(){ sensors.requestTemperatures(); vertraging (2000);
dubbele tempC = _sensors.getTempCByIndex(0);
dubbele tempF = _sensors.getTempFByIndex(0);
if (tempC <= 14){SMS_temp(tempC, " GEVAARLIJK Koud");}
if (tempC > 14 && tempC <= 18) {SMS_temp(tempC, "Behoorlijk koud");}
if (tempC > 18 && tempC < 23) {SMS_temp(tempC, " Temp Precies goed");}
if (tempC >= 23 && error_temperature){SMS_temp(tempC, "Te warm");}
}
==============
Stel vervolgens de Arduino IDE in om het uploaden naar de ATTINY85 voor te bereiden.
Een aantal dingen om op te merken
1- Als je de ATTINY-familie van boards niet hebt, voeg dan de volgende url toe https://raw.githubusercontent.com/damellis/attiny/… in File/Preferences/Additional Boards Manager URL, Klik vervolgens binnen de Arduio IDE op Tools/Board/Board Manager en zoek naar ATTINY en installeer het nieuwe bord. Verander de processor in Attiny85.
Stap 2: Het programma uploaden naar de ATTINY85
Raadpleeg ook mijn vorige instructable hierover -
De ATTINY85 heeft twee modi, respectievelijk programmeer- en bedieningsmodus.1. PROGRAMMEERMODUS Identificeer eerst de pinnen op de ATTINY85. Zoek hiervoor de kleine inkeping op het oppervlak van de chip naast de RST/RESET-pin. Door dit als referentiepunt te gebruiken, kunt u de rest van de pinnen identificeren. Al deze informatie staat in het A85-gegevensblad -https://ww1.microchip.com/downloads/en/DeviceDoc/At…
De USBasp en ATTINY85 moeten worden aangesloten zoals weergegeven in de afbeelding hierboven.
Stel vervolgens op de Arduino IDE de programmer in op USBasp en de frequentie op intern 8Mhz.
Sluit de USBasp aan op een USB-poort op uw laptop (in Windows 10, als u niet over het USBasp-stuurprogramma beschikt, gebruikt u Zadig volgens de website
Selecteer vervolgens, met de USBasp aangesloten, uit de Arduino IDE Sketch/upload en hopelijk zou je de uploadvoortgang in rode letters van de Arduino IDE moeten zien en eindigen met avrdude done. Bedankt.
Eventuele fouten in dit stadium worden meestal geassocieerd met losse kabels of de verkeerde driver.
Stap 3: Uw programma uitvoeren
Ten eerste iets over de Dallas 18b20 thermometersensor. Het heeft 3 pinnen, Ground (G), data (D) en VCC zoals weergegeven in de afbeelding hierboven. Voor gebruik moet de D en VCC worden overbrugd met een weerstand van 4,7 k. G en VCC zijn verbonden met respectievelijke polen terwijl D is verbonden met een ATTINY 85, pin - [6] PB1, zoals geconfigureerd in de code.
Verbind vervolgens de ATTINY met A6 GSM als volgt (en hierboven weergegeven)
ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd
ATTINY GND A6 GND
en op de A6 zelf, A6 PWR A6 VCC 5.0A6 RST A6 GND (Nog geen verbinding maken met aarde!!!!!)
Schakel nu beide apparaten in en raak na een paar seconden tijdelijk de A6-aardingspin aan met de kabel aangesloten op de A6 RST-pin. De A6 gaat aan en uit en hopelijk ontvang je binnenkort temperatuurgegevens op je telefoon.
Stap 4: Conclusie
Deze instructable lijkt misschien vrij eenvoudig, maar het idee is om te illustreren wat kan worden bereikt met goedkope componenten. Het is duidelijk dat als je toegang hebt tot wifi of een BLE-hub, er meer geschikte oplossingen zijn.
Ik heb geen andere functionaliteit behandeld, zoals het verzenden van een sms NAAR de telefoon om temperatuurregistratie / verzending te starten, enz.
Aanbevolen:
Automatisch een programma starten bij het aansluiten van een laptop op een dockingstation: 5 stappen
Een programma automatisch starten wanneer u een laptop op een dockingstation aansluit: deze instructie gaat over het uitvoeren van een programma of een toepassing wanneer u uw laptop op een dockingstation aansluit. In dit voorbeeld gebruik ik Lenovo T480 Windows 10
Bouw een amateurradio APRS RX Only IGate met behulp van een Raspberry Pi en een RTL-SDR-dongle in minder dan een half uur - Ajarnpa
Bouw een amateurradio APRS RX Alleen IGate met behulp van een Raspberry Pi en een RTL-SDR-dongle in minder dan een half uur: Houd er rekening mee dat dit nu vrij oud is, dus sommige onderdelen zijn onjuist en verouderd. De bestanden die u moet bewerken, zijn gewijzigd. Ik heb de link bijgewerkt om je de nieuwste versie van de afbeelding te geven (gebruik 7-zip om het te decomprimeren) maar voor volledige instru
Gebruik een DC-aandrijfmotor van een loopband en een PWM-snelheidsregelaar voor het aandrijven van gereedschappen - Ajarnpa
Gebruik een DC-aandrijfmotor van een loopband en een PWM-snelheidsregelaar voor het aandrijven van gereedschappen: Voor elektrisch gereedschap zoals metaalsnijmachines en -draaibanken, kolomboormachines, lintzagen, schuurmachines en meer is mogelijk vereist. Motoren van 5 pk tot 2 pk met de mogelijkheid om de snelheid te verfijnen met behoud van koppel Toevallig gebruiken de meeste loopbanden een 80-260 VDC motor met
Autonome regeling van het toerental van de motor met behulp van een feedbacksysteem van een op IR gebaseerde toerenteller - Ajarnpa
Autonome regeling van het toerental van de motor met behulp van feedbacksysteem van een op IR gebaseerde toerenteller: er is altijd behoefte aan automatisering van een proces, of het nu een eenvoudig/monsterlijk proces is. methoden om ons kleine stukje land water te geven / te irrigeren. Het probleem van geen huidige toevoerleiding
Een batterijpakket van 4,5 volt maken van een batterij van 9 V: 4 stappen
Een 4,5 volt batterijpakket maken van een 9V-batterij: deze instructie gaat helemaal over het splitsen van een 9V-batterij in 2 kleinere 4,5V-batterijpakketten. De belangrijkste reden om dit te doen is 1. Je wilt 4,5 volt 2. Je wilt fysiek iets kleiners dan een 9V batterij