Part 3 PCB, schematic, 4Z 4G 1V3 alarm system code
Part 3 PCB, schematic, 4Z 4G 1V3 alarm system code The Zip file includes: Updated schematic DONT'USE Final 1V1 code for Arduino Nano USE 1V3 Zip Code for ATtiny85 Gerber file for PCB Layout plan Part 3 PCB, shema, code systeme d'alarge 4Z 4G 1V2 Le dossier Zip comprend : Schéma mise à jour Code 1V1 final for Arduino Nano ne pas utiliser ! Code 1V2 dans le 2ème zip Code for ATtiny85 Gerber for PCB Plan Implantation
The original code for my alarm system dates back to 2018.
At that time, the system was operating correctly with the hardware available.
The hardware upgrade of the GSM module to a 4G version could have been relatively straightforward by simply using an appropriate shield, as described in the original article. However, an adaptation of the GSM startup sequence in the code proved to be necessary.
With hindsight and after working on various other projects, I reviewed the 2018 code with a more critical perspective.
Some parts clearly required revision, both from a software and a hardware standpoint.
As often happens in electronics, a simple update evolved into a more substantial rework.
The project has therefore evolved from a personal build into a more community-oriented project.
The hardware update revealed several imperfections in the previously published 1V1 version.
This note therefore aims to correct these issues and provide a stabilized version of the project.
Thank you for your understanding regarding this update.
Following the tests performed after the initial code release, several minor malfunctions were identified and corrected.
Following the tests performed after the initial code release, several minor malfunctions were identified and corrected.
It is therefore necessary to use:
Version 1V3 of the code for the Arduino Nano
Version 1V1 of the code for the ATtiny85
==================================================================================
Modifications – Arduino Nano (V1.2)
Additions:
#define PULL_UP_EXTERNE 1 // 1 => external pull-up resistors used
const char* COUNTRY_CODE = "+33"; // Country code (+33 for France)
#define CHECK_TENSION_ALARM_OFF 0 // 0 = check only when alarm is ON
// 1 = check when alarm is ON or OFF
Corrections:
Correction of an “impossible open zone” case:
An SMS request to arm the system could authorize activation even if the requested zone was open.
Correction of technical fault handling:
Some fault conditions did not trigger SMS notification.
============================================================================
Modifications – Arduino Nano V1.3
Suppression fonctions en loop "alarme en marche" de ::
-- control_Edf();
-- control_Batterie();
Car on passe par via la definition par la fonction :: gestion_Controle_Tension();
--- Surveillance énergie (ON ou OFF selon configuration CHECK_TENSION_ALARM_OFF) ---
Suppression de cfgModuleDe.zone[MARCHE] ->L716_L937
Used ONLY :: flagMdZone[MARCHE]
Suppression déclaration not used
uint8_t demandeValide = 0; -> L577 — jamais lue ni écrite ailleurs
String strTextSms = ""; -> L484 — jamais utilisée
String strTextEtat = ""; -> L531 — jamais utilisée
unsigned long previousMillis = 0; -> L600 — jamais utilisée (doublon de tempoCheckRssi)
============================================================================
Modifications – ATtiny85 (v1V1)
The ATtiny85 code has also been corrected.
A command inversion issue affected the sirens:
The “INT siren” command from the Nano was activating the wrong output.
The logic between internal and external siren control was inverted.
This behavior has now been corrected.
==================================================================================
START-UP AND USER GUIDE – GSM ALARM SYSTEM V1.3
1. Initial Pairing
Pairing registers the master number, which is necessary for managing the system via SMS.
Procedure:
Prepare the system:
Place the AP shunt on the PCB to isolate Zone 5 (Tamper Protection OFF).
This allows you to verify its operation without triggering the sirens and without disturbing the neighbors.
It is recommended not to power the sirens for this initial test.
Received relays and SMS messages allow you to validate the tests in silent mode.
Power on the system.
Wait for the GSM network connection.
NOTE : The network LEDs (OK/NOK) are only active after the system has been paired.
Send the master number registration SMS:
12345
Expected response:
The number 07 xx xx xx xx is registered.
If the code is incorrect:
Incorrect code, send 12345.
Result
After pairing, the system enters normal operation.
The alarm is OFF by default; all zones are active.
NOTE : The jumper on Z5 must remain in place for this test.
2. Zone Verification
If all alarm zones (Z1 to Z5) are closed, the green loop control LED is lit.
Each zone opening turns off the green loop control LED.
This allows you to view openings in real time before activating the system.
3. Normal Commissioning with Z5 Ejection
Before removing the shunt on Z5, send an SMS to temporarily deactivate the tamper zone:
Z5 Ejection off
This command puts zone 5 in an off-alarm state, allowing the shunt to be removed without triggering the sirens.
LED Indication:
If the alarm is OFF, the green LED flashes to indicate that zone Z5 has been ejected.
If the alarm is ON, the red LED flashes to indicate that zone Z5 has been ejected.
The flashing is monitored by the watchdog, ensuring reliable real-time visualization.
Verify the status confirmation via SMS before removing the shunt.
After verification, remove the shunt on Z5 to reactivate tamper protection if necessary.
The system then switches to normal operation, with all zones active and timers operational.
Verify that the GSM is connected (LED OK) and that zones Z1–Z5 are functioning correctly.
Local commands via Z6 (lock) and SMS are now available to arm/disarm the system. The system then switches to normal operation, with all zones active and timers operational.
Verify that the GSM is connected (LED OK) and that zones Z1–Z5 are functioning correctly.
Local commands via Z6 (lock) and SMS are now available to arm/disarm the system.
The master user can now arm or disarm the system via:
Zone Z6 (lock) for local commands
SMS for remote commands
4. Test Commands
Zone Testing
Open and close each zone to check the green LED illumination.
Immediate zones trigger the alert instantly if the alarm is ON.
Lock Test (Z6)
A simple pulse to ground arms or disarms the system.
The system remembers the state and indicates it via SMS and LED.
5. Safety Notes
Never power the sirens during initial pairing to avoid false alarms.
Alert timers and limits (sirens, SMS) are already configured in the code to prevent spam.
// FR
Erratum – Alarme 4 zones 4G
Le code d’origine de mon système d’alarme date de 2018.
À l’époque, l’ensemble fonctionnait correctement avec le matériel disponible.
La mise à jour matérielle du module GSM vers une version 4G aurait pu être relativement simple en utilisant directement un shield adapté, comme décrit dans l’article initial. Toutefois, une adaptation du mode de démarrage du GSM dans le code s’est révélée nécessaire.
Avec le recul et au fil de mes différents projets, j’ai relu le code de 2018 avec un regard plus critique.
Certaines parties méritaient clairement une révision, tant sur le plan logiciel que matériel.
Comme souvent en électronique, une simple mise à jour s’est transformée en refonte plus complète.
Le projet est ainsi passé d’une réalisation personnelle à un projet à vocation plus communautaire.
La mise à jour matérielle a mis en évidence plusieurs imperfections dans la version 1V1 déjà publiée.
Cette note a donc pour objectif de corriger ces points et de proposer une version stabilisée du projet.
Merci de votre compréhension pour cette mise à jour.
Suite aux tests réalisés après le premier dépôt du code, plusieurs dysfonctionnements mineurs ont été identifiés et corrigés.
Il convient donc d’utiliser :
Version 1V3 du code pour l’Arduino Nano
Version 1V1 du code pour l’ATtiny85
============================================================================
Modifications apportées – Arduino Nano (V1.2)
Ajouts :
#define PULL_UP_EXTERNE 1 // 1 => résistances de tirage externes utilisées
const char* COUNTRY_CODE = "+33"; // Code pays (+33 pour la France)
#define CHECK_TENSION_ALARM_OFF 0 // 0 = vérification uniquement alarme ON
// 1 = vérification alarme ON ou OFF
Corrections :
Correction d’un cas “zone ouverte impossible” :
Une demande de mise en service par SMS pouvait autoriser l’activation même si la zone concernée était ouverte.
Correction des fonctions de défaut technique :
Certains défauts ne déclenchaient pas l’envoi de SMS.
============================================================================
Modifications apportées – Arduino Nano V1.3
Suppression fonctions en loop "alarme en marche" de ::
-- control_Edf();
-- control_Batterie();
Car on passe par via la definition par la fonction :: gestion_Controle_Tension();
--- Surveillance énergie (ON ou OFF selon configuration CHECK_TENSION_ALARM_OFF) ---
Suppression de cfgModuleDe.zone[MARCHE] ->L716_L937
Used ONLY :: flagMdZone[MARCHE]
Suppression déclaration not used
uint8_t demandeValide = 0; -> L577 — jamais lue ni écrite ailleurs
String strTextSms = ""; -> L484 — jamais utilisée
String strTextEtat = ""; -> L531 — jamais utilisée
unsigned long previousMillis = 0; -> L600 — jamais utilisée (doublon de tempoCheckRssi)
============================================================================
Modifications apportées – ATtiny85 (v1V1)
Le code de l’ATtiny85 a également été corrigé.
Un défaut d’inversion de commande affectait les sirènes :
La commande “Sonne INT” issue du Nano activait la mauvaise sortie.
La logique était inversée entre sirène interne et sirène externe.
Ce comportement est désormais corrigé.
===============================================================================
GUIDE DE DÉMARRAGE ET D’UTILISATION – SYSTÈME D’ALARME GSM V1.3
1. Appairage initial
L’appairage permet d’enregistrer le numéro maître, nécessaire pour la gestion du système par SMS.
Procédure :
Préparer le système :
Placer le shunt AP sur le PCB pour isoler la Zone 5 (Autoprotection OFF).
Cela permet de vérifier son fonctionnement sans déclencher les sirènes et sans gêner le voisinage.
Il est recommandé de ne pas alimenter les sirènes pour ce premier test.
Les relais et SMS reçus permettent de valider les tests en sourdine.
Mettre le système sous tension.
Attendre la connexion au réseau GSM.
Les LEDs réseau (OK / NOK) ne sont actives qu’après l’appairage du système.
Envoyer le SMS d’enregistrement du numéro maître :
12345
Réponse attendue :
Le numero 07 xx xx xx xx est enregistré
Si le code est incorrect :
Mauvais code, envoyer 12345
Résultat
Après appairage, le système passe en fonctionnement normal.
L’alarme est OFF par défaut, toutes les zones sont actives.
Le shunt sur Z5 doit rester en place pour ce test.
2. Vérification des zones
Si toutes les zones alarmes (Z1 à Z5) sont fermées, la LED verte de contrôle de boucle est allumée.
Chaque ouverture de zone éteint la LED verte de contrôle de boucle.
Cela permet de visualiser en temps réel les ouvertures avant d’activer le système.
3. Mise en service normale avec éjection Z5
Avant de retirer le shunt sur Z5, envoyer un SMS pour désactiver temporairement la zone d’autoprotection :
Ejection Z5 off
Cette commande met la zone 5 en état hors alarme, permettant de retirer le shunt sans déclencher les sirènes.
Indication LED :
Si l’alarme est OFF, la LED verte clignote pour signaler la zone Z5 éjectée.
Si l’alarme est ON, la LED rouge clignote pour signaler la zone Z5 éjectée.
La gestion des clignotements est supervisée par le watchdog, garantissant une visualisation fiable en temps réel.
Vérifier la confirmation de l’état par SMS avant de retirer le shunt.
Après vérification, retirer le shunt sur Z5 pour réactiver l’autoprotection si nécessaire.
Le système passe alors en fonctionnement normal, toutes zones actives et temporisations opérationnelles.
Vérifier que le GSM est connecté (LED OK) et que les zones Z1–Z5 fonctionnent correctement.
Les commandes locales via Z6 (serrure) et SMS sont maintenant disponibles pour armer/désarmer le système.Le système passe alors en fonctionnement normal, toutes zones actives et temporisations opérationnelles.
Vérifier que le GSM est connecté (LED OK) et que les zones Z1–Z5 fonctionnent correctement.
Les commandes locales via Z6 (serrure) et SMS sont maintenant disponibles pour armer/désarmer le système.
L’utilisateur maître peut désormais armer ou désarmer le système via :
Zone Z6 (serrure) pour commandes locales
SMS pour commandes distantes
4. Commandes de test
Test des zones
Ouvrir et refermer chaque zone pour vérifier l’éclairage de la LED verte.
Les zones sont déclenchent instantanément l’alerte si l’alarme est ON.
Test de la serrure (Z6)
Un simple pulse vers la masse arme ou désarme le système.
Le système mémorise l’état et l’indique via SMS et LED.
5. Notes de sécurité
Ne jamais alimenter les sirènes lors du premier appairage pour éviter les déclenchements intempestifs.
Les temporisations et limites d’alerte (sirènes, SMS) sont déjà configurées dans le code pour éviter le mitraillage.
Fin de tests et d'installation, ôter le strap Z5 sur PCB, refermer l'ensemble des éléments du système. La Led contrôle boucle doit être allumée, réactiver les autoprotection par SMS Z5 on

Discussion (0 comments)